EDA/IC设计
1.TrueTime工具箱
(1)TrueTime工具箱简介
TrueTime工具箱是基于MATLAB/Simulink的仿真工具箱,是瑞典Lund学院在2002年开发的,可以实现控制系统和实时调度的仿真。
作为一款专业的科学计算软件,MATLAB在各个领域都有着广泛的应用。MATLAB将人所不能达到的数据处理和计算能力和可视化编程加载在一起,并且其拥有大量的由各个领域的专家学者所编写的函数,这些函数的调用可以轻易地解决一些问题,为人们处理问题带来难以想象的便利。
在MATLAB被正式研究并投入使用之前,各国的专家学者或从业者基本都是使用FORTRAN和C语言所编程的软件等来进行相关领域的编程研究。但此类软件由于兼容性不强、在性能上也有所欠缺,同时并没有如同MATLAB那般完善且专业的内置函数和标准库,故而,一直难以在市场和相关领域占主导地位。但随着MATLAB的出现,各国的专家学者得到了进行相关研究的有力工具,同时原先在控制领域中使用的库类则被淘汰或选择在MATLAB上重建。时至今日,经过Math Works公司对MATALAB不断地改进和补充以及各国专家学者为其提供的改进建议,MATLAB已经能够适用于多领域,并在这些领域都占有举足轻重的位置。
TrueTime的功能可以说是十分完备。它不仅可以作为探索网络上的大多数问题对系统有何影响的一种工具,还能够为算法的设计提供很大的帮助,除了这些,它还有很多的优点。网络控制系统涉及控制、实时调度、网络通信等内容,为系统的分析与设计制造了不少的阻碍,而TrueTime工具箱为网络控制系统的仿真研究提供了清晰有效的策略,是一个理想的网络控制系统仿真平台。
(2)工具箱模块介绍
TrueTime仿真工具箱包括实时内核模块(TrueTime Kernel)、网络模块(TrueTime Network)、无线网络模块(TrueTime Wireless Network)、电池模块(TrueTime Battery)、发送信息模块(TrueTime Send)和接收信息模块(TrueTime Receive)六种Simulink接口类型模块。本文中详细介绍实时内核模块(TrueTime Kernel)和网络模块(TrueTime Network)的作用、接口及相应的功能。
图1 TrueTime仿真工具箱
① 实时内核模块(TrueTime Kernel)
该模块具有及时性和快速性,里面包含A/D接口、D/A接口、网络接口和外部通道,调度器(Schedule)和监视器(Monitors)的输出可以用来显示CPU、Monitors和网络的分配情况。该模块是根据使用者的需求来工作的,使用者派给它一个任务,遇到中断,它便去执行。任务的执行与中断句柄通过MATLAB语言或C++语言编写的代码实现。
图2 TrueTime Kernel模块内部结构
表1 TrueTime Kernel模块接口及功能
接口
功能
A/D
将模拟信息变更为数字信息
Triggers
提供中断句柄
Rcv
接收数字信息
D/A
将数字信息变更为模拟信息
Snd
发送数字信息
Schedule
查看系统资源的分配情况
Power
若需要,可接通电池(TrueTime提供电池模块)
②网络模块(TrueTime Network)
TrueTime Network向NCS供应了通信资源,包含了各种网络参数,如Network number、Number of nodes、Data rate(bits/s)、Minimum frame size(bytes)、Preprocessing delay(s)、Postprocessing delay(s)、Loss probability(0~1)等。TrueTime工具箱中预定义了多种调度策略,比如固定优先级(FP,Fixed Priority),单调速率(RM,Rate Monotonic),截止期单调(DM,Deadline Monotonic),最小截止期优先(EDF,Earliest Deadline First)等。
图3 TrueTime Network模块
表2 网络模块接口及功能
接口
功能
Snd
接收TrueTime Kernel模块Snd端口发送的数字信息
Rcv
发送数字信息至TrueTime Kernel模块的Rcv端口
Schedule
观察仿真中系统资源的占据情况
③无线网络模块(TrueTime Wireless Network)如图4所示。
图4 TrueTime Wireless Network模块
④电池模块,如图5所示。
图5 TrueTime Battery模块
(3)TrueTime命令介绍
TrueTime工具箱中的各个模块都需要编写代码来实现。常用的命令如表3所示。
命令
描述
ttInitKernel
初始化TrueTime Kernel模块
ttAnalogIn
从输入通道取值
ttAnalogOut
设定输出通道的值
ttSendMsg
在网络上发送信息
ttGetMsg
在网络接收信息
ttWait
等一个事件
ttCreateTimer
在指定事件触发中断句柄
ttSetPriority
改变任务优先级
ttCreatePeriodecTask
创建周期性任务
ttInitNetwork
初始化网络模块
ttCreateInterruptHandler
创建中断柄
ttCreateExternalTrigger
创建外部触发
ttCreateMonitor
创建一个监视器
ttCreateEvent
创建一个事件
ttSetDeadline
设置截止期
ttCallBlockSystem
调用Simulink模块
ttSetPeriod
设置周期时间
ttSetBudget
设置任务的执行时间预算
ttSetWCET
设置任务的最坏执行时间
ttGetRelease
获得释放时间
ttGetDeadline
获得截止期
ttGetAbsDeadline
设置一个任务作业的绝对截止期
ttGetPeriod
获得周期时间
ttGetPriority
获得优先级
ttGetBudget
获得任务的执行时间预算
ttGetWCET
获得任务的最坏执行时间
ttRemoveTimer
在指定事件去掉中断句柄
ttCurrentTime
设置或获得仿真中每个节点的当前时间
ttLogNow
记录当前时间
ttLogStart
开始时间测量并记录
ttLogStop
停止时间测量并记录
ttTryFetch
从邮箱获取信息
ttTryPost
将信息发送至邮箱
ttSleepUntil
把任务放到一个特定的时间点
ttSleep
某个时间点停止任务
ttSetNetworkParameter
设置网络参数
ttSetKernelParameter
设置内核参数
2.PID控制器概述
PID控制(proportional integral derivative,PID)是指控制器的输出分别与输入偏差的大小、偏差的积分和偏差的变化率成比例。理想PID的增量式数学表达式为
式中,为控制器输出的增量值;为被控参数与给定值之差。
将上改为传递函数的形式,则为
其中,表示控制器的比例增益,表示积分时间,表示微分时间。通过改变这三个参数的大小,从而改变调节作用的大小及规律。
3. 网络环境下的系统仿真
(1)基于TrueTime的倒立摆PID仿真模型
通过网络形成闭环的一种全分布式实时反馈控制系统称为网络控制系统。网络闭环控制系统框图如图6所示。
图6 具有延迟的网络闭环控制系统框图
本文用TrueTime创建网络平台,以直线一级倒立摆作为被控对象,采用经典PID的控制方法,利用TrueTime2.0工具箱及Simulink中的相关模块搭建出网络化直线一级倒立摆PID控制的仿真模型。系统的仿真模型如图7所示。
图7 基于TrueTime的倒立摆PID控制仿真模型
其中,状态空间模块的参数是利用上节中的计算结果,参数设置如图8所示。
图8 状态空间模块的参数设置
(2)各节点介绍及参数设置
上述仿真模型中包括1个网络模块(TrueTime Network),4个实时内核模块(TrueTime Kernel)。4个计算机部分分别是控制器、传感器、执行器和干扰。
①控制器节点
控制器部分用于接收TrueTime Network的消息,其处理后再传递给TrueTime Network,另外,需要给它输入一个阶跃信号作为系统的参考信号。控制器节点以及参数设置分别如图9和图10所示。
图9 控制器节点图
图10 控制器参数设置界面
PID控制器采用以下算法:
其中,,。传感器采样周期h=0.01 ,微分增益N=10000,比例系数K=3.75,积分系数=9.6,微分系数=1.25。
②传感器节点
传感器节点以及参数设置分别如图11和图12所示。
图11 传感器节点图
图12 传感器参数设置界面
③执行器节点
执行器节点以及参数设置分别如图13和图14所示。
图13 执行器节点图
图14 执行器参数设置界面
④干扰节点以及参数设置分别如图15和16所示。
图15 干扰节点图
图16 干扰参数设置界面
⑤ 网络模块(TrueTime Network),其内部结构如图17所示。
图17 网络模块内部结构
网络模块(TrueTime Network)的参数设置如图18所示。其中,Data rate(bits/s)表示网络传输速率,Minimum frame size(bits)表示最小数据帧(字节),Loss probability(0-1)表示网络信息在传输中的丢失率。
图18 网络模块参数设置界面
用MATLAB语言实现各节点及网络模块的初始化和任务代码见下节。
全部0条评论
快来发表一下你的评论吧 !