1조와 3조가 구현한 것을 토대로 수업 진행.
...
pSET / 이클립스 / ... 등등의 툴이 보인다.
NuSCR에 대한 개발동기, 배경을 이해해야 사용하는데 도움이 될 것이다.
* 원자력 발전소쪽 실제 예제
8개의 그룹노드로 되어 있고, 메인 시스템을 통해서 입력 -> 시스템 -> 출력 의 형태로 진행이 된다.
시스템을 열면 여러개의 그룹노드가 보인다. 입력 -> 그룹노드 -> 출력
물론 밖에서 들어온 입력만이 시스템이란 그룹노드 안에서 입력으로 생성이 되며, 출력도 마찬가지다.
결국, 그룹노드 내의 입, 출력은 그룹노드 외부의 입, 출력과 동일한것이다.
3가지 variable node가 있다. function(동그라미), history, th(타임 히스토리;타원형) 이 있다.
자신의 이름으로 된 노드 하나만 나갈때에는 이름이 생략 가능.
sdt의 사용법을 모르겠으면 웹에서 검색해볼 것.
th나 h를 열어보면 오토마타로 되어있다.
지금 보고 있는 노드는 root -> g_BP -> g_LO_SG1_LEVEL -> th_LO_LEVEL_Trip_Logic.
이런 식으로 그룹 내 그룹, 그룹 내 th 등등...
보기엔 간단해 보이는데 왜 잘 생각이 안된담... 구현 요구사항과 결과물이 같이 있는 예를 보고 싶다.
위에서부터 아래로... 시퀀셜한 오더 순서가 있다.
q) 그룹 내 그룹에서 전역변수 같은 개념으로 상수를 넣을 수 있나요? 상수 k로 지정된 것을 사용하고 싶습니다.
공통 지정되는 상수는 없나요? 하나하나 일일이 집어넣어줘야 하는건가요.
a) 전역변수의 개념은 없다.
q) 출력이 아예 안나오게 하는 방법은 없습니까?
a) 입력이 있으면 출력이 있어야 하는게 시퀀셜한 시스템이다. 입력과 출력이 없을 수 없으며, 정확하게 출력값을 정의하지 않으면 전 사이클의 값이 출력된다. complete miss 이다.
q) -는 할당이 안되는 겁니까?
a) -는 dont care의 개념이다.
q) quick check 사용시 음수를 사용할때(예 : -150) 에러가 납니다.
a) 조금 있다 보여주겠지만, 각 f의 범위를 상정할 수 있다. 아마 디폴트가 0<= 으로 잡혀있는듯.
q) Enumeration 에서 밀크커피, 블랙커피 등 구현해놓으면 ..
a) 아직 미구현한 기능인것으로 추정된다 ^^;
q) cycle의 개념이 잘 안잡혀있습니다. 단위와 사용법을 좀 알려주세요.
a) 크게 신경쓰지 않아도 되지만, 사이클은 시퀀셜 시스템의 모델을 그대로 따라간다고 보면 된다.
모델링에서는 사이클을 고려하지 않으며, 구현단계의 개념이기 때문에
이 안에서는 한꺼번에 읽고 한꺼번에 아웃풋을 갖게 되는 것을 한번 execution 하는 데에 드는 시간이겠고.
50~200ms 정도라고 해두면 좋을듯 하다.
...
th_ 는 모두 내부 클럭을 가지고 있으며, 이것이 local clock variable 이다.
previois state variable 가 쓸 곳이 있느냐는 질문이 나왔는데,
전 사이클의 아웃풋을 저장하고 있다가 사용한다고 보면 되겠다.
다른 조의 예제를 보자.
th_X_Trip... 트립 설정치 계산하는건데...
굉장히 오토마타가 복잡하다 -_-;
falling trip과 rising trip... 이건 뭘까 애매한데;
th_X_Pretrip 도 열려있는데.
pratice2 나갈때 정해진 명세로 smv를 돌리는데, 명세되어 있지 않으면 에러가 뜬다.
k_Trip_Delay = int, k_X_Trip_Hys=int 이런 것 말이다. =10 =1500 같이 명세되어 있던데.
또 다른조의 것인가, 이번엔...
g_Auto_Limit_Rate_Variable_Set_Point_Rising_Trip 안.
f_X의 설정 = boolean이냐 1~1000이냐 등등 변수의 범위를 모두 지정해야한다.
Setpoint...?
큰 시스템이 아닌 경우는 그룹노드를 많이 지정할 필요는 없다.
이번엔 커피벤딩 머신. (억 뭐이리 복잡해)
i_withdrawal (코인 드랍)
i_coininsert - 범위 지정해줘. 1을 100원이라 한다면. 1~100 뭐 그런식 대강.
i_coffee
i_currentcoin
enumeration 을 이용해서 f_input_coffee 을 좀 상세하게.. 밀크커피든, 뭐든... 정해주는것도 좋고.
동전 5개니 상태 5개로 만들면 될거고.
예전 주기가 이어지니 현재 동전을 나타내지 않아도 되리라는.
디스크립션도 상세히. 꼭. ㅇㅅㅇ
smv를 돌리면 이 모델이 데드락이 발생하는지, 어떤지를 알 수 있다.
입력 -> 계산 -> 출력 의 순서가 잘 보이게 flow를 그려보기.
constant를 하나도 빠짐없이 정의하기.
...
끄응, 알아야 질문하지 -ㅅ-;;; 힘들다.
수식은 질문해도 상관없다 하셨으니 만들면서 질문하러 가야할듯.
http://dslab.konkuk.ac.kr/Publication/Old/KISSJournal2005.pdf 이것도 참조할것. @_@
...
pSET / 이클립스 / ... 등등의 툴이 보인다.
NuSCR에 대한 개발동기, 배경을 이해해야 사용하는데 도움이 될 것이다.
* 원자력 발전소쪽 실제 예제
8개의 그룹노드로 되어 있고, 메인 시스템을 통해서 입력 -> 시스템 -> 출력 의 형태로 진행이 된다.
시스템을 열면 여러개의 그룹노드가 보인다. 입력 -> 그룹노드 -> 출력
물론 밖에서 들어온 입력만이 시스템이란 그룹노드 안에서 입력으로 생성이 되며, 출력도 마찬가지다.
결국, 그룹노드 내의 입, 출력은 그룹노드 외부의 입, 출력과 동일한것이다.
3가지 variable node가 있다. function(동그라미), history, th(타임 히스토리;타원형) 이 있다.
자신의 이름으로 된 노드 하나만 나갈때에는 이름이 생략 가능.
sdt의 사용법을 모르겠으면 웹에서 검색해볼 것.
th나 h를 열어보면 오토마타로 되어있다.
지금 보고 있는 노드는 root -> g_BP -> g_LO_SG1_LEVEL -> th_LO_LEVEL_Trip_Logic.
이런 식으로 그룹 내 그룹, 그룹 내 th 등등...
보기엔 간단해 보이는데 왜 잘 생각이 안된담... 구현 요구사항과 결과물이 같이 있는 예를 보고 싶다.
위에서부터 아래로... 시퀀셜한 오더 순서가 있다.
q) 그룹 내 그룹에서 전역변수 같은 개념으로 상수를 넣을 수 있나요? 상수 k로 지정된 것을 사용하고 싶습니다.
공통 지정되는 상수는 없나요? 하나하나 일일이 집어넣어줘야 하는건가요.
a) 전역변수의 개념은 없다.
q) 출력이 아예 안나오게 하는 방법은 없습니까?
a) 입력이 있으면 출력이 있어야 하는게 시퀀셜한 시스템이다. 입력과 출력이 없을 수 없으며, 정확하게 출력값을 정의하지 않으면 전 사이클의 값이 출력된다. complete miss 이다.
q) -는 할당이 안되는 겁니까?
a) -는 dont care의 개념이다.
q) quick check 사용시 음수를 사용할때(예 : -150) 에러가 납니다.
a) 조금 있다 보여주겠지만, 각 f의 범위를 상정할 수 있다. 아마 디폴트가 0<= 으로 잡혀있는듯.
q) Enumeration 에서 밀크커피, 블랙커피 등 구현해놓으면 ..
a) 아직 미구현한 기능인것으로 추정된다 ^^;
q) cycle의 개념이 잘 안잡혀있습니다. 단위와 사용법을 좀 알려주세요.
a) 크게 신경쓰지 않아도 되지만, 사이클은 시퀀셜 시스템의 모델을 그대로 따라간다고 보면 된다.
모델링에서는 사이클을 고려하지 않으며, 구현단계의 개념이기 때문에
이 안에서는 한꺼번에 읽고 한꺼번에 아웃풋을 갖게 되는 것을 한번 execution 하는 데에 드는 시간이겠고.
50~200ms 정도라고 해두면 좋을듯 하다.
...
th_ 는 모두 내부 클럭을 가지고 있으며, 이것이 local clock variable 이다.
previois state variable 가 쓸 곳이 있느냐는 질문이 나왔는데,
전 사이클의 아웃풋을 저장하고 있다가 사용한다고 보면 되겠다.
다른 조의 예제를 보자.
th_X_Trip... 트립 설정치 계산하는건데...
굉장히 오토마타가 복잡하다 -_-;
falling trip과 rising trip... 이건 뭘까 애매한데;
th_X_Pretrip 도 열려있는데.
pratice2 나갈때 정해진 명세로 smv를 돌리는데, 명세되어 있지 않으면 에러가 뜬다.
k_Trip_Delay = int, k_X_Trip_Hys=int 이런 것 말이다. =10 =1500 같이 명세되어 있던데.
또 다른조의 것인가, 이번엔...
g_Auto_Limit_Rate_Variable_Set_Point_Rising_Trip 안.
f_X의 설정 = boolean이냐 1~1000이냐 등등 변수의 범위를 모두 지정해야한다.
Setpoint...?
큰 시스템이 아닌 경우는 그룹노드를 많이 지정할 필요는 없다.
이번엔 커피벤딩 머신. (억 뭐이리 복잡해)
i_withdrawal (코인 드랍)
i_coininsert - 범위 지정해줘. 1을 100원이라 한다면. 1~100 뭐 그런식 대강.
i_coffee
i_currentcoin
enumeration 을 이용해서 f_input_coffee 을 좀 상세하게.. 밀크커피든, 뭐든... 정해주는것도 좋고.
동전 5개니 상태 5개로 만들면 될거고.
예전 주기가 이어지니 현재 동전을 나타내지 않아도 되리라는.
디스크립션도 상세히. 꼭. ㅇㅅㅇ
smv를 돌리면 이 모델이 데드락이 발생하는지, 어떤지를 알 수 있다.
입력 -> 계산 -> 출력 의 순서가 잘 보이게 flow를 그려보기.
constant를 하나도 빠짐없이 정의하기.
...
끄응, 알아야 질문하지 -ㅅ-;;; 힘들다.
수식은 질문해도 상관없다 하셨으니 만들면서 질문하러 가야할듯.
http://dslab.konkuk.ac.kr/Publication/Old/KISSJournal2005.pdf 이것도 참조할것. @_@