8.4 基于参数的故障注入

本节导航


本节例程见RflySimAPIs\FaultInjectionAPI\FailureGenerator\FailureGeneratorDemo.slx

这是一个控制无人机飞行,同时注入故障的例子。其模型如下图所示: 详细说明:

  • UDP Receive模块订阅了30101端口,用于从CopterSim中获取仿真真值信息,数据详情请见UDP_SIL_State_Receiver的文字描述
  • UDP Send模块想30100端口发送数据inSILIntsCMDinSILFloatsCMDCopterSim中的DLL模型接收到之后,会根据SimulinkinSILIntsinSILFloats的两个输入数据,来根据编程算法注入故障
  • 默认情况下inSILIntsCMDinSILFloatsCMD都是0,不会触发故障,可以通过鼠标点击切换按钮,给定不同的值,来改变这两个向量的值,从而注入故障
  • UDP Receive1模块订阅20101端口,从CopterSim获取Pixhawk内部的状态估计值(与log日志中数据相同,但是没有log日志全面,好处是可以实时读取),数据定义见UDP_SIL_State_Receiver1
  • UDP Send1通过向20100端口发送数据给CopterSim,这个数据可以向飞机发送目标点,或者改变飞机的运行速度。详见:RflySim高级版第03讲单机控制接口实现.pdf中的OffboardAPI.slx例程

测试方法:

  1. 打开一个已加载DLL模型的SIL或HIL仿真
  2. 运行本Simulink模型,可以看到左侧传入的真值和Pixhawk状态数据的变化,说明能够获取得到数据了,这样可以通过Simulinkto Workspaceto File模块,将数据存储到工作空间或文件
  3. 默认情况下飞机会飞行到10m高度,这是因为右下方的Offboard接口给的期望位置为 0 0 -10。这时候,可以切换Offboard控制模式为速度控制模式,拖动滑块,控制飞机的前后飞行,如果一切正常,将速度归零,让飞机保持悬停状态。
  4. 右上角的inSILints部分有切换按钮,可以点击FaultSwitch切换来使能故障注入。

操作步骤如下:

  1. Windows资源管理器中,双击运行“MulticopterModelSITLRun.bat”脚本,并输入1,开启一个飞机的软件在环仿真。打开之后点击地面站,手动解锁飞机并让飞机起飞(注意:此一键运行脚本是软件在环脚本,其配置须严格按照1.5节的操作步骤来,其中要将第十项(是否屏蔽PX4官方控制器输出)改为否,否则不会如期实现想要的效果
  2. 打开FailureGeneratorDemo.slx例程
  3. 提前修改故障参数,其中有整型故障参数和浮点型故障参数,可以根据实际情况来修改,这里只是做一个示范。然后运行此模型,此时飞机会飞到离地面高10m处悬停。
  4. 点击切换开关,从正常飞行模式切换到含有故障参数的模式,此时会发现飞机发生翻转,说明故障注入成功。
  5. 用户可以根据自己的兴趣注入故障参数观察实验效果

8.4.1 多机故障注入

多机故障注入思路: 实现多机故障,可以将上述例程FailureGeneratorDemo.slx复制多份,然后修改每一份的收发端口号即可。

  • 需要注意的是,Simulink中每个飞机有4个端口可用,30101读取飞机真值,30100注入故障,20101读取Pixhawk状态,20100发送控制指令。
  • 如果建立了两个飞机,那么需要再复制粘贴一套接口,然后在上述四个端口基础上+2,也就是30103,30102,20103,20102号端口,依次类推更多飞机。

具体步骤如下:

  1. 打开FailureGeneratorDemo.slx例程,将其复制两份(注意,要将下图中红圈圈起来的去掉,只能保留一个,否则会出错
  2. 修改复制品那一份的四个端口号,将每一个端口号加2。
  3. Windows资源管理器中,双击运行“MulticopterModelSITLRun.bat”脚本,并输入1,开启一个飞机的软件在环仿真。打开之后点击地面站,手动解锁飞机并让飞机起飞(注意:此一键运行脚本是软件在环脚本,其配置须严格按照1.5节的操作步骤来,其中要将第十项(是否屏蔽PX4官方控制器输出)改为否,否则不会如期实现想要的效果
  4. 输入想要模拟的飞机个数(以2为例),点击回车建,打开所有软件后会看到RFlySim3D会出现两个飞机
  5. 点击运行后可以看到两个飞机会飞离地面10m处并悬停。
  6. 其后的操作步骤同上一节所示,此不再赘述。

8.4.2故障数据收集

results matching ""

    No results matching ""