Clear Filters
Clear Filters

Encountering an error during Fault Injection

3 views (last 30 days)
I am trying to inject faults into a model but repeadetly I am encountering an error: Fault Inport block 'gain/in_Outport1_fault/Fault Inport' is set to read/override invalid signal on the Outport number 1 of block 'xxxxxxxxxxxxxxxx/EM_Torque_Sensor/in'.
Caused by:
Target signal is a continuous-time signal. Continuous-time signals support faults only if its destinations are discrete.
  3 Comments
Raghava S N
Raghava S N on 19 Feb 2024
Hi, @RAGHUVEER RAJESH. It would be helpful if you could share snapshots/files related to your model.
RAGHUVEER RAJESH
RAGHUVEER RAJESH on 11 Apr 2024
https://in.mathworks.com/matlabcentral/answers/2105601-how-create-a-degradation-feature-profile-from-available-sensor-data

Sign in to comment.

Answers (2)

Pat Canny
Pat Canny on 21 Feb 2024
I am not sure if you are the same user who asked this on Reddit recently (though that is my assumption). Hopefully the work-around we proposed there is acceptable.
Just in case, here is the full recommendation from Mahesh from our Development team:
Let us understand your use-case a bit more. In a typical plant and controller type of model (in your case may be sensor and controller), the plant side has continuous-timed dynamics, where as the controller side has discrete-timed semantics.
You are trying to add a fault on a signal (For ex: output of a Block A) which has continuous-time semantics. The output of the Block A is connected to EM_Torque_Sensor block's input 1.
Case 1: EM_Torque_Sensor input 1 is a continuous-timed signal which will be discretized immediately either by passing it through a Analog-to-Digital or a Zero-order hold block and then further propagated for other components (blocks)
Case 2: EM_Torque_Sensor input 1 is a continuous-timed signal which will be passed on as continuous signal and then sent other components (blocks) where it will be discretized.
In Case 1, you can add a fault at the output of the Inport block inside of EM_Torque_Sensor and it should work.
However, in Case 2, you are trying to add a fault that has to participate in continuous timed semantics. At the present, we do not have a valid use-case to support this. If you think we should support this, please file an enhancement request explaining what you are trying to do and we will be able to assist you better. We do have couple of workarounds now.
  1. Workaround 1: Instead of adding fault at the input 1 of EM_Torque_Sensor, you can add it at the stage where this continuous signal gets discretized
  2. Add a zero-order block between output of Block A and input of EM_Torque_Sensor block and then add a fault at the output of the zero-order hold block
If this response did not answer your question, please file a Technical Support escalation. We will be able to handle it better.
  4 Comments
RAGHUVEER RAJESH
RAGHUVEER RAJESH on 12 Apr 2024
Edited: RAGHUVEER RAJESH on 12 Apr 2024
Hi Pat. Thanks for sharing. However, I am now facing another difficulty and I have posted the link of the new post above.
and this: https://in.mathworks.com/matlabcentral/answers/2105611-how-to-generate-synthetic-run-to-failure-data-in-simulink
I will be grateful if you assist me or refer me to the right person.

Sign in to comment.


Raghava S N
Raghava S N on 19 Feb 2024
Without your model details, it is hard to pinpoint exactly why the issue exists. However as per my understanding, the error is a sample time mismatch between 2 or more blocks in your Simulink model.
The best practices page for the Simulink Fault Analyser says – “If you add a fault to a continuous signal, the signal must enter a block with a discrete sample time.”
Going by your model's error trace, the block called “gain” in your model is continuous (has sample time 0) and its output (to which the fault is being injected) is also connected to a continuous block. As mentioned in the best practices documentation, this is not supported.
There are 2 solutions to this:
  1. Change the sample time of the block whose input is the output of the gain block so that it is discrete.
  2. Change the sample time of the gain block so that it is discrete.
Please refer to this documentation link for more information on sample time - https://www.mathworks.com/help/simulink/ug/what-is-sample-time.html
  4 Comments
Yeldo
Yeldo on 8 Mar 2024
Hello @Pat Canny, trying to model a stuck at fault, I am attaching an image of the fault subsystem block to model the fault. the sample time of pulse gnerator and the step function is not inherited from the model. when I model this system in simulink fault subsytem, the correct result are not being driven, but when used alone without fault analyzer the results are correct.
Pat Canny
Pat Canny on 8 Mar 2024
Hi @Yeldo,
How are you modeling the fault behavior in the fault subsystem specifically? That screenshot appears to be using standard Simulink switch blocks. I'm just curious what the specific behavior is (I assume it is the latching logic on the right).
Are you getting any errors or warnings, or just seeing unexpected behavior?
Note: this may best be answered via MathWorks Technical Support.

Sign in to comment.

Products


Release

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!