登录
首页 » Others » 计算机控制系统-高金源

计算机控制系统-高金源

于 2021-05-06 发布
0 301
下载积分: 1 下载次数: 2

代码说明:

计算机控制系统教材,自动控制原理学习可以参考,比较系统和工程计算杋在实时控制领域获得了广泛的应用。在国民经济及国防等各个领域中采用计算机控制是现代化的亘要标志。计算机控制学科将涉炇计算机控制的基木理论、分析、设计与工程实现等众多方面的内容。本书是依高等学校自动化专业本科及研究生的教学要求而编写的。力图使读者通过本书的学习,除了掌握一定的计算机控制的基本理论和分析、设计方法外,对计算机控制系统的工程实现技术以及近年来工业上获得广泛应用的一些新的计算机控制技术亦有所了解。仝书除第1章外主要包括四大部分内容:①计算机控制的理论基础(包括计算机控制系统内的信号、系统的描述与分析方法等),(第2章~第4章);②计算机控制系统的经典与现代设计方法(包括连续域设计离散化方法、直接离散域设计以及W、δ域设计和状态空间的极点配置LQR设计等),(第5章、第6章);③计算机控制系统工程实现技术(包括计算机控制系统的硬什、软件、控制算法的编排、总线技术、采样周期的选用以及抗干扰与可靠性技术、设计步骤与设计实例等),(第7章、第8章);④第10章~第12章重点介绍∫现代计算机控制的一些新技术(包括可编程控制器技术、分布式讣算机控制技术、集散型计算机控制等)。考虑到许多复杂的计算机控制系统是多采样速率系统,故专门用1章(第9章)概要地介绍∫多采样速率系统的分析、设计与实现方面的问题。鉴于自动化专业的学生,在选修课中已对微机原理及接口技术有了专门的学习,故木书对有关计算机硬件系统将不予专门的介绍。学习本书的知识背景是:一般连续控制理论(或信号与系统)的基本知识以及微机原理和微机接口的基本知识。根据多年的教学经验,在学习木课程时应安排必要的简单计算机控制系统设计与实现的实验内谷,或者后续课程安排专门的计算机控制系统的系列实验课,这对于巩固学习效果、对于学生将来参加计算机控制系统开发的实际工作是很有益处的考虑到本书要兼顾作为工学或工程硕士研究生的计算机控制课的教材,选用的内容多于通常本科生教学大纲所规定的内容。教学时可以根据本科生及研究生不同的教学大纲及学时要求,适当选用不同的章节。多余章节亦可作为学习的参考。本书是本教学小组在总结近20年计算机控制教学经验以及参阅了近年来国内外有关院校的教材,并结合我们的科硏实践经验编写的。全书由高金涼教授统编并负责编写第1章和第9章;王醒华教授负责编写第2章~第5章;张平副教授负责编写第6章及5.5节;夏洁副教授负责编写第7章、第8章、第10章~第12章。全书承陈忠信研究员进行了详细的审阅,并提出了许多宝贵意见,在此表示衷心的感谢本书的岀版受到了北航教材科领导的大力攴持与帮助。责任编辑张光斌先生为本书的凸版做∫大量细致工作。在此对他们的关心与支持表示衷心的谢意由于编者的知识与经验不足,时间有限,不妥之处在所难免,期望得到读者及同学们的批评指止编者2000年5月录第1章绪论1.1计算机控制系统的组成12计算机控制系统典型应用分关·:·13关于计算机控制系统的理论与设计问题第2章讣算机控制系统的信号21计算机控制系统中信号的种类22埋想采样过程的数学描述及特性分析···鲁·1323实际采样过程的数学描述及特性分析…2424采样定理及其讨论…···2725信号的恢复与重构…2926信号的整量化习题36第3章计算机控制系统的数学描述31z变换3832扩展Z变换48差分方程34脉冲传递函数·55小题第4章计算机控制系统分析4.1稳定性分析6742稳态误差分析7743时域响应特性分析…8244系统的频域分析…87习题91第5章计算机控制系统的绎典设计方法51连续域一离散化设计9452数字PID控制器设计11253Z平面根轨迹设计11954W变换及频率域设计12755δ变换及δ域设计136题142第6章计算机控制系统的状态空间设计6.1状态空间描述14562离散系统的可控、可观性……15363状态反馈控制律的极点配置设计64状态观测器设计16565调节器设计(控制律与观测器的纽合)…l712·计算机控制系统——理论、设计与实现66计算机控制系统最优二次型设计…∴1746.7最优状态估计器与二次型最优调节器…18468其他现代数字控制方法简介186鲁··、··鲁鲁………∴89第7章计算机控制系统硬件与软件7控制用计算机系统的一般要求19272计算机系统的输入输出接口……………19873实时计算机系统的总线技术………………………20674计算机控制系统的实时软件设计……………217习题225第8章计算机控制系统工程实现中的某些冋题8』计算机控制系统中测试信号的处理22682控制算法的编排实现23083量化、溢出及其量化效应分析....…………………23484采样频峯的选取24485计算机控制系统的抗千扰及可靠性抆术24886计算机控制系统的设计与实现258与题268第9章多采样速率系统91多采样速率的配置………27092多速率系统的等效变换27193多速率系统性能分析28194多速率系统的设计方法28595多速率系统的实现·鲁287习题a:..··4·294第10章可编程控制器及应用101概述296102可编程控制器的结构和工作原理299103可编程控制器常用编程语言303104常用可编程控制器及其选用308105应用举例…习题312第11章分布式计算机控制系统111概述313112分布式计算机控制系统控制方案316113分布式计算机控制系统的硬件组成…32014分布式计算机控制系统的通讯322329第12章集散型计算机控制系统及其应用12Ⅰ集散型计算机控制系统概述…∴330122软件模块的纠态原埋………335123集散系统的可扩展性..4““4:.·.338124集散系统应用举例鲁··、··鲁鲁341习题345附录拉普拉斯变换和Z变换表参考文献第1章绪论数字计算机的出现和发展,在科学技术上引起了一场深刻的革命。数字计算机不仅在科学计算、数据处理等方面获得了广泛的应用,而且在自动控制领域也得到了越来越广泛的应用。数字计算机在自动控制中的基本应用就是直接参与控制,承担∫控制系统中控制器的任务,从而形成了计算机控制系统。它的参与对控制系统的性能、系统的结构以及控制理论等多方闻都产生了极为深刻的影响。木章简要介绍计算机控制系统的组成、工作原理以及它的特点,并着重说明计算机参与控制后给控制埋论及控制系统设计所带来的新问题l.1计算机控制系统的组成1.1.1计算机控制系统的组成图1-1为一个典型的雷达天线位置伺服控制系统。为了改善系统的特性,该系统采用了滞后ˉ超前岀联校正网络,该校正网络是利用常规的有源模拟运算放大器实现的。如果系统的恔正网络非常复杂,釆用这种模拟运算放大器的有源网终实现将是非常困难的。如果将系统中对信号的这种变换和处理利用数字计算机来实现,那么就构成了常规的计算机控制系统。M校正网络指令信号电位计反馈电位计图雷达天线位置伺服控制系统这里计算机实现了原控制系统中控制器的作用。由于数字计算机工作的特点,为了使计算机能接收系统的模拟信号,并输岀迕续的模拟信号给大线的拖动机构,所以,除∫要引入数字计算机外,还要加入其他的外部设备,如AD、DA转换器,从而形成了如图|-2所示的计算机控制系统的组成框图从图1-2可见,计算机控制系统的组成与连续模拟控制系统组成类似,是由下述几部分构成的2·计算机控制系统——理论、设计与实现MGAD计算机DA指令信号1A/D电位计1计算机系统反馈电位计图1-2天线位置计算机控制系统1.被控对象:本例为雷达天线2.执行机构:木例为直流电机叫路3.测量装置:本例为测量电位计;4.指令给定装置∴木例为天线指令发生器(指令信号电位计);5.计算机系统:包括下述主要部件。ΔD变换器,将直流模拟信号转换为断续的数字二进制信号,送入计算机DA变换器,将计算机产生的数宇指令信号转换为连续模拟信号(直流电压)并送给直流电机的放大部件数字计算机(包括硬件及柑应软件),实现信号的变换处埋,按给定的算法产生相应的挖制指令。如同连续控制系统一样,讣算机控制系统亦可分为闭环控制、开环控制以及复合控制等不同的控制类型计算机控制系统主要特点和优点相对连续控制系统而言,计算机控制系统的主要特点可以归纳为以下几点系统结构特点计算机控制系统必须包括有计算机,它是一个数字式离散处理器;此外,由于多数系统的被控对象及执行部件、测量部件是连续模拟式的,因此,还必须加入信号变换装置(如ΔD炇DA变换器)。所以,计算机控制系统通常是模拟与数字部件的混合系统。若系统中各部件全为数字部件,则称为全数字式控制系统。本书主要研究混合系统。信号形式上的特点迕续系统中各氐信号均为连续模拟信号,而计算机控制系统有多种信号形式。由于计算机是串行工作的,必须按一定的采样间隔(称为采样周期)对连续信号进行采样,将其变成时间上是断续的信号才能进入计算机。所以,它除有连续模拟信号外,还冇离散模拟、离散数字、连续数字等信号形式,是一种混合信号形式系统(详细分析见第2章)系统工作方式上的特点在迕续控制系统中,控制器通常都是由不同的电路构成,并且一台控制器仅为一个控制回路服务。在计算机控制系统中,一台计算机可冋时控制多个被控量或被控对象,即可为多个控制回路服务。每个控制回路的控制方式由软件来形成。同一台计算机可以采用串行或分时并行方式实现控制。尽管由常规仪表组成的连续控制系统巳获得了广泛的应用,并具有可靠、易维护操作等优点,但随着生产的发展、技术的进步,对自动化的要求越来越晑,这种常规连续控制系统的应用受到了极大的限制。例如,难于实现多变量复杂的控制,难于实现自适应控制等等。与连续控第1章绪论·3制系统相比,计算机控制系统除∫能完成常规连续控制系统的功能外,还表珝」如下一些独特的优点。由丁计算机的运算速度快、精度高、县冇极丰富的逻辑判断功能和大容量的存储能力,因此,能实现复狝的控制规律,如最优控制、自适应控制及自学习等,从而可达到较高的控制质量。计算机控制系统的功能价格比值高。尽管一台计算机最初投资较大,但增加一个控制回路的费用却很少。对亍连续系统,模拟硬件的成木几乎和控制规律复杂程度、控制回路多少成正比;而计算机控制系统中的一台计算机却可以实现复杂控制规律并可同时控制多个控制回路,因此,它的功能价格比值较高。由于计算机控制系统的控制规律是由软件程序实现的,并且计算机其有强大的记忆和判断功能,所以,极易实蚬工作状态的转换,实现不同的控制功能,因此,它的适应性强,灵活性高。此外,计算机是一种可编程的智能元件,易丁修改系统功能和特性,构成∫一种柔性(弹性)系统。随着徵电子技术的发展,大规模集成电路的出现,计算机体积减小,重量轻、成木下降。与连续控制系统相比,计算机控制系统也有一些缺氐与不足。例如,抗干扰能力较低,特别是由于系统中插入数字部件,信号复杂,给设计实现带来一定困难。但全面比较起来,随着对自动控制系统功能要求的不断提高,计算机控制系统的优越性表现得越来越突出。现代的控制系统不管是筲单的,还是复杂的,几乎都是采用计算机进行控制的。12计算机控制系统典型应用分类根据应用特点及控制目的和系统构成的不同,计算机控制系统在工业中的典型应用大致可分为下述几类。21数据采集处理系统数据采集处理系统结构如图Ⅰˉ3所示。严格说,这种系统不属于计算机控制,计算机并不直接参与控制。这种系统的主要作用是信号测试模拟量输入显示被控对象计算打印机数字量输入告警图1-3数据采集处理系统结构生产过程的集中监视计算机对生产过程(被监视对象)的不同变量参数进行巡回检测,并将采集到的数据以一定格式在监视器上显示或通过打印机打印出来,实现对生产过程的4·计算机控制系统——理论、设计与实现集中监视操作指导计算机对采集到的数据进行分析处理,并给出对生产过程控制的建议,由过程的操纵者依给定的建议实现对过程的控制122直接数字控制系统(DDC系统)直接数字控制系统结构如图Ⅰ-4所示。计算杋通过输入通道进行实时数捃采集,并按已给定的控制规律进行实吋决策,产生控制指令,通过输岀通道,对生产过程(被控对象)实直接控制。这种控制方式是应用最普遍的一种方式。由于这种系统中的计算机直接参与生产过桯的控制,所以,要求实时性好、可靠性高和环境适应性强。本书主要硏究这种系统的设计与实现问题。信号测试}模拟、数字量输入显示被控对象打印机执行部件模拟、数字量输出操纵台图1-4直接数字控制系统结构123监督计算机控制系统(SCC系统)监督计算杋控制系统结构如图1-5所示。该系统是2级计算柷控制。其中直接数字控制完成生产过程的直接控制;而监督计算机则根据生产过程工况和已知的数学模型,进行优化分析,产生最优设定值,作为直接数字控制的指令信号,由直接数字控制系统执行。监督计算机由亍承担上一级控制与管理任务,要求其数据处理功能强,存储容量大等控制DDdSCC工业数据被控对象测量计算机系统计算机系统品示打印状态信息记录图1-5监督计算机控制系统结构124分散型计算机控制系统(DCS)随着工业生产过程规模的扩大和综合管理与控制要求的提高,人们开始应用以多台计算机为基础的分散型控制系统,如图1-6所示。该系统采用分散控制原理、集中操作、分级管理与控制和综合协调的设计原则,把系统从上而下分成生产管理级、控制管理级和过程控制级等,形成分布式控制。各级之间通过数据传输总线及网终相互连接起来。系统中的过程控制级完成过程的检测任务。控制管理级通过协调过程控制器工作,实现生产过程的动态优化。

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • 从实例学sap abap(完整版)
    SAP(System, Applications, and Products in Data Processing)公司是全球最大的管理软件供应商,其主打产品R/3系统是ERP产品的领导者,涵盖了企业管理业务的各个方面,ABAP (Advanced Business Application Programming)是SAP/R3系统的开发工具,是第四代支持结构化程序设计的语言。  本书把相当复杂的SAP技术以非常简单的方式表达,非常直接地描述SAP技术,并采用大量的图片资料,使读者能清晰地了解SAP技术。本书主要介绍了:ABAP所需的开发环境,ABAP开发的主要内容,开发事务代码汇总索引;A
    2020-11-30下载
    积分:1
  • 自适应信号与系统 LMS与RLS算法收敛比较
    通过matlab编程来实现LMS 与RLS 算法的实现,在相同的参数下,通过matlab图表观察两者收敛速度的快慢,是自适应信号学习者很好的参考
    2020-11-30下载
    积分:1
  • Vissim二次开发_感应停车实例
    Vissim二次开发_感应停车实例提供了Excel_VB对vissim二次开发的一个实例,大家可以通过这个例子进行学习
    2020-12-12下载
    积分:1
  • matlab数字图像处理增强对比度
    【实例简介】对图像进行数字图像处理,使图像增强对比度
    2021-11-06 00:32:58下载
    积分:1
  • 机动目标跟踪(pdf格式)
    机动目标跟踪的原理及实现方法,包括单击动目标跟踪,多机动目标跟踪,卡尔曼滤波等
    2021-05-06下载
    积分:1
  • SHT30文档资料及驱动代码
    修改的SHT30驱动代码,实测可以运行,希望可以帮到大家,需要的请自行下载。
    2020-12-04下载
    积分:1
  • imtoken安卓客户端源码 含btc eos eth实现
    imtoken安卓客户端源码 含btc eos eth 转账 创建地址 开源免费
    2020-12-02下载
    积分:1
  • 华为C++语言规范
    华为C++语言编程规范,内部资料se语言编程规范内部公开目录0说明前言代码总体原则与语言编程规范的关系规范实施、解释术语定义1常量62初始化和类型转换声明、定义与初始化类型转换3函数12内联函数函数参数函数指针4类...14类的设计构造、赋值和析构继承重载5作用域、模板和C+其他特性..25作用域模板其他6资源分配和释放287异常与错误处理33异常错误处理策略8标准库369程序效率语言特性的性能分级语言的性能优化指导华为机密,未经许可不得扩散第页共页se语言编程规范内部公开0并发4511风格48标小符命名与定义排版注释文件组织12可移植性(兼容性).4913全球化52多语言输入输出单一版本时区夏令时14业界编程规范和书籍55业界编程规编程指南《编程规范条规则、准则与最佳实践》《微软一站式示例代码库》扩展学习材料华为机密,未经许可不得扩散第页共页se语言编程规范内部公开语言编程规范0说明前言随着业务的发展和产品架构的演进,越来越多的传统电信产品使用C++语言,很多新型产品更是把C+作为首选。C艹继承于C,包含C的所有特性,同时又增加了新语言特性,如面向对象、泛型设计等。目前C-+使用现状是:基础技能薄弱,陷入很多误区,不能很好地发挥C++的作用。为了帮助团队合理使用C-+,规避语言陷阱,特制定本规范代码总体原则毘C语言编稈一样,C++编稈遵循通用原则:1、清晰第一。清晰性是易于维护、易于重构的程序必需只备的特征。2、简洁为美。简洁就是易于理解并且易于实现。3、选择合适的风格,与代码原有风格俣持一致。除此之外,C+编程还应该注意以下方面1、正确使用C+面向对象技术使得程序结枃清晰、简单,提高了代码的重用性,但又隐藏了很多內部实现细节,内存模型复杂,不小心会误入陷阱,比如:拷贝构造函数,赋值操作符,析构函数,重载等为了简化代码,改善代码结构,提髙编程效率,一些团队引入新特性和第三方库,如:模板技术、STL、Bost等,由于缺乏足够的理解,使用中屡次发生问题,比如对达代器( Iterator)使用不当导致功能失常,甚至稈序崩溃。所以,必须深入理解C艹+对象布局、內存模型等,了解编译器背后所做的处理,才能在编程中知道如何止确使用2、安全高效跟其他流行的高级语言、脚本语言相比,C艹+运行速度快,天然适合开发核心通信部件,但是这些部件对稳定性的要求非常高,不容许发生异常、失效以及崩溃。C艹-具有直接操作硬件、访问內存的能力提供了指针、地址运算等灵活特性,稈序员可以仟意发挥,增加了出锖的几率。所以在追求速度与灵峾性的冋同时,一定要注意保持程序的健壮性。在増强代码稳定性过桯中,程序员通常采用i-else等防御式编程,使得代码非常臃肿,可适当采用RAIⅠ、智能指针等技术华为机密,未经许可不得扩散第页共页se语言编程规范内部公开与语言编程规范的关系本文在《华为技术有限公司C语言编程规范》(简称C规范)基础上,通过详细阐述如何规避C++语言复杂性,避免C+-的低级错误,确保有效使用C-+语言特性,代码易于维扩。C规范里面相同的内容,夲规范不再重复。例如头文伻、变量、表达式、代码编辑与编译、可测试性安全性、单元测试等章节经过审妉,完全适合C+,本规范不再重复。标识符命名与定义、注祥、排版与柊式等内容也适合C++,仅仅添加了少量的C+特有的规则和建议,合并成风格一章;涵数章节增加了內联函数、函数参数等内容;可移植性増加了64位以及C艹+专冇的薮据转换等內容;质量保证也符合C艹+的需要,将资源分配和释放部分C艹特有的内容编写成单独章节;宏、常量也符合C++,考虑到C++普遍使用 cons t,增加了常属性( const)章节。新増初始化和类型转换,类,作用域、模板与C艹-其他特性,异常与错误处理,并发,全球化等C艹特有的内容本规范和C规范有沖突的地方,以本规范为准。规范实施、解释本规范制定了编写C+语言程序的基本原则、规则和建议。木规范适用于公司内使用C++语言编码的所有软件。本规范自发布之日起生效,对以后新编写的和修改的代码应遵守本规范本规范由软件工稈体系发布和维护。实施屮遇到问题,可以到论坛http://hi3ms.huaweicom/group/1735/threads.htmi上讨论。在某些情况下需要违反本规范给出的规则时,相关团队必须通过一个正式的沇程来评审、决貪规则违反的部分,个体程序员不得违反本规范中的相关规则。术语定义原则:编程时必须坚持的指导思想规则:编程时强制必须遵守的约定。建议:编程时必效加以考虑的约定说明:对此原则/规则/建议进行必要的解释。示例:对此原则/规则/建议从好、不好两个方面给出例子。延伸阅读材料:建议进一步阅读的参考材料。常量不变的值更易于理餡、跟踪和分析,所以应该尽可能地使用常量代替变量,定义值的时侯,应该把 const作为默认的选项规则1.1使用 const常量取代宏华为机密,未经许可不得扩散第页共页se语言编程规范内部公开说明:宏是简单的文本替换,在预处理阶段时完成,运行报错时直接报相应的值;跟踪调试时也是显示值,而不是宏名;宏没有类型检查,不安全;宏没有作用域。示例defi: e MAX MSISDN LEN(20)//不好的例子const int MAX MSISDN LEN=20;/好的例子规则1.2一组相关的整型常量应定义为枚举说明:之所以使用枚举,基于:●枚举比# define或 const int更安全,因为编译器会检查参数值是否是否位于枚举取值范围内,从而避免错误发生。示例//好的例子enum DayofWeek( sunday, monday, tuesday, wednesday, thursday, friday, saturday)ienum Ccloriblack, blue, whiter red, purp_e]BOOL CclorizeCalendar (DayofWeek today, Color todays Color)Coorizeca1 endor(b1ue, sunday);//编译报错,1ue和 Sunday位置错误//不好的例子:const int sunday=0iconst int monday= 1const int b⊥acKconst int blueBOOL CclorizeCalendar (int today, int todays ColorCoorizecalendar(blue, sunday);//不会报错当枚举值需要对应到具体数值时,须在声明时昰示赋值。否则不需要昰式赋值,以避免重复赋值,降低维护(增加、朋除成员)工作量示例好的例子:s协议里定义的设备I值,用于标识设备类型cnum TDcv-cclypcDEV UNKNOWN --l,DEV DSMP 0DEV工SMGDEV WAPPORTAL=2程序内部使用,仅用于分类的情況,不应该进行显式的赋值。示例/好的例子:程序中用来标识会话状态的枚举定义enum TSessionstateSESSION STATE INITISESSTON STATE CTOSEDSESSION STATE WA工TING●应当尽量避免枚举值亘复,如必须重复也要用己定义的枚举来修饰,例如:typed f enumRTCP SR 200,RTCP MIN TYPE RTCP SR//must be lowest known typeRTCP RR华为机密,未经许可不得扩散第页共页se语言编程规范内部公开RTCP SDES= 202RTCP BYE203,RTCP APP204,RTCP RTPFB=205RTCP PSEB =206/RTCP XR207RTCP RSI =208RTCP PUBPCRTS =209RTCP MAX TYPF= RTCP PUB PORTS //must be highest known typertcp type ti规则1.3不相关的常量,即使取值一样,也必须分别定义说明:一个常量只用来表示一个特定功能,即一个常量不能有多种用途。示例:/好的例子:协议和协议B,于机号( (MSISDN)的长度都是20。unsigned const int. A MAX MST SDN LEN0;unsigned const int B MAX MSI SDN LEN 20//或者使用不同的名字空间namespace alibunsigned const int MAX MSISDN LEN=20;namespace blibunsigned const int MAX MSISDN LEN =20建议1.1尽可能使用 const说明:在声明的变量或参数前加上关键字 const用于指明变量值不可被篡改。类成员函数加上 const限定符表明该函数不会修改类成员变量的状态使用 const常见的场景:函数参数:传递引用时,如果函数不会修改传入参数,该形参应声明为 const。成员函数:访问函数(如get函数):不修改任何数据成员的函数:未调用非 cons t函数、未返回数据成员的非 const指针或引用的函数。数据成员:如果数据成员在对象构造之后个再发生变化,可将其定义为 cons t。2初始化和类型转换声明、定义与初始化规则2.1禁止用 memcpy、 memset初始化非POD对象说明:PO全称是“ Plain0 ld Data”,是C++98标准(ISO/IEC14882, first edition,19980901)中引入的一个概念,POD类型主要包括int,char, float, double, enumeration,woid,指针等原始类型及其集合类型,不能使用封装和面对对象特性(如用户定义的构造/赋值/析构函数、基类、虚函数等)。华为机密,未经许可不得扩散第页共页se语言编程规范内部公开由于非P0D类型比如非集合类型的 class对象,可能存在虚函数,内存布局不确定,跟编译器有关,滥用内存拷贝可能会导致严重的问题即使对集合类型的 class,使用直接的内存拷贝和比较,破坏了信息隐蔽和数据保护的作用,也不提倡memcpy、 memset操作示例:×××产品程序异常退出( corc dump)。经过现场环境的模似,程序产生 COREDUMP,其原因是:在初始化函数内使用 memset(this,0,sizeof(*this))进行了类的初始化,将类的虚函数表指针被清空,从而导致使用空指针。解决方案:使用C艹构造函数初始化,不要便用 memset函数初始化类对象建议2.1变量使用时才声明并初始化说明:变量在使用前未赋初值,是常见的低级编程错误。使用前才声明变量并同时初始化,非常方便地避免了此类低级错误。在函数开始位置声明所有变量,后面才使用变量,作用域覆盖整个函数实现,容易导致如下问题:程序难以理解和维护:变量的定义与使用分离变量难以合理初始化:在函数丌始时,经常没有足够的笮息进行变量初始化,往往用某个默认的空值(比如零)来初始化,这遥常是一种浪费,如果变量在被赋于有效值以前使用,还会导致错误。遵循变量作用域最小化原则与魷近声明原则,使得代码更容易阅读,方便了解变量的类型和初始值特别是,应使用初始化的方式替代声明再赋值示例:不好的例子:声明与初始化分离string name;//声明时未初始化:调用缺省构造函数nane=" zhangsan";//再次调用赋值操作符函数;声明与定义在不同的地方,理解相对困难好的例子:声明与初始化一体,理解相对容易string name(" zhangsan");//调用一次构造函数建议2.2避免构造函数做复杂的初始化,可以使用“init”函数说明:正如函数的变量都在函数内部初始化一样,类数据成员最好的初始化场所就是构造函数,数据成员都应该尽量在构造函数中初始化以下情况可以使用init(函数来初始化:需要提供初始化返回信息。数据成员初始化可能抛异常。●数据成员初始化大败会造成该类对象初始化失败,引起不确定状态数据成员初始化依赖this揞针:构造凶数没结束,对象就没有构造出来,构造凶数內不能使用this成员数据成员初始化需要调用虚函数。在构造函数和析构函数中调用虚函数,会导致未定乂的行为示例:数据成员初始化可能拋异常:cl ass CPPRule华为机密,未经许可不得扩散第页共页se语言编程规范内部公开publicCEPRule(): size (0), res (null)i//仅进行值初始化long init (int size)//根据传入的参数初始化size,分配资源resr vateint siResourceptrx res//使用方法CPPRule ait(100)建议2.3初始化列表要严格按照成员声明顺序来初始化它们说明:编译器会按照数据成员在类定义中声明的顺序进行初始化,而不是按照初始化列表中的顺序,如果打乱初始化列表的顺序实际上不起作用,但会造成阅读和理解上的混淆;特别是成员变量之间存在依赖关系时可能导致BUG示例://不好的例子:初始化顺序与声明顺序不一致class Emp-oyeepublic:Employee(const charx firstName, const charx lastNamefirstName (firstName), lastName (lastName)r email (firstName.+-astName t huawei. com)ipr-vate:string email, firstName lastName类定义emai1是在 firstName, lastName之前声明,它将首先初始化,但使用了未初始化的ratNam和 lastName,导致错误。在成员声明时,应按照成员相互依赖关系按顺序声明。建议2.4明确有外部依赖关系的全局与静态对象的初始化顺序说明:如果全尻对象A的成员变量有外部依赖,比如依赖另外一个全局变量B,在A的构造函数中访问B,隐含的规则就是B先于A初始化,然而全局与静态对象的初始化与析构顺序未有严格定义,无法确保B已经完成初始化,而每次生成可执行程序都可能发生变化,这类BUG难以定位。通常采用单件( Singleton)模式或者把有依赖关系的全局对象放在一个文件中定义来明确初始化顺序冋一个文件屮,若全局对象a在全局对象b之前定义,则a一定会在b之前初始化;但是不同文件中的全局对象就没有固定的初始化顺序。可以在main0或 pthread once(内初始化一个运行期间不回收的指针类型转换避免使用类型分支来定制行为:类型分支来定制行为容易出错,是企图用C+编写C代码的明显标志。这是一种很不灵活的技术,要添加新类型时,如果忘记修改所有分支,编译器也不会告知。使用模板和虚函数,让类型自己而不是调用它们的代码来决定行为。华为机密,未经许可不得扩散第页共页
    2020-12-12下载
    积分:1
  • 点目标飞机模型iSAR成像
    强力推荐的ISAR程序代码,自己调试过,可以运行,对学习雷达成像的朋友很有帮助!
    2020-11-27下载
    积分:1
  • FFT方式计算天线方向图
    采用FFT方式计算二维矩形阵列的方向图,与采用求和的方式相比,计算速度成倍提高。
    2021-05-06下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载