Problem passing sine wave through if statement
조회 수: 1 (최근 30일)
이전 댓글 표시
Hi,
To see the output of an if statement over time, I wanted to pass a sine wave as input into "if block" and display it on the scope. Unfortunately, I cannot run the program since I keep receiving an error which says:
"Port 1 of 'Loops_in_Simulink/If statement' can only be connected to an action subsystem and may not be connected to more than one action subsystem".
However, as seen from the block diagram, there is only one input which is the sine wave. This simulink program is not a homework task. Could someone inform me what I am doing wrong? Thanks in advance.
댓글 수: 0
채택된 답변
Paul
2022년 11월 23일
Hi Matthew,
The "Port 1" referenced in the error message is the first output port, not the input port. All output ports from the If block have to feed If-Action subsytems, and the outputs of those have go through a Merge block. The If and If-Action blocks implement this pseudocode:
IF cond1 Then
Action1
ElseIF cond2 Then
Action 2
Etc.
Else
ActionElse
EndIF
The model in the Question is missing the Action for the conditions.
I think the model was trying to implement functionality similar to this model:
Here, the top If-Action system outputs 1 and the bottom outputs -1. The If-Action subsystems can also accept inputs.
Of course, this model could be more easily implemented by sending the output of the Sine block into a Sign block, but I thought it would be worthwhile to illustrate how the If/If-Action works.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Simulink Functions에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!