Appia의 IT세상

[Stateflow] Stateflow Logging방법 ,Super step 본문

Programming/Stateflow

[Stateflow] Stateflow Logging방법 ,Super step

Appia 2019. 12. 24. 20:21
반응형

오늘은 크게 2가지에 대해서 나누어서 살펴보고자 합니다. 하나는 Stateflow Logging방법이고 다른 하나는 Super step 대해서 살펴보고자 합니다.

 

Stateflow Logging방법

 

  예전에 코딩을 주로 했었던 시절에는 정상적으로 저의 코딩이 동작하는지 알아보기 위해서 디버깅 로그를 작성하여 코드 중간중간에 삽입하였습니다. 대부분은 printf 이용한 콘솔 출력이 대부분이었습니다. Stateflow 비슷한 방법으로 로깅을 수가 있습니다. 가장 기본 방법인 MATLAB에서 사용하는 disp 명령어 입니다.

disp(변수) - 변수에 저장된값을 표시하는 기능을 합니다.

 

예전 버전에는 MATLAB Command Console 관련된 표시를 하였지만 어느 순간 관련해서 변경되었습니다. 별도의 로깅 창으로 보게 되었습니다. 생각보다 관련해서 모르시는 분들이 많음을 알게 되었고, 부분에 대해서 공유 드리고자 합니다.

일단 데모로 제공되는 모델에 disp함수로 디버깅 로그를 각각 넣어주었습니다. State entry 부분에 State 이름과 Entry라는 글을 결합하여 입력하였습니다.

그런 상위의 플레이 버튼을 눌러서 시뮬레이션을 진행합니다. 시뮬레이션을 진행하면, 로직에 대해서 다음과 같이 파란색 상자로 현재의 상태에 대해서 있습니다. 하지만, 사람인 , 매번 관련해서 지켜볼 수만은 없습니다. 그리고 또한 관련해서 시뮬레이션 속도에 따라서 관련된 부분들이 정상적으로 동작하는지 없습니다.

하단에 [View diagnostics]라는 파란색을 글씨를 클릭 해줍니다. 그러면 다음과 같은 disp 입력된 값들이 출력으로 표시된 것을 있습니다.

앞서서 봤던 Transition순서등을 스스로 로깅할 때도 도움이 많이 것이라고 봅니다.

불러오는 중입니다...

Super step

 

일단 Superstep 연속된 변화에 대해서 하나같이 처리 해주는 것을 의미합니다. 이런 부분에 대해서 말하는 것보다 실제 보는 것이 더욱 좋을 있을 같아서 다음과 같은 로직을 준비했습니다.

먼저, 다음 로직을 시뮬레이션을 하면 다음과 같이 결과가 다음과 같이 나옵니다.

이유는 값이 초기 값에서 Low 갈때의 편차를 반영해버리는 것입니다. 이런 부분들이 시뮬레이션 과정에서 다음과 같이 나올 있습니다. 하지만, 이런 부분들을 바탕으로 코드 생성할 경우는 다음과 같우 경우가 없습니다. 그래서 이런 부분들에 대해서 해결 하고자 Superstep이라는 기능을 제공합니다.

먼저, 다음과 같이 화면에 오른쪽 버튼을 누릅니다. 그리고 [Properties] 선택해 주십니다.

 

 

여기서 Enable Super Step Semantics 체크 해주시면됩니다. 여기서 보이는 Maximum Iterations in each super step Super step적용시 가능 횟수를 의미 합니다.

보이는 그림에서는 1000번의 다음과 같은 변화에 대해서 하나같이 처리한다는 것을 의미합니다. 그리고 위의 설정을 적용하여 다시 시뮬레이션을 진행해보겠습니다. 

앞서 본 그림과 차이가 시뮬레이션 결과와 명확한 차이가 있습니다. 

 

오늘은 크게 2가지 주제 Stateflow Logging방법 ,Super step 대해서 살펴 보았습니다. 궁금하신 점이나, 물어보시고 싶은 점이 있으시면 언제든지 댓글 방명록에 남겨 주시길 부탁드립니다.

반응형
Comments