Simulation Interface Toolkit에서 동시에 여러개의 Model DLLs 요청하기



주요한 소프트웨어:
주요한 소프트웨어 버전: 2.0
문제가 해결된 소프트웨어 버전:
부차적인 소프트웨어: N/A

문제점: 저는 현재 Simulation Interface Toolkit v2.0을 가지고 있습니다. 그리고 40개와 36개의 output port를 가진 test40.dll과 test36.dll을 가지고 있습니다. Simulink는 이 dll들을 위해 test40_base.vi와 test36_base.vi를 생성할 것입니다. 저는 이 두개의 _base VIs를 요청하는 main initialization VI를 가지고 있습니다. 그러나 2개의 VI중 첫번째로 부르는 것에 의존하여 그 동작이 바뀌는 것에 주목하였습니다. 그것은 test40_base VI를 부르면 test36_base VI또한 40 port를 초기화합니다. 그리고 test36_base를 처음에 초기화하면 때때로 LabVIEW가 실행되지 않기도 합니다.

솔루션: 이것은 사용한 _base VIs들이 reentrant가 되지 않는 SIT VI이기 때문에 일어나는 행동으로 예측됩니다. 그러므로 어떤 VI를 처음에 부르느냐에 따라서 메모리가 할당됩니다. 이것이 두번째 VI가 첫번째 VI에서 초기화시킨 포트의 갯수와 같이 포트를 초기화하는 이유입니다. 이것은 또한 test36_base VI가 처음에 초기화 되었을 때 test40_base VI의 40 port가 36의 배정된 메모리를 사용하기 때문에 LabVIEW가 실행되지 않게 됩니다.

다시 말해서, 다른 DLL을 위해 SIT VIs를 동시에 요청하게 하려면 SIT VI를 reentrant가 허용되도록 만들어야 합니다. 그래서 당신은 _base VIs(또는 사용하고 있는 생성된 VI)로 가서 각각의 SIT VI들을 더블클릭하여 SIT Initialize Model (no server).vi와 같은 것들을 reentrant로 만들어줍니다. File»Properties»Execution으로 가서 Reentrant execution parameter를 체크하여 주면 reentrant로 만들 수 있습니다.

이것은 같은 SIT VI가 다른 DLL들을 요청하고 초기화할 수 있도록 만들어 줄것입니다.

관련 링크:

첨부:





리포트 날짜: 05/13/2004
마지막 업데이트: 07/26/2004
문서 번호: 39CCD4DS