硕士论文中期报告.doc_第1页
硕士论文中期报告.doc_第2页
硕士论文中期报告.doc_第3页
硕士论文中期报告.doc_第4页
硕士论文中期报告.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

硕士论文中期报告(田野)基于vxworks的卫星半物理仿真中的通信一、研究内容概要:借助vxworks嵌入式操作系统平台,实现卫星半物理仿真中的通信问题。半物理仿真各个阶段涉及嵌入式星载计算机之间的通信、星载计算机和各个外部系统之间的通信、系统中执行和测量部件的控制和信息反馈等,是从系统级、分系统到部件级的层次机构,其中通信机制发挥了建立其间联系的基础性作用。主要包括:通信机构的设计、通信协议的选择和统一、通信接口的编制以及底层通信设备驱动程序编写等内容,以期最后参与到卫星地面半物理仿真试验系统的整体调试之中。二、开题后主要完成的研究工作:1、飞轮和陀螺数据通信1.1相关硬件及软件环境:pc计算机、PCI1710数据采集及转换卡、实际飞轮和陀螺;vxworks操作系统及其编译环境Tornado、matlab的rtw实时工具箱;1.2实验目的和意义:飞轮是卫星的执行机构,根据“动量守恒”原理来控制卫星的姿态,它的精度、速度和控制效果好坏直接影响到卫星的姿态精度和稳定性,本项目中主要使用的是零动量反作用飞轮来实现姿态三轴稳定。陀螺是卫星的测量部件,本项目中采用德国的微型激光陀螺,通过对三个方向角速度的测量向卫星提供姿态数据。1.3实现原理和步骤:1、按照仿真框图(图1-1)在matlab的simulink中建立飞轮测速的模型,包括控制部分(发送控制指令)、s函数(对PCI1710采集卡进行读写操作以及利用采集卡进行脉冲计数)、显示对比部分(图1-2);2、使用matlab的tornado编译工具将simulink模型转化为在vxworks运行的代码,通过tornado和目标机的交叉编译环境下载到目标机的vxworks操作系统下;3、在vxworks操作系统下运行代码,给飞轮提供一个控制信号,然后得到飞轮的转速、转向和力矩等信息,通过matlab外部模式实时观察数据。飞轮的角速度信号是通过PCI1710卡的计数器换算得到的;4、模型运行300秒后,得到数据文件wheel.mat。绘出控制力矩和输出力矩的曲线(图 1-3)。图中平滑的曲线是控制力矩,前100秒为-0.8,后500秒呈正弦规律变化。带有噪声的曲线是飞轮的力矩曲线,由于该飞轮是一个性能不是很好的产品,只能用于地面的初期试验阶段,所以在控制力矩变向的时候产生了较大的噪声,这是十分正常的。图 1是误差图,从图中看出输出力矩和控制力矩平均误差不是很大;5、陀螺的测试方法与上面飞轮测速类似。图 11 反作用飞轮仿真系统框图Figure 11 Reaction wheel simulation system图 12 飞轮测速Simulink模型Figure 12 Measure velocity model of wheel图 13 控制力矩与输出力矩Figure 13 Control torque and output torque图 14 误差曲线Figure 14 Error curve diagram2、vxworks下的网路通信2.1相关硬件及软件环境:pc计算机、ne2000网卡、RS485串口PCI接口卡、vxworks操作系统及其编译环境Tornado、matlab的rtw实时工具箱;2.2实验目的和意义:利用TCP/IP提供的端到端的传输能力在位于不同主机上的任务间传输用户数据,其中一种方式就是使用socket(套接字),本项目中需要在仿真计算机中增加网络传输功能,以便以较快的速度通过网络把各种实时仿真数据传出,网络上其他计算机接收到实时数据后可以进行实时显示、计算以及实现三维卫星模型的实时数据驱动。因为数据量很大,串口无法满足要求,网络协议可靠快速,是良好的选择。2.3实验原理:1、宿主机是集成编译环境,把运行在各计算机上的任务代码编译后通过网络下载到各台计算机(图 2-1);2、控制计算机(即星载计算机)和动力学仿真计算机各安装一块PCI串口卡PCI1612,通过485串口组成闭环结构实现实时控制(图 2-1);3、动力学仿真计算机利用网络将动力学仿真数据通过socket发出,宿主机利用VC程序通过socket接收数据,并将其转换为符合STK接收要求的数据格式,发向STK演示机(图 2-1);4、STK演示计算机接收仿真数据并实时驱动STK动画显示(图 2-1)。图 21 半物理仿真系统结构图Figure 21 Semi-physical simulation system structure2.4实现步骤:1、在simulink动力学模型中编写有关网络通信的s函数模块socket_net,在其中调用vxworks代码编程实现socket的服务器端,等待客户端申请建立连接后把实时仿真数据由网络传给客户端(图 2-2);2、在宿主机中用VC实现socket数据接收,作为客户端。服务器端首先运行,等待客户端连接。在服务器端和客户端实现面向连接的socket接口的流程如下图(图 2-3):图 22 仿真系统模型Figure 22 Simulaton system block图 23 面向连接的socket应用框架Figure 23 Sock_stream application frame3、STK软件下的卫星实时数据驱动演示3.1实验原理:STK提供实时数据驱动接口,可以动态实时的根据数据显示卫星模型的各种状态,使用STK/VO组件。按照组件的接口程序实现数据接收和发送。软件分为两部分:发送方和接收方,他们之间通过网络IP地址来锁定。3.2实现步骤:1、在宿主计算机中VC编程实现数据接收网络客户端,在这个程序开始阶段包含对STK演示计算机的初始化:1)设定STK计算机的IP地址和端口号,以便建立连接;2)程序选定需要数据驱动的对象,如卫星姿态、轨道等;3)给STK中需要数据驱动的对象设置初始值;4)启动STK/AVO,等待实时数据到来;2、在VC接收程序中实现把仿真计算机中的数据转换为STK可以识别的格式,并向初始化时建立的接口发出;3、STK演示计算机实时接收数据,观察直观的动画演示(图 3-1)。图 31 STK/AVO视图Figure 31 STK/AVO view4、利用matlab的TLC文件实现实时仿真的中断服务程序接口4.1硬件和软件环境:pc计算机、pc机8250芯片的RS232串口,硬件连接结构如图(图 4-1),vxworks操作系统及其交叉编译环境他Tornado、matlab的rtw组件中的tornado和matlab接口;图 41 matlab中断系统结构图Figure 41 matlab interrupt system structure4.2实验原理分析:1、在仿真计算机上的动力学仿真模块需要实时接收来自控制计算机的控制指令来修正其参数,同时把仿真的状态数据传给控制计算机来根据偏差计算下一步的控制指令,这就需要动力学仿真计算机有实时接收数据的能力,即相应中断的能力;2、而在动力学仿真模型是matlab的simulink下生成的固定步长的程序代码,即每隔一定时间周期执行一次动力学计算,不能实时接收控制指令,会引起控制指令丢失,因此需要引入中断模式;3、在matlab的rtw组件中提供了一个专门面对vxworks的接口模块Async Interrupt(异步中断模块)(图 4-2),使其能在定步长仿真同时产生接收数据中断,在ISR中进行控制数据的接收以及状态数据的发送,即中断模块和动力学仿真模块是相互独立运行的,不会因为仿真的定步长而影响接收数据的实时性;图 42 matlab的rtw中的异步中断模块Figure 42 matlab rtw asynchron interrupt module4、还需要一种机制来联系ISR中的数据和动力学仿真中的数据,使之能进行交换;5、而Async Interrupt(异步中断模块)默认是为VME总线中断提供的模块,和其他中断在中断号、中断机制等方面有所不同,这就需要更改和Async Interrupt(异步中断模块)有关的程序;6、 Async Interrupt(异步中断模块)的程序包括两部分:一是与输入参数有关的s函数:vxinterrupt1.c,一是与自动代码生成有关的TLC文件:vxinterrupt1.tlc,它们都在:MATLAB7rtwctornadodevices文件夹下;、由于最后运行的代码是由RTW自动程序创建过程来生成的,所以类似ISR.c的源文件无法直接加入到最后要下载的目标代码中,而是通过RTW的自动程序创建过程动态加入的,这就需要更改TLC文件。4.3 rtw中TLC文件介绍:RTW提供了一个实时开发环境,这个实时环境将MATLAB与Simulink连接为一个整体,并在这个基础上提供了从系统设计到实现的方法和简单易用的接口。RTW还提供了TLC来扩充自己的功能。通过使用TLC,可以修改、优化RTW生成的C程序,扩充RTW的功能,比如,硬件驱动程序与硬件有关,随系统改变而改变,就需要利用TLC,生成相应的驱动程序。TLC文件是在rtw的自动程序创建过程中调用的。文件是一种生成程序的文件。在本项目中,就需要改写vxinterrupt1.tlcRTW自动程序创建过程能在不同主机环境下生成用于实时应用的程序,该创建过程使用高级语言编译器中的联编实用程序,来控制所生成源代码的编译和链接过程。RTW使用一个高级的M文件命令控制程序创建过程,默认命令是make_rtw。RTW的自动程序创建过程如图(图 4)所示。图 43 RTW的程序自动创建过程Figure 43 RTW automatic program building process4.4实现步骤:1、探索性的运用matlab中的全局变量和局部变量解决了动力学仿真数据(s函数中)和中断服务程序ISR(TLC文件中)之间的数据联系、存储和传递问题,忽略了细节的数据传递关系如下图(图 4):图 44 控制计算机与动力学仿真计算机及其动力学仿真计算机内部的数据传递关系2、将中断模块加入到原动力学仿真模块中,修改vxinterrupt1.c 和vxinterrupt1.tlc文件,在vxinterrupt1.tlc中加入ISR(中断服务程序),修改vxinterrupt1.c是为了使得原本为VME总线设计的Async Interrupt模块可以响应任何挂接上去的中断,在控制程序和ISR的接收发送程序中要注意波特率和数据传送结构的一致性;3、在Async Interrupt模块参数设置对话框中配置参数来挂接串口中断,使得仿真计算机中的模块可以产生接收数据中断(图 4);图 45在Async Interrupt模块参数设置对话框中挂接串口中断4、在simulink中build下载仿真模块到动力学仿真计算机,控制程序下载和控制计算机上;5、运行仿真程序,在simulink中通过外部模式观察各种参数的控制效果,(图 4)为带有中断模块的动力学仿真模型,(图 4)为通过记录数据得到的部分仿真控制结果:如星体控制角速度曲线。 图 46 带有中断模块的动力学仿真模型图 47 星体控制角速度曲线5、vxworks下PCI设备驱动程序编写5.1硬件和软件环境:PCI9820CAN接口卡,PCI1612RS485串口卡,安装在pc机上;vxworks操作系统及其开发调试环境Tornado。5.2实验目的和意义:为了满足半物理仿真系统中各部分之间的有效通信,满足快速可靠的要求,本项目在总线上选择了RS485总线和CAN总线,pc机上没有对应接口,因此选择使用适应性好且有速度优势的PCI接口卡。在本项目中使用vxworks嵌入式操作系统,而目前工业上使用的PCI接口的板卡都不提供vxworks下的驱动程序,因此需要学习vxworks下设备驱动程序。近期工作中,主要负责PCI接口CAN卡在vxworks下的驱动,所选择是周立功公司的PCI桥CAN接口卡PCI9820,带有两路sja1000控制芯片的串口。5.2有关vxworks的启动顺序以及驱动程序的安装位置:1、vxworks的启动顺序如图(图 51);2、分析vxworks硬件初始化位置以及参考vxworks其他PCI网络设备驱动的初始化位置,将PCI初始化放在 sysHwInit()中;3、初始化包括根据厂商ID和设备ID找到硬件,得到总线号、设备号、功能号等信息,读写PCI桥的配置空间(图 52),得到PCI桥设备的物理地址、空间大小、中断号等,最后进行内存映射,将物理地址映射为处理器内存空间的虚拟地址,这样才能利用这个地址对sja1000控制器的寄存器进行配置;4、根据初始化顺序,PCI设备中断的挂接放在sysHwInit2()中,由配置空间得到的中断号在这里和中断服务程序进行挂接;5、PCI桥内存虚拟地址映射成功之后,就可以通过*(基地址+偏移量)来访问sja1000CAN控制器的寄存器了,通过对寄存器的操作完成驱动程序中 xxOpen()、xxClose()、xxRead()、xxWrite()、xxIoctl()等接口的功能。5.3vxworks下字符型设备驱动程序主要包含三个层次结构:1、任务与VxWorks的接口:fd =open (filename, flags, mode)fd=creat (filename, flags)read (fd, &buf, nBytes)write (fd, &buf, nBytes)ioctl (fd, command, arg)close (fd)remove (filename) ;2、驱动程序表、设备列表、文件描述符表,他们是三个列表结构,其中并列记录着各种设备的相关信息,建立了从应用程序到底层驱动程序的联系;3、 Driver的操作规整,参数规整和I/O管理,这主要是怎样将驱动安装在BSP中的操作以及设备驱动的调用规范,其中xx表示需要编写驱动的设备,这里是PCI9820,xxOpen(pDevHdr, pName, flags, mode):返回设备Id号;xxClose(deviceId)xxRead(deviceId, pBuf, nBytes)xxWrite(deviceId, pBuf, nBytes)xxIoctl(deviceId, cmd, arg),这些就是I/O接口(如open、read等)调用时的底层实现函数,在驱动程序中编写。Power up reset Disable interrupt; Put boot type(cold/warm) on stack;romInit.sromInit() Clear caches; Call romStart(); If ROM-resident ImageCopy the text and data to RAM; Else BootInit.cromStart()Copy the data to RAM; Initialize the unused memory; If Compressed Image Decompress the image; If cache applicable Invalidate cache;sysALib.ssysInit()Init system interrupt and fault tables with default stubs;Init all processor registers to known default states; Enable tracing,clear all pending inter.Call usrInit() Save the boot type; Handle all init needed before kernel startusrConfig.c bootConfig.cStart the kernel by calling kernelInit():libcputoolvx.a;usrInit()(Many vxworks facilities cant be used here because without task context.)Start task: usrRoot(Init cache,Zero out system bss segement,Init interrupt vectors,Init hardware to quiescent state by calling sysHwInit()Call memInit()(or memShowInit() usrMmuInit();sysClkConnect();sysHwInit2();usrRoot()usrConfig.c bootConfig.csysClkRateSet();sysClkEnable();iosInit();(Init I/O system)excInit();(Init exception handling)wdbConfig();(Init agents commu. Interface,start

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论