控制系统仿真范文
时间:2023-04-12 01:27:31
导语:如何才能写好一篇控制系统仿真,这就需要搜集整理更多的资料和文献,欢迎阅读由公务员之家整理的十篇范文,供你借鉴。
篇1
1火控雷达网工作原理
火控雷达组网系统由M部火控雷达和一个融合控制中心组成,每部雷达的工作状态和工作参数都由融合控制中心进行统一控制和协调,各部火控雷达通过通信链路实现与融合控制中心之间的信息传递,以此保证多雷达间的数据共享。任一时刻只有一部雷达处于辐射工作状态,其余雷达进行静默跟踪。当此雷达停止工作后,由融合控制中心选择另一部雷达继续工作[6]。如图1所示,假设在k时刻火控雷达(jj=1,2,…,M)处于间歇辐射工作状态,其余雷达处于静默跟踪状态。雷达j将其对目标的实时跟踪测量数据送到数据融合控制,融合控制中心根据雷达的测量数据对目标的运动轨迹进行滤波和预测。处理后的数据一方面送到相关武器系统,供火力打击使用;另一方面送到其余处于间歇状态的雷达,供其天线调整以完成对目标的静默跟踪。跟踪精度评估环节和低截获性能评估环节则分别对当前的跟踪精度和当前的低截获性能进行计算和评估。通过对当前跟踪精度的计算,采用自适应脉冲间隔策略选择下一时刻的最优脉冲间隔,间歇辐射控制环节根据该参数控制雷达j的脉冲发射间隔。同时,通过对雷达低截获性能的评估控制交替选通信号,以选择下一时刻工作的雷达。当雷达j停止工作后,通过交替选通信号的控制选择雷达j+1间歇工作以继续跟踪目标。以此循环,各雷达在融合控制的协同控制下,共同完成对目标的交替间歇式跟踪。
2作战场景想定
以3部火控雷达网为例构建仿真系统,想定场景如图2所示。防御方的防空系统由警戒雷达、火控雷达和防空武器等组成,进攻方的战斗机对防御方的雷达进行探测定位。当战斗机处于防空系统中警戒雷达的探测范围内,而处于火控雷达探测范围之外时,火控雷达不工作,由警戒雷达对战斗机进行前期的警戒跟踪,并为火控雷达提供侦察机的粗略位置信息。当战斗机进入防空系统中火控雷达的探测范围时,火控雷达突然开机工作,依据警戒雷达提供的侦察机位置信息,在较短时间内完成对战斗机的稳定跟踪,同时为防空武器提供精确的战斗机位置信息,供其火力拦截。火控雷达开机工作之后,战斗机的侦察系统在告警系统的触发下迅速对火控雷达信号进行搜索、识别、截获和分析,以获得火控雷达各项工作参数,对雷达进行定位,进而发射反辐射导弹对雷达进行火力摧毁。为了避免防空火控雷达信号在短时间内被战斗机截获,融合控制中心控制火控雷达网,采用交替间歇辐射的工作方式完成对目标的连续跟踪。在保证火控雷达对侦察机精确跟踪的同时,尽量延长侦察机对雷达定位所需的时间,从而完成防空武器系统对侦察机的有效打击。
3仿真系统设计
火控雷达网间歇式目标跟踪原理如图3所示。具体工作过程为:由目标模块产生目标模拟运动航迹,融合控制中心模块通过雷达工作参数的设定来选择处于工作状态的雷达,并通过对脉冲重复周期的选择来控制雷达的辐射状态。雷达进行间歇工作获得目标测量数据,将测量数据传送到融合控制中心模块进行数据融合、跟踪滤波等处理,并根据处理结果选择下一时刻雷达的工作参数,以控制雷达工作,如此循环进行,交替选择组网系统内的火控雷达进行间歇工作,以实现对目标的连续跟踪。同时,将处理结果传送到效能评估模块,效能评估模块将这些数据和来自目标模块的雷达信号截获判定、目标真实航迹等数据进行一系列处理,对系统的整体性能进行评估。融合控制成员对组网雷达融合控制中心的功能进行仿真。订购雷达成员生成的量测数据信息,通过融合处理,生成目标的位置信息和雷达网跟踪精度,并对雷达下一个周期的工作参数进行调整,向雷达成员公布目标位置、脉冲宽度、工作频率、开关机信号、雷达信号形式等。对融合控制成员进行类划分,将具有相同属性的方法提取出来,并对类与类之间的关系进行分析,可分为以下8类。RTI基类:此类主要提供运行支撑环境(run-timeinfrastructure,RTI)的基本服务,包括联邦管理、声明管理、对象管理、时间管理、所有权管理和数据分发管理等功能。联邦管理是指对一个联邦执行的创建、动态控制、修改和删除的过程。声明管理是为联邦成员提供类层次上的表达(公布或订购)机制,在HLA中,联邦成员通过声明管理服务向联邦表明自己可以公布或需要订购的对象类和交互类[7]。对象管理是在声明管理的基础上,实现对象实例的注册/发现、属性值的更新/反射、交互实例的发送/接收以及对象实例的删除/移走等功能。时间管理的主要任务是使仿真世界中事件发生的顺序与真实世界中事件发生的顺序一致。仿真运行过程中,联邦成员和RTI将利用所有权管理服务来转移实例属性的所有权,在联邦执行生命周期的任一时刻,一个实例属性最多只能被一个联邦成员拥有,只有唯一拥有实例属性所有权的联邦成员才有权更新该实例属性的值[8-10]。数据分发管理是在实例属性层次上增强联邦成员精简数据需求的能力,减少仿真运行过程中无用数据的传输和接收,提高仿真运行的效率。RTI接口类:此类是RTI基类的派生类,负责实现联邦的具体创建工作,成员通过回调接口函数,使用RTI提供的服务。RTI接口的工作主要在仿真线程中进行,其中主要包括创建并加邦、声明公布/订购关系、注册对象实例、请求时间推进、更新和反射对象属性值、发送和接收交互、退出联邦等。融合控制类:实现了数据的融合处理和雷达工作参数的控制。如对3部雷达的测量数据进行融合,估计侦察机对雷达信号的截获概率和当前的目标跟踪精度,计算出下一时刻的雷达最优脉冲间隔,控制雷达的工作时间。数据公布类:实现了对数据的公布,即表明要公布的数据类型、数据长度等,并对数据进行更新等。数据订购类:实现了对数据的订购,即表明要订购的对象、数据类型、数据长度等,并对数据进行更新等。文件管理类:实现了对数据的记录,负责创建文件,将数据写入文件,完成读取文件、修改文件、格式转换和删除文件等功能。显示类:实现了对数据的实时显示,如目标三坐标位置、斜距、俯仰角、方位角、雷达脉冲间隔和系统工作时间等。定时器类:实现了数据处理和更新过程中的定时功能,如启动时钟、停止时钟等,负责仿真进程的开始和停止。顺序图主要描述系统各组成部分之间交互的次序,展示了对象之间的动态协作关系[11]。使用顺序图,可以描述执行特定用例,会触发哪些交互,以及这些交互以何种次序发生。融合控制成员从整个仿真系统的启动开始,工作流程如下:(1)运行融合控制程序,点击“加邦”,通过调用RTI接口函数使用RTI的声明管理、对象管理函数,将该成员加入到仿真系统中,等待开始仿真的指令。(2)开始仿真,进入主线程,通过调用RTI接口函数使用RTI的数据分发管理服务,订购其他联邦成员的数据。(3)对订购的数据进行融合处理,通过调用RTI接口函数使用RTI的数据分发管理服务,把数据公布给其他联邦成员。(4)实时显示数据,并将相关数据进行记录,写入文本文档。(5)收到停止仿真命令后停止仿真进程,融合控制成员退出联邦。根据以上的操作流程创建顺序图如图4所示,该图显示了仿真流程融合控制成员运行的动态过程。
4仿真分析
通常火控雷达对目标的跟踪距离相对较近,对于高速运动的反辐射导弹载机来说,在有限的跟踪距离内,持续跟踪时间不会太长。因此,在仿真过程中设定目标跟踪时间为t=100s。将开发的软件加入到火控雷达网仿真联邦中,在仿真过程中存储对目标的测量值和滤波值进行存储,并实时计算出3部雷达的截获概率,都保存到文本文档中。仿真结束后,调用Matlab读取存储的文本,画出目标的测量轨迹和滤波轨迹,如图5所示。可以看出,组网系统能够准确地对目标进行跟踪。3部雷达的截获概率如图6所示。由图可知,组网系统在有效的跟踪目标时,能够延长雷达被敌方侦察系统截获的时间,提高了先敌发现目标的概率,给指挥高炮对敌方目标进行打击提供了充足的时间。
5结束语
篇2
Abstract: The control system of constant pressure water supply system is complex and changeful, and the control parameters measurement is not accurate. The paper puts forward a PID control and adaptive fuzzy control with an adaptive fuzzy PID controller application for constant pressure water supply system, with the help of PID parameters on-line self-tuning fuzzy PID parameters, real-time modification, through Matlab simulation experiment system in in the running process is always in optimal condition. Adaptive fuzzy PID controller used in constant-pressure water supply system can not only improve the performance of the control system, and the maximum energy saving water supply system.
关键词: 自适应模糊控制;PID控制;恒压供水;系统仿真
Key words: adaptive fuzzy control;PID control;constant pressure water supply;system simulation
中图分类号:TP273 文献标识码:A 文章编号:1006-4311(2014)09-0021-03
0 引言
随着生活品质的提高,人们对生活饮用水的要求也在不断地提高,恒压供水系统在多层及高层住宅用水和消防供水中得到了越来越广泛地应用。现代的恒压供水系统主要由水泵、变频器及调节环节构成,整个控制系统控制复杂多变,控制参数一般不能精确测定。水泵作为一种典型的非线性负载,在运行的过程中其旋转的速度与给定的信号之间具有滞后、惯性较大的特点。
如果采用常规的PID控制,在系统运行过程中因为不能可靠地调整PID参数而无法实现管道压力精确恒定控制,而且响应速度比较慢。由于模糊控制不会过分依赖数学模型,因此,不需建立精确的过程模型。由于其不仅可以将人们的经验转化为控制措施,还会根据那些时变的、非线性的和滞后的大惯性对象而保持良好的动态特性。
本文针对上述原因提出了模糊控制系统与传统PID控制相结合而设计了一种自适应模糊PID控制器。通过PID参数的在线模糊自整定能够对PID参数进行实时修改,从而确保了运行过程中的系统始终处于优化状态,不仅提高了系统的控制性能,还能够最大限度的节约供水系统能源。
1 自适应模糊PID的概念
根据PID控制器的Kp、Ki、Kd的三个参数与偏差e、偏差的变化率ec之间的模糊关系,在运行时不断检测e及ec,通过事先确定的关系,利用模糊推理的方法,在线自动修改控制器PID参数。因为参数可自动调整,所以自适应模糊PID控制能解决系统的非线性问题。由于常规PID只能够利用一组固定的参数进行控制,因此,将模糊推理引入控制系统并在PID初值的基础上通过增加修正参数进行整定,从而对系统的动态性能进行改善。
2 自适应模糊PID控制器设计
2.1 恒压供水系统数学模型的建立
在供水系统的二级泵房中,可以将水泵从初始状态开始向管网供水的变频调速恒压控制系统分为零压过程和压力上升两个过程。在零压过程中,由于经处理的水由水泵从清水池送到管网中,因此可认为压力基本保持零,属于纯滞后过程;由于在压力上升过程中,水泵逐渐用水充满整个管理,从而压力不断增加并达到稳定,因此是一个具有惯性的一阶环节。因此,可将水泵管道系统的数学模型等效为带有纯滞后环节的一阶惯性环节,而系统中继电器控制转换、压力检测等其他控制和检测环节的时间常数和滞后时间与供水系统中水压上升或下降的时间常数和滞后时间相比可以忽略不计,由此得到供水系统的近似
模型:
G(s)=■e■
式中:K——系统的总增益
T——系统的惯性时间常数
τ——系统的滞后时间
需要采用离线开环阶跃响应的方法确定参数K、T、τ,其具体方法为:在开环控制系统中由控制器输出一个合适幅值的阶跃响应信号,从而促使水泵转速提到一定幅值,记录水压的整个变化过程,然后根据记录的输入输出数据进行辨认识别。
本系统的辨识结果为K=0.95,T=9.8,τ=2.55s,由此可得到供水控制系统的近似模型:
G(s)=■e■
2.2 系统总体结构设计
图1为包含自学环节功能的参数自整定模糊PID控制系统结构框图。PID控制器通过自学功能的模糊控制器能够进行在线参数的自整定。
2.3 参数自整定原则
PID参数模糊自整定就是找出PID控制的三个参数与偏差e及偏差的变化ec间的模糊关系,通过不断检测系统运行中的e及ec,再根据模糊控制的原则来对三个参数进行在线的修改,从而满足不同e及ec时对控制参数的不同要求,最终使被控制的对象具有良好的动态和静态性能,模糊PID控制系统原理如图2所示。
模糊控制器以偏差和偏差变化率作为输入,修正参数ΔKp,ΔKi,ΔKd为输出,则PID控制器输出的参数Kp,Ki,Kd可按公式1-3计算,式中K'p,K'i,K'd为预整定值。
Kp=K'p+ΔKp(1)
Ki=K'i+ΔKi(2)
Kd=K'd+ΔKd(3)
参数模糊自整定机构可以视为三个双输入单输出的模糊控制器(如图2所示),其输入量采用压力偏差e和偏差变化率ec,参数自整定机构采用增量型调整原理,输出变量为Kp、Ki和Kd。参数模糊自整定机构调整过程如图3所示。
2.4 模糊控制规则表
模糊控制器输入输出变量的模糊子集分别为E,Ec,ΔKp,ΔKi,ΔKd,各变量语言值为:{负大,负中,负小,零,正小,正中,正大},记为{NB,NM,NS,ZO,PS,PM,PB},隶属函数均采用灵敏度强的三角函数,模糊蕴涵关系运算采用最小运算法(Mamdan),去模糊化采用重心法。
根据专家经验,e和ec的变化范围为(-0.5,+0.5),模糊论域为{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6}。ΔKp,ΔKi和ΔKd的基本域为(-0.3,0.3),模糊论域为{-0.3,-0.25,-0.2,-0.15,-0.1,-0.05,0,0.05,0.2,0.25,0.3},比例因子Ke为12,量化因子Kec为1,通过模糊推理及试验修正,得出ΔKp,ΔKi,ΔKd的模糊规则如表1-表3所示。
对于控制规则 IF EiAND ECi THEN Kp is Ui(i=1,2,…49)其模糊蕴含采用最小值法uU'(KP)=uE■(e)∧u■(ec)∧u■(KP);
模糊合成采用最大法,即最终结论U′是由综合■,
■,…■得到的,推理法则为uU′(KP)=u■(KP)∨u■(KP)∨…∨u■(KP);在一次采样时刻,KP的值可由模糊输出U′的重心确定。
{Ei,ECi}P=■
式中u■(K■)(j=1,2,…49)是KP的隶属度。同理可以得到输出量KI,KD。
KP=KP0+{Ei,ECi}P
KI=KI0+{Ei,ECi}I
KD=KD0+{Ei,ECi}D
其中{Ei,ECi}P、{Ei,ECi}I、{Ei,ECi}D是模糊推理的结果,即参数的校正量。而KP0,KI0,KD0为参数设置初值。
3 实验仿真
本文在采用对三台供水泵、两台抽真空泵及两台反冲泵进行仿真,仿真结果如下:图4为采用常规PID同步控制算法下系统响应曲线,图5为采用模糊PID同步控制算法下系统响应曲线。通过对两种仿真结果进行比较后发现,与常规PID性能相比,系统采用模糊PID方法具有更好的同步性能和抗干扰能力。
4 结论
本文结合恒压供水系统中水泵控制的特点,设计了一种自适应模糊PID控制器,在管道压力较大偏差范围内采用模糊推理控制,根据e、ec对PID参数进行适时调整,并在压力偏差范围内采用PID精确控制输出,从而综合了模糊控制和PID控制的优点。仿真结果表明,这种自适应模糊PID控制器具有动态性能好、稳态精度高以及适应参数变化能力强等特点,该控制器模型规则明确,实时计算工作量小,如果采用本系统进行高楼恒压供水完全可以替代现有的恒压供水装置,大大提高了恒压供水系统中管道压力的恒定性,节能非常明显,极具推广和应用价值。
参考文献:
[1]杨凌云.PID调节器在恒压供水系统中的应用[J].微计算机信息,1996(5).
[2]刘金锟.先进PID控制及Matlab仿真[M].北京:机械工业出版社,2005.
篇3
【关键词】缸内直喷;电控系统;硬件模块
一、引言
建立汽车悬架的动力学模型是进行整车性能分析和系统设计的基础。建立模型基础就是利用外界物理参数描述输入,系统本身和系统输出之间的关系。悬架系统是一个复杂的多自由度“质量—刚度—阻尼”振动系统,理论上讲建立的模型自由度越多越接近汽车的时间情况,但对其动力学特性进行精准的描述和分析是非常困难的。
目前比较成熟的整车模型主要有三种:
(1)两自由度1/4车辆模型;
(2)四自由度1/2车辆模型;
(3)七(八、九)自由度正常模型。1/4车辆模型虽然没有包括汽车的整体几何信息,也无法用它来研究汽车俯仰角振动及侧倾角振动,但它包含了实际问题中的绝大部分基本特征,如负载变化和悬架系统受力的信息等,所以可以用来研究不平路面激励引起车体的垂直振动。
二、1/4车辆悬架模型的建立
由于1/4车辆模型结构简单,又包含了汽车平顺性分析的主要特征,因此在研究电控空气悬架控制策略中被广泛应用。在本文中决定采用两自由度1/4车辆模型,如图1所示。
图1 两自由度1/4车辆悬架模型
根据牛顿第二定律,可以列出该模型动力学微分方程:
式中M为簧载质量,m为非簧载质量;Kt为轮胎径向刚度系数;Ks为悬架刚度系数;Cs为减振器阻尼系数;xs、xt、xr分别代表簧载质量、非簧载质量及路面激励的位移量。
图2 两自由度车辆动力学模型
根据二自由度的车辆的动力学微分方程,可以利用MATLAB/SIMULINK仿真软件建立系统动力学模型,系统动力学模型如图2所示。在模型中,接口in1和in2分别代表悬架刚度的实时变化和路面对系统的随机干扰,out1则代表簧载质量垂直方向加速度响应。
三、1/4车辆模型仿真及结果分析
本文采用亚星牌YBL6891H大型客车满载时的基本数据,所设定的约束条件是悬架的动行程,悬架的最大允许动行程为±10mm,由此可以得到对簧载质量加速度及动载荷的分析对比。在B级随机路面上对车速50Km/h以及C级随机路面时速80Km/h两种工况下对比分析,然后计算出簧载质量加速度以及动载荷的均方根值和峰值,通过对比得出模糊控制算法在提高平顺性方面的效果。
仿真图形如图3和图4所示,加入模糊控制算法后对空气悬架的簧载质量加速度衰减起了一定作用,对簧载加速度的分析可以通过表1来做进一步说明。
表1给出了两种悬架系统簧载质量加速度均方根值和峰值。可以看出,在行驶工况变化的情况下仍然有较好的控制效果,对于外界干扰的变化具有良好的适应能力。
根据动载荷仿真图形5和6可知,添加模糊控制算法后对空气悬架的动载荷衰减也起了一定作用,对动载荷的分析可以通过表2来做进一步分析说明。
表2给出了两种悬架系统悬架动载荷的均方根值和峰值。可以看出,在引入模糊控制算法后,轮胎对地面的破坏有所降低,在行驶工况变化的情况下仍然有较好的控制效果。
在悬架的的仿真分析过程中,由于对悬架的动行程进行了约束,因此被动空气悬架和模糊控制空气悬架的动行程没有太大的差别。但是通过对簧载质量加速度和动载荷的分析可知,加入模糊控制算法对簧载质量加速度和动载荷都起到了衰减作用。
四、结论
本文根据模糊控制原理对控制器进行了设计,并利用Matlab/Simulink建立了1/4半主动空气悬架车辆模型及随机路面模型。根据仿真结果分析可知,在以动行程为约束的条件下,空气悬架采用了模糊控制算法后簧载质量垂直加速度和悬架动载荷均有下降,减少了对路面的损坏,同时提高了车辆行驶平顺性,表明模糊控制具有良好的效果。
参考文献
[1]张德丰著.MATLAB/Simulink建模与仿真[M].北京:电子工业出版社,2009.
[2]周品,赵新芬著.MATLAB数学建模与仿真[M].北京:国防工业出版社,2009.
[3]袁士杰著.多刚体系统动力学[M].北京:北京理工大学出版社,1992.
[4]Dave Crolla,喻凡著.车辆动力学及其控制[M].北京:人民交通出版社,2004.
篇4
【关键词】MATLAB MCGS 仿真 动态数据交换
本篇文章使用MCGS组态监控软件系统来操控薄膜厚度,实时收集数据信息,设置硬件的接入点,使人们和机器能直接对话,并且用可动画面的形式来表现操控系统的实时情况。这个时候,把MATLAB作为在后台运转的平台,达到以Back Propagation多层前馈网络为基础整定比例-积分-微分控制器(PID)以及进行弯曲线路创作的功效。使用者使用DDE软件进行双方的信息交换,感受不同角度、不同层次、不同范围观看仿真流程的可观看的人员和机器的交流过程。
1 薄膜厚度操作体系的组成部分
1.1 MATLAB中的PID控制器设计
薄膜厚度控制系统是由现场设备和上位机这两个设备组成的:现场设备中的可编程逻辑控制器对薄膜厚度施行收集,并且对控制数量进行输出,同时对加热控纽的功率进行改变来实现对薄膜厚度的掌控,再将厚度检测仪器检测到的薄膜厚度反馈到上位机器操控体系;上位机器的操控体系是以MCGS为基础进行设计的,有着强大的功能,例如对硬件接入点进行设计,对信息进行动态搜集,实机人员和机器的交流,对信息数据进行登记等,能够模仿操控体系实时的运行状态,把所有变化数据的信息实时地展现出来。为了达到以Back Propagation多层前馈网络为基础整定比例-积分-微分控制器(PID)以及曲线制作的功效,在后台运转的信息操作模块以MATLAB为开发平台。使用Dynamic data exchange通信协议,把MCGS里需要进行测算的信息转送至MATLAB中,由MATLAB对这些数据进行处置,然后将最后的处置结果发送回MCGS,这样,可以提升MCGS操控PLC的本领。
1.2 MCGS组态软件的设计
MCGS软件研究出搜集相关数据信息,对这些数据信息进行处置并且对这个过程进行操控的相关计划和工具,通过这些工具,能够为使用者提供相关动画展示和报表等内容,使用者通过使用这些工具可以完成相关的工程操作。
在MCGS组态软件操控的窗口中,依据使用需要对“系统管理”、主要用户界面、“系统设置”等功能进行了处理,点击不同的菜单就能够进入到对应的操控页面。MCGS系统窗口能够维系及驱动外部装置,同时,可以在这里面加入外部硬件工具和模拟工具如PLC。在对通道进行策划时,可以把A /D、D /A通道和动态信息库中的信息对象对应结合起来。在使用者窗口模式中,设置了主要页面、厚度自行调整页面、体系配置页面等操控页面。
以上的页面,都是在MCGS的使用者小窗中使用相关的测绘模具对监控平台体系进行设计。MCGS可观看图像的功能能够便捷地构造要策划的所有页面,再将动画相关联,就是构造页面画面对象和动态信息库的信息变量之间的联系。在这个窗口中需要设置一些数值可变的量,主要用于信息搜集、操作、输出操控、动画连合和装备驱动,这些可变的信息量是组成动态信息库的主要组成部分。
1.3 MATLAB和MCGS的DDE连接
MCGS提供了一个和另外一个应用程序实施信息互换的方式,这就是动态数据交换(Dynamic data exchange),所以,MATLAB也接受动态数据交换(Dynamic data exchange)通信协议。薄膜厚度仿真操控体系当中,把MCGS当作SERVER程序,把MATLAB当作CLIENT程序,经由动态数据交换协议把MCGS里设置的薄
膜厚度设计数值输送到MATLAB,由以Back Propagation多层前馈网络为基础的比例-积分-微分控制器运算得出最佳比例-积分-微分控制器参数,然后把参数发送给MCGS,从而实现比例-积分-微分控制器参数能够自行整定。
1.4 如何在MCGS中设置DDE
在MCGS和MATLAB中构造一个动态数据交换(Dynamic data exchange),必须在MCGS的“动态信息库”的小窗里构造可改变的量,然后点组态平台里的“工具”按纽,再选择动态数据交换(Dynamic data exchange)连接管理,打开后,将里面的通信的厚度设置数据改成动态数据交换(Dynamic data exchange)输出就可以了。
2 仿真控制效果
为了将以Back Propagation多层前馈网络为基础的比例-积分-微分控制器和原来的比例-积分-微分控制器的功能进行比较,使用这两个系统来实行仿真操控,并且在第三百个采集样本时间加入外加干扰d(k)=2,用来计算抵抗干扰的水平。PID相关参数的数值设定为不变的:kp=0.4,ki=0.03,kd=0.2。以Back Propagation多层前馈网络为基础的PID操控器选择Back Propagation多层前馈网络构造是4-5-3,学习效率以及惯性数值设置为:Z=0.002,T=0.0008。在MCGS的薄膜厚度自行设置页面里把薄膜厚度设置为二十二μm,按下“测算PID参数”这一项,MATLAB经由动态数据交换(Dynamic data exchange)系统在MCGS里选中薄膜厚度信息,在运行系统中用以上两个控制系统实行仿真操控,原来的比例-积分-微分控制器数据量为百分之四十,回应时间是一百五十秒,并且受到的干扰比较大。使用以Back Propagation多层前馈网络为基础整定比例-积分-微分控制器(PID)基本没有超调,采用基于BP神经网络的PID控制器几乎没有超调,回应时间是一百秒,受到的干扰比较小。运算结束后,MATLAB将以Back Propagation多层前馈网络为基础整定比例-积分-微分控制器(PID)整定得到的PID参数发送给MCGS。通过这样的仿真实验显示,以Back Propagation多层前馈网络为基础的比例-积分-微分控制器的优点为超调数量比较小、回应时间短、适应性比较强等等,把其使用在MCGS组态系统中能够增强双向拉缩薄膜厚度操控系统的性能。
3 结语
笔者引入MATLAB设计智能操作算法,利用MCGS监控算法及控制过程,系统无需增加硬件,算法实现简单,是智能控制算法工程实现的有益尝试,具有较大的应用价值。
参考文献
[1]谭元飞,王再英.基于OPC的以MATLAB为计算平台的工业监控系统设计[J].自动化与仪器仪表,2011,(4):54-59.
篇5
关键词:模糊控制;PID;MATLAB;SIMULINK
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2014)28-6719-04
底盘测功机是检测汽车发动机功率、加速性能、滑行性能、燃油经济性等性能的的重要设备。它是一种室内滚筒式检测设备,主要由台架部分和控制部分组成,通过飞轮模拟汽车惯性阻力、测功器模拟汽车道路行驶阻力来模拟真实的行驶工况以实现对汽车各种性能的检测,目前应用最广的测功器是电涡流机。
对底盘测功机进行控制主要有恒速控制和恒转矩控制两种方式,两种控制方式的基本过程是相同的,首先将所选定的转速或转矩信号与单片机输出的设定信号同时输入给PID控制系统,由PID控制系统输出加载控制信号(加载或减载电压)以触发可控硅,将可控硅的输出加在电涡流加载装置的两端,使电涡流测功机的电流增大或减小(恒速控制)或保持不变(恒转矩控制),对反馈回来的速度值或力值进行判断,从而实现了对电涡流加载装置的闭环控制,在电涡流加载的过程中,PID控制器的良好运行程度决定子恒速、恒转矩工况的实现结果。底盘测功机控制系统组成如图1所示。
1 模糊PID控制系统设计
由于传统的PID控制对于非线性、时变性的系统难以达到控制精度的要求,而模糊PID控制具有自动调整的功能,所以本文采用模糊PID作为参数推理机制和调整策略。PID控制系统的标准方程为:
[u(t)=KP[e(t)+1TI0te(t)dt+TDde(t)dt]]
式中,u(t)为PID控制器的输出,t为采样时间,KP为控制器的比例增益;e(t)为PID控制器的偏差输入,即给定值与测量值之差;TI 为控制器的积分时间常数;TD 为控制器的微分时间常数。模糊PID控制是以偏差e和偏差的变化率ec作为输入,然后通过模糊控制决策求出PID控制的三个重要参数,分别是[KP、KI、KD],经过模糊PID的调整后,控制电涡流测功器的励磁电流,从而实现对底盘测功机的闭环控制。模糊PID控制原理如图2所示。
1.1 模糊控制器的结构
模糊控制系统的关键部分就是模糊控制器的设计,它的好坏直接关系到模糊控制系统的控制性能,可以说整个模糊控制系统是否能实现控制效果,完全取决于模糊控制器的设计。模糊控制器被设计为五部分组成,分别为输入模糊化接口、数据库、规则库、模糊推理机和输出量解模糊接口,其结构框图3所示。
其中,模糊化接口作为模糊控制器的输入,它是将输入的确定量转换为模糊控制器可以识别的模糊量,只有通过模糊化接口转换的模糊量才能作为模糊控制器的输入;数据库是用来存放模糊控制系统器中全部模糊变量的隶属度值或隶属度函数的;规则库用以存放模糊控制器中的所有模糊规则,在模糊推理过程中,为推理机提供控制规则;推理机可以说是模糊控制器最重要的部分,是进行模糊推理的机构,即根据输入量和模糊规则得出需求输出的模糊量。推理过程分为正向推理和逆向推理两种,其中最基本的就是Zadeh近似推理;通过推理机推理得出的值都是模糊量,要想得到确定量就要经过解模糊接口,对模糊量进行解模糊操作,顾名思义,解模糊接口就是通过特定的方法将模糊量转换成确定量,它与模糊化接口是互逆的关系。
1.2 比例因子和量化因子
比例因子和量化因子的作用除了能够进行论域变换,使前后模块相匹配,还可以在整个系统中起到一定的调节作用。因为它们的变化就相当于对实际测量信号的缩小或放大,这将会影响到采样信号对系统的控制与调节作用。该文为了便于比较常规PID与模糊PID的控制效果,将[KP、KI、KD]这 3个因子固定,通过改变量化因子、比例因子以及模糊论域的方法去改变输出结果。
1.3 模糊范围及隶属度函数的确定
E为输入偏差e的语言变量,EC为偏差变化率ec的语言变量。{-3,-2,-1,0,1,2,3}为E和EC的取值范围,{NB,NM,ZO,PS,PM,PB}为它们的模糊子集。[KP、KI、KD]的量化范围为(一0.3,0.3),(-0.06,0.06),(-3,3)。各变量的隶属度函数均采用三角形函数,其中偏差e、ec的隶属度曲线如图4、图5所示,[KP、KI、KD] 的隶属度曲线和图3、图4相似。只是论域范围不同。
1.4 模糊控制规则设计
比例因子[KP]的作用是使输入量向误差减小的方向变化,加大[KP]可以减小静差,但如果[KP]过大,则会导致系统超调过大;微分因子[KD]的作用是对误差进行微分,加大[KD]可以使系统的响应加快,如果[KD]过大,会使系统抗干扰能力下降;积分因子[KI] 的作用是对误差进行记忆并积分,有利于消除系统的静差,由于积分运算具有滞后性,所以过大的[KI] 会影响被控制对象的动态品质。 在模糊控制规则表建立好以后,[KP、KI、KD]可查表代入下式计算:
[kp=k/p+{ei,eci}p]
[ki=k/i+{ei,eci}i]
[kd=k/d+{ei,eci}d]
其中,[k/p]、[k/i],[k/d]为设置的初始值,[{ei,eci}p]、[{ei,eci}i]、[{ei,eci}d]为通过模糊调整后的调整值。该文所采用的PID控制C程序流程图如图6所示。
2 PID控制仿真
同时建立恒转速状态下的常规PID控制、模糊PID控制仿真模型,如图7所示,以对比观察动态阶跃响应曲线,根据相关文献资料可知底盘测功机在恒速运转下的系统传递函数为
[GS=523500S3+87.35S2+10470S] ,
其中,阶跃信号作为系统的输入,在常规PID控制中,经过调试选取[KP、KI、KD]的值分别为0.9 ,0.016, 0.0001,并将此值作为模糊PID的[KP、KI、KD]初始值的参考值,在模糊PID控制中,根据[e], [ec]来调整[KP、KI、KD]的值,使得系统的动态响应跟随性较好,仿真结果如图8所示,取仿真时间为0.5 s,从图中可以看出,在常规PID控制下,响应的稳定值出现在0.3s左右,而在模糊PID的控制下,响应稳定值出现在0.17s左右,且跟随性较明显好于常规PID控制。
3 结束语
本文基于传统PID基础上设计了模糊PID控制系统,从MATLAB仿真结果可以看出.模糊PID控制比传统PID控制超调量小、震荡少、响应速度快,系统的控制精度得到进一步提高,仿真结果验证了所建立模拟PID控制模型的正确性与实用性,为对底盘测功机控制系统进一步改进、完善奠定了基础。
参考文献:
[1] 刘金琨.先进PID控制MATLAB仿真[M].3版.北京:电子工业出版社,2011.
篇6
关键词:电液伺服 位置控制 设计 仿真分析
中图分类号:TP273 文献标识码:A 文章编号:1007-9416(2011)12-0005-02
1、研究背景
电液伺服控制系统多数具有良好的控制性能,并具有一定的鲁棒性,利用计算机对其进行仿真,无论对其性能分析,还是系统辅助设计,都有重要的意义[1]。
本文利用MATLAB软件中的动态仿真工具SIMULINK,构造了电液伺服控制系统仿真模型,对其进行仿真,并详细地对其进行系统性能分析。
2、系统的分析
图2.1为某数控机床工作台位置伺服系统的系统方框原理图。由于系统的控制功率较小、工作台行程较大,所以采用阀控液压马达系统。用液压马达驱动,通过滚珠丝杠装置把旋转运动变为直线运动。(如图2.1)
工作台负载主要由切削力、摩擦力和惯性力三部分组成。假定系统在所有负载都存在的条件下工作,则总负载力为三部分组成。则总负载力为:
=3500N (1)
伺服阀选择液控型变量柱塞泵和电液伺服阀[3];位移传感器选用差动式变压器式,其增益为。放大器采用高输出阻抗的伺服放大器,放大倍数待定。
3、系统传递函数
由放大器增益、电液伺服阀的传递函数和液压―马达负载的传递函数组成,则伺服系统的开环传递函数为:
4、系统仿真分析
由以上计算得到传递函数:
(1)通过Simulink仿真,可得到可机床工作台液压伺服系统的仿真模型[2],当=90时,系统的仿真输出结果如下图4.1所示。
从系统的单位阶跃响应曲线可以看出,系统的阶跃响应性能优良,系统稳定性良好,响应快速,调节时间短。
(2)绘制系统的Bode图,求取系统的幅频性能指标。
通过matlab运行程序得出结果如图4.2所示。
如图4.2所示,可以看出:=11.6dB、=52.8°,相角裕度和幅值裕度为正值,该系统稳定。
5、结语
在液压系统设计中,利用MATLAB/SIMULINK,能够大大简化设计流程,在仿真过程中可以方便地模拟实际系统,反复调整各种参数,很快达到最佳设计要求,充分体现了MATLAB/SIMULINK工具的优越性[1]。通过本文的研究,可以为系统的设计和应用提供有利的理论支持[4]。
参考文献
[1]胡良谋,李景超,曹克强.基于MATLAB/SIMULINK的电液伺服控制系统的建模与仿真研究[J].机床与液压,2003,(3):230-232.
[2]薛定宇.基于MATLAB/Simulink的系统仿真技术与应用[M].北京:清华大学出版社,2002.
[3]王春行.液压伺服控制系统[M]北京:机械工业出版社,1989.
[4]徐志扬.基于MATLAB的液压伺服系统的仿真研究[J].液压与气动,2011(9):2-3.
篇7
【关键词】蒸发器;失控事件;Labview编程
0 概述
美国对在役压水堆核电站调查表明,核电站停堆事故的30%以上是主给水系统事故。大亚湾核电站和岭澳核电站蒸汽发生器的水位控制系统实现了从0-100%负荷的给水自动控制,这两座核电站在蒸发器水位控制系统设计和设备完全一样,核电厂在运营期间,由于蒸发器水控制系统(ARE)水位失控几乎导致跳堆,同类事故在韩国蔚珍核电站上也曾发生并导致停堆。从历史调研信息发现蒸发器水位失控事件是现场常见事件,若操作员操作不正确或处理不及时可能造成停堆。本文针对导致蒸发器的物理特性和蒸发器水位控制系统的控制原理,以及蒸发器水位控制系统水位失控的各种情况用labview语言进行仿真建模。
1 数学建模总体设计
蒸发器水位控制系统控制原理可用如图1所示的闭环来表示。
如图1,对于蒸发器水位控制系统而言,输入量有两种,一种是水位设定值,一个为反馈量,反馈量是由蒸发器数学模型产生的被控量而产生,包括:蒸发器蒸汽流量,给水流量,蒸发器水位,汽机负荷宽量程,汽机负荷窄量程,以及温度信号。另一个为定值信号,即水位整定值,该水位定值信号是由反馈量中的汽机负荷宽量程信号得到的,与水位实际信号进行对比产生差值信号。扰动量是由是引起被控量发生不期望变化的外部和内部因变量,在这里扰动量是指功率的扰动或水位定值的扰动。在整个水位控制过程中,蒸发器水位控制系统改变控制量不仅仅依据给定值还考虑了被控量的反馈量,形成了反馈控制机制。
蒸汽发生器水位控制系统设计总的框图如图2所示。
图2 蒸汽发生器水位控制系统设计框图
分别对蒸发器水位控制系统和蒸发器的水位进行数学建模再采用labview软件进行模拟仿真。
2 蒸发器水位控制系统数学建模
蒸汽发生器水位取决于给水流量、给水温度、反应堆冷却剂温度和蒸汽流量。大亚湾核电站蒸发器水位控制系统是由28块具有不同功能和整定值的bailey 9020模拟板卡按照一定的逻辑关系连接在一起实现其控制功能,蒸发器水位控制系统数学模型也是基于该控制的逻辑关系进行建立的,由于保密在本论文中不提及该逻辑关系图。
3 接口参数
蒸发器水位控制系统模型与蒸发器水位模型之间通过不同的参数进行接口构成一个闭环,进行自动控制。
接口参数有:蒸发器水位控制系统的输入信号:蒸发器水位, 蒸汽流量, 给水流量,汽机负荷宽量程,汽机负荷窄量程,给水温度;蒸发器水位控制系统的输出信号:大阀开度信号,小阀开度信号。
4 蒸发器数学模型建立
蒸发器水位控制系统处于稳定状态时,由大阀门信号和小阀门信号共同控制蒸发器的给水流量来保证蒸发器水位的正常。
水位调节器由PI组件加微分组件组成。该调节器输入端的增益可调整,成为给水温度(亦即汽机负荷)的函数。
这样,最佳调节器的设定值可在每个功率水平上进行计算。
5 labview软件实现
动态仿真系统根据控制系统给出的控制参数和边界条件,通过对蒸汽发生器数学模型的计算,模拟蒸发器水位变化的动态过程,给出蒸发器水位调节系统的输入信号,包括:
蒸汽发生器水位测量值,蒸汽流量,给水流量,反应堆冷却剂温度,汽机负荷。
控制系统输出“蒸汽发生器调节阀的开启和开度信号”到动态仿真系统进行控制对象的动态仿真。这样实现整个闭环回路的动态仿真。
动态仿真系统建立如下部件的仿真及相互联动:
蒸汽发生器:采用两相流模型模拟一二回路间的换热过程、汽水转换过程、压力变化和流动特性等
给水调节阀:模拟调节阀的特性(开度与压差及流量的关系)
主给水泵;模拟主给水泵特性(转速与扬程、流量的关系)
管道、弯头等部件:模拟阻力特性
篇8
关键词:鲁棒性 Smith预估控制器仿真模型 模糊自适应PID控制方法
中图分类号:TP391.9
文献标识码:A
文章编号:1007-3973(2012)008-075-02
1 引言
工业中的温度对象普遍具有非线性、时变性、大惯性、纯滞后性等特点,在控制中易引起系统超调和持续震荡,而影响系统的稳定性和动态品质。如何克服滞后因子带来的影响,就成为了一个温度控制系统能否长期运行的关键所在。
在众多的温度控制系统中,有不少系统具有多个温度区,当这些温区存在相互作用和强耦合的情况下,如何对其进行协调控制就成为了一个难点。
2 PID控制器
(1)PID控制器简介:从理论上讲,PID控制器对于“一阶环节与纯滞后环节相结合”、“二阶环节与纯滞后环节相结合”的被控对象而言,是一种最优控制法。
由纯滞后环节的定义可知,环节的输出y(t)和x(t)输入之间有如下的关系:
在工业调节系统中,广义对象动态特性通常近似为具有纯滞后的标准形式:
然而按照这种方法设计出来的PID控制器,在设定点的响应中经常会得出很强的振荡曲线,且超调往往很大,因此通过改进,我们给出了令一种PID控制规律:
是指令信号 和过程输出量之间的差, 是比例增益, 为积分时间或重调时间, 是微分时间。
因此PID控制律是根据对象对控制作用的历史效果,现时变现及未来需求的总和来确定控制规律,而不是依据对象的具体数学模型来决定的。
(2)PID控制参数整定:对于调节PID控制器参数的经验公式,这一调节器可以根据带有时滞环节的一阶近似模型的阶跃响应或频率响应数据来设定。假设对象的模型为:
其中——阶响应的特征参数 K 、T 和 %m 在已知频率响应数据情况下,可从Nyquist 图形上直接得出剪切频率 和该点处的幅值A (或增益)。
3 Smith预估控制器
(1)Smith预估控制算法原理:Smith控制算法是通过采用并联补偿装置来消除纯滞后对调节过程的影响,我们可以知道:
因为,所以:
由于补偿的最终目的是消除纯滞后 对调节过程的影响,所以满足:
所以:
由此我们可以建立补偿装置后的系统。如果我们建立的模型非常精确的话,即 ,且不存在负荷干扰(D=0)时,易得 , 则可以使用 代替X作为第一条反馈回路,实现将纯滞后环节移到控制回路的外面,消除纯滞后环节对控制的影响。
如果我们建立的模型不够精确或存在负荷扰动时,则 不成立,而 ,此时第一条反馈回路实现的控制不能使人满意,我们可采用第二条反馈回路作为补充。
显然,Smith控制方法的前提是必须确切地知道被控对象的是数学模型,在此基础上才能建立精确的预估模型:
(2)Smith预估控制器性能分析:经过Smith预估控制的超前补偿后,纯滞后环节 已不包含在系统特征方程里,这是Smith预估控制算法的明显优势。闭环系统经过补偿后,不受纯滞后环节的影响,闭环传输函数分子中的 仅仅是使系统的控制过程在时间轴上延迟一个时间常数 %m 。因此,系统的补偿环节完全消除了纯滞后对系统控制性能的不良影响,系统的品质和没有纯滞后环节的系统完全一致,我们可以调整控制器Gc(s)的增益,提高闭环系统的动态性能。
在实际工业生产的控制系统中,我们往往难以得到精确的系统模型,即 , 此时是难以得到以上理想情况下(即 )的控制效果的。以下再对非精确模型情况下Smith预估控制器的控制效果进行简要分析。
设 ,则系统的闭环传输函数为:
可以看出,在非精确模型的情况下,系统的特征方程中出现了纯滞后因子,换言之系统受到了纯滞后的影响,系统的动态性能下降。尤其是当 ,即系统实际的滞后时间常数和模型的滞后时间常数不相等的时候,控制会受到更大的误差影响,系统的控制品质也会大大下降。
4 模糊自适应PID控制器
(1)模糊控制器原理简介:模糊自适应PID控制器,是将模糊控制规则和常规PID结合,将控制规则和作用方案用模糊集表示,并存储在计算机内。当被控对象发生变化后,计算机根据所存储的知识自动进行判断并修改控制参数,以达到控制精度要求。模糊自适应PID控制器的核心部分是找出PID控制三个参数 与误差e、误差变化率ec之间的模糊关系。在建立两者的模糊关系的基础上,我们就能实现PID控制参数的在线自整定,从而使控制获得良好的动态性能和静态性能。同时我们可以看出,模糊自适应PID控制器实际上是两种控制方法的结合:模糊控制器+常规PID控制器=模糊自适应控制器。
(2)语言变量隶属函数的确定:模糊控制器常常以控制查询表的形式出现,在采用关系合成推理法中,通常将语言变量的论域从连续域转化成有限整数的论域。若某论域X=[-x,x],把此论域转化成整数N=[-n,-n+1,L,-1,0,1,L,n]。为此,令k为量化因子,则k= 。若在x论域中有a,则可以找到论域N中的元素y与之对应:y=ka。在本设计中,系统误差e和误差变化率ec的论域为{-3,-2,-1,0,1,2,3},其模糊子集为{NB,NM,NS,ZO,PS,PM,PB},子集中元素分别代表负大,负中,负小,零,正小,正中,正大。其中它们的隶属度函数采用Z型分布、三角形分布和S型分布。
(3)建立控制规则:模糊自适应PID是在PID算法的基础上,通过计算当前系统误差E和误差变化率EC,利用模糊规则进行模糊推理,查询模糊矩阵表进行参数调整。则模糊控制设计的核心是总结工程设计人员的技术支持知识和实际操作经验,建立合适的模糊规则表,得到针对Kp,Ki和Kd三个参数自整定的模糊控制规则表。模糊自适应PID控制使用了一种自适应性、抗干扰性更强的多温度区控制算法,辨识控制对象的参数,通过MATLAB/SIMULINK仿真离线优化设置了PID的三个参数——比例(Kp)、积分(Ki)、微分(Kd),控制系统的多个温度区,在尽量短调节时间内,最大动态偏差尽量小,将温度的静态偏差精确到0.5度,系统达到了满意的控制效果。
参考文献:
[1] 罗安,路甬祥.专家PID控制器及应用[J].信息与控制,1992(03):151-155.
[2] 郝连钢,齐蓉,蔡立虹.基于PCC的神经网络PID控制器设计[J].计算机测量与控制,2008(12).
篇9
(
2006
--
2007
年度第
2
学期)
名
称:
计算机控制系统A
题
目:
DDC单回路PID闭环
控制系统的设计及实时仿真
院
系:
自动化系
班
级:
自动班
学
号:
学生姓名:
指导教师:
设计周数:
一
周
成
绩:
日期:2007
年X月X
日
《计算机控制系统A》课程设计
任
务
书
一、目的与要求
1.
学习并了解用高级语言(C语言)实现数字PID控制算法模块程序的方法;
2.
比较验证理想微分PID和实际微分PID控制算法阶跃响应,加深对上述两种算法各自特点的认识;
3.
学习了解用模拟计算机使用方法;
4.
学习掌握A/D、D/A转换接口板的使用方法;
5.
了解一种微机中断定时的方法;
6.
学习掌握通过A/D、D/A转换用计算机获取被控对象动态特性的方法;
7.
通过实时仿真实验掌握DDC单回路控制程序编制及调试方法。
二、主要内容
1.
用C语言分别编写理想微分PID和实际微分PID控制算法模块,在微机中调试实现,并编写简单的计算机绘图程序,分别绘制并打印出上述两种算法的单位阶跃响应曲线(课外上机完成);
2.
用模拟计算机搭接成一个二阶惯性环节,作为一个模拟仿真的被控对象;
3.
用C语言编写使用HY-6060进行定时采样、定时输出的接口程序,并在微机中调试实现;
4.
由D/A输出阶跃信号,同时由A/D采集模拟的被控对象的响应,绘制并打印出采集获得的飞升曲线,并初步计算出对象模型;
y
5.
由模拟计算机搭接的二阶惯性环节作为系统中的被控对象,用计算机作为DDC控制器,通过HY-6060接口板实现对模拟机的实时控制。仿真实验系统的框图如下:
r
+
u
PID
模拟机
D/A
-
A/D
6.
整定控制器PID参数,在设定值阶跃情况下,打印控制量u和被控量y的曲线。
三、进度计划
序号
设计内容
完成时间
备注
1
编写数字PID控制算法模块
本设计开始前
在课程要求的8学时课外上机时间完成
2
本设计其它内容按小组分工协作完成
设计周五
3
验收、答辩
设计周末前
四、设计(实验)成果要求
1.
根据个人在设计小组中的分工,完成设计内容;
2.
分析实时仿真结果,每人完成设计报告。设计报告除C语言源程序及打印的结果曲线外,必须手写完成,不得使用打印稿;
3.
提交设计报告,参加设计答辩。
五、考核方式
按小组对设计内容进行演示,由教师检查验收,答辩按学生个人进行,给出综合成绩。
学生姓名:
指导教师:
2007
年
X月X
日
正
文
一.设计思想
运用编程软件Turboc2.0,开发名为Administrators的监控软件。Administrators包含HY-6060进行定时采样、定时输出的接口模块,手/自动切换模块及控制界面显示模块。对PID参数进行整定后,通过HY-6060对用模拟计算机所搭接二阶惯性环节数据的采集,在可视化界面中获得直观的响应曲线,并通过HY-6060接口板实现对模拟机的实时控制。
二.设计步骤
1.前期准备工作
(1)需要一台具有PC插槽的微型计算机并安装具有直接I/O能力的Windows
98系统以及Turboc2.0软件,HY-6060及接线板一套,模拟计算机一台。
(2)复习Turboc2.0并参照说明书学习
HY-6060的使用
2.
PID的设计:
(1)采用连续传递函数的离散化方法,如向后差分法及双线性变换法,将理想微分PID算式和实际微分PID算式离散化,写成差分方程的形式,从而便于用计算机实现。
理想微分PID:
c0=kp*(1+T/Ti+Td/T);
c1=-kp*(1+2*Td/T);
c2=kp*Td/T;
u[0]=u[0]+q0*e[2]+q1*e[1]+q2*e[0];
实际微分PID:
c0=Tf/(T+Tf);
c1=kp*T/(T+Tf)*(1+T/Ti+Td/T);
c2=-kp*T/(T+Tf)*(1+2*Td/T);
c3=kp*Td/(T+Tf);
a=c0*(u[0]-u[1])+c1*e[0]+c2*e[1]+c3*e[2]+u[0];
(4)设置死区:在实际控制系统中,并不要求被控量十分精确的与设定值相等,完全无差,而是容许偏差在一定范围内变化,在这种情况下,计算机控制为了避免控制动作过于频繁,以消除系统振荡,就会采用带死区的PID算法。
该算法是在原PID算法前加一个不灵敏区来实现,即
设置不灵敏区C值
当|e(k)|>C时,|e(k)|=|e(k)|;
当|e(k)|
(5)
手动/自动跟踪和无扰切换
自动到手动过程:系统处于自动时,手操器实时跟踪PID调节器的输出,当切换到手动时,被控对象处于手操器的开环控制,调节器跟踪手操器的输出。
通过设置键盘,使的按下手动键H时,系统处于手动状态,按下自动键A时,系统处于自动状态,同时设置相应的功能键,P为暂停,E为退出。
3.二阶惯性环节的搭接
利用模拟计算机中的电容电阻及运算放大器,搭接已经设计好的二阶惯性环节,仿真一个被控对象。其传递函数为,
为使增益为1左右并且对象的惯性时间足够大
令R1=R2=R3=R4=R=1M
R5=R6=510K,C1=C2=C=4.7uF
则K=(R2/R1)*(R4/R3)=1
T1=T2=R*C=1000000*0.0000047=4.7s
所以G(s)=1/(4.7s+1)*(4.7s+1)
将HY-6060插入微型计算机的PC插槽,用硬盘线、接线板及导线将HY-6060与所搭二阶惯性环节连接,实现计算机与二阶系统的硬件连接,为通信做好准备。
接线电路图如下:(手抄)
4.
PID参数整定
通过使用matlab获得对象的阶跃响应曲线,从而确定出对象的延迟时间、时间常数T,开环增益K,根据
内模整定法得出PID调节器参数的初步整定值。再通过实验调整初步整定值最终得出一组PID参数使系统在给定值阶跃扰动下的响应曲线比较理想。
于是有:T=11.5
=2
K=1
则
Ti=T=11.5
Td=0.5*=1
=0.5*K*/T=1/11.5
Kp=11.5
Tf=0.2
5.A/D采集与D/A转换
(1)过程:采集二阶惯性环节输出的电压并通过HY-6060对该模拟量进行A/D转换,然后将其送入微型计算机,将转化后的数字信号与设定值进行比较,利用偏差进行PID控制,将PID调节器的输出量送给HY-6060进行D/A转换得到模拟信号,即电压值,再送给二阶惯性环节,从而得到新的二阶惯性环节的输出量,该输出量再次由HY-6060采集并进行A/D转换。
采样时间取0.055s,由中断实现。
(2)HY-6060的使用:
通过调整PID使板基地址base为260
H
Base+0为模拟输入信号通道选择寄存器,实验中选用通道1
base+1为转换完成位寄存器,最高位置1转换完成,置0转换未完成
base+2为转换低8位数据寄存器
base+3为转换高4位数据寄存器
base+4为命令字寄存器,实验中置0从而屏蔽定时触发和外触发。
通过调整JP1、JP2、JP5、JP6使模拟电压输入范围为单极性输入0--+10
通过调整JP3、JP4使模拟电压输出范围为单极性输出0--+10
(3)数模标度变换
采集的模拟量A是最大范围为0--+10的电压,而经转换后在电脑中的数字量D是12位二进制数,对应范围是0—FFFH,即数字量D=A*FFFH/10。
例如0V的电压对应数字量是000H。
6.控制界面设计
本小组使用Turboc2.0基本控制界面实现对被控对象的PID参数设置及调整,通过本控制界面可实现手/自动控制切换。
三.实验结果
本小组采用实际PID调节器控制具有迟延的二阶对象(其中二阶对象由模拟计算机实现),获得了良好的效果。其中整定的实际PID调节器参数如下:
kp=11.5
Ti=11.5
Td=1
Tf=0.2
峰值时间(s)
超调量
(%)
调节时间(s)
原系统阶跃响应
30
30
整定后系统阶跃响应
3.9
15.1%
14.7
原系统阶跃响应曲线,整定后系统的阶跃响应曲线,系统运行曲线,手/自动切换PID调节器输出曲线见附录。
四.实验总结
1.实验过程中,因本小组遇到的难点主要集中在硬件方面如HY-6060的使用、A/D通道和D/A通道连接测试等硬件方面的问题及软件的查错调试等,因本小组成员在这些方面经验不足,所以在解决这些问题的过程中本小组成员虚心向老师及周围同学请教,获得了解决问题的基本思路后积极讨论,从而使问题得到了较为圆满的解决。
2.本小组设计最突出的创新特色是整定PID的过程中使用了内模整定法,使得整定过程非常简洁轻松,并且整定参数在实际使用整定效果非常出色,但因时间及所学知识有限无法实现比较人性化的操作界面及其他一些较复杂的功能,使得本次设计中仍存在一些缺憾,本小组成员将以这次设计过程中获得经验教训为契机在以后的学习中更加注重将所学知识与实践结合,使以后的作品更加完善。
五.参考文献
六.附录
1.硬件连接图
2.PID响应曲线
理想PID响应曲线:
实际PID响应曲线:
3.对象飞升特性曲线
4.给定值扰动曲线
5
.
程序清单
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include
#pragma
hdrstop
#include
“Unit1.h“
//---------------------------------------------------------------------------
#pragma
package(smart_init)
#pragma
resource
“*.dfm“
TForm1
*Form1;
//---------------------------------------------------------------------------
__fastcall
TForm1::TForm1(TComponent*
Owner)
:
TForm(Owner)
{
}
//---------------------------------------------------------------------------
#include
#include
static
double
e[3],u[2],y[3],sp,manual,Ucc,realstep,idealstep,tall;
int
t,t1,height,width;
double
T;
double
kp=5;
double
Ti=10;
double
Tf=10;
double
Td=3;
typedef
unsigned
char
UINT8;
typedef
unsigned
short
UINT16;
void
outportb(UINT16
Port,UINT8
x)
{
asm
mov
dx,Port
asm
mov
al,x
asm
out
dx,al
}
UINT8
inportb(UINT16
Port)
{
UINT8
r;
asm
mov
dx,Port
asm
in
al,dx
asm
mov
r,al
return
r;
}
void
pidout();
void
sample()
{
int
i,j;
float
k;
unsigned
char
h,l;
outportb(0x264,0);
for(i=0;i
outportb(0x260,0x0f);
for(i=0;i
outportb(0x261,0);
for(i=0;i
for(j=0;j
l=inportb(0x262);
for(i=0;i
h=inportb(0x263);
h=h&0x0f;
i=(int)h*256;
i=i+(int)l;
Ucc=5.0;
//y数组用于纯迟延,即y[2]保存当前时刻的对象输出的采样值,
//经过两拍,由y[2]变为y[1],y[1]变为y[0]才用于计算偏差信号
e[0]=sp-y[0];
y[0]=y[1];
y[1]=y[2];
//被控对象的电压输出范围为-5V~+5V,
//通过该转换公式将输出电压值转换为000H~FFFH
y[2]=(i-2047)*2.0*Ucc/4095;
return;
}
void
pidout()
{
int
i;
unsigned
char
h,l;
i=(u[0]+5)*4095/10;
h=i/256;
l=i-h*256;
outportb(0x262,l);
for(i=0;i
outportb(0x263,h);
for(i=0;i
outportb(0x261,0);
return;
}
void
idealpid()
{
double
q0,q1,q2;
q0=kp*(1+T/Ti+Td/T);
q1=-kp*(1+2*Td/T);
q2=kp*Td/T;
u[0]=u[0]+q0*e[2]+q1*e[1]+q2*e[0];
e[2]=e[1];
e[1]=e[0];
return
;
}
void
realpid()
{
int
i;
double
a,k,q1,q2,q3,q4,q5,A=11,death=0.001,saturate=10;
//加死区
if(fabs(e[0])
return
;
//积分分离
if
(fabs(e[0])>A)
k=10000;
else
k=1;
Ti=Ti*k;
/*q0=Td/(Td+Kd*T);
q1=kp*Td*(1+Kd)/(Td+Kd*T);
q2=-kp*(2*Ti*Td*(1+Kd)+Td*(Kd*Ti+Td))/(Ti*(Td+Kd*T));
q3=kp*(Ti*Td*(1+Kd)+T*(Kd*Ti+Td)+Kd*T*T)/(Ti*(Td+Kd*T));
q0=Tf/(T+Tf);
q1=(kp*T+T*T*kp/Ti+Td*kp)/(T+Tf);
q2=-(2*kp*Td+T*kp)/(T+Tf);
q3=Td/(kp*T+kp*Tf);
a=u[0]+q0*(u[0]-u[1])+q1*e[2]+q2*e[1]+q3*e[0];
c0=Tf/(T+Tf);
c1=kp*T/(T+Tf)*(1+T/Ti+Td/T);
c2=-kp*T/(T+Tf)*(1+2*Td/T);
c3=kp*Td/(T+Tf);
a=c0*(u[0]-u[1])+c1*e[0]+c2*e[1]+c3*e[2]+u[0];
if(a>saturate)
{
k=10000;
Ti=Ti*k;
c0=Tf/(T+Tf);
c1=kp*T/(T+Tf)*(1+T/Ti+Td/T);
c2=-kp*T/(T+Tf)*(1+2*Td/T);
c3=kp*Td/(T+Tf);
a=c0*(u[0]-u[1])+c1*e[0]+c2*e[1]+c3*e[2]+u[0];
}
if(a>saturate)
a=saturate;
*/
//采用PID递推算法
q1=4*Tf/(T+2*Tf);
q2=(T-2*Tf)/(T+2*Tf);
q3=(4*kp*Ti*Td+2*Ti*kp*T+kp*T*T)/(2*Ti*T+4*Ti*Tf);
q4=(2*kp*T-8*kp*Ti*Td)/(2*Ti*T+4*Ti*Tf);
q5=(4*kp*Ti*Td-2*Ti*kp*T+kp*T*T)/(2*Ti*T+4*Ti*Tf);
a=q1*u[0]+q2*u[1]+q3*e[0]+q4*e[1]+q5*e[2];
//抗积分饱和
if
(abs(a)>saturate)
{
k=10000;
Ti=Ti*k;
q1=4*Tf/(T+2*Tf);
q2=(T-2*Tf)/(T+2*Tf);
q3=(4*kp*Ti*Td+2*Ti*kp*T+kp*T*T)/(2*Ti*T+4*Ti*Tf);
q4=(2*kp*T-8*kp*Ti*Td)/(2*Ti*T+4*Ti*Tf);
q5=(4*kp*Ti*Td-2*Ti*kp*T+kp*T*T)/(2*Ti*T+4*Ti*Tf);
a=q1*u[0]+q2*u[1]+q3*e[0]+q4*e[1]+q5*e[2];
}
if
(abs(a)>saturate)
//如果出现积分饱和,对PID控制器输出u[k]限幅
{
if
(a>saturate)
a=saturate;
else
a=(-1)*saturate;
}
u[1]=u[0];
u[0]=a;
e[2]=e[1];
e[1]=e[0];
Ti=10;
return
;
}
void
realpidstep()
{
int
i;
double
a,k,q1,q2,q3,q4,q5,A=11,death=0.001,saturate=10;
//加死区
if(fabs(e[0])
return
;
//积分分离
if
(fabs(e[0])>A)
k=10000;
else
k=1;
Ti=Ti*k;
//采用PID递推算法
q1=4*Tf/(T+2*Tf);
q2=(T-2*Tf)/(T+2*Tf);
q3=(4*kp*Ti*Td+2*Ti*kp*T+kp*T*T)/(2*Ti*T+4*Ti*Tf);
q4=(2*kp*T-8*kp*Ti*Td)/(2*Ti*T+4*Ti*Tf);
q5=(4*kp*Ti*Td-2*Ti*kp*T+kp*T*T)/(2*Ti*T+4*Ti*Tf);
a=q1*u[0]+q2*u[1]+q3*e[0]+q4*e[1]+q5*e[2];
//抗积分饱和
if
(abs(a)>saturate)
{
k=10000;
Ti=Ti*k;
q1=4*Tf/(T+2*Tf);
q2=(T-2*Tf)/(T+2*Tf);
q3=(4*kp*Ti*Td+2*Ti*kp*T+kp*T*T)/(2*Ti*T+4*Ti*Tf);
q4=(2*kp*T-8*kp*Ti*Td)/(2*Ti*T+4*Ti*Tf);
q5=(4*kp*Ti*Td-2*Ti*kp*T+kp*T*T)/(2*Ti*T+4*Ti*Tf);
a=q1*u[0]+q2*u[1]+q3*e[0]+q4*e[1]+q5*e[2];
}
if
(abs(a)>saturate)
//如果出现积分饱和,对PID控制器输出u[k]限幅
{
if
(a>saturate)
a=saturate;
else
a=(-1)*saturate;
}
u[1]=u[0];
u[0]=a;
e[2]=e[1];
e[1]=e[0];
Ti=10;
return
;
}
void
__fastcall
TForm1::Button1Click(TObject
*Sender)
{
//initial();
T=Timer1->Interval;
T=T/1000.;
manual=0;e[0]=0;e[1]=0;e[2]=0;u[0]=0;u[1]=0;
y[0]=0;y[1]=0;y[2]=0;Ucc=5;t=0;t1=0;tall=0;
sp=StrToFloat(Edit4->Text);
realstep=0;
idealstep=0;
pidout();
height=PaintBox2->Height;
width=PaintBox2->Width;
PaintBox1->Canvas->Pen->Color=clRed;
PaintBox2->Canvas->Pen->Color=clBlue;
PaintBox1->Canvas->MoveTo(8,height/2);
PaintBox2->Canvas->MoveTo(8,height/2);
PaintBox1->Invalidate();
PaintBox2->Invalidate();
Timer1->Enabled=true;
}
//---------------------------------------------------------------------------
void
__fastcall
TForm1::Button2Click(TObject
*Sender)
{
Timer1->Enabled=false;
}
//---------------------------------------------------------------------------
void
__fastcall
TForm1::BitBtn1Click(TObject
*Sender)
{
t1=t1+1;
}
//---------------------------------------------------------------------------
void
__fastcall
TForm1::BitBtn2Click(TObject
*Sender)
{
t1=t1-1;
}
//---------------------------------------------------------------------------
void
__fastcall
TForm1::Timer1Timer(TObject
*Sender)
{
int
ypos,upos;
tall=tall+T;
if(realstep==1)
{
realpidstep();
upos=height-(u[0]+5)*height/10;
if(t>72)
{
t=-1;
PaintBox2->Invalidate();
PaintBox2->Canvas->MoveTo(0,upos);
}
t=t+1;
PaintBox2->Canvas->LineTo(10*t+10,upos);
Edit3->Text=FloatToStr(u[0]);
Edit5->Text=FloatToStr(tall);
}
else
if
(idealstep==1)
{
idealpid();
upos=height-(u[0]+5)*height/10;
if(t>72)
{
t=-1;
PaintBox2->Invalidate();
PaintBox2->Canvas->MoveTo(0,upos);
}
t=t+1;
PaintBox2->Canvas->LineTo(10*t+10,upos);
Edit3->Text=FloatToStr(u[0]);
Edit5->Text=FloatToStr(tall);
}
else
{
int
unchange=0,s1,s2,s3,upos,ypos;
//采集A/D转换的系统输出数据y[k]
sample();
Edit2->Text=FloatToStr(y[0]);
//PID调节器处理偏差信号
if
(manual==MANUAL->Checked)
unchange=20;
manual=MANUAL->Checked;
if
(MANUAL->Checked)
s2=10;
else
s2=5;
if(RealPID->Checked)
s1=1;
else
s1=0;
s3=s1+s2+unchange;
switch
(s3)
{
case
5:
Form1->Edit1->Text=““;
//手动到自动
for
(int
i=0;i
e[i]=0;
u[1]=u[0];
idealpid();
break;
case
6:
for
(int
i=1;i
e[i]=0;
sample();
u[1]=u[0];
sp=StrToFloat(Edit4->Text);
realpid();
if(fabs(u[0]-u[1])>0.2)
{
Form1->Edit1->Text=“偏差太大,无法切换“;
MANUAL->Checked=true;
u[0]=u[1];
}
else
Form1->Edit1->Text=““;
break;
case
10:
u[0]=u[0]+t1;
//自动到手动
t1=0;
Form1->Edit1->Text=u[0];
break;
case
11:
u[0]=u[0]+t1;
t1=0;
Form1->Edit1->Text=u[0];
break;
case
25:
idealpid();break;
//
不切换
case
26:
realpid();
break;
case
30:
u[0]=u[0]+t1;
t1=0;
Form1->Edit1->Text=u[0];
break;
case
31:
u[0]=u[0]+t1;
t1=0;
Form1->Edit1->Text=u[0];
break;
}
//图形显示当前y[k]和u[k]
ypos=height-(y[0]+5)*height/10;
upos=height-(u[0]+5)*height/10;
if(t>72)
{
t=-1;
PaintBox1->Invalidate();
PaintBox2->Invalidate();
PaintBox1->Canvas->MoveTo(0,ypos);
PaintBox2->Canvas->MoveTo(0,upos);
}
t=t+1;
PaintBox1->Canvas->LineTo(10*t+10,ypos);
PaintBox2->Canvas->LineTo(10*t+10,upos);
//将u[k]通过D/A转换输送给被控对象
pidout();
Edit3->Text=FloatToStr(u[0]);
Edit5->Text=FloatToStr(tall);
}
}
//---------------------------------------------------------------------------
void
__fastcall
TForm1::Button4Click(TObject
*Sender)
{
realstep=1;
idealstep=0;
T=Timer1->Interval;
T=T/1000.;
e[0]=1;e[1]=0;e[2]=0;
u[0]=0;u[1]=0;t=0;
height=PaintBox2->Height;
PaintBox2->Canvas->Pen->Color=clBlue;
PaintBox2->Canvas->MoveTo(8,height/2);
tall=0;
PaintBox1->Invalidate();
PaintBox2->Invalidate();
Timer1->Interval=300;
Timer1->Enabled=true;
}
//---------------------------------------------------------------------------
void
__fastcall
TForm1::BitBtn3Click(TObject
*Sender)
{
sp=sp+1.00;
Edit4->Text=FloatToStr(sp);
}
//---------------------------------------------------------------------------
void
__fastcall
TForm1::BitBtn4Click(TObject
*Sender)
{
sp=sp-1.00;
Edit4->Text=FloatToStr(sp);
}
//---------------------------------------------------------------------------
void
__fastcall
TForm1::Button3Click(TObject
*Sender)
{
idealstep=1;
T=Timer1->Interval;
T=T/1000.;
realstep=0;
e[0]=1;e[1]=0;e[2]=0;
u[0]=0;u[1]=0;t=0;
height=PaintBox2->Height;
PaintBox2->Canvas->Pen->Color=clBlue;
PaintBox2->Canvas->MoveTo(8,height/2);
tall=0;
PaintBox1->Invalidate();
PaintBox2->Invalidate();
Timer1->Interval=300;
Timer1->Enabled=true;
篇10
关键词:EDA;EWB;交通信号灯;控制系统
中图分类号:TP391文献标识码:A文章编号:1009-3044(2007)15-30821-03
Design and Simulation on Control System of Traffic Lights Based on EWB
GENG Wen-bo1, HUANG Wei2
(1. Zhoukou Normal University, Zhoukou, 466000, China; 2. Lanzhou Jiaotong University, Lanzhou, 250014, China)
Abstract:The development of Electronic Design Automation (EDA) technique is rapid and Electronics Workbench (EWB) is one of those excellent software about analysis and design on electronic circuit. It can design, analysis and simulate digital circuit and analog circuit; Introduce a method of simulation on control system of traffic lights based on EWB.
Key words:EDA; EWB; Traffic Lights; Control System
1 引言
传统的电子电路与系统设计方法,费时费力,效率低,周期长,耗材多,难以满足电子技术飞速发展的要求,近年来迅速发展并日臻完善的电子设计自动化(EDA)技术,将先进的计算机技术应用于电子设计过程,它已被广泛应用于电子电路设计、仿真、集成电路版(PCB)的设计以及可编程器件的编程等各项工作之中,EDA技术的发展,极大地提高了电子电路与系统的设计质量与效率。
Electronics Workbench(简称EWB)是加拿大 Interactive Image Technologies Ltd. 公司开发的电子电路计算机仿真软件,被称为“虚拟电子工作台”,是EDA技术的优秀软件之一,该软件采用图形方式创建电路,形象逼真,操作方便,与著名的电路分析软件“SPICE”完全兼容。非常适合电子信息专业课程的教学和仿真实验。目前已在电子设计和各大学的电工电子类课程教学领域内得到了广泛的应用。本文详细论述使用EWB这种EDA软件设计交通信号灯控制系统的过程。
2 整体规划与设计
2.1 系统功能要求
十字路通信号灯控制示意图如图1所示。设系统工作的十字路口由主、支两条干道构成,四路口均设红、黄、绿三色信号灯和用于显示还剩余多少时间将改变信号灯的数码显示器。
要求:主、支干道交替通行,通行时间均可在0~99s内任意设定;绿灯换红灯前,黄灯先亮较短时间(也可在0~99s内任意设定),用以等待十字路口内滞留车辆通过;主支干道通行时间和黄灯亮的时间均由同一计数器按减计数方式计数(零状态为无效态);在减计数器回零瞬间完成十字路口通行状态的转换(换灯)。
图1 十字路通信号灯控制示意图
2.2 系统工作流程图
设主干道通行时间为N1,支干道通行时间为N2,主、支干道黄灯亮的时间均为N3,通常主干道车流量大,支干道车流量小,通行时间设置为N1>N2>>N3。系统工作流程图如图2所示。
图2系统工作流程图
2.3 系统硬件结构框图
根据系统要求,设计系统硬件结构框图如图3所示。图中秒信号发生器产生标准的秒信号。可预置计数器进行递减计数,根据置数控制电路的控制信号,计数的长短可作相应调整,计数完成后产生一个输出信号到到状态控制电路,状态控制电路经过译码,驱动主干道和支干道的红、黄、绿三色灯作相应的状态变化。可预置计数器计数状态通过数码显示电路显示相应计数值。
图3 系统硬件结构框图
3 各部分单元电路设计
3.1 状态控制及信号灯指示电路
3.1.1 状态控制电路
由流程图可见,系统有4种不同的工作状态(S0~S3),选用四位二进制递增计数器74163作状态控制电路,可选中74163然后单击工具栏中帮助按钮“?”得到74163的功能表,其电路符号参见图4,取低两位输出QB、QA作状态控制电路的输出。状态编码S0、S1、S2、S3分别为00、01、10、11。
3.1.2 信号灯指示电路
表1 指示灯驱动函数真值表
该电路也称状态译码器。以状态控制电路的输出(QB、QA)作译码器的输入变量,根据4种不同通行状态对主、支干道信号灯的控制要求,列出如表1所示的指示灯驱动函数真值表。
经化简(可利用逻辑转换仪)得六个指示灯驱动函数:
根据指示灯驱动函数逻辑表达式,可画出信号灯指示电路。将状态控制电路、信号灯指示电路及模拟三色信号灯相连接,构成状态控制及信号灯指示电路如图4所示。
图4 状态控制及信号灯指示电路
为了便于调试和简化系统总图,我们采用子电路图表示法,将虚线框内的74163和组合逻辑电路放在一起定义为子电路KZDL。用子电路表示的控制及信号灯指示电路如图5所示。双击KZDL后打开可以查看和修改电路。
图5 用子电路表示的状态控制及信号灯指示电路
3.2 计数器及数码显示电路
选用2片74190十进制可逆计数器构成两位十进制可预置数的递减计数器。为了便于控制,置数电路可根据需要改换。计数器及数码显示电路如图6所示。2片计数器间采用异步级联方式,利用个位计数器的借位输出脉冲RCO'直接作为十位计数器的计数脉冲,接入十位计数器的CLK端;个位计数器直接接入秒脉冲信号。计数器的D1、C1、B1、A1和D0、C0、B0、A0分别为十位和个位的8421BCD码置数输入端,当则LOAD'端为低电平时,完成置数功能。由于计数器在零状态时RCO'为低电平,其它时间为高电平,故当个位计数器与十位计数器的RCO′均为低电平时可作为置数控制信号和指示电路控制信号(图6中的ZS端),从而实现计数器减至“00”状态瞬间完成置数和指示灯转换。通过8421码置数输入端,可以选择100以内的数值,实现0~100s内自由选择的定时要求,图6接法预置数为99。
图6 计数器及数码显示电路
为了简化系统,同样我们将图6虚线框内的电路定义为子电路JSDL,用子电路表示的计数器及数码显示电路如图7所示。
图7用子电路表示的计数器及数码显示电路
3.3 分时置数锁存电路
为使系统简化,我们用同一计数器分时显示主、支干道通行时间(即主、支干道绿灯亮的时间)和主支干道通行转换中黄灯亮的时间,为此必须解决好分时置数问题。选用3片74465八路单向三态传输门(功能表可使用EWB的帮助按钮查看)作为预置数的存储单元来实现计数器分时置数控制电路如图8所示。G7~G0为主干道绿灯置数端,g7~g0为支干道绿灯置数端,y7~y0为主支干道黄灯置数端;AG',Ag'和AY'为3片74465选通端,由主干道绿灯、支干道绿灯和黄灯选通;D7~D0为按由高到低排列后的输出端,要接到计数器的置数输入端。工作时,3片74465只能有1片选通,其它两片输出均处于高阻态。
图8分时置数锁存电路
在图8所示的分时置数锁存电路中,将虚线框内的电路定义为SCDL电路。用子电路表示的分时置数锁存电路如图9所示。
图9用子电路表示的分时置数锁存电路
3.4 秒信号发生器
秒信号发生器可由石英晶体多谐振荡器构成,为简化电路,直接选用1Hz的脉冲信号源代替秒信号发生器。
4 系统组装与调试
在EWB主界面内,将各单元电路用粘贴的方法置于同一界面内,再按照各自对应关系相互连接构成的交通信号灯控制器的系统总电路如图10所示。显然,由于采用了子电路表示法,系统总电路大大减化。
在该系统中,由G7~G0设定主干道通行时间为35s,AG'由主干道绿灯亮时选通。由g7~g0设定支干道通行时间为25s,Ag'由支干道绿灯亮时选通。由y7~y0设定黄灯亮的时间为5s,AY'由主干道或支干道黄灯亮时选通。当递减计数器回零瞬间,置数控制端产生一个窄负脉冲,经反相器变为正脉冲,送至状态控制电路时钟脉冲输入端,使状态控制电路转换为下一个工作状态,信号灯指示电路完成换灯的同时选通下一片74465,计数器置入新的定时值并开始新状态下的递减计数,当计数器再计数回零时又重复上述过程,这样信号灯就自动按设定时间交替转换。
图10 交通信号灯控制器总电路
在上述系统中,置数输入是根据定时时间的8421BCD码将相应的输入端接高、低电平实现的,在实际应用中,可采用BCD拨码盘来实现计数器的预置数控制。
在系统总电路安装调试中,首先调试好各单元电路,然后进行合理的连接,要特别注意电路之间的高、低电平配合。系统组装完毕后,要求检查各单元电路间连接是否正确,然后单击仿真开关调试总电路。上述调试过程可反复进行,直到符合要求。
5 结束语
EWB的仿真手段切合实际,选用元器件和仪器与实际情形非常相近,并均可直接从屏幕上选取,而且仪器的操作开关、按键同实际仪器极为相似,改变了传统的基于电路板的设计方法,从而可以大大缩短设计时间,节约开发费用,提高效率。实践证明EWB软件是人们设计电子电路的有效工具,是一款值得推荐的EDA软件。
参考文献:
[1] 闫石. 数字电子技术基础[M]. 北京:高等教育出版社,1998.
[2] 周常森. 电子电路计算机仿真技术[M]. 济南:山东科学技术出版社,2001.8.
[3] 钱恭斌, 张基宏. Electronics Workbench――实用通信与电子线路的计算机仿真[M]. 北京:电子工业出版社,2001.1.
[4] 包明. EDA技术与数字系统设计[M]. 北京:北京航空航天大学出版社,2002.7.