Appia의 IT세상

[Stateflow] Event 개념 및 생성, 활용 본문

Programming/Stateflow

[Stateflow] Event 개념 및 생성, 활용

Appia 2019. 12. 26. 13:56
반응형

오늘은 [Stateflow] Event에 대해서 한번 살펴보고자 합니다. Event라는 단어는 참 여러 곳에서 사용되는 것 같습니다. 예를 들면, AUTOSAR 같은 곳에서는 Runnable을 트리거하는 데 Event를 사용하고, 특정 기능에대한 호출을 할때도 Event를 사용합니다. Stateflow에서 Event는 특정 Block 들을 Trigger 하는데 사용됩니다. 

Event

 

Stateflow의 Event는 다음 보이는 Block에 대해서 Trigger할 수 있습니다. Chart와 Function-Call Subsystem, Triggered Subsystem를 트리거 하는데 사용할 수 있습니다. 물론 이와 같은 시에는 Simulink 등과 혼용하여 사용할 때입니다. Simulink 내부에서도 Parallel states의 다른 State를 트리거 하는 trigger action으로 사용하기도 합니다. 

주 목적은 트리거의 목적을 가지는 Event를 다른 용돌 사용할 수도 있습니다. 그 용도가 바로 Guard Action입니다. Transition Action에 Event Name이 명시 되었을 때, Guard Action이라고도 합니다. 즉, 특정 Event 받을 경우에만 Transition이 이루어 지게됩니다. 

다음은 Event broadcast에 대해서 살펴보도록 하겠습니다. 즉 단어 그대로 이벤트 자체를 뿌리는 것입니다. 이 이벤트에 대해서는 쓸 객체들이 이 벤트에 대해서 처리 하면됩니다. Action statement에 Event name 명시하면 됩니다. 다음과 같은 EventA가 Broadcast되는 것입니다. 

Event 추가하기 

 

먼저, Symbols에서 Event에 대해서 추가할 수가 있습니다. 보시는 바와 같이 번개 모양 부분을 클릭해서 Event를 추가해 주십니다. 그런 후에 이벤트가 어떻게 사용될 것인지에 대해서 설정 작업을 해주시면 됩니다. 

여기에서 보이는 바와 같이 Local Event또한 존재합니다. Local Event는 주로, Paralle states간의 Event를 날리고 다른 쪽에서 이 Event를 바탕으로 다른 로직이 동작할 떄 이루어 집니다. 다른 쪽으로 이벤트 날리는 방법은 다음과 같습니다. 

send(event,state)

오늘은 간단히 Event를 생성하고 활용하는 방법에 대해서 간단히 살펴보았습니다. 물론 이것만 가지고 부족할 수도 있다고 생각합니다. 혹 궁금하시거나 알고 싶은 부분이 있으면, 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 감사합니다. 

반응형
Comments