본문 바로가기
임베디드 개발/펌웨어

MIL, SIL, PIL and HIL

by eteo 2023. 7. 11.

 

 

 

 

 

요약

 

"M", "S", "P", "H"는 모두 컨트롤러의 상태를 의미하며, 컨트롤러의 실제 하드웨어 구현 정도를 나타낸다.

  • MIL (Model In Loop): 컨트롤러를 모델로 시뮬레이션
  • SIL (Software In Loop): 모델을 변환한 C 코드 기반의 시뮬레이션
  • PIL (Processor In Loop): 실제 컨트롤러 프로세서에서 코드 실행 (I/O 연결 없음)
  • HIL (Hardware In Loop): 실제 컨트롤러 하드웨어와 I/O를 포함한 테스트

 

 

 

 

 

 

용어

 

이 개념들은 일반적으로 제어 시스템 개발에서 사용되며, 이는 기계/전자 시스템과 상호 작용하는 제어 소프트웨어를 개발하는 과정에서 활용된다.

  • Control system(제어 시스템): '컨트롤러(controller)'로 지칭됨
  • Mechatronic system(메카트로닉 시스템): '플랜트(plant)'로 지칭됨

 

 

 

 

 

 

Model In Loop, MIL

 

MIL은 제어 모델을 사용하여 플랜트 모델과 함께 시뮬레이션하는 방식이다. 일반적으로 Simulink에서 제어 모델을 작성하고, 동일한 Simulink 다이어그램 내에서 물리 시스템 모델과 직접 연결하여 테스트를 수행한다. 이 단계에서는 모델의 변경이 즉시 테스트될 수 있어 개발 속도가 매우 빠르다.

 

 

https://www.youtube.com/watch?v=EZthOn4_0rw

 

 

 

 

 

Software In Loop, SIL

 

SIL에서는 컨트롤러 모델이 실제 C 또는 C++ 코드로 변환되어 시뮬레이션에 통합된다. 이는 코드 자동 생성(autocoding) 또는 핸드 코딩을 통해 구현될 수 있으며, 주로 코드 검증을 위한 과정이다. SIL에서는 MIL보다 개발 속도가 다소 느려지지만, 코드 변환 과정에서 발생하는 문제점을 발견하고 수정하는 것이 가능하다.

 

 

https://www.youtube.com/watch?v=EZthOn4_0rw

 

 

 

 

 

 

 

 

 

Processor In Loop, PIL

 

PIL 단계에서는 더 이상 소프트웨어를 시뮬레이션 환경에서 실행하지 않고, 이를 실제 마이크로프로세서에 배포하여 실행한다. 하지만 I/O는 실제 하드웨어가 아니라 JTAG 또는 고속 통신 버스를 통해 플랜트 시뮬레이션과 연결된다. 이 테스트의 주요 목적은 임베디드 환경에서 실행 시간을 검증하는 것이다. 예를 들어, 제어 루프가 임베디드 프로세서의 실행 시간 내에서 수행될 수 있는지 확인하는 것이 중요하다. 이 단계에서는 코드 배포 및 실행을 반복해야 하므로 개발 속도가 더욱 느려진다.

 

 

 

 

 

 

 

 

 

Hardware In Loop, HIL

 

HIL 단계에서는 제어 시스템이 최종 컨트롤러 하드웨어에 완전히 배포되며, 플랜트 모델은 실시간(real-time) 시뮬레이션 환경에서 실행된다. 이 시뮬레이션 환경은 컨트롤러가 실제 플랜트에 연결된 것처럼 동작하도록 I/O 신호를 조작하여 구현된다. HIL 테스트는 주로 소프트웨어 검증을 위해 사용되며, 개발 속도가 매우 느려지지만 실제 애플리케이션 환경과 가장 유사한 테스트 환경을 제공한다. 따라서 최종적인 문제점을 찾고 수정하는 데 매우 효과적이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

Reference : https://kr.mathworks.com/matlabcentral/answers/440277-what-are-mil-sil-pil-and-hil-and-how-do-they-integrate-with-the-model-based-design-approach

https://www.linkedin.com/groups/Difference-between-MIL-SIL-PIL-109866.S.167229094/

 

'임베디드 개발 > 펌웨어' 카테고리의 다른 글

Cold Reset과 Warm Reset  (0) 2023.08.14
Types of IC Packages  (0) 2023.07.24
CAN FD Bus Load Calculator  (0) 2023.06.25
readelf 명령어와 elf 파일 구조  (0) 2023.06.25
JTAG, SWD  (0) 2023.06.25