下面定义以交通灯为模型的防危系统的防危策略。
返回值=0;
/*表明经防危核验证为正确命令*/
返回值=1;
/*命令经防危核直接传送到模拟设备而未经过安全检测模块验证,模拟设备状态根据此值改变*/
返回值=2;
/*当前设备状态验证失败,失败原因不明。
措施:模拟设备保持当前状态不变*/
返回值=3;
/*同一个方向有多个信号灯同时开启。
措施:所有交通灯都关闭,然后在收到新的命令前设备执行缺省命令序列,此处由模拟设备接到“3”时直接处理*/
返回值=4;
/*四个方向同时为黄灯或绿灯。
措施:系统恢复到初始状态。在收到新的命令前设备执行缺省状态*/
反回值=5;
/*命令验证失败,失败原因不明,
措施:模拟设备保持当前状态不变*/
返回值=6;
/*信号灯保持当前状态的时间短于最短时间(<2s),
措施:模拟设备自动延迟(Sleep(Time))显示此命令*/
返回值=7;
/*使同一个方向有多个信号灯同时开启的信号灯命令错误。
措施:不执行此命令,保持当前信号灯状态*/
返回值=8;
/*命令的执行将会使信号灯变化的顺序不正确。
措施:不执行此命令,保持当前信号灯状态*/
返回值=9;
/*四个方面同时为黄灯或绿灯的命令。
措施:不执行此命令,保持不前信号灯状态*/
4.2 模拟设备模块
防危核系统中以十字路口交通灯模拟外部设备。当经防危验证设备命令合法时,此模拟接受防危核传入的真实设备命令int RealCmd(),并向防危核返回设备当前最新状态。用图形方式形象、直观地显示设备本身的实时状态(交通灯颜色的变化)、模拟设备当前接收的命令和命令验证结果(合法或非法命令,对非法命令显示出错原因)。
该进程中设有三个线程,其中第一个线程专门用于读管道FIFO6(实时管道)获取防危核发送的控制命令,第二个线程读管道myfifo(非实时管道)获取命令控制器发送的设备控制命令,第三个线程用TCL/TK脚本语言实现模拟设备形象、美观的图形显示功能。当模拟设备启动后,自动进行初始化并调用缺省的交通灯控制命令序列完成基本操作,直以有来自设备控制和防危核的设备控制命令为止。若交通灯的显示时间超过一定时间,则强制设备执行缺省的设备状态。
4.3 设备控制器模块
模拟设备控制器作为一个进程独立运行,控制器先从命令文件中获取命令参数,然后根据命令的防危等级分别向模拟设备和防危核发送设备操作命令(包括正常的和不正常的操作命令)。命令中设置了时间控制参数,控制器按此时间间隔值发送设备命令。
4.4 设备命令文件
设备命令文件中存放了各种对交通灯的操作命令,包括正常和不正确命令。命令执行有三种防危等级可供选择:第一种,不通过防危核的命令,操作命令直接由设备控制器发送到模拟设备;第二种,通过防危核并验证其正确性的命令,此时防危核将调用防危策略库的相应防危策略验证命令,然后将验证结果发送到模拟设备;第三种,通过防危核但不验证设备操作的命令,命令被防危核直接送到模拟设备。设计三种等级命令的目的在于,比较是否使用防危核或是否进行命令验证在系统性能和防危性上的差异。
设备的命令格式为:char SourceCmd="Cmd east-light,Cmd north-light,Cmd west-light,Cmd south-light,int Time,bool Verifiedl,bool Verfied2"。操作命令要对十字路口的12盏交通灯进行操作控制。参数Time指本命令相对于前一条命令延迟多长时间发送。参数Verified1=0表示不经过防危核验证直接传送到设备的命令;Verified1=1表示要经过防危核验证。Verified2=0表示该命令直接发送到模拟设备不经过防危核的任何处理;Verified2=1表示该命令要通过防危核。
Struct Cmd
{
char first-light-color;
char second-light-color;
char third-light-color;
}
first-light-color,second-light-color,third-light-color表示每个方向三盏灯的颜色插入相应的颜色的图片。整个图形界面形象、美观。
5 实验系统的测试评价
根据防危核设计要求,从防危核的大小、对系统实时性的影响以及完备性三方面对本实验系统进行测试。
①防危核大小:防危核所编译后的目标文件为5KB,相对于RT-Linux内核源码是非常小的。
②时间开销:将防危核对控制命令验证所需时间进行了200次测试,得出其平均时间仅10μs左右,说明防危核对系统实时性影响非常小。
③完备性:将防危核对第二种控制命令各种情况的防危处理结果表明,防危核的验证结果完全正确。说明满足防危核完备性要求。
以上对防危核的测试结果表明,本控制模型完全满足防危核设计要求,防危核机制完全可以在实时操作系统中使用。
结语
根据防危核等相关理论并结合RT-Linux操作系统本身的特色,本文先从理论上分析了在RT-Linux中实现防危核的可行性,然后通过实际例子实现了基于RT-Linux的防危核,为防危核探索了一种新的实现途径。最后,通过对实验系统的测试进一步证明防危保障机制在实时操作系统中完全可行
本文关键字:模型 嵌入式系统-技术,单片机-工控设备 - 嵌入式系统-技术
上一篇:VxWorks中的地址映射