2014-11-15 8 views
2

저는 Simulink 및 Stateflow를 처음 사용합니다. 몇 가지 간단한 상태 머신을 모델링하려고합니다. 그러나 모델을 실행하려고하면 (Matlab 메인 화면에서) 오류가 표시됩니다.간단한 Stateflow 모델에서 오류가 표시됩니다.

Warning: Input port 1 of 'sample/If' is not connected. 
Warning: Output port 1 of 'sample/If' is not connected. 
Parsing failed for machine: "sample"(#90) 

1)이 문제가 있습니까?

2) 한 번 더 질문 : S2에 타이머를 추가하려면 어떻게합니까? 예 : 우리는 S2에서 2 분 이상 머물 수 없습니다. 따라서 S2에 진입하면 타이머가 시작되고 2 분이되면 S3으로 전환해야합니다.

P. 몇 가지 이유로 시뮬 링크 스키마의 stateflow 축소판에 업데이트 된 모델이 표시되지 않습니다. 더 이상 conditionif_outfput 변수가 없습니다! enter image description here enter image description here

+1

질문과 직접 ​​관련이 없지만 상태 차트의 구현이 작동하지 않습니다. 병렬로 실행하는 것으로 정의 된 4 가지 상태 (오른쪽 상단 모서리에 파선 테두리와 정수로 표시됨)가 있지만 논리에 따라 배타적 또는 상태로 정의해야한다는 점이 분명합니다. –

+0

@Phil : 아, 그들은 규칙적인 상태 여야하고, 연속적이어야합니다 ... 평행하지 않아야합니다. 방금 상태 아이콘을 선택하고 그려 봤습니다. 어떻게 해결할 수 있습니까? –

+1

상태가 아닌 상태에서 상태 차트를 마우스 오른쪽 버튼으로 클릭하고 분해 메뉴의 절반 정도 떨어진 다음 exclusive-or를 선택하십시오. –

답변

0

음, 오류 메시지가 꽤 자기 설명이다 : 당신은 아무것도로 스테이트 플로우 차트, 따라서 오류 입력 Condition을 연결하지 않았습니다. Simulink의 신호에 연결하십시오 (조건 신호를 나타내는 것은 무엇이든). 마찬가지로 차트의 출력을 아무 것도 연결하지 않았습니다. 이 변수는 더 이상 존재하지 않지만 Stateflow는 그렇게 생각하지 않습니다. 모델 탐색기에서 삭제 했습니까? 그렇지 않은 경우 Stateflow는 여전히 차트의 일부라고 생각합니다. 자세한 내용은 설명서의 Use the Model Explorer with Stateflow Objects을 참조하십시오.

타이머의 경우 가능합니다. 현재 input ==1 일 때 S2에서 S3으로 퇴장합니다. 전환을 [input == 1] || after(2000,sec) (내 생각에)으로 변경할 수 있습니다. 모델 구성 매개 변수에서 절대 시간에 대한 지원을 활성화해야 할 수도 있습니다. 자세한 내용은 설명서의 Control Chart Execution Using Temporal Logic을 참조하십시오.

+0

좋은 정보를 주셔서 감사합니다.하지만 Stateflow에는 더 이상 '조건'입력이 없습니다. 거기에 있었지만 삭제했습니다. 왜 아직도 그것을 보여줄지 모르겠다. 타이머 코드를 확인하겠습니다. –

+1

당신은 이해하지 못합니다 : 그들이 여전히 차트에 나타나면 Stateflow에 관한 한 그들이 여전히 거기에 있다는 것을 의미합니다. 모델 탐색기에서 삭제해야합니다. 이 문제를 해결할 때까지는 모델을 실행할 수 없습니다. – am304

+0

오, 오케이. 내 스마트 폰에서 답을 확인하고 있었고 위의 답을 완전히 읽지 않았습니다! –