设计 任务书 文档 开题 答辩 说明书 格式 模板 外文 翻译 范文 资料 作品 文献 课程 实习 指导 调研 下载 网络教育 计算机 网站 网页 小程序 商城 购物 订餐 电影 安卓 Android Html Html5 SSM SSH Python 爬虫 大数据 管理系统 图书 校园网 考试 选题 网络安全 推荐系统 机械 模具 夹具 自动化 数控 车床 汽车 故障 诊断 电机 建模 机械手 去壳机 千斤顶 变速器 减速器 图纸 电气 变电站 电子 Stm32 单片机 物联网 监控 密码锁 Plc 组态 控制 智能 Matlab 土木 建筑 结构 框架 教学楼 住宅楼 造价 施工 办公楼 给水 排水 桥梁 刚构桥 水利 重力坝 水库 采矿 环境 化工 固废 工厂 视觉传达 室内设计 产品设计 电子商务 物流 盈利 案例 分析 评估 报告 营销 报销 会计
 首 页 机械毕业设计 电子电气毕业设计 计算机毕业设计 土木工程毕业设计 视觉传达毕业设计 理工论文 文科论文 毕设资料 帮助中心 设计流程 
垫片
您现在所在的位置:首页 >>理工论文 >> 文章内容
                 
垫片
   我们提供全套毕业设计和毕业论文服务,联系微信号:biyezuopin QQ:2922748026   
基于Matlab和Truetime的网络控制系统仿真流量控制与调度 实验报告
文章来源:www.biyezuopin.vip   发布者:毕业作品网站  
y; text-indent: 2em; margin-top: 0px; margin-bottom: 0px; -ms-text-justify: inter-ideograph;">⎪ 0

⎩ 0 ������

������������−1


(������������ℎ − ∫ℎ �������������������������������������������) 0 ������������ℎ     ∫ℎ ������������������������������������)


令������0 = �

0

−������� 0

� , ������1 = �

0

0 ������

�,由 Lyapunov 稳定性判据可知,


若∃������ > 0,使得(1 − ������)������0������������������0 + ������������1������������������1 − ������ < 0,则系统是均方稳定的。

运用 LMI 工具箱对 P>0 进行求解,得到当丢包率大于等于 0.96 时,系统不满足均方稳定(MSS),当丢包率小于等于 0.95 时,系统是均方稳定的。

1. h=0.01;

2. eAh=[1 1-exp(-h);0 exp(-h)];

3. A01=eAh-[h h+exp(-h)-1;0 1-exp(-h)]*[0;1000]*[0.005 0.005];

4. A0=[A01(1),A01(3),0;A01(2),A01(4),0;-0.005,-0.005,0];

5. tmp=[h h+exp(-h)-1;0 1-exp(-h)]*[0;1000];

6. A1=[eAh(1),eAh(3),tmp(1);eAh(2),eAh(4),tmp(2);0,0,1];

7. c=zeros(1,120);

8. i=1;

9. for p=0:0.01:1

10. setlmis([]);

11. P=lmivar(1,[3,1]);

12. lmiterm([-1,1,1,P],1,1);%P>0

