ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:528.83KB ,
资源ID:3631740      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3631740.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Truetime网络仿真可修改.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Truetime网络仿真可修改.docx

1、Truetime网络仿真可修改网络控制系统的调度研究与仿真(Truetime工具)1.节点的驱动方式网络控制系统中的传感器一般采用时钟驱动,传感器的时钟即为系统的时钟,而控制器和执行器既可以是时钟驱动,也可以是事件驱动。但事件驱动相比于时钟驱动具有以下优点:(1)控制器或执行器为事件驱动方式时,从源节点(传感器或控制器)发送的数据一旦到达目标节点(控制器或执行器)便马上执行,而在时钟驱动方式时控制器或执行器的数据被执行要等到规定的时间点,因此事件驱动方式客观上减少了网络诱导时延;(2)控制器或执行器为事件驱动方式时,避免了控制器或执行器为时钟驱动方式时与传感器时钟同步的困难;(3)控制器或执行

2、器采用事件驱动方式时,避免了控制器或执行器为时钟驱动方式时容易出现的空采样和数据丢失,提高了反馈数据的利用率。事件驱动相对于时钟驱动也有一定缺点:(1)在实际运用中事件驱动较难实现。(2)部分实际的网络控制系统不支持事件驱动方式。2. TrueTime工具箱结构与功能Truetime是由瑞典Lund工学院Henriksson等人开发的一个基于Matlab/Simulink的实时网络控制系统的仿真工具箱,为NCS理论的仿真研究提供了简易可行、功能齐全的手段,拜托了软件编程实现特定的网络通讯协议、通信延迟所带来的困难,支持控制与实时调度同时仿真可以方便地仿真实时系统中的资源调度问题。TrueTim

3、e仿真软件主要包括两个基本模块:内核模块(TrueTime Kernel)和网络模块(TrueTime Network),如图1所示。内核模块可以是时间驱动也可以是事件驱动的,它主要包含了一个实时内核,A/D,D/A转换端口,与网络模块连接的信号端口(信号接收(Rcv),信号发送(Snd),实时调度(schedule)显示端口等,调度器与监视器的输出用于显示仿真过程中公共资源(CPU、监控器、网络)的分配,此外,它还有一个外部中断通道(Interrupts)可以处理外部中断。任务和中断处理器的执行需要通过用户自定义函数来实现。调度策略使用一个优先权函数来决定任务的属性。图1 Truetime工

4、具箱网络模块是事件驱动的,当有消息进入或离开网络时它便执行。一条消息包含的信息有发送和接收节点号,用户数据(如测量信号和控制信号),消息的长度和其他可选的实时属性(如优先级或最终时限等)。网络模块包含两个信号端口(信号接收(Rcv),信号发送(Snd),以及一个实时调度(schedule)显示端口。其中收发信号端口可以通过Matlab模块扩充至多个接口,TrueTime中预定义了多种调度策略,包括固定优先级(Fixed Priority),单调速率(RM,Rate Monotonic),截止期单调(DM,Dead line Monotonic),最小截止期优先(EDF,Earliest Dea

5、d line First),同时,它还有多种介质访问控制协议(CSMA/CD,CSMA/CA,Round Robin,FDMA或TDMA)和相应的参数可以选择,如图2所示。图2 Truetime网络模块Network number:网络模块的数量。Number of nodes:连接在网络模块的节点数量。Data rate (bits/s):网络传输速率。Minimum frame size (bits):协议的最小结构长度。Pre-processing delay (s):信息在网络接口上的发送时延。Post-processing delay (s):信息在网络接口上的接收时延。Loss p

6、robability (01):丢包率。利用TrueTime仿真软件,网络控制系统中的各个处理单元(包括传感器、控制器和执行器)都可以由计算机模块构建,而网络控制系统的实时网络可以由所需协议的网络模块来构建,另外,再结合Matlab/Simulink的其他控制模块,就可以简便而又快速的构建一个实时的网络控制系统。利用TrueTime仿真软件包的优点在于:(1)由于该仿真软件中两个基本模块具有通用性,在构建各个处理单元时只需选用其相应的接口功能进行连接即可,因此大大加快模型构建的速度。(2)该仿真软件可以比较方便模拟各种实时调度策略,并通过Scope可以很方便地观察各个任务的调度情况和对象的输出

7、情况。 (3)在网络模块中,可以很方便的模拟数据传输率、数据包的大小和丢包率等网络参数,有利于分析各类参数对网络控制系统的性能影响。使用TrueTime进行仿真时,首先要对网络控制系统中的内核模块TrueTime Kernel和网络模块TrueTime Network以及各个节点进行初始化,在初始化中需要完成以下工作:1.初始化功能块内核,设置功能块输入、输出端口的数目和调度策略。2.定义消息函数,并根据节点采用的驱动方式,设置不同的消息调度策略。对于时钟驱动的节点,调用ttCreatPeriodicTask函数,设置周期性的任务调度策略,以实现定时采样功能。对于事件驱动的节点,调用ttCre

8、ateInterruptHandler函数,设置中断式消息调度策略,使节点在接受到网络数据后触发相应的消息。3.初始化网络端口,设置节点对应的网络端口代号。控制网络功能由TrueTime Network功能块实现。网络类型、节点数、传输速率以及丢包率等参数可以通过TrueTime Network功能块的设置窗口进行设置。具体的参数选项根据网络类型的不同而不同。表1 伪码举例伪码名称功能ttAnalogIn从输入通道取值ttAnalogOut设定输出通道值ttSendMsg在网络上发送信息ttGetMsg从网络输入队列中获取信息ttWait等一个事件ttCreateTimer在指定时间触发中断句

9、柄ttSetpriority改变任务优先级ttCurrentTime获取当前系统时间表2 TrueTime核心模块接口功能接口功能A/D把从外界接收的模拟信息转换成数字信息Interrupts为该模块提供中断句柄Rcv接收数字信息D/A把模拟信息转换成数字信息输出Snd发送数字信息Schedule和“Monitors”查看仿真过程中系统资源的分配情况Monitors和“Schedule”查看仿真过程中系统资源的分配情况P如果需要,可以接通电池(TrueTime提供电池模块)TrueTime Network模块提供了3个接口来进行数据的传递或者监控系统的运行,其功能如表3所示。表3 TrueTi

10、me网络模块接口功能接口功能Snd接收由TrueTime Kernel模块的Snd端口发送的数字信息Rcv发送数字信息至TrueTime Kernel模块的Rcv端口Schedule查看仿真过程中系统资源的分配情况 上述2个模块均为事件驱动,包括内部事件和外部事件。内部事件通常是由时钟中断触发的,如时间队列释放一个任务或是计时终结都会引发时钟中断。而外部事件主要是和网络模块的外部中断通道有关,当相应的通道的信号值改变就会触发中断。除了计算机模块的A/D转换借口的输入信号是连续时间信号外,这两个模块所有端口的输入都是离散时间信号,输出也都是离散时间信号。3. 仿真举例根据节点不同的工作方式,可以

11、得到不同的系统离散时间模型。为了对网络控制系统进行建模,首先对系统作如下假设:1.传感器节点采用时间驱动方式,对被控对象的输出进行等周期采样,采样周期为h;2.控制器节点和执行器节点都采用事件驱动方式,即信息的到达时间即为响应节点的动作时间。控制系统将传感器、控制器和执行器作为系统的3个节点分别用一个TrueTime Kernel模块仿真,传感器节点采用时间驱动方式,它包含了一个周期性任务,将定期采样的信号通过网络传送到控制器节点;控制器和执行器节点采用事件驱动方式,控制节点处理控制信号并将结果送至执行器节点,执行器节点执行控制信号并输出结果。该网络控制系统的仿真模型如图3所示。图3 网络控制

12、系统仿真模型图4 参数设置界面图5 以太网下的系统输出图6 令牌网下的系统输出图7 设备网下的系统输出 网络传输过程中的数据丢失是影响网络控制系统性能的另外一个重要的因素,通过设定不同的丢包率来研究其对系统性能的影响。图8 参数设置界面无丢包:图9系统的输入和输出丢包率0.1:图10系统的输入和输出丢包率0.15:图11系统的输入和输出丢包率0.2:图12 系统的输入和输出丢包率越大,对系统性能的影响越大,当丢包率达到一定程度时,就会使系统不再稳定。(1)在令牌网下,传输速率为1.5M:图13 系统响应曲线(无冲突、干扰和数据丢失)网络干扰节点占网络资源的20%情况下,调度策略为固定优先级(F

13、ixed Priority),系统的输出和网络资源调度情况:图14 系统响应曲线(2)在令牌网下,传输速率为93.75Kbit/s,调度策略为固定优先级(Fixed Priority):图15 系统响应曲线图16 网络资源调度网络干扰节点占网络资源的20%情况下,系统的输出和网络资源调度情况,调度策略为固定优先级(Fixed Priority):图14 系统响应曲线图15 网络资源调度(3)在令牌网下,传输速率为93.75Kbit/s,网络干扰节点占网络资源的20%、丢包率为10%情况下,调度策略为固定优先级(Fixed Priority),系统的输出和网络资源调度情况:图16系统响应曲线图1

14、8 网络资源调度在令牌网下,传输速率为93.75Kbit/s,网络干扰节点占网络资源的20%、丢包率为10%情况下,系统的输出和网络资源调度情况,调度策略为PrioRM(单调速率):图19系统响应曲线图20 网络资源调度在令牌网下,传输速率为93.75Kbit/s,网络干扰节点占网络资源的20%、丢包率为10%情况下,系统的输出和网络资源调度情况,调度策略为PrioEDF:图20 系统响应曲线图21 网络资源调度在令牌网下,传输速率为93.75Kbit/s,网络干扰节点占网络资源的20%、丢包率为10%情况下,系统的输出和网络资源调度情况,调度策略为PrioDM:图20 系统响应曲线图21 网

15、络资源调度在网络控制系统中,不同的网络传输协议,传输速率、干扰率、数据包的丢失率以及数据包的大小都会影响到网络控制性能,对于多任务的控制系统调度策略对控制性能也有很大的影响。调度策略对控制系统性能的影响。网络的调度问题:网络控制系统是基于网络的分布式控制系统。网络控制系统中的所有控制信息都要通过实时网络传输,由于网络带宽的限制,网络中传送的信息不可避免产生碰撞、丢失和重发等现象,因此必须对网络中传输信息进行合理调度,否则控制信息产生的较大时延,会降低控制系统的控制性能,严重时将导致系统破坏,因此在网络控制系统的设计与研究中必须考虑网络的调度问题。从仿真结果可见,网络控制系统不仅依赖于传统控制算

16、法的设计,而且依赖于网络资源的调度与优化,由于调度的影响,使得控制系统传感器的采样周期产生变化,不是一个定值,同时从传感器检测到执行器之间时间也产生了变化,从而使得系统产生波动,导致性能降低。不同的调度策略将决定网络与计算机的不同执行与传输方式以及不同的控制性能。仿真表明,网络控制系统那个的性能不仅与常规的控制系统的控制方法有关,而且与网络的调度有关,所以必须对网络控制系统的控制方法与调度进行集成研究。从图中可以看出,当无冲突任务、干扰节点和数据丢失时,信号的传输延时是常数,系统性能较好。当加入冲突任务、干扰节点时,引起了信息在控制节点内和网络中对资源的争夺,竞争使某些低优先级的任务处于等待状

17、态或闲置状态,这些任务不能得到及时处理,导致系统延时变大,而且在多任务竞争这个不确定特性下,时延是时变的,从而使系统指标恶化。图和图分别为控制器调度图和网络调度图,其中,信号高表示任务正在执行,中表示任务在等待,低表示任务闲置。从图可以看到各任务在控制器内的执行情况,从图中可以看到各个节点信息在网络中的传输情况。从图中可以看到当未加冲突任务和干扰节点时,传感器周期性的采集信号,并通过网络把信号传给控制器,控制器接收传感信号,计算出控制信号并通过网络传给执行器,执行器接收控制信号并产生相应的动作。此时控制器中存在控制任务调度,网络中存在控制器节点和传感器节点调度。当控制器节点内部存在冲突任务,而

18、网络中存在干扰节点时,控制器内存在控制任务和冲突任务的调度,网络中存在控制器节点、传感器节点和干扰节点的调度。由于冲突任务和干扰节点的存在,使得信息在控制器节点内处理时以及在网络中传输时存在冲突和资源争夺。该例中规定干扰具有最高优先级,所以从图和图,可以看到控制器内部冲突任务的执行机率大,而网络中干扰信息的传输机率大,导致了传感器的采样周期发生变化,不是一个定值,同时从传感器检测到执行器之间时间也发生了变化,从而使得系统产生波动,性能降低,如图所示。仿真系统可以通过Proprocessing delay(发送时延)与Postprocessing delay(接收时延)进行传输时延的设定。由于时

19、延增加,系统的稳定性降低。图所示给出了网络传输时延为0.001的系统变化曲线,由于存在传输时延,系统振荡加强,性能降低,网络控制系统的处理时延会对系统性能产生很大的影响。,这里采用调整控制器参数方法进行补偿调节。TrueTime模块配置与初始化1.TrueTime Network模块的配置TrueTime Network模块的配置需要通过块任务对话完成。包括:指定网络模式(Network type)、网络模块的访问地址(Network number)、连接到该模块的网络节点数(Number 偶发nodes)、通信速率(Data rate(bit/s)0、最小数据帧(Minimum frame

20、size(bytes)、网络发送端时延(Pre-processing delay(s)、网络接收端时延(Post-processing delay(s)和信息传输丢失率(Loss probability(0-1)等。可供选择的网络模式有CSMA/CD(如Ethernet)、CSMA、AMP(如CAN)、Round Robin(如Token Bus)、FDMA(Frequency Division Multiple Access)、TDMA(Time Division Multiple Access,如TTP)和Switched Ethernet。2.TrueTime Kernel模块的配置和初

21、始化TrueTime Kernel模块的配置可以通过快任务对话完成。可以通过任务对话配置的参数有:指定初始化脚本函数名称(Name of init function(MEX of MATLAB)、选择初始化脚本变量(Init function argument)、内核模块是否依赖电池(Battery)、时间漂移(Clock drift)和时间偏移量(Clock offset)等。某些其它的参数也可以通过命令ttSetKernelParameter进行设置。TrueTime Kernel模块的初始化(Initialization)涉及:指定仿真中模块的输入输出通道地址(number of Inp

22、uts and outputs),定义调度策略(scheduling policy),创建任务(tasks)、中断柄(interrupt handlers)、事件(events)和监视器(monitors)等。TrueTime Kernel模块的初始化通过编写初始化脚本代码来实现。每个TrueTime Kernel模块必须进行初始化。(在Matlab中,某些初始化参数也可以在图形界面窗口中通过选择参数实现)。从网络调度图中可以看到,事件驱动型的控制器,在传感器数据到达时立即计算出控制信号;事件驱动型的控制器,从采样时刻运作。从Ethernet网络控制系统的仿真结果来分析,事件驱动型的网络控制系

23、统比时间驱动型的网络控制系统,在阶跃响应下,超调量小,回复时间短,系统性能明显优越。TrueTime初始化问题: 初始化中计算机内核与网络是两个基本的初始化内容,分别采用了ttInitKernel(nbrInp,nbrOutp,prioFcn)与ttInitNetwork(nodenumber,handlename)形式表示。ttInitKernel中nbrlnp为输入通道的数目,nbrOutp为输出通道的数目,prioFcn为采用的调度策略,而ttInitNetwork中nodenumber为网络中节点的地址,handlername为被调用的中断句柄名,如ttInitKernel(1,0,R

24、M)表示采用了RM(单调速率)调度策略。如网络中节点4控制器初始化为ttInitNetwork(4,msgRcv)。TrueTime工具箱实例代码(distributed):1. function actuator_init %执行器初始化% Distributed control system: actuator node% Receives messages from the controller and actuates % the plant. % Initialize TrueTime kernelttInitKernel(0, 1, prioFP); % nbr Of Inputs

25、, nbr Of Outputs, fixed priority,初始化内核,设置功能块输入、输出端口的数目和调度策略 % Create actuator task 创建任务deadline = 100;prio = 1;ttCreateTask(act_task, deadline, prio, actcode);任务名称,最终期限(截止期),代码名称 % Initialize networkttCreateInterruptHandler(nw_handler, prio, msgRcvActuator); 对于事件驱动的节点,调用ttCreateInterruptHandler函数,设置

26、中断式消息调度策略,使节点在接受到网络数据后触发相应的消息。ttInitNetwork(2, nw_handler); % node #2 in the network初始化网络接口,网络数目,当事件到达时,激发的端口名称2. function exectime, data = actcode(seg, data) switch seg, case 1, data.u = ttGetMsg; 从网络输入队列中获取信息 exectime = 0.0005;执行时间 case 2, ttAnalogOut(1, data.u) 设定输出通道值,通道号,通道值 exectime = -1; % fi

27、nishedend3. function controller_init(arg) 控制器初始化 % Distributed control system: controller node% Receives messages from the sensor node, computes control signal% and sends it to the actuator node. Also contains a high-priority% disturbing task. % Initialize TrueTime kernelttInitKernel(1, 0, prioFP);

28、% nbrOfInputs, nbrOfOutputs, fixed priority初始化内核,设置功能块输入、输出端口的数目和调度策略 % Controller parameters 控制器参数设置,h为采样周期,N为采样次数h = 0.010;N = 100000;Td = 0.035;K = 1.5; % Create task data (local memory)data.u = 0.0;data.K = K; data.ad = Td/(N*h+Td);data.bd = N*K*Td/(N*h+Td);data.Dold = 0.0;data.yold = 0.0; % Cre

29、ate controller taskdeadline = h;prio = 2;ttCreateTask(pid_task, deadline, prio, ctrlcode, data); 任务名称,最终期限(截止期),代码名称 % Optional disturbance task 随机扰动任务if arg 0 offset = 0.0002; period = 0.007; prio = 1; ttCreatePeriodicTask(dummy, offset, period, prio, dummycode); 对于时钟驱动的节点,调用ttCreatPeriodicTask函数,设

30、置周期性的任务调度策略,以实现定时采样功能。end % Initialize networkttCreateInterruptHandler(nw_handler, prio, msgRcvCtrl); 对于事件驱动的节点,调用ttCreateInterruptHandler函数,设置中断式消息调度策略,使节点在接受到网络数据后触发相应的消息。ttInitNetwork(3, nw_handler); % node #3 in the network,初始化网络接口,网络数目,当事件到达时,激发的端口名称4. function exectime, data = ctrlcode(seg, da

31、ta) switch seg, case 1, y = ttGetMsg; % Obtain sensor value,从网络输入队列中获取信息 r = ttAnalogIn(1); % Read reference value,从输入通道取值 P = data.K*(r-y); D = data.ad*data.Dold + data.bd*(data.yold-y); data.u = P + D; data.Dold = D; data.yold = y; exectime = 0.0005; case 2, ttSendMsg(2, data.u, 80); % Send 80 bits to node 2 (actuator),在网络上发送信息,发送数据内容的80个字节到执行器节点2 exectime = -1; % finishedend5. function exectime, data = dummycode(seg, data)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1