

{"id":1351,"date":"2014-03-14T11:44:14","date_gmt":"2014-03-14T10:44:14","guid":{"rendered":"https:\/\/project.inria.fr\/plasma-lab\/?page_id=1351"},"modified":"2015-09-15T16:59:16","modified_gmt":"2015-09-15T14:59:16","slug":"fault-tolerant-fuel-control-system","status":"publish","type":"page","link":"https:\/\/project.inria.fr\/plasma-lab\/examples\/fault-tolerant-fuel-control-system\/","title":{"rendered":"Fault-Tolerant Fuel Control System"},"content":{"rendered":"<h3>Description<\/h3>\n<p>This model was taken from the Simulink examples library. A full description of this model can be found on the <strong><a href=\"http:\/\/fr.mathworks.com\/help\/simulink\/examples\/modeling-a-fault-tolerant-fuel-control-system.html\">Simulink web site<\/a><\/strong>.<\/p>\n<p>This is a model of a fuel control system where Stateflow(R) is used to handle the fault management of the system. The system contains four separate sensors: a throttle sensor, a speed sensor, an oxygen sensor, and a pressure sensor.<\/p>\n<p>Each of these sensors is represented by a parallel state in Stateflow. Each parallel state contains two substates, a normal state and a failed state (the exception being the oxygen sensor, which also contains a warmup state).\u00a0 If any of the sensor readings is outside an acceptable range, then a fault is registered in Stateflow, and the substate of the corresponding subsystem transitions to the failed state. If a subsystem recovers, it can transition back to the normal state.<\/p>\n<p>A state regulates the oxygen to fuel mixture ratio. If a failure is detected, then the oxygen to fuel ratio is increased. If multiple failures are detected, then the fuel system is disabled until there are no longer multiple failures in the system.<\/p>\n<hr \/>\n<h3>Modelisation for SMC<\/h3>\n<div class=\"alert alert-success\" role=\"alert\"><p class=\"printonly\"><strong>Important!<\/strong><\/p>Our probabilistic model can be downloaded here:<\/p>\n<ul>\n<li>Plasma project: <a href=\"http:\/\/plasma-lab.gforge.inria.fr\/plasma_lab_examples\/Simulink\/fuel_control\/sldemo_fuelsys.plasma\">sldemo_fuelsys.plasma<\/a><\/li>\n<\/ul>\n<ul>\n<li>Simulink model: <a href=\"http:\/\/plasma-lab.gforge.inria.fr\/plasma_lab_examples\/Simulink\/fuel_control\/sldemo_fuelsys_estasys.mdl\">sldemo_fuelsys_estasys.mdl<\/a><\/li>\n<\/ul>\n<p class=\"first-p\">To execute the model you will need to build\u00a0 the S-Function Builder in Simulink:<\/p>\n<ol>\n<li>Locate the S-Function Builder block in the block &#8220;Speed Sensor\/Poisson&#8221;<\/li>\n<li>Right click on &#8220;Properties&#8221;<\/li>\n<li>Launch &#8220;Build&#8221;<\/li>\n<\/ol>\n<p><\/div>\n<p>In the original model, sensors&#8217; faults are decided by the user using manual switch block for each sensor. The interest of the SMC approach come from the possibility to observe a large set of execution trace produced by a probabilistic procedure.<\/p>\n<div id=\"attachment_1356\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1356\" class=\"size-medium wp-image-1356 \" src=\"https:\/\/project.inria.fr\/plasma-lab\/files\/2014\/03\/fuel_control_sys-300x156.png\" alt=\"fuel_control_sys\" width=\"300\" height=\"156\" srcset=\"https:\/\/project.inria.fr\/plasma-lab\/files\/2014\/03\/fuel_control_sys-300x156.png 300w, https:\/\/project.inria.fr\/plasma-lab\/files\/2014\/03\/fuel_control_sys-1024x535.png 1024w, https:\/\/project.inria.fr\/plasma-lab\/files\/2014\/03\/fuel_control_sys-900x470.png 900w, https:\/\/project.inria.fr\/plasma-lab\/files\/2014\/03\/fuel_control_sys.png 1879w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><p id=\"caption-attachment-1356\" class=\"wp-caption-text\">A general view of the probabilistic model<\/p><\/div>\n<p>To do this we replaced Speed, EGO and MAP manual switches by custom probabilistic switches. These switches use a Poisson distribution and are parameterized by a rate to decide when a fault happen. A sensor will repair itself after a duration of 1 second. Although we modified the original model ourselves, we used the description of the probabilistic model from <em>Bayesian Statistical Model Checking with Application to Stateflow\/Simulink Verification\u00a0<\/em>(Zuliani, Platzer, Clarke).<\/p>\n<div id=\"attachment_1357\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/project.inria.fr\/plasma-lab\/files\/2014\/03\/poisson_proc.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1357\" class=\"size-medium wp-image-1357\" src=\"https:\/\/project.inria.fr\/plasma-lab\/files\/2014\/03\/poisson_proc-300x87.png\" alt=\"poisson_proc\" width=\"300\" height=\"87\" srcset=\"https:\/\/project.inria.fr\/plasma-lab\/files\/2014\/03\/poisson_proc-300x87.png 300w, https:\/\/project.inria.fr\/plasma-lab\/files\/2014\/03\/poisson_proc-900x262.png 900w, https:\/\/project.inria.fr\/plasma-lab\/files\/2014\/03\/poisson_proc.png 948w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-1357\" class=\"wp-caption-text\">Poisson distribution block<\/p><\/div>\n<p>The<em> Poisson distribution block<\/em> draw a time <em>T<\/em> in second before the next fault happen and use a Stateflow chart as a timer<em>. <\/em>Once the time <em>T<\/em> is reached, the block emit a signal corresponding to a fault. In this block, the S-Function block call the C function <em>rand<\/em>. We had to use C to overcome the lack of equivalent random block in Simulink.<\/p>\n<div id=\"attachment_1355\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/project.inria.fr\/plasma-lab\/files\/2014\/03\/fault_switch.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1355\" class=\"size-medium wp-image-1355\" src=\"https:\/\/project.inria.fr\/plasma-lab\/files\/2014\/03\/fault_switch-300x54.png\" alt=\"fault_switch\" width=\"300\" height=\"54\" srcset=\"https:\/\/project.inria.fr\/plasma-lab\/files\/2014\/03\/fault_switch-300x54.png 300w, https:\/\/project.inria.fr\/plasma-lab\/files\/2014\/03\/fault_switch-1024x184.png 1024w, https:\/\/project.inria.fr\/plasma-lab\/files\/2014\/03\/fault_switch-900x162.png 900w, https:\/\/project.inria.fr\/plasma-lab\/files\/2014\/03\/fault_switch.png 1033w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-1355\" class=\"wp-caption-text\">The probabilistic switch with repair timer<\/p><\/div>\n<p>The signal from the <em>Poisson block<\/em> is then used in a switch. In case of a fault signal the <em>fault value<\/em> (a constant) is returned instead of the <em>sensor value<\/em>. A Stateflow <em>repair timer<\/em> is used to maintain the fault signal for a duration of 1 second.<\/p>\n<div id=\"attachment_1360\" style=\"width: 550px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/project.inria.fr\/plasma-lab\/files\/2014\/03\/graph.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1360\" class=\" wp-image-1360\" src=\"https:\/\/project.inria.fr\/plasma-lab\/files\/2014\/03\/graph-300x81.png\" alt=\"graph\" width=\"540\" height=\"137\" \/><\/a><p id=\"caption-attachment-1360\" class=\"wp-caption-text\">fuel and airflow\/fuel rates<\/p><\/div>\n<p>Statistical Model Checking we checked the property already used in the paper <em>Bayesian Statistical Model Checking with Application to Stateflow\/Simulink Verification <\/em>(Zuliani, Platzer, Clarke).<\/p>\n<div class=\"alert alert-success\" role=\"alert\"><p class=\"printonly\"><strong>Important!<\/strong><\/p> !(F&lt;=100 G&lt;=1 (air_fuel_ratio = 0)) <\/div>\n<p>Plasma-Lab analysis estimates the probability is in the interval [0.87251, 0.97549 ] with a confidence of 99%.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Description This model was taken from the Simulink examples library. A full description of this model can be found on the Simulink web site. This is a model of a fuel control system where Stateflow(R) is used to handle the fault management of the system. The system contains four separate\u2026<\/p>\n<p> <a class=\"continue-reading-link\" href=\"https:\/\/project.inria.fr\/plasma-lab\/examples\/fault-tolerant-fuel-control-system\/\"><span>Continue reading<\/span><i class=\"crycon-right-dir\"><\/i><\/a> <\/p>\n","protected":false},"author":234,"featured_media":0,"parent":236,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1351","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/project.inria.fr\/plasma-lab\/wp-json\/wp\/v2\/pages\/1351","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/project.inria.fr\/plasma-lab\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/project.inria.fr\/plasma-lab\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/project.inria.fr\/plasma-lab\/wp-json\/wp\/v2\/users\/234"}],"replies":[{"embeddable":true,"href":"https:\/\/project.inria.fr\/plasma-lab\/wp-json\/wp\/v2\/comments?post=1351"}],"version-history":[{"count":18,"href":"https:\/\/project.inria.fr\/plasma-lab\/wp-json\/wp\/v2\/pages\/1351\/revisions"}],"predecessor-version":[{"id":2149,"href":"https:\/\/project.inria.fr\/plasma-lab\/wp-json\/wp\/v2\/pages\/1351\/revisions\/2149"}],"up":[{"embeddable":true,"href":"https:\/\/project.inria.fr\/plasma-lab\/wp-json\/wp\/v2\/pages\/236"}],"wp:attachment":[{"href":"https:\/\/project.inria.fr\/plasma-lab\/wp-json\/wp\/v2\/media?parent=1351"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}