내가 아는 사실에 관해 당신이 갈 수있는 세 가지 방법이 있습니다.
방법 1 : 시뮬레이션을 전혀 일시 중지하지 마십시오. 대신 해당 라인에서 스코프를 사용하여 시뮬레이션에서 어떤 일이 발생했는지 알 수있는 충분한 정보를 제공하십시오.
장점 : 실행 순서와 시뮬레이션 일시 중지로 혼란스러운 결과를 초래할 수 있습니다.
단점 : 특히 모든 시뮬레이션 단계를 실행하지 않는 경우 머리 부분의 다른 범위의 선을 "시간 동기화"하는 것이 까다로울 수 있습니다. (이것은 실제로 그들이 분산 플롯이 때, 범위 블록 그래프 단계의 함수로 나타나는 사실에 부분적으로 기인
방법 2 :. 사용하여 Simulink 디버거에 내장 (당신의 희망을 얻을하지 마십시오.)이 도구를 사용하면 사용중인 모델의 도구> 시뮬링크 디버거 메뉴 옵션에서이 도구를 열어 특정 블록에 한 번에 한 블록 씩 또는 두 블록의 조합으로 중단 점을 설정할 수 있습니다
장점 :
단점 : 실제로이 도구는 사용하기가 쉽지 않으며 Matlab을 충돌하는 경향이 있습니다. 또한 orde에주의하십시오. 실행의 r.
방법 3 : 시뮬레이션 실행 순서의 시작 부분에 내장 된 Matlab 함수를 만듭니다. 다음은 예입니다.
function y = func (x); y = x;
시뮬레이션을 시작할 때 (실행 순서를 강제하기 위해)이 함수를 신호 라인 중 하나에 놓습니다. 그런 다음 y = x; 선. 이제 시뮬레이션이이 라인에 도달 할 때마다 시뮬레이션이 일시 중지되어 Matlab 편집기에서 "계속"버튼을 클릭하기를 기다립니다.
이점 : 믿을 수 있고, 쉽다.
단점 : 실행 순서에주의하십시오. 실행
주문 :
는 시뮬링크의 실행 순서에 익숙하지 않은 경우, 당신이 켜 제안 "형식> 블록 디스플레이> 정렬 된 순서"모델 메뉴에서. 이렇게하면 각 블록에 숫자/문자 코드가 삽입되어 시뮬레이션에서 블록이 실행되는 순서를 나타냅니다. 모델 및 레이아웃에 따라 이러한 숫자/문자 코드는 많은 의미를 갖거나 그렇지 않을 수 있습니다. 일반적인 정렬 방식으로이 정렬 된 순서 표시를 사용하지 않는 것이 좋습니다.대신 Simulink가 Sorted Order/Execution Order를 결정하는 방법을 배우고 이해하는 것이 좋습니다.
기억해야 할 중요한 점은 디버그 포인트 (Simulink 디버거 또는 내장 된 Matlab을 사용하는 날씨)가 실행 순서의 일부라는 점입니다. 즉, 디버그 지점에 도달하면 그 지점 이후의 블록은 상태를 업데이트하지 않습니다. 이것은 많은 의미를 지니지 만 깜짝 놀랄만 한 사실은 디스플레이 및 범위가 상태를 업데이트하는 마지막 블록의 일부인 경우입니다. 심지어 실행 초기에 블록에 의해 소싱되는 신호 라인에 연결되어 있더라도 말입니다. 디스플레이 및 범위가 (비 원자) 하위 시스템 내부에 있고 디버그 지점이 해당 하위 시스템 외부에 있더라도 마찬가지입니다. 디스플레이 또는 스코프에 표시된 값이 시뮬레이션에서 마지막 시간 단계의 값일 수있는 상황이 발생할 수 있습니다.
어떻게 해결할 수 있습니까? 모든 시뮬레이션을 디스플레이 및 범위를 비롯한 원자 하위 시스템 내부에 배치하십시오. 그런 다음 디버그 포인트를이 서브 시스템 외부에 두십시오. 이렇게하면 디버그 지점에 도달 할 때마다 모든 블록 (디스플레이 및 범위 포함)의 상태가 일관되게 유지됩니다.
이 중 하나라도 이해가되지 않으면 알려 주시기 바랍니다.
와우, 당신의 매우 상세한 anwer에 감사드립니다 :) 나는 당신의 제안 중 일부를 시도해야한다고 생각합니다. "Enable Enabled Subsystems"로 시뮬레이션을 구축하여 각 서브 시스템이 처리 될 때를 결정할 수 있다고 생각합니다. 방법 2 또는 3이 사용하기에 더 편한지 여부를 테스트해야한다고 생각합니다. 나에게 혼란을 일으키는 유일한 방법은, 매번 한 줄에이 함수를 놓을 때 왜 Method 3이 어떤 순서로 강제로 실행합니까? 당신의 멋진 대답을위한 엄지 손가락! – poeschlorn
방법 3에 대해 하나의 블록 만 만들어야합니다. 신호 라인에서 블록을 삭제하여 실행시기를 알 수 있도록하는 것이 좋습니다. 예를 들어, 모든 서브 시스템의 앞뒤에있는 행에 h 제할 수 있습니다. 이렇게하면 디버거 블록이 먼저 실행된다는 것을 알 수 있습니다. 이렇게하면 시뮬레이션이 일시 정지되고 다른 모든 블록이 일정한 시간 간격으로 고정됩니다. – Miebster