




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章 Truetime在网络控制系统仿真中的 应用 教学目标 通过本章的学习,了解网络控制系统的基本概念、简单结构以及网络控制系统中存在 的主要问题;了解 Truetime1.5 工具箱的组成模块及其功能;掌握 Truetime1.5 的安装,确 保能按照所给步骤在自己的电脑上成功安装和运行,最终能根据应用实例中的程序进行仿 真。 本章是在 MATLAB 的基础上,从网络控制系统仿真中的应用的角度出发,着重讨论 网络控制系统的基本概念、基本组成结构以及网络控制系统中存在的主要问题;最后通过 给出具体的仿真实例,让读者学会用 Truetime1.5 工具箱进行仿真。 7.1 网络控制系统基本概念 7.1.1 网络控制系统的定义 网络控制系统(NCS,Networked Control Systems)是指传感器、控制器和执行器机构 通过通信网络形成的实时闭环的控制系统。 7.1.2 网络控制系统的简单结构图 网络控制系统主要由传感器、控制器与执行器这几个部分组成,其简单结构图如图 7.1 所示。 图 7.1 网络控制系统简单结构图 7.1.3 网络控制系统存在的主要问题 由于控制系统是通过网络形成实时闭环控制,因此不可避免地存在着网络诱导时延、 单包与多包传输、数据包时序错乱和数据包丢失等问题。 控制器 执行器 被控对象 传感器 u(t) r(t) + y(t) e(t) - MATLAB 在电气信息类专业中的应用 301 1. 网络诱导时延 在网络控制系统中,多个网络节点共享网络信道。由于网络带宽有限且网络中的数据 流量变化不规则,当多个节点通过网络交换数据时,常常出现数据碰撞、多路径传输、连 接中断、网络拥塞等现象。因而不可避免地出现信息交换时间延迟,这种由网络引起的信 息交换时间延迟称为网络诱导时延。网络诱导时延是随机的、恒定的、有界的、还是不确 定的,取决于通信网络的类型和采用的通信协议。 时延会降低系统的性能,使系统的稳定范围变窄,甚至使系统失稳。时延是 NCS 的分 析和设计中不可忽略的重要因素。 2. 单包传输和多包传输 在 NCS 中,数据是封装成一定大小的数据包进行传输的。单包传输是指 NCS 中传感 器或者控制器等待传输的单位信息被封装成一个数据包进行传输。 多包传输是指 NCS 中传 感器或者控制器等待传输的单位信息被封装成多个数据包进行传输。系统采用单包传输或 多包传输,取决于网络节点的各传感器所处的地理位置或等待传输的数据包容量。当传感 器节点的各个传感器位于较远的地理位置或等待传输的数据超过控制网络数据包的容量时, 待传输数据必须封装成多个数据包传输。 多个数据包传输时,由于节点冲突、网络拥塞、连接中断和多路径传输机制等原因, 多个数据包不可能同时到达,这将增加接收端数据处理时间,从而间接地增加网络诱导时 延。节点单包传输还是多包传输,系统的分析与设计方法将有所不同。 3. 数据包时序错乱 在 NCS 中,由于数据的多路径传输机制,网络中同一节点发送到同一目标端的数据包 不可能在相同的时间内到达接收端,因而产生数据包先后顺序的错乱,称为数据包时序错 乱。单包传输时,数据包时序错乱指各个数据包到达接收端的顺序与发送时的顺序不同。 多包传输时,数据包时序错乱指一个完整的数据被封装成多个数据包传输,这多个数据包 到达接收端的顺序与发送时的顺序不同。节点冲突、网络拥塞、连接中断和多路径传输机 制等因素,是造成数据包时序错乱的主要原因。时序错乱的结果将导致数据传输率降低, 间接地增加网络诱导时延。 4. 数据包丢失 在采用串行通信方式的 NCS 中,当传感器、控制器和执行器利用网络传输数据和控制 信息时,不可避免地出现数据包丢失。数据包丢失有两种情况:一种是因为传输通道为系 统中各节点所共享,并且网络带宽为有限,在某一时间能够与控制器存取数据的传感器和 执行器数目是有限的。当负载较大时,数据碰撞、网络拥塞和节点失败经常发生,数据碰 撞和节点失败将造成数据包丢失。尽管大多数通信协议有重发机制,但都重发在一定时间 内未到达的数据包。 超过一定时间未到达的数据包将被丢弃。 另一种是在实时控制系统中, 往往是将一定时间未到达的数据包主动丢弃掉,接着发送新数据,以保证信号的及时更新 和采样数据的有效性。 一个稳定运行的 NCS 容许有一定数量的数据包丢失, 但是数据包丢失率超过一定值时 将使系统失稳。 第 7 章 Truetime 在网络控制系统仿真中的应用 302 7.1.4 常用的仿真网络控制系统的软件 目前广泛使用的网络控制系统仿真软件, 主要包含网络控制系统仿真工具箱TrueTime, 网络传送特性仿真工具 NS2,还有网络控制仿真包 NCS-Simu 和 OPNET 等。 7.2 Truetime1.5 工具箱介绍 7.2.1 Truetime 开发工具历史 TrueTime是瑞典隆德 (Lund) 大学自动化系 (Lund Institute of Technology) 的MartinOhlin, Dan Henriksson 和 Anton Cervin 于 2002 年推出的基于 MATLAB/Simulink 的网络控制系统 仿真工具箱。该工具箱针对每一特定的网络协议,可以实现控制系统与实时调度的综合仿 真研究,是目前网络控制系统理想的虚拟仿真工具之一。 7.2.2 Truetime1.5 工具箱的组成 Truetime 模块库窗口如图 7.2 所示,提供四个具有不同功能的 Truetime 模块,分别为 Truetime Kernel、Truetime Network、Truetime Wireless Network 和 Truetime Battery 模块。 图 7.2 Library: truetime 窗口 1. 实时内核模块 Truetime Kernel Truetime Kernel 模块可被用作网络控制系统的网络节点,如传感器、控制器和执行器 等。Truetime Kernel 具有灵活的实时内核,内嵌 A/D、D/A 转换器接口、网络接口(输入 输出通道) 、公共资源(CPU、监控器、网络)的调度与监控输出端口等。Truetime Kernel 模块按照用户定义的任务工作,任务执行取决于内部事件与外部事件的发生。内部事件与 外部事件以中断方式产生,当外部中断和内部中断发生时,用户定义的中断句柄被调用。 MATLAB 在电气信息类专业中的应用 303 执行其中断服务程序。任务和中断柄及其执行都是有用户编写的代码函数实现。代码的编 写可以用 MATLAB 或 C+语言。 2. 网络模块 Truetime Network Truetime Network 被用作为 NCS 的通信网络。Truetime Network 提供了多种网络参数 和网络模式,如媒体访问控制协议、网络节点数目、传输速率、数据丢失率等。其中,网 络模式与媒体访问控制协议有:CSMA/CD(带有冲突检测的载波监听随机访问,e.g. Ethernet)、CSMA/AMP(带有信息优先级仲裁的载波监听多路访问,e.g. CAN)、Round Robin(e.g. Token Bus,令牌总线网络)、FDMA(频分多路复用) 、TDMA(时分多路复用) 、 Switched Ethernet。 网络模块采用时间驱动方式, 当有消息进出网络时, 网络模块启动工作, Truetime 中预定义了多种任务调度策略供仿真选择,例如,固定优先级(Fixed Priority) 、 单调速率 (Rate Monotonic) 、 截止期单调 (DM, Deadline Monotonic) 、 最小截止期优先 (EDF, Earliest Deadline First)等。 3. 无线网络模块 Truetime Wireless Network 该模块提供了无线网络传输信息的功能,目前支持的两种网络通信协议是 IEEE 802.11b/g(WLAN)和 IEEE 802.15.4(ZigBee)。 4. 电源模块 Truetime Battery 该模块为建立的仿真系统提供电源。 7.2.3 Truetime 的用途 Truetime 工具箱为网络控制系统(简称 NCS)理论的仿真研究提供了简易可行、功能齐 全的手段,能与 MatlabSimulink 软件包中的其他控制模块相结合,简便快速地搭建分布 式的实时控制系统和 NCS。 7.2.4 在 MATLAB 中安装 Truetime 工具箱的步骤 (1) 设置环境变量 TTKERNEL:在 windows 下,进入控制面板系统高级环境变 量,创建一个环境变量,名为 TTKERNEL,值为你的 truetime 所在目录下的 kernel 文件, 如 D:Program FilesMATLABtoolboxtruetime-1.5kernel; (2) 重启计算机,这个很重要,要是没有重启,将会导致下一步实现不了; (3) 进入 MATLAB 环境,在 Command Window(命令窗口)下,创建一脚本文件,该脚 本文件将在每次打开 Truetime 模块库之前,先运行之。文件内容要设置 Truetime 内核文件 的全部必要的路径,即: addpath(getenv(TTKERNEL) init_truetime; (4) 启动 MATLAB 后,第一次运行 Truetime 前,必须为 Truetime 命令编译 Truetime 模块和 MEX-funtion。在 Command Window(命令窗口)下,以命令行方式输入: make_truetime (5) 以命令行方式输入 truetime ,即可打开 truetime 仿真工具箱。 第 7 章 Truetime 在网络控制系统仿真中的应用 304 7.3 有线网络控制系统的分析与设计实例 7.3.1 有线网络控制系统组成结构 在有线网络控制系统中,主要有传感器节点、控制器节点、执行器节点、干扰节点这 几个部分组成,组成结构如图 7.3 所示。 图 7.3 有线网络控制系统组成结构 7.3.2 有线网络控制系统中存在的问题 有线网络控制系统中主要存在时延、丢包、多包、乱序等问题,这些问题的出现在一 定程度上会降低系统的性能,使系统的稳定范围变窄,严重时甚至使系统失稳。 7.3.3 有线网络控制系统的仿真实例 1. 系统结构图 Truetime1.5 说明书中,包含一个有线网络控制系统仿真实例,我们通过剖析该仿真实 例,说明有线网络控制系统基于 Truetime 工具箱的仿真模型的建模方法。仿真模型文件名 为 distributed1.mdl,模型结构如图 7.4 所示。系统中包含了四个计算机节点:Node 4(节点 4)传感器,Node 3(节点 3)控制器,Node 2(节点 2)执行器和 Node 1(节点 1)干扰节点,各节 点用 Truetime 内核模块来表示。 在此仿真实例中,假设有下列已知条件: (1) 被控对象为 2 1000 ( )G s ss = + ; (2) 传感器节点采用时间驱动的方式对过程进行周期性采样,采样周期为 10 ms; (3) 控制器采用离散 PID 控制算法: ( )( ( )( )P kK r ky k= (1)( )( ( )( ) i Kh I kI kr ky k T +=+ ( )(1)( ( )(1) dd D kD kby ky k=+ d=Td/(Nh+Td) bd=NKTd/(Nh+Td) ( )( )( )( )u kP kI kD k=+ 其中 K 为比例系数, i T为积分系数, d T为微分系数,h为采样周期。 干扰节点 控制器 被控对象 传感器 执行器 有线网络 MATLAB 在电气信息类专业中的应用 305 关于离散 PID 控制器,可参考 6.3.1 PID 控制器的设计。 (4) 网络将采样值发送到计算机节点。计算机节点的任务是计算控制信号并将结果发 送到执行器节点,执行器节点随后在事件驱动的工作方式下执行该控制信号。 (5) 仿真中还包括有一个干扰节点,它发送的信号能模拟干扰网络通信,并且在计算 机节点中执行干扰的高优先级任务。 图 7.4 基于 TrueTime 的网络控制系统仿真模型 distributed1 2. 有线网络 如图 7.5 所示连接有线网络模型,然后将连接图全部选中,右击选择 Create subsystem 创建子系统,生成图 7.4 中的 Network(网络)模块。 双击图7.5中的TrueTime Network模块, 弹出如图7.6所示的Function Block Parameters: TrueTime Network 参数设置对话框,提供了多种网络参数和网络模式,我们可以针对需要 对媒体访问控制协议、网络节点数目、传输速率、数据丢失率等参数进行设置。其中: (1) 主要支持的六种简单的网络模型: CSMA/CD(e.g. Ethernet)、 CSMA/AMP(e.g. CAN)、 Round Robin(e.g. Token Bus)、FDMA、TDMA(e.g. TTP) 、Switched Ethernet。 (2) Network number 网络模块数。必须从 1 往上编号,有线和无线网络不允许使用相同 的编号。 (3) Number of nodes 连接到网络上的节点数目。它决定了模块的 Snd,Rcv 和 Schedule 输入和输出的大小。 (4) Data rate(bits/s)网络速度。 第 7 章 Truetime 在网络控制系统仿真中的应用 306 (5) Minimum frame size(bytes)不足此最小帧的信息会得到填补。 (6) Pre-processing delay(s)发送端网络接口引起的信息延迟。 (7) Post-processing delay(s)接收端网络接口引起的信息延迟。 (8) Loss probability(0-1)传输过程中网络信息的丢失率。丢失的信息会占用网络带宽, 但是却不能到达目的地。 图 7.5 distributed1 有线网络模型 图 7.6 Function Block Parameters: TrueTime Network 参数设置对话框 3. 传感器节点 如图 7.7 所示连接 Node 4 传感器模型,然后将连接图全部选中,右击选择 Create MATLAB 在电气信息类专业中的应用 307 subsystem 创建子系统,生成图 7.4 中的 Node 4 传感器模块(Sensor)。然后通过对传感器节 点的初始化,节点任务和网络中断程序进行编辑,分别建立对应的 M 文件。 图 7.7 Node 4 传感器模型 具体操作如下: 1) 传感器节点初始化程序(sensor_init.m)及其简单说明 function sensor_init %分布式控制系统中的传感器节点:主要任务是进行周期性地采样,并把采样值发送给控 制器节点 %初始化TrueTime中的核 ttInitKernel(1, 0, prioFP); %定义模拟输入与输出,以及节点任务的优先级 %创建传感器节点任务,对传感器节点所用的参数(包括中间数据进行初始化) data.y = 0; offset = 0; % offset为偏移量 period = 0.010; % period为周期 prio = 1; % prio为优先级 ttCreatePeriodicTask(sens_task, offset, period, prio, senscode, data); %定义节点任务(周期 采样) disp(Sinit); %初始化网络 ttCreateInterruptHandler(nw_handler, prio, msgRcvSensor); ttInitNetwork(4, nw_handler); %对网络初始化,其中传感器节点为网络中的4号节点 2) 传感器节点任务程序(senscode.m)及其简单说明 function exectime, data = senscode(seg, data) switch seg, case 1, disp(Scode); data.y = ttAnalogIn(1); %读取模拟端口 1 信号,存储到 data.y exectime = 0.00005; case 2, 第 7 章 Truetime 在网络控制系统仿真中的应用 308 ttSendMsg(3, data.y, 80); %将存储在data.y的信号向端口3控制器端发送 exectime = 0.0004; case 3, exectime = -1; %结束任务 end 3) 传感器节点网络中断程序(msgRcvSensor.m) function exectime, data = msgRcvSensor(seg, data) disp(SC); disp(ERROR: sensor received a message); exectime = -1; 4. 控制器节点 如图 7.8 所示连接 Node 3 控制器模型,然后将连接图全部选中,右击选择 Create subsystem 创建子系统,生成图 7.4 中的 Node 3 控制器模块(Controller)。然后通过对控制器 节点的初始化,节点任务和网络中断程序进行编辑,分别建立对应的 M 文件。 图 7.8 Node 3 控制器模型 具体操作如下: 1) 控制器节点初始化程序(controller_init.m)及其简单说明 function controller_init(arg) % 分布式控制系统中的控制器节点:主要任务是接收传感器传过来的信号,在包含有优先 级最高的干扰任务的网络中对控制信号进行计算和处理,并把结果发送到执行器 %初始化TrueTime中的核 ttInitKernel(1, 0, prioFP); %定义模拟输入与输出,以及节点任务的优先级 %控制器节点所用的参数,对控制器节点所用的参数进行初始化 h = 0.010; %h为采样周期 N = 100000; Td = 0.035; % Td为微分系数 K = 1.5; %K为比例系数 %定义任务中的数据(包括当地的存储器) data.u = 0.0; MATLAB 在电气信息类专业中的应用 309 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; %对控制器节点中的中间数据进行初始化 %创建控制器节点任务 deadline = h; prio = 2; ttCreateTask(pid_task, deadline, prio, ctrlcode, data); disp(Cinit); %可选择的干扰任务 if arg 0 offset = 0.0002; period = 0.007; prio = 1; ttCreatePeriodicTask(dummy, offset, period, prio, dummycode); end %初始化网络 ttCreateInterruptHandler(nw_handler, prio, msgRcvCtrl); ttInitNetwork(3, nw_handler); %对网络初始化,其中控制器节点为网络中的3号节点 其中,控制器节点初始化程序中用到的虚拟干扰代码为 dummycode.m function exectime, data = dummycode(seg, data) switch seg, case 1, exectime = 0.004; case 2, exectime = -1; end 2) 控制器节点任务程序(ctrlcode.m)及其简单说明 function exectime, data = ctrlcode(seg, data) switch seg, case 1, y = ttGetMsg; %获取传感器传过来的采样值 r = ttAnalogIn(1); %读取输入参考值 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; disp(Ccode); exectime = 0.0005; case 2, ttSendMsg(2, data.u, 80); %把计算出来的data.u信号向端口2执行器端发送 exectime = -1; %结束任务 第 7 章 Truetime 在网络控制系统仿真中的应用 310 end 3) 控制器节点网络中断程序(msgRcvCtrl.m) function exectime, data = msgRcvCtrl(seg, data) disp(CC); ttCreateJob(pid_task) exectime = -1; 5. 执行器节点 如图7.9所示连接Node 2执行器模型,然后将连接图全部选中,右击选择Create subsystem创建子系统,生成图7.4中的Node 2执行器模块(Actuator)。然后通过对执行器节点 的初始化,节点任务和网络中断程序进行编辑,分别建立对应的M文件。 图 7.9 Node 2 执行器模型 具体操作如下: 1) 执行器节点初始化程序(actuator_init.m)及其简单说明 function actuator_init %分布式控制系统中的执行器节点:主要任务是接收控制器传过来的信号,并执行任务 %初始化TrueTime中的核 ttInitKernel(0, 1, prioFP); %定义模拟输入与输出,以及节点任务的优先级 %创建执行器节点任务 deadline = 100; prio = 1; ttCreateTask(act_task, deadline, prio, actcode); disp(Ainit); %初始化网络 ttCreateInterruptHandler(nw_handler, prio, msgRcvActuator); ttInitNetwork(2, nw_handler); %对网络初始化,其中执行器节点为网络中的2号节点 2) 执行器节点任务程序(actcode.m)及其简单说明 function exectime, data = actcode(seg, data) switch seg, MATLAB 在电气信息类专业中的应用 311 case 1, disp(Acode); data.u = ttGetMsg; %获取网络信号,存储到data.u exectime = 0.0005; case 2, ttAnalogOut(1, data.u) %将data.u的信号模拟输出 exectime = -1; %结束任务 end 3) 执行器节点网络中断程序(msgRcvActuator.m) function exectime, data = msgRcvActuator(seg, data) disp(AC); ttCreateJob(act_task) exectime = -1; 6. 干扰节点 如图 7.10 所示连接 Node 1 干扰节点模型,然后将连接图全部选中,右击选择 Create subsystem 创建子系统,生成图 7.4 中的 Node 1 干扰节点模块(Interference)。然后通过对干 扰节点的初始化,节点任务和网络中断程序进行编辑,分别建立对应的 M 文件。 图 7.10 Node 1 干扰节点模型 具体操作如下: 1) 干扰节点的初始化程序(interference_init.m) function interference_init % 分布式控制系统中的干扰节点:主要任务是模拟网络干扰 %初始化TrueTime中的核 ttInitKernel(0, 0, prioFP); %定义模拟输入与输出,以及节点任务的优先级 %创建发送任务 offset = 0; period = 0.001; prio = 1; ttCreatePeriodicTask(interf_task, offset, period,prio,interfcode); 第 7 章 Truetime 在网络控制系统仿真中的应用 312 %初始化网络 ttCreateInterruptHandler(nw_handler, prio, msgRcvInterf); ttInitNetwork(1, nw_handler); %对网络初始化,其中干扰节点为网络中的1号节点 2) 干扰节点任务程序及其简单说明(interfcode.m) function exectime, data = interfcode(seg, data) BWshare = 0; %设置部分的网络带宽占用这个节点 if (rand(1) = 10 data.u = 10; end 第 7 章 Truetime 在网络控制系统仿真中的应用 330 if data.u = -10 data.u = -10; end data.e_1 = data.e; data.e_2 = data.e_1; data.ec_1 = data.ec; data.x3_1 = data.x(3); exectime = 0.000001; case 2, ttSendMsg(2, data.u, 80); %发送80bits的信息给节点2(执行器) exectime = -1; end 3) 控制器节点网络中断程序(msgRcvCtrl.m) function exectime, data = msgRcvCtrl(seg, data) ttCreateJob(pid_task); exectime = -1; 5. 干扰节点 如图7.25所示连接Node 1 干扰节点模型,然后将连接图全部选中,右击选择Create subsystem创建子系统,生成如图7.21中的Node 1干扰节点模块(Interference)。然后通过对干 扰节点的初始化,节点任务和网络中断程序进行编辑,分别建立对应的M文件。 图 7.25 Node 1 干扰节点模型 具体操作如下: 1) 干
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 销售合同管理工具合同条款审查及执行追踪版
- (正式版)DB15∕T 3253.1-2023 《食品生产加工小作坊生产规范 第1部分:管理要求》
- 道条考试题及答案
- 南通中医院护理面试题库及答案
- 历年护理副主任考试题库及答案
- 内部审批与签字标准操作模板
- 市场调查分析与营销策略工具集
- 企业日常运营管理模板系统
- 文言文诵读技巧指导
- 医疗安全培训通讯课件
- 小学数学教师新课标考试试题
- 校音乐厅设计方案
- 小学数学北师大四年级上册五方向与位置四上《用数对确定位置》北师大版李雪梅PPT
- 2022年混凝土预制U型槽单元工程质量评定表
- 新视野大学英语读写教程Unit1教案(含和译文)
- 机电一体化设计
- 新教材教科版五年级上册科学 第二单元 地球表面的变化 单元全套课时练
- (中职中专)财经法规与会计职业道德课件完整版电子教案
- DB37T 5151-2019 园林绿化工程资料管理规程
- 贝多芬F大调浪漫曲—小提琴谱(带钢伴谱)
- 压力传感器(课堂PPT)
评论
0/150
提交评论