Truetime网络仿真可修改.docx
- 文档编号:3631740
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:30
- 大小:528.83KB
Truetime网络仿真可修改.docx
《Truetime网络仿真可修改.docx》由会员分享,可在线阅读,更多相关《Truetime网络仿真可修改.docx(30页珍藏版)》请在冰豆网上搜索。
Truetime网络仿真可修改
网络控制系统的调度研究与仿真(Truetime工具)
1.节点的驱动方式
网络控制系统中的传感器一般采用时钟驱动,传感器的时钟即为系统的时钟,而控制器和执行器既可以是时钟驱动,也可以是事件驱动。
但事件驱动相比于时钟驱动具有以下优点:
(1)控制器或执行器为事件驱动方式时,从源节点(传感器或控制器)发送的数据一旦到达目标节点(控制器或执行器)便马上执行,而在时钟驱动方式时控制器或执行器的数据被执行要等到规定的时间点,因此事件驱动方式客观上减少了网络诱导时延;
(2)控制器或执行器为事件驱动方式时,避免了控制器或执行器为时钟驱动方式时与传感器时钟同步的困难;
(3)控制器或执行器采用事件驱动方式时,避免了控制器或执行器为时钟驱动方式时容易出现的空采样和数据丢失,提高了反馈数据的利用率。
事件驱动相对于时钟驱动也有一定缺点:
(1)在实际运用中事件驱动较难实现。
(2)部分实际的网络控制系统不支持事件驱动方式。
2.TrueTime工具箱结构与功能
Truetime是由瑞典Lund工学院Henriksson等人开发的一个基于Matlab/Simulink的实时网络控制系统的仿真工具箱,为NCS理论的仿真研究提供了简易可行、功能齐全的手段,拜托了软件编程实现特定的网络通讯协议、通信延迟所带来的困难,支持控制与实时调度同时仿真可以方便地仿真实时系统中的资源调度问题。
TrueTime仿真软件主要包括两个基本模块:
内核模块(TrueTimeKernel)和网络模块(TrueTimeNetwork),如图1所示。
内核模块可以是时间驱动也可以是事件驱动的,它主要包含了一个实时内核,A/D,D/A转换端口,与网络模块连接的信号端口(信号接收(Rcv),信号发送(Snd)),实时调度(schedule)显示端口等,调度器与监视器的输出用于显示仿真过程中公共资源(CPU、监控器、网络)的分配,此外,它还有一个外部中断通道(Interrupts)可以处理外部中断。
任务和中断处理器的执行需要通过用户自定义函数来实现。
调度策略使用一个优先权函数来决定任务的属性。
图1Truetime工具箱
网络模块是事件驱动的,当有消息进入或离开网络时它便执行。
一条消息包含的信息有发送和接收节点号,用户数据(如测量信号和控制信号),消息的长度和其他可选的实时属性(如优先级或最终时限等)。
网络模块包含两个信号端口(信号接收(Rcv),信号发送(Snd)),以及一个实时调度(schedule)显示端口。
其中收发信号端口可以通过Matlab模块扩充至多个接口,TrueTime中预定义了多种调度策略,包括固定优先级(FixedPriority),单调速率(RM,RateMonotonic),截止期单调(DM,DeadlineMonotonic),最小截止期优先(EDF,EarliestDeadlineFirst),同时,它还有多种介质访问控制协议(CSMA/CD,CSMA/CA,RoundRobin,FDMA或TDMA)和相应的参数可以选择,如图2所示。
图2Truetime网络模块
Networknumber:
网络模块的数量。
Numberofnodes:
连接在网络模块的节点数量。
Datarate(bits/s):
网络传输速率。
Minimumframesize(bits):
协议的最小结构长度。
Pre-processingdelay(s):
信息在网络接口上的发送时延。
Post-processingdelay(s):
信息在网络接口上的接收时延。
Lossprobability(0–1):
丢包率。
利用TrueTime仿真软件,网络控制系统中的各个处理单元(包括传感器、控制器和执行器)都可以由计算机模块构建,而网络控制系统的实时网络可以由所需协议的网络模块来构建,另外,再结合Matlab/Simulink的其他控制模块,就可以简便而又快速的构建一个实时的网络控制系统。
利用TrueTime仿真软件包的优点在于:
(1)由于该仿真软件中两个基本模块具有通用性,在构建各个处理单元时只需选用其相应的接口功能进行连接即可,因此大大加快模型构建的速度。
(2)该仿真软件可以比较方便模拟各种实时调度策略,并通过Scope可以很方便地观察各个任务的调度情况和对象的输出情况。
(3)在网络模块中,可以很方便的模拟数据传输率、数据包的大小和丢包率等网络参数,有利于分析各类参数对网络控制系统的性能影响。
使用TrueTime进行仿真时,首先要对网络控制系统中的内核模块TrueTimeKernel和网络模块TrueTimeNetwork以及各个节点进行初始化,在初始化中需要完成以下工作:
1.初始化功能块内核,设置功能块输入、输出端口的数目和调度策略。
2.定义消息函数,并根据节点采用的驱动方式,设置不同的消息调度策略。
对于时钟驱动的节点,调用ttCreatPeriodicTask函数,设置周期性的任务调度策略,以实现定时采样功能。
对于事件驱动的节点,调用ttCreateInterruptHandler函数,设置中断式消息调度策略,使节点在接受到网络数据后触发相应的消息。
3.初始化网络端口,设置节点对应的网络端口代号。
控制网络功能由TrueTimeNetwork功能块实现。
网络类型、节点数、传输速率以及丢包率等参数可以通过TrueTimeNetwork功能块的设置窗口进行设置。
具体的参数选项根据网络类型的不同而不同。
表1伪码举例
伪码名称
功能
ttAnalogIn
从输入通道取值
ttAnalogOut
设定输出通道值
ttSendMsg
在网络上发送信息
ttGetMsg
从网络输入队列中获取信息
ttWait
等一个事件
ttCreateTimer
在指定时间触发中断句柄
ttSetpriority
改变任务优先级
ttCurrentTime
获取当前系统时间
表2TrueTime核心模块接口功能
接口
功能
A/D
把从外界接收的模拟信息转换成数字信息
Interrupts
为该模块提供中断句柄
Rcv
接收数字信息
D/A
把模拟信息转换成数字信息输出
Snd
发送数字信息
Schedule
和“Monitors”查看仿真过程中系统资源的分配情况
Monitors
和“Schedule”查看仿真过程中系统资源的分配情况
P
如果需要,可以接通电池(TrueTime提供电池模块)
TrueTimeNetwork模块提供了3个接口来进行数据的传递或者监控系统的运行,其功能如表3所示。
表3TrueTime网络模块接口功能
接口
功能
Snd
接收由TrueTimeKernel模块的Snd端口发送的数字信息
Rcv
发送数字信息至TrueTimeKernel模块的Rcv端口
Schedule
查看仿真过程中系统资源的分配情况
上述2个模块均为事件驱动,包括内部事件和外部事件。
内部事件通常是由时钟中断触发的,如时间队列释放一个任务或是计时终结都会引发时钟中断。
而外部事件主要是和网络模块的外部中断通道有关,当相应的通道的信号值改变就会触发中断。
除了计算机模块的A/D转换借口的输入信号是连续时间信号外,这两个模块所有端口的输入都是离散时间信号,输出也都是离散时间信号。
3.仿真举例
根据节点不同的工作方式,可以得到不同的系统离散时间模型。
为了对网络控制系统进行建模,首先对系统作如下假设:
1.传感器节点采用时间驱动方式,对被控对象的输出进行等周期采样,采样周期为h;
2.控制器节点和执行器节点都采用事件驱动方式,即信息的到达时间即为响应节点的动作时间。
控制系统将传感器、控制器和执行器作为系统的3个节点分别用一个TrueTimeKernel模块仿真,传感器节点采用时间驱动方式,它包含了一个周期性任务,将定期采样的信号通过网络传送到控制器节点;控制器和执行器节点采用事件驱动方式,控制节点处理控制信号并将结果送至执行器节点,执行器节点执行控制信号并输出结果。
该网络控制系统的仿真模型如图3所示。
图3网络控制系统仿真模型
图4参数设置界面
图5以太网下的系统输出
图6令牌网下的系统输出
图7设备网下的系统输出
网络传输过程中的数据丢失是影响网络控制系统性能的另外一个重要的因素,通过设定不同的丢包率来研究其对系统性能的影响。
图8参数设置界面
无丢包:
图9系统的输入和输出
丢包率0.1:
图10系统的输入和输出
丢包率0.15:
图11系统的输入和输出
丢包率0.2:
图12系统的输入和输出
丢包率越大,对系统性能的影响越大,当丢包率达到一定程度时,就会使系统不再稳定。
(1)在令牌网下,传输速率为1.5M:
图13系统响应曲线(无冲突、干扰和数据丢失)
网络干扰节点占网络资源的20%情况下,调度策略为固定优先级(FixedPriority)
,系统的输出和网络资源调度情况:
图14系统响应曲线
(2)在令牌网下,传输速率为93.75Kbit/s,调度策略为固定优先级(FixedPriority)
:
图15系统响应曲线
图16网络资源调度
网络干扰节点占网络资源的20%情况下,系统的输出和网络资源调度情况,调度策略为固定优先级(FixedPriority):
图14系统响应曲线
图15网络资源调度
(3)在令牌网下,传输速率为93.75Kbit/s,网络干扰节点占网络资源的20%、丢包率为10%情况下,调度策略为固定优先级(FixedPriority),系统的输出和网络资源调度情况:
图16系统响应曲线
图18网络资源调度
在令牌网下,传输速率为93.75Kbit/s,网络干扰节点占网络资源的20%、丢包率为10%情况下,系统的输出和网络资源调度情况,调度策略为PrioRM(单调速率):
图19系统响应曲线
图20网络资源调度
在令牌网下,传输速率为93.75Kbit/s,网络干扰节点占网络资源的20%、丢包率为10%情况下,系统的输出和网络资源调度情况,调度策略为PrioEDF:
图20系统响应曲线
图21网络资源调度
在令牌网下,传输速率为93.75Kbit/s,网络干扰节点占网络资源的20%、丢包率为10%情况下,系统的输出和网络资源调度情况,调度策略为PrioDM:
图20系统响应曲线
图21网络资源调度
在网络控制系统中,不同的网络传输协议,传输速率、干扰率、数据包的丢失率以及数据包的大小都会影响到网络控制性能,对于多任务的控制系统调度策略对控制性能也有很大的影响。
调度策略对控制系统性能的影响。
网络的调度问题:
网络控制系统是基于网络的分布式控制系统。
网络控制系统中的所有控制信息都要通过实时网络传输,由于网络带宽的限制,网络中传送的信息不可避免产生碰撞、丢失和重发等现象,因此必须对网络中传输信息进行合理调度,否则控制信息产生的较大时延,会降低控制系统的控制性能,严重时将导致系统破坏,因此在网络控制系统的设计与研究中必须考虑网络的调度问题。
从仿真结果可见,网络控制系统不仅依赖于传统控制算法的设计,而且依赖于网络资源的调度与优化,由于调度的影响,使得控制系统传感器的采样周期产生变化,不是一个定值,同时从传感器检测到执行器之间时间也产生了变化,从而使得系统产生波动,导致性能降低。
不同的调度策略将决定网络与计算机的不同执行与传输方式以及不同的控制性能。
仿真表明,网络控制系统那个的性能不仅与常规的控制系统的控制方法有关,而且与网络的调度有关,所以必须对网络控制系统的控制方法与调度进行集成研究。
从图中可以看出,当无冲突任务、干扰节点和数据丢失时,信号的传输延时是常数,系统性能较好。
当加入冲突任务、干扰节点时,引起了信息在控制节点内和网络中对资源的争夺,竞争使某些低优先级的任务处于等待状态或闲置状态,这些任务不能得到及时处理,导致系统延时变大,而且在多任务竞争这个不确定特性下,时延是时变的,从而使系统指标恶化。
图和图分别为控制器调度图和网络调度图,其中,信号高表示任务正在执行,中表示任务在等待,低表示任务闲置。
从图可以看到各任务在控制器内的执行情况,从图中可以看到各个节点信息在网络中的传输情况。
从图中可以看到当未加冲突任务和干扰节点时,传感器周期性的采集信号,并通过网络把信号传给控制器,控制器接收传感信号,计算出控制信号并通过网络传给执行器,执行器接收控制信号并产生相应的动作。
此时控制器中存在控制任务调度,网络中存在控制器节点和传感器节点调度。
当控制器节点内部存在冲突任务,而网络中存在干扰节点时,控制器内存在控制任务和冲突任务的调度,网络中存在控制器节点、传感器节点和干扰节点的调度。
由于冲突任务和干扰节点的存在,使得信息在控制器节点内处理时以及在网络中传输时存在冲突和资源争夺。
该例中规定干扰具有最高优先级,所以从图和图,可以看到控制器内部冲突任务的执行机率大,而网络中干扰信息的传输机率大,导致了传感器的采样周期发生变化,不是一个定值,同时从传感器检测到执行器之间时间也发生了变化,从而使得系统产生波动,性能降低,如图所示。
仿真系统可以通过Proprocessingdelay(发送时延)与Postprocessingdelay(接收时延)进行传输时延的设定。
由于时延增加,系统的稳定性降低。
图所示给出了网络传输时延为0.001的系统变化曲线,由于存在传输时延,系统振荡加强,性能降低,网络控制系统的处理时延会对系统性能产生很大的影响。
,这里采用调整控制器参数方法进行补偿调节。
TrueTime模块配置与初始化
1.TrueTimeNetwork模块的配置
TrueTimeNetwork模块的配置需要通过块任务对话完成。
包括:
指定网络模式(Networktype)、网络模块的访问地址(Networknumber)、连接到该模块的网络节点数(Number偶发nodes)、通信速率(Datarate(bit/s)0、最小数据帧(Minimumframesize(bytes))、网络发送端时延(Pre-processingdelay(s))、网络接收端时延(Post-processingdelay(s))和信息传输丢失率(Lossprobability(0-1))等。
可供选择的网络模式有CSMA/CD(如Ethernet)、CSMA、AMP(如CAN)、RoundRobin(如TokenBus)、FDMA(FrequencyDivisionMultipleAccess)、TDMA(TimeDivisionMultipleAccess,如TTP)和SwitchedEthernet。
2.TrueTimeKernel模块的配置和初始化
TrueTimeKernel模块的配置可以通过快任务对话完成。
可以通过任务对话配置的参数有:
指定初始化脚本函数名称(Nameofinitfunction(MEXofMATLAB))、选择初始化脚本变量(Initfunctionargument)、内核模块是否依赖电池(Battery)、时间漂移(Clockdrift)和时间偏移量(Clockoffset)等。
某些其它的参数也可以通过命令ttSetKernelParameter进行设置。
TrueTimeKernel模块的初始化(Initialization)涉及:
指定仿真中模块的输入输出通道地址(numberofInputsandoutputs),定义调度策略(schedulingpolicy),创建任务(tasks)、中断柄(interrupthandlers)、事件(events)和监视器(monitors)等。
TrueTimeKernel模块的初始化通过编写初始化脚本代码来实现。
每个TrueTimeKernel模块必须进行初始化。
(在Matlab中,某些初始化参数也可以在图形界面窗口中通过选择参数实现)。
从网络调度图中可以看到,事件驱动型的控制器,在传感器数据到达时立即计算出控制信号;事件驱动型的控制器,从采样时刻运作。
从Ethernet网络控制系统的仿真结果来分析,事件驱动型的网络控制系统比时间驱动型的网络控制系统,在阶跃响应下,超调量小,回复时间短,系统性能明显优越。
TrueTime初始化问题:
初始化中计算机内核与网络是两个基本的初始化内容,分别采用了ttInitKernel(nbrInp,nbrOutp,prioFcn)与ttInitNetwork(nodenumber,handlename)形式表示。
ttInitKernel中nbrlnp为输入通道的数目,nbrOutp为输出通道的数目,prioFcn为采用的调度策略,而ttInitNetwork中nodenumber为网络中节点的地址,handlername为被调用的中断句柄名,如ttInitKernel(1,0,‘RM’)表示采用了RM(单调速率)调度策略。
如网络中节点4控制器初始化为ttInitNetwork(4,‘msgRcv’)。
TrueTime工具箱实例代码(distributed):
1.functionactuator_init
%执行器初始化
%Distributedcontrolsystem:
actuatornode
%Receivesmessagesfromthecontrollerandactuates
%theplant.
%InitializeTrueTimekernel
ttInitKernel(0,1,'prioFP');%nbrOfInputs,nbrOfOutputs,fixedpriority,初始化内核,设置功能块输入、输出端口的数目和调度策略
%Createactuatortask创建任务
deadline=100;
prio=1;
ttCreateTask('act_task',deadline,prio,'actcode');任务名称,最终期限(截止期),代码名称
%Initializenetwork
ttCreateInterruptHandler('nw_handler',prio,'msgRcvActuator');对于事件驱动的节点,调用ttCreateInterruptHandler函数,设置中断式消息调度策略,使节点在接受到网络数据后触发相应的消息。
ttInitNetwork(2,'nw_handler');%node#2inthenetwork初始化网络接口,网络数目,当事件到达时,激发的端口名称
2.function[exectime,data]=actcode(seg,data)
switchseg,
case1,
data.u=ttGetMsg;从网络输入队列中获取信息
exectime=0.0005;执行时间
case2,
ttAnalogOut(1,data.u)设定输出通道值,通道号,通道值
exectime=-1;%finished
end
3.functioncontroller_init(arg)控制器初始化
%Distributedcontrolsystem:
controllernode
%
%Receivesmessagesfromthesensornode,computescontrolsignal
%andsendsittotheactuatornode.Alsocontainsahigh-priority
%disturbingtask.
%InitializeTrueTimekernel
ttInitKernel(1,0,'prioFP');%nbrOfInputs,nbrOfOutputs,fixedpriority初始化内核,设置功能块输入、输出端口的数目和调度策略
%Controllerparameters控制器参数设置,h为采样周期,N为采样次数
h=0.010;
N=100000;
Td=0.035;
K=1.5;
%Createtaskdata(localmemory)
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;
%Createcontrollertask
deadline=h;
prio=2;
ttCreateTask('pid_task',deadline,prio,'ctrlcode',data);任务名称,最终期限(截止期),代码名称
%Optionaldisturbancetask随机扰动任务
ifarg>0
offset=0.0002;
period=0.007;
prio=1;
ttCreatePeriodicTask('dummy',offset,period,prio,'dummycode');对于时钟驱动的节点,调用ttCreatPeriodicTask函数,设置周期性的任务调度策略,以实现定时采样功能。
end
%Initializenetwork
ttCreateInterruptHandler('nw_handler',prio,'msgRcvCtrl');对于事件驱动的节点,调用ttCreateInterruptHandler函数,设置中断式消息调度策略,使节点在接受到网络数据后触发相应的消息。
ttInitNetwork(3,'nw_handler');%node#3inthenetwork,初始化网络接口,网络数目,当事件到达时,激发的端口名称
4.function[exectime,data]=ctrlcode(seg,data)
switchseg,
case1,
y=ttGetMsg;%Obtainsensorvalue,从网络输入队列中获取信息
r=ttAnalogIn
(1);%Readreferencevalue,从输入通道取值
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;
case2,
ttSendMsg(2,data.u,80);%Send80bitstonode2(actuator),在网络上发送信息,发送数据内容的80个字节到执行器节点2
exectime=-1;%finished
end
5.function[exectime,data]=dummycode(seg,data)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Truetime 网络 仿真 修改