13. lmiterm([2,1,1,P],(1-p)*A0',A0);

14. lmiterm([2,1,1,P],p*A1',A1);

15. lmiterm([2,1,1,P],-1,1);

16. lmis=getlmis;

17. [tmin,xfeas]=feasp(lmis);

18. if tmin>0

19. c(i)=p;

20. i=i+1;


21. end

22. %P=dec2mat(lmis,xfeas,P);

23. end

24. c

为了观察不稳定情况下,系统状态曲线、输出曲线和控制曲线的走势,我重新设置丢包率为 0.98,这时三条曲线走势如图 6 所示。

图 6 丢包率为 0.98 时,系统状态曲线、输出曲线和控制曲线

,

基于 Matlab 和 Truetime 的网络控制系统仿真

目录

一、实验目的

通过动手实践了解网络控制系统的架构及运行控制原理

二、仿真平台构建

三、实验步骤

3.1 建立数学模型

图 1 单闭环网络控制系统流程图

3.2 功能模块图仿真

图 2 仿真系统功能模块图

3.3 编写相关代码

3.3.1 模块初始化

3.3.2 编写任务代码

四、实验结果分析

4.1 不同丢包率下三条结果曲线

图 4 丢包率为 0.3 时,系统状态曲线、输出曲线和控制曲线

4.2 不同丢包率下稳定性分析

图 6 丢包率为 0.98 时,系统状态曲线、输出曲线和控制曲线

致谢

一、实验目的

通过动手实践了解网络控制系统的架构及运行控制原理

熟悉使用基于 MATLAB 平台、Simulink 仿真工具和 TrueTime 工具箱的网络控制系统的仿真方法考察不同丢包率下网络控制系统状态、输出和控制曲线的影响

研究丢包率对无线网络传输的网络控制系统的稳定性的影响

二、仿真平台构建

Truetime 是瑞典隆德(Lund)大学自动化系 MartinOhin,Dan Henriksson 和 Anton Cervin 于 2002 年推出的基于 MATLAB/Simulink 的网络控制系统仿真工具箱。针对每一特定的网络协议,该工具箱可以实现控制系统与实时调度的综合仿真研究,是目前网络控制系统理想的虚拟仿真工具之一。

本次实验使用 Truetime2.0 工具箱的七大模块中的 TrueTime Kernel 模块和 TrueTime Wireless Network 模块。其中,系统的传感器、执行器和控制器由 TrueTime Kernel 表示,无线网络由 TrueTime Wireless Network 表示。传感器采用时钟驱动的方式进行周期性采样,控制器和执行器采用事件驱动方式。

在确定各个功能模块之后,需要对各模块进行初始化,即初始化模块内核,定义消息函数并设置消息调度策略和初始化网络端口并设置节点对应的网络端口代号。

三、实验步骤

对于本次仿真实验,按照 Truetime 仿真流程,我将实验步骤分为三步:建立数学模型,功能模块图仿真和编写相关代码。

3.1 建立数学模型

这一部分简要重述该网络控制系统的数学模型。已知直流电机的传递函数为:

1000

������(������) = ������2 + ������


该电机通过网络 IEEE 802.11b/g(WLAN)的方式进行远程控制,系统的控制结构如下图所示:

图 1 单闭环网络控制系统流程图

假设传感器采用时钟驱动的方式进行周期性采样,控制器和执行器采用事件驱动方式。存在网络丢包现象, 其状态空间模型可以描述成


������(������̇ )

=  �0 1 � ������(������) + (1 − ������) � 0

� ������(������) + ������ � 0

� ������(������ − 1)


� 0 −1

1000

������ = �1 0� ������(������) 0 1

1000


其中初始状态为 x(0)=

1 ,p 为丢包概率,p=0 表示无数据丢包,p=1 表示有数据丢包,假设不会发生连续丢


� �

1

包。给定控制器为������(������) = ������������(������) = [−0.005 − 0.005]。

3.2 功能模块图仿真

这一部分主要介绍基于 Simulink 及 Truetime 工具箱的模块图绘制。通过理解 wireless 和 network 两个示例文件,搭建本次实验的网络控制系统的功能模块图,如图 2 所示。

图 2 仿真系统功能模块图


其中,TrueTime Wireless Network 模块模拟了网络部分,可以更改丢包率(Loss Probability)这一参数。在Regulator Node 中的TrueTime Kernel 中,模拟了控制器从网络中接收 y(k),并生成 u(k),将 u(k)发送到网络中的过程。在 Sensor/Actuator Node 的 TrueTime Kernel 中,模拟了传感器到控制器再到执行器节点的过程,执行器从网络中接收控制信号 u(k);进行零阶保持;若丢包贼改成 u(k-1),若不丢包则改成 u(k);再通过状态转移及传输延迟生成输出信号 y(k);再讲数字信号 y(k)发送至网络。如此形成闭环网络控制系统。仿真过程可参考图 3。

在搭建的过程中,依照数学模型的参数对部分模块的参数设置做出调整。

图 3 NCS 离散仿真流程图

3.3 编写相关代码

通过研究 TrueTime 2.0-reference manual 及阅读 wireless 文件夹中的相关代码后,可将代码编写分为两个步骤依次进行,模块初始化和编写任务代码。模块初始化针对控制器(Regulator)和执行器/传感器(Sensor/Actuator),任务代码仅针对控制节点(Regulator Node)。

3.3.1 模块初始化

对控制器(Regulator)和执行器/传感器(Sensor/Actuator)的初始化可直接参照 wireless 中的 regulator.m 文件和 actuator_init.m 文件进行,无需改动。代码如下:

1. function regulator_init

2.

3. % Distributed control system: regulator node

4. %

5. % Receives messages from the sensor node, computes control signal

6. % and sends it back to the actuator node.

7.

8. % Initialize TrueTime kernel

9. ttInitKernel('prioFP'); % fixed priority

10. ttSetKernelParameter('energyconsumption', 0.010); % 10 mW


11.

12. % Create mailboxes

13. ttCreateMailbox('sensor_signal', 10)

14. ttCreateMailbox('power_ping', 10)

15. ttCreateMailbox('power_response', 10)

16.

17. % Controller parameters

18. h = 0.010;

19. N = 100000;

20. Td = 0.035;

21. K = 1.5;

22.

23. % Create task data (local memory)

24. data.u = 0.0;

25. data.K = K;

26. data.ad = Td/(N*h+Td);

27. data.bd = N*K*Td/(N*h+Td);

28. data.Dold = 0.0;

29. data.yold = 0.0;

30.

31. % Create controller task

32. deadline = h;

33. prio = 1;

34. ttCreateTask('pid_task', deadline, 'ctrlcode', data);

35. ttSetPriority(prio, 'pid_task');

36.

37. % Create power controller task

38. offset = 2;

39. period = 0.025;

40. prio = 2;

41. power_data.transmitPower = 20;

42. power_data.name = 2; % We are node number 2 in the network

43. power_data.receiver = 1; % We are communicating with node 1

44. power_data.haverun = 0; % We have not run yet

45. ttCreatePeriodicTask('power_controller_task', offset, period, 'powctrlcode', power_data);

46. ttSetPriority(prio, 'power_controller_task');

47.

48. % Create power response task

49. deadline = 100;

50. prio = 3;

51. ttCreateTask('power_response_task', deadline, 'powrespcode');

52. ttSetPriority(prio, 'power_response_task');

53.

54. % Initialize network

55. ttCreateHandler('nw_handler', 1, 'msgRcvCtrl');


56. ttAttachNetworkHandler('nw_handler');

1. function actuator_init

2.

3. % Distributed control system: actuator node

4. %

5. % Receives messages from the controller and actuates

6. % the plant.

7.

8. % Initialize TrueTime kernel

9. ttInitKernel('prioFP'); % fixed priority

10. ttSetKernelParameter('energyconsumption', 0.010); % 10 mW

11.

12. % Create mailboxes

13. ttCreateMailbox('control_signal', 10)

14. ttCreateMailbox('power_ping', 10)

15. ttCreateMailbox('power_response', 10)

16.

17. % Create sensor task

18. data.y = 0;

19. offset = 0.0;

20. period = 0.010;

21. prio = 1;

22. ttCreatePeriodicTask('sens_task', offset, period, 'senscode', data);

23. ttSetPriority(prio, 'sens_task');

24.

25. % Create actuator task

26. deadline = 100;

27. prio = 2;

28. ttCreateTask('act_task', deadline, 'actcode');

29. ttSetPriority(prio, 'act_task');

30.

31. % Create power controller task

32. offset = 2.07;

33. period = 0.025;

34. prio = 3;

35. power_data.transmitPower = 20;

36. power_data.name = 1; % We are node number 1 in the network

37. power_data.receiver = 2; % We are communicating with node 2

38. power_data.haverun = 0; % We have not run yet

39. ttCreatePeriodicTask('power_controller_task', offset, period, 'powctrlcode', power_data);

40. ttSetPriority(prio, 'power_controller_task');

41.


42. % Create power response task

43. deadline = 100;

44. prio = 4;

45. ttCreateTask('power_response_task', deadline, 'powrespcode');

46. ttSetPriority(prio, 'power_response_task');

47.

48. % Initialize network

49. ttCreateHandler('nw_handler', 1, 'msgRcvActuator');

50. ttAttachNetworkHandler('nw_handler');

3.3.2 编写任务代码

1. function [exectime, data] = ctrlcode(seg, data)

2.

3. switch seg

4. case 1

5. % Read all buffered packets

6. temp = ttTryFetch('sensor_signal');

7. while ~isempty(temp)

8. y = temp;

9. temp = ttTryFetch('sensor_signal');

10. end

11. if isempty(y)

12. data.u = data.old; % 丢包,保持u(k-1)

13. else

14. data.u = -0.005 * (y(1) + y(2)); % 不丢包,保持u(k)

15. end

16. exectime = 0.0005;

17.

18. case 2

19. msg.msg = data.u;

20. msg.type = 'control_signal';

21. ttSendMsg(1, msg, 80); % Send 80 bits to node 1 (actuator)

22. exectime = -1; % finished

23. end


四、实验结果分析

4.1 不同丢包率下三条结果曲线

当丢包率分别为 0.3 和 0.6 时系统状态曲线、输出曲线和控制曲线如图 4 和图 5 所示。显然,在丢包率为 0.3 和

0.6 时,系统是稳定的。

图 4 丢包率为 0.3 时,系统状态曲线、输出曲线和控制曲线

图 5 丢包率为 0.6 时,系统状态曲线、输出曲线和控制曲线


4.2 不同丢包率下稳定性分析


根据上课讲解的 Bernoulli 过程的线性跳变系统,建立新的系统状态变量������������

������������

������������−1�。


由是否丢包情况下两种不同的控制率,即:

������������

= � −�������������������    , ������ = 0

−�������������������−1 , ������ = 1


结合系统离散状态方程:

������������+1 = ������������ℎ������������ + �  ������������������������������������������������

0


其中,������ = �0 1 �,������ = � 0

�,采样周期为 0.01s。


0 −1 1000


将������������表达式代入������������+1,可得

⎧�(������������ℎ − �  �������������������������������������������) 0� �  ������������

� , ������ = 0


������������+1

������������+1

= � ������������

⎪ 0

−������� 0

⎨ ℎ

�������������ℎ   �  ������������������������������������)� �  ������������

������������−1

� , ������ = 1


  全套毕业设计论文现成成品资料请咨询微信号:biyezuopin QQ:2922748026     返回首页 如转载请注明来源于www.biyezuopin.vip  

                 

打印本页 | 关闭窗口
本类最新文章
选择榨汁机的诚实指南 通用回归神经网络在声呐目标分类中 工艺规程制订与并行工程
储油罐的变位识别与罐容表标定 DVD租赁优化方案 车灯线光源的优化设计方案
| 关于我们 | 友情链接 | 毕业设计招聘 |

Email:biyeshejiba@163.com 微信号:biyezuopin QQ:2922748026  
本站毕业设计毕业论文资料均属原创者所有,仅供学习交流之用,请勿转载并做其他非法用途.如有侵犯您的版权有损您的利益,请联系我们会立即改正或删除有关内容!