1、减小电源电路纹波,电源电路输入解耦设计,常用陶瓷电容01F
2、条件允许时采用独立的电源电路,匹配合理的电容,减少其他组件对射频模块电源的影响
3、尽量使模块远离电源、变压器等高频电路,避免电磁干扰
4、SPI上的时钟波形不标准,检查SPI线上是否有干扰,SPI总线运行,队伍不能太长。SPI的定时回路应避开晶体振荡器区域。
5、高频和电源接线,避开模块和模块的背面
6、如果通信电平不一致,如3.3V-5V,建议增加电平转换电路
7、PCB天线暴露并放置在PCB板的边缘。建议尽量不要把它放在模块中
8、对于天线的戳穿孔,注意连接尽量光滑,毛刺少,并且两边都要铺好。不要绕线,如果必须绕线,应走弧线。
扩展资料:
单片机的基本外围电路:
1、电源电路,给单片机提供稳定的电源。
2、时钟电路,用晶振和电容给单片机提供稳定的时钟基准信号。
3、复位电路,按键和电容搭建成单片机复位电路,用于复位。
void真正发挥的作用在于: (1) 对函数返回的限定; (2) 对函数参数的限定。
1、void的含义:void的字面意思是“无类型”,void 则为“无类型指针”,void 可以指向任何类型的数据。
void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,让我们试着来定义:
void a;
这行语句编译时会出错,提示“illegal use of type 'void'”。不过,即使void a的编译不会出错,它也没有任何实际意义。
2、void的使用规则:规则一:如果函数没有返回值,那么应声明为void类型
在C语言中,凡不加返回值类型限定的函数,就会被编译器作为返回整型值处理。但是许多程序员却误以为其为void类型。例如:
add ( int a, int b )
{
return a + b;
}
int main(int argc, char argv[])
{
printf ( "2 + 3 = %d", add ( 2, 3) );
}
程序运行的结果为输出:2 + 3 = 5,这说明不加返回值说明的函数的确为int函数。
规则二:如果函数无参数,那么应声明其参数为void。
在C++语言中声明一个这样的函数:
int function(void)
{
return 1;
}
则进行下面的调用是不合法的:
function(2);
因为在C++中,函数参数为void的意思是这个函数不接受任何参数。在Turbo C 20中编译:
#include "stdioh"
fun()
{
return 1;
}
main()
{
printf("%d",fun(2));
getchar();
}
编译正确且输出1,这说明,在C语言中,可以给无参数的函数传送任意类型的参数,但是在C++编译器中编译同样的代码则会出错。在C++中,不能向无参数的函数传送任何参数,出错提示“'fun' : function does not take 1 parameters”。
所以,无论在C还是C++中,若函数不接受任何参数,一定要指明参数为void。
3、void具体使用例子:定义函数
返回值 函数名(参数1,参数2,参数3,)
{内容}
int sum(int a,int b)
{
int c;
return c;}
其中第一个int是返回值 就是别的函数调用此函数时这个函数给他的一个值。
如果调用时不需要返回值,则函数写为
void sum(int a,int b){} 此时函数没有返回值
如果不需要参数 则int sum(void){}
此时void的意义为空,就是没有参数的意思
如果都不要 则为void sum(void);
扩展资料:
void不能代表一个真实的变量。下面代码都企图让void代表一个真实的变量,因此都是错误的代码:
void a; //错误
function(void a); //错误
void体现了一种抽象,这个世界上的变量都是“有类型”。
void的出现只是为了一种抽象的需要,如果你正确地理解了面向对象中“抽象基类”的概念,也很容易理解void数据类型。正如不能给抽象基类定义一个实例,我们也不能定义一个void(让我们类比的称void为“抽象数据类型”)变量。
参考资料:
编辑本段简介
数学中解耦是指使含有多个变量的数学方程变成能够用单个变量表示的方程组,即变量不再同时共同直接影响一个方程的结果,从而简化分析计算。通过适当的控制量的选取,坐标变换等手段将一个多变量系统化为多个独立的单变量系统的数学模型,即解除各个变量之间的耦合。最常见的有发电机控制,锅炉调节等系统。软件开发中的耦合偏向于两者或多者的彼此影响,解耦就是要解除这种影响,增强各自的独立存在能力,可以无限降低存在的耦合度,但不能根除,否则就失去了彼此的关联,失去了存在意义。
工程背景
在现代化的工业生产中,不断出现一些较复杂的设备或装置,这些设备或装置的本身所要求的被控制参数往往较多,因此,必须设置多个控制回路对该种设备进行控制。由于控制回路的增加,往往会在它们之间造成相互影响的耦合作用,也即系统中每一个控制回路的输入信号对所有回路的输出都会有影响,而每一个回路的输出又会受到所有输入的作用。要想一个输入只去控制一个输出几乎不可能,这就构成了“耦合”系统。由于耦合关系,往往使系统难于控制、性能很差。
主要分类
三种解耦理论分别是:基于Morgan问题的解耦控制,基于特征结构配置的解耦控制和基于H_∞的解耦控制理论。 在过去的几十年中,有两大系列的解耦方法占据了主导地位。其一是围绕Morgan问题的一系列状态空间方法,这种方法属于全解耦方法。这种基于精确对消的解耦方法,遇到被控对象的任何一点摄动,都会导致解耦性的破坏,这是上述方法的主要缺陷。其二是以Rosenbrock为代表的现代频域法,其设计目标是被控对象的对角优势化而非对角化,从而可以在很大程度上避免全解耦方法的缺陷,这是一种近似解耦方法。
编辑本段相关解法
选择适当的控制规律将一个多变量系统化为多个独立的单变量系统的控制问题。在解耦控制问题中,基本目标是设计一个控制装置,使构成的多变量控制系统的每个输出变量仅由一个输入变量完全控制,且不同的输出由不同的输入控制。在实现解耦以后,一个多输入多输出控制系统就解除了输入、输出变量间的交叉耦合,从而实现自治控制,即互不影响的控制。互不影响的控制方式,已经应用在发动机控制、锅炉调节等工业控制系统中。多变量系统的解耦控制问题,早在30年代末就已提出,但直到1969年才由EG吉尔伯特比较深入和系统地加以解决。
完全解耦控制
对于输出和输入变量个数相同的系统,如果引入适当的控制规律,使控制系统的传递函数矩阵为非奇异对角矩阵,就称系统实现了完全解耦。使多变量系统实现完全解耦的控制器,既可采用状态反馈结合输入变换的形式,也可采用输出反馈结合补偿装置的形式。给定n维多输入多输出线性定常系统(A,B,C)(见线性系统理论),将输出矩阵C表示为 C戁为C的第i个行向量,i=1,2,…,m,m为输出向量的维数。再规定一组结构指数di(i=1,2,…,m):当C戁B=0,C戁AB=0…,C戁AB=0时,取di=n-1;否则,di取为使CiAB≠0的最小正整数N,N=0,1,2,…,n-1。利用结构指数可组成解耦性判别矩阵: 已证明,系统可用状态反馈和输入变换,即通过引入控制规律u=-Kx+Lv,实现完全解耦的充分必要条件是矩阵E为非奇异。这里,u为输入向量,x为状态向量,v为参考输入向量,K为状态反馈矩阵,L为输入变换矩阵。对于满足可解耦性条件的多变量系统,通过将它的系数矩阵A,B,C化成为解耦规范形,便可容易地求得所要求的状态反馈矩阵K和输入变换矩阵L。完全解耦控制方式的主要缺点是,它对系统参数的变动很敏感,系统参数的不准确或者在运行中的某种漂移都会破坏完全解耦。
静态解耦控制
一个多变量系统在单位阶跃函数(见过渡过程) 输入作用下能通过引入控制装置实现稳态解耦时,就称实现了静态解耦控制。对于线性定常系统(A,B,C),如果系统可用状态反馈来稳定,且系数矩阵A、B、C满足关于秩的关系式,则系统可通过引入状态反馈和输入变换来实现静态解耦。多变量系统在实现了静态解耦后,其闭环控制系统的传递函数矩阵G(s)当s=0时为非奇异对角矩阵;但当s≠0时,G(s)不是对角矩阵。对于满足解耦条件的系统,使其实现静态解耦的状态反馈矩阵K和输入变换矩阵L可按如下方式选择:首先,选择K使闭环系统矩阵(A-BK)的特征值均具有负实部。随后,选取输入变换矩阵 ,式中D为非奇异对角矩阵,其各对角线上元的值可根据其他性能指标来选取。由这样选取的K和L所构成的控制系统必定是稳定的,并且它的闭环传递函数矩阵G(s)当s=0时即等于D。在对系统参数变动的敏感方面,静态解耦控制要比完全解耦控制优越,因而更适宜于工程应用。
软件解耦
做事情要想事半功倍,就要高处着眼,触摸到事情的脉络。当今流行着各种眼花缭乱的软件框架,不管是struts,还是spring,hibernate,还是net,还是各种前端UI框架,其设计的核心思想是: 1、尽可能减少代码耦合,如果发现代码耦合,就要采取解耦技术; 2、各种解耦技术的核心是: (a)使用外部的配置文件,将各种框架内部的组件进行文本型的配置; (b)用户通过组件的名字和参数map使用组件,达到脚本性而非代码性的直接使用。 这与设计一个应用服务器的架构完全相同。只不过spring使用xml类型的配置文件,并且使用Ioc技术,而我使用服务数据库化,用数据库来管理服务。我不支持类,它们支持类。 java比C++功能强大的地方就在于其强大易用的反射机制,对C来说,开发一套反射机制的难度还是很大的,需要修改编译器。 各种高层软件设计的核心其实就是如何解耦和增强可扩展性,可扩展性的核心是插件技术,而插件技术也与解耦的方案有关。 配置这个术语的诞生,就是解耦技术带来的,因为要解耦,所以需要进行配置。
原油蒸馏控制软件简介2008-05-26 14:54转 永立 抚顺石油化工研究院
DCS在我国炼油厂应用已有15年历史,有20多家炼油企业安装使用了不同型
号的DCS,对常减压装置、催化裂化装置、催化重整装置、加氢精制、油品调合等实施
过程控制和生产管理。其中有十几套DCS用于原油蒸馏,多数是用于常减压装置的单回
路控制和前馈、串级、选择、比值等复杂回路控制。有几家炼油厂开发并实施了先进控制
策略。下面介绍DCS用原油蒸馏生产过程的主要控制回路和先进控制软件的开发和应用
情况。
一、工艺概述
对原油蒸馏,国内大型炼油厂一般采用年处理原油250~270万吨的常减压装置
,它由电脱盐、初馏塔、常压塔、减压塔、常压加热炉、减压加热炉、产品精馏和自产蒸
汽系统组成。该装置不仅要生产出质量合格的汽油、航空煤油、灯用煤油、柴油,还要生
产出催化裂化原料、氧化沥青原料和渣油;对于燃料一润滑油型炼油厂,还需要生产润滑
油基础油。各炼油厂均使用不同类型原油,当改变原油品种时还要改变生产方案。
燃料一润滑油型常减压装置的工艺流程是:原油从罐区送到常减压装置时温度一般为
30℃左右,经原油泵分路送到热交换器换热,换热后原油温度达到110℃,进入电脱
盐罐进行一次脱盐、二次脱盐、脱盐后再换热升温至220℃左右,进入初馏塔进行蒸馏
。初馏塔底原油经泵分两路送热交换器换热至290℃左右,分路送入常压加热炉并加热
到370℃左右,进入常压塔。常压塔塔顶馏出汽油,常一侧线(简称常一线)出煤油,
常二侧线(简称常二线)出柴油,常三侧线出润料或催料,常四侧线出催料。常压塔底重
油用泵送至常压加热炉,加热到390℃,送减压塔进行减压蒸馏。减一线与减二线出润
料或催料,减三线与减四线出润料。
二、常减压装置主要控制回路
原油蒸馏是连续生产过程,一个年处理原油250万吨的常减压装置,一般有130
~150个控制回路。应用软件一部分是通过连续控制功能块来实现,另一部分则用高级
语言编程来实现。下面介绍几种典型的控制回路。
1.减压炉0.7MPa蒸汽的分程控制
减压炉0.7MPa蒸汽的压力是通过补充1.1MPa蒸汽或向0.4MPa乏气
管网排气来调节。用DCS控制0.7MPa蒸汽压力,是通过计算器功能进行计算和判
断,实现蒸汽压力的分程控制。0.7MPa蒸汽压力检测信号送入功能块调节器,调节
器输出4~12mA段去调节1.1MPa蒸汽入管网调节阀,输出12~20mA段去
调节0.4MPa乏气管网调节阀。这实际是仿照常规仪表的硬分程方案实现分程调节,
以保持0.7MPa蒸汽压力稳定。
2.常压塔、减压塔中段回流热负荷控制
中段回流的主要作用是移去塔内部分热负荷。中段回流热负荷为中段回流经热交换器
冷却前后的温差、中段回流量和比热三者的乘积。由中段回流热负荷的大小来决定回流的
流量。中段回流量为副回中路,用中段热负荷来串中段回流流量组成串级调节回路。由D
CS计算器功能块来求算冷却前后的温差,并求出热负荷。主回路热负荷给定值由工人给
定或上位机给定。
3.提高加热炉热效率的控制
为了提高加热炉热效率,节约能源,采取了预热入炉空气、降低烟道气温度、控制过
剩空气系数等方法。一般加热炉控制是利用烟气作为加热载体来预热入炉空气,通过控制
炉膛压力正常,保证热效率,保证加热炉安全运行。
(1)炉膛压力控制
在常压炉、减压炉辐射转对流室部位设置微差压变送器,测出炉膛的负压,利用长行
程执行机构,通过连杆来调整烟道气档板开度,以此来维持炉膛内压力正常。
(2)烟道气氧含量控制
一般采用氧化锆分析器测量烟道气中的氧含量,通过氧含量来控制鼓风机入口档板开
度,控制入炉空气量,达到最佳过剩空气系数,提高加热炉热效率。
4.加热炉出口温度控制
加热炉出口温度控制有两种技术方案,它们通过加热炉流程画面上的开关(或软开关
)切换。一种方案是总出口温度串燃料油和燃料气流量,另一种方案是加热炉吸热一供热
值平衡控制。热值平衡控制需要使用许多计算器功能块来计算热值,并且同时使用热值控
制PID功能块。其给定值是加热炉的进料流量、比热、进料出口温度和进口温度之差值
的乘积,即吸热值。其测量值是燃料油、燃料气的发热值,即供热值。热值平衡控制可以
降低能耗,平稳 *** 作,更有效地控制加热炉出口温度。该系统的开发和实施充分利用了D
CS内部仪表的功能。
5.常压塔解耦控制
常压塔有四个侧线,任何一个侧线抽出量的变化都会使抽出塔板以下的内回流改变,
从而影响该侧线以下各侧线产品质量。一般可以用常一线初馏点、常二线干点(90%干
点)、常三线粘度作为 *** 作中的质量指标。为了提高轻质油的收率,保证各侧线产品质量
,克服各侧线的相互影响,采用了常压塔侧线解耦控制。以常二线为例,常二线抽出量可
以由二线抽出流量来控制,也可以用解耦的方法来控制,用流程画面发换开关来切换。解
耦方法用常二线干点控制功能块的输出与原油进料量的延时相乘来作为常二线抽出流量功
能块的给定值。其测量值为本侧线流量与常一线流量延时值、常塔馏出油量延时值之和。
组态时使用了延时功能块,延时的时间常数通过试验来确定。这种自上而下的干点解耦控
制方法,在改变本侧线流量的同时也调整了下一侧线的流量,从而稳定了各侧线的产品质
量。解耦控制同时加入了原油流量的前馈,对平稳 *** 作,克服扰动,保证质量起到重要作
用。
三、原油蒸馏先进控制
1.DCS的控制结构层
先进控制至今没有明确定义,可以这样解释,所谓先进控制广义地讲是传统常规仪表
无法构造的控制,狭义地讲是和计算机强有力的计算功能、逻辑判断功能相关,而在DC
S上无法简单组态而得到的控制。先进控制是软件应用和硬件平台的联合体,硬件平台不
仅包括DCS,还包括了一次信息采集和执行机构。
DCS的控制结构层,大致按三个层次分布:
·基本模块:是基本的单回路控制算法,主要是PID,用于使被控变量维持在设定
点。
·可编程模块:可编程模块通过一定的计算(如补偿计算等),可以实现一些较为复
杂的算法,包括前馈、选择、比值、串级等。这些算法是通过DCS中的运算模块的组态
获得的。
·计算机优化层:这是先进控制和高级控制层,这一层次实际上有时包括好几个层次
,比如多变量控制器和其上的静态优化器。
DCS的控制结构层基本是采用递阶形式,一般是上层提供下层的设定点,但也有例
外。特殊情况下,优化层直接控制调节阀的阀位。DCS的这种控制结构层可以这样理解
:基本控制层相当于单回路调节仪表,可编程模块在一定程度上近似于复杂控制的仪表运
算互联,优化层则和DCS的计算机功能相对应。原油蒸馏先进控制策略的开发和实施,
在DCS的控制结构层结合了对象数学模型和专家系统的开发研究。
2.原油蒸馏的先进控制策略
国内原油蒸馏的先进控制策略,有自行开发应用软件和引进应用软件两种,并且都在
装置上闭环运行或离线指导 *** 作。
我国在常减压装置上研究开发先进控制已有10年,各家技术方案有着不同的特点。
某厂最早开发的原油蒸馏先进控制,整个系统分四个部分:侧线产品质量的计算,塔内汽
液负荷的精确计算,多侧线产品质量与收率的智能协调控制,回流取热的优化控制。该应
用软件的开发,充分发挥了DCS的强大功能,并以此为依托开发实施了高质量的数学模
型和优化控制软件。系统的长期成功运行对国内DCS应用开发是一种鼓舞。各企业开发
和使用的先进控制系统有:组份推断、多变量控制、中段回流及换热流程优化、加热炉的
燃料控制和支路平衡控制、馏份切割控制、汽提蒸汽量优化、自校正控制等,下面介绍几
个先进控制实例。
(1)常压塔多变量控制
某厂常压塔原采用解耦控制,在此基础上开发了多变量控制。常压塔有两路进料,产
品有塔顶汽油和四个侧线产品,其中常一线、常二线产品质量最为重要。主要质量指标是
用常一线初馏点、常一线干点和常二线90%点温度来衡量,并由在线质量仪表连续分析
。以上三种质量控制通常用常一线温度、常一线流量和常二线流量控制。常一线温度上升
会引起常一线初馏点、常一线干点及常二线90%点温度升高。常一线流量或常二线流量
增加会使常一线干点或常二线90%点温度升高。
首先要确立包括三个PID调节器、常压塔和三个质量仪表在内的广义的对象数学模
型:
式中:P为常一线产品初馏点;D为常一线产品干点;T〔,2〕为常二线产品90
%点温度;T〔,1〕为常一线温度;Q〔,1〕为常一线流量;Q〔,2〕为常二流量
。
为了获得G(S),在工作点附近采用飞升曲线法进行仿真拟合,得出对象的广义对
象传递函数矩阵。针对广义对象的多变量强关联、大延时等特点,设计了常压塔多变量控
制系统。
全部程序使用C语言编程,按照采集的实时数据计算控制量,最终分别送到三个控制
回路改变给定值,实现了常压塔多变量控制。
分馏点(初馏点、干点、90%点温度)的获取,有的企业采用引进的初馏塔、常压
塔、减压塔分馏点计算模型。分馏点计算是根据已知的原油实沸点(TBT)曲线和塔的
各侧线产品的实沸点曲线,实时采集塔的各部温度、压力、各进出塔物料的流量,将塔分
段,进行各段上的物料平衡计算、热量平衡计算,得到塔内液相流量和气相流量,从而计
算出抽出侧线产品的分馏点。
用模型计算比在线分析仪快,一般系统程序每10秒运行一次,克服了在线分析仪的
滞后,改善了调节品质。在计算出分馏点的基础上,以计算机间通讯方式,修改DCS系
统中相关侧线流量控制模块给定值,实现先进控制。
还有的企业, *** 作员利用常压塔生产过程平稳的特点,将SPC控制部分切除,依照
计算机根据实时参数计算出的分馏点,人工微调相关侧线产品流量控制系统的给定值,这
部分优化软件实际上只起着离线指导作用。
(2)LQG自校正控制
某厂在PROVOX系统的上位机HP1000A700上用FORTRAN语言开
发了LQG自校正控制程序,对常减压装置多个控制回路实施LQG自校正控制。
·常压塔顶温度控制。该回路原采用PID控制,因受处理量、环境温度等变化因素
的影响,无法得到满意的控制效果。用LQG自校正控制代替PID控制后,塔顶温度控
制得到比较理想的效果。塔顶温度和塔顶拨出物的干点存在一定关系,根据工艺人员介绍
,塔顶温度每提高1℃,干点可以提高3~5℃。当塔顶温度比较平稳时,工艺人员可以
适当提高塔顶温度,使干点提高,便可以提高收率。按年平均处理原油250万吨计算,
如干点提高2℃,塔顶拨出物可增加上千吨。自适应控制带来了可观的经济效益。
·常压塔的模拟优化控制。在满足各馏出口产品质量要求前提下,实现提高拨出率及
各段回流取热优化。馏出口产品质量仍采用先进控制,要求达到的目标是:常压塔顶馏出
产品的质量在闭环控制时,其干点值在给定值点的±2℃,常压塔各侧线分别达到脱空3
~5℃,常二线产品的恩氏蒸馏分析95%点温度大于350℃,常三线350℃馏份小
于15%,并在 *** 作台上CRT显示上述各侧线指标。在保证塔顶拨出率和各侧线产品质
量之前提下优化全塔回流取热,使全塔回收率达到90%以上。
·减压塔模拟优化控制。在保证减压混和蜡油质量的前提下,量大限度拔出蜡油馏份
,减二线90%馏出温度不小于510℃,减压渣油运行粘度小于810■泊(对九二三
油),并且优化分配减一线与减二线的取热。
(3)中段回流计算
分馏塔的中段回流主要用来取出塔内一部分热量,以减少塔顶负荷,同时回收部分热
量。但是,中段回流过大对蒸馏不利,会影响分馏精度,在塔顶负荷允许的情况下,适度
减少中段回流量,以保证一侧线和二侧线产品脱空度的要求。由于常减压装置处理量、原
油品种以及生产方案经常变化,中段回流量也要作相应调整,中段回流量的大小与常压塔
负荷、塔顶汽油冷却器负荷、产品质量、回收势量等条件有关。中段回流计算的数学模型
根据塔顶回流量、塔底吹气量、塔顶温度、塔顶回流入口温度、顶循环回流进口温度、中
段回流进出口温度等计算出最佳回流量,以指导 *** 作。
(4)自动提降量模型
自动提降量模型用于改变处理量的顺序控制。按生产调度指令,根据 *** 作经验、物料平
衡、自动控制方案来调整装置的主要流量。按照时间顺序分别对常压炉流量、常压塔各侧
线流量、减压塔各侧线流量进行提降。该模型可以通过DCS的顺序控制的几种功能模块
去实现,也可以用C语言编程来进行。模型闭环时,不仅改变有关控制回路的给定值,同
时还在打印机上打印调节时间和各回路的调节量。
四、讨论
1.原油蒸馏先进控制几乎都涉及到侧线产品质量的质量模型,不管是静态的还是动
态的,其基础都源于DCS所采集的塔内温度、压力、流量等信息,以及塔内物料/能量
的平衡状况。过程模型的建立,应该进一步深入进行过程机理的探讨,走机理分析和辨认
建模的道路,同时应不断和人工智能的发展相结合,如人工神经元网络模型正在日益引起
人们的注意。在无法得到全局模型时,可以考虑局部模型和专家系统的结合,这也是一个
前景和方向。
2. *** 作工的经验对先进控制软件的开发和维护很重要,其中不乏真知灼见,如何吸
取他们实践中得出的经验,并帮助他们把这种经验表达出来,并进行提炼,是一项有意义
的工作,这一点在开发专家系统时尤为重要。
3.DCS出色的图形功能一直为人们所称赞,先进控制一般是在上位机中运行,在
实施过程中,应在 *** 作站的CRT上给出先进控制信息,这种信息应使 *** 作工觉得亲切可
见,而不是让人感到乏味的神秘莫测,这方面的开发研究已获初步成效,还有待进一步开
发和完善。
4.国内先进控制软件的标准化、商品化还有待起步,目前控制软件设计时还没有表达
其内容的标准符号,这是一大障碍。这方面的研究开发工作对提高DCS应用水平和推广
应用成果有着重要意义。
Builder模式定义: 将一个复杂对象的构建与它的表示分离 使得同样的构建过程可以创建不同的表示 Builder模式是一步一步创建一个复杂的对象 它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们 用户不知道内部的具体构建细节 Builder模式是非常类似抽象工厂模式 细微的区别大概只有在反复使用中才能体会到 为何使用 是为了将构建复杂对象的过程和它的部件解耦 注意: 是解耦过程和部件 因为一个复杂的对象 不但有很多大量组成部分 如汽车 有很多部件:车轮 方向盘 发动机还有各种小零件等等 部件很多 但远不止这些 如何将这些部件装配成一辆汽车 这个装配过程也很复杂(需要很好的组装技术) Builder模式就是为了将部件和组装过程分开 如何使用 首先假设一个复杂对象是由多个部件组成的 Builder模式是把复杂对象的创建和部件的创建分别开来 分别用Builder类和Director类来表示 首先 需要一个接口 它定义如何创建复杂对象的各个部件:public interface Builder { //创建部件A比如创建汽车车轮void buildPartA(); //创建部件B 比如创建汽车方向盘void buildPartB(); //创建部件C 比如创建汽车发动机void buildPartC(); //返回最后组装成品结果 (返回最后装配好的汽车)//成品的组装过程不在这里进行 而是转移到下面的Director类中进行 //从而实现了解耦过程和部件Product getResult(); } 用Director构建最后的复杂对象 而在上面Builder接口中封装的是如何创建一个个部件(复杂对象是由这些部件组成的) 也就是说Director的内容是如何将部件最后组装成成品:public class Director {private Builder builder; public Director( Builder builder ) { this builder = builder; } // 将部件partA partB partC最后组成复杂对象//这里是将车轮 方向盘和发动机组装成汽车的过程public void construct() { builder buildPartA();builder buildPartB();builder buildPartC(); } } Builder的具体实现ConcreteBuilder:通过具体完成接口Builder来构建或装配产品的部件;定义并明确它所要创建的是什么具体东西;提供一个可以重新获取产品的接口:public class ConcreteBuilder implements Builder { Part partA partB partC; public void buildPartA() {//这里是具体如何构建partA的代码}; public void buildPartB() { //这里是具体如何构建partB的代码}; public void buildPartC() { //这里是具体如何构建partB的代码}; public Product getResult() { //返回最后组装成品结果}; } 复杂对象:产品Product:public interface Product { } 复杂对象的部件:public interface Part { } 我们看看如何调用Builder模式:ConcreteBuilder builder = new ConcreteBuilder();Director director = new Director( builder ); nstruct(); Product product = builder getResult(); Builder模式的应用在Java实际使用中 我们经常用到 池 (Pool)的概念 当资源提供者无法提供足够的资源 并且这些资源需要被很多用户反复共享时 就需要使用池 池 实际是一段内存 当池中有一些复杂的资源的 断肢 (比如数据库的连接池 也许有时一个连接会中断) 如果循环再利用这些 断肢 将提高内存使用效率 提高池的性能 修改Builder模式中Director类使之能诊断 断肢 断在哪个部件上 再修复这个部件 lishixinzhi/Article/program/Java/gj/201311/27314
原谅我没有手算,太累了。学了好久。
你这个例子不典型,:
我把课本上的方法放在这里:
申明:下例方法没有极点配置,全在 0,如需要可以自行到上面中找。所述矩阵见图。
A=[0 0 0;0 0 1;-1 -2 -3];
B=[1 0;0 0;0 1];
C=[1 1 0; 0 0 1];
% C(1,:)B = [1 0] ,d1 = 0
% C(2,:)B = [0 1] ,d2 = 0
D=[C(1,:);C(2,:)]
E=DB;
% E =
%
% 1 0
% 0 1 DET(E)=/ 0 可解耦。
L=DA;
F=inv(E)% 输出变换阵
K= -inv(E)L% 状态反馈矩阵
A_new=A+BK;
B_new=BF;
%C不变;
% 传递函数:
% [1/s 0; 0 1/s];
% A_new =
%
% 0 0 -1
% 0 0 1
% 0 0 0
% B_new =
%
% 1 0
% 0 0
% 0 1
% F =
%
% 1 0
% 0 1
%
%
% K =
%
% 0 0 -1
% 1 2 3
耦合是指两个或两个以上的电路元件或电网络的输入与输出之间存在紧密配合与相互影响,并通过相互作用从一侧向另一侧传输能量的现象;概括的说耦合就是指两个或两个以上的实体相互依赖于对方的一个量度。耦合作为名词在通信工程、软件工程、机械工程等工程中都有相关名词术语。
以上就是关于只会c语言,怎么找单片机的工作啊要求单片机常用外围电路,一般有哪些呢全部的内容,包括:只会c语言,怎么找单片机的工作啊要求单片机常用外围电路,一般有哪些呢、C语言中void是什么意思、解耦率的高低代表什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)