HIL Simulation 경험담

개요

오늘은 "HIL(Hardware In the Loop) Simulation" 이라는 주제에 대해 제가 경험해본 내용을 소개하려 합니다.

학원을 운영하기 전 연구소생활을 하던 시절 HIL Test를 조선소(Shipyard)를 통해 처음 알게되었습니다. 당시 DP, PMS HIL Test기술을 가진 국내업체가 없어 조선소 입장에서 기술 국산화가 필요했었고 한번 시도해 보지 않겠냐는 감사한 제안이었습니다. 

- DPS : Dynamic Positioning System

- PMS : Power Management System

(HILS는 자동차, 항공기 등 분야에서는 이전부터 사용되던 테스트 기법)

 

간단히 요약하면, HILS는 복잡한 시스템의 제어기를 현실성있게 검증(수치해석 시뮬레이션 X)하기 위한 시뮬레이션 기법입니다.

그럼 HIL Test가 무엇인지 자세히 설명하기 전 이 테스트가 필요해진 배경을 소개하고자 합니다.

선박의 건조는 보통 선주가 배를 조선소에 의뢰하면 조선소는 선주의 요구사항에 맞는 선박을 건조해 납품하는 방식입니다.

선박은 워낙 덩치가 크고 구성품목이 많다보니 모든 선박 구성품을 조선소에서 직접 다 만들어 탑재하지는 못하고 여러 기자재를 개발, 생산 납품하는 업체들과 협력해 선박을 건조하게 됩니다.

대부분 선박에 탑재되는 기자재는 국산화 되고 있지만 일부 핵심적인 시스템은 해외 업체가 그것도 거의 독점적인 위치를 차지하는 분야가 존재합니다.

그 중 DPS(Dynamic Positioning System)라는 시스템이 있습니다.


DPS 소개

Dynamic Positioning System(DPS), 동적위치유지장치라고 합니다.

아래는 SIREHNA® 이라는 회사의 DPS 소개 동영상입니다.

 

이 장치는 컴퓨터에 의해 제어되는 방식으로, 선박의 선수방향이나 위치를 계선로프(mooring line)이나 앵커(anchor)없이 고정 or 원하는 위치로 이동시켜주는 시스템입니다.

즉, 선박이 받는 환경외력(바람, 파도, 조류)을 측정, 예측해 사용자가 원하는 위치로 이동, 유지되도록 추진기의 방향과 추력을 조절주는 장치입니다.

아래 사진은 360도 회전가능한 Azimuth Thruster의 모습입니다.

이 추진기를 선박이 받는 힘벡터 반대방향으로 동일 추력을 생성하면 선박은 위치가 고정되는 원리입니다.

[선박에 설치된 Azimuth Thruster]
 
Image Source : https://www.onesteppower.com/post/azimuth-thrusters


그 제어 로직은 아래와 같습니다.

출처 : https://en.wikipedia.org/wiki/Dynamic_positioning
 

대략적으로 살펴보면 PID 제어와 유사한데, Kalman Filter를 사용합니다.

1. 외력 수집 (바람, 파도, 조류)

2. 선박고정 or 이동 명령

3. 현재 예측 모델 업데이트

4. 제어기전달, 추력 배치

5. 현재 선박위치, 방향 등 다시 제어기로 오차 피드백

6. 위를 반복

참 복잡해 보이지 않나요?

이 장치는 구성이 복잡하고 선박의 운용, 안전에 중요한 영향을 미칠 수 있는 시스템입니다.

따라서 인증, 검증된 장비를 선호하는 조선소 입장에서 늘 납품받아 이상없이 사용하던 장비를 다시 다음 선박의 건조에도 많이 사용하는 보수적 성향이 강합니다.

(노르웨이 K사 제품을 많이 사용합니다) 

DPS라는 시스템은 선박의 PMS(Power Management System), 전력관리시스템과도 밀접한 관련이 있습니다. 대부분 Thruster, 추진기가 디젤 발전기에 의해 생산되는 전력으로 움직이는 방식이기 때문입니다. (전기 추진방식)

DPS에 대해 더 알고싶은 분들은 아래 USCG (미국해안경비대) 소개자료를 참조 바랍니다.

Link : USCG DPS 소개자료

 

그런데 HIL SimulationDPS는 무슨관계가 있을까요?

 

제조사를 신뢰할 수 있는가?

해당 장비를 만든사람, 회사를 못 믿는다면 그 제품을 사지도 않았겠지만, 제조사에서도 인지하지 못한 결함이 DPS처럼 복잡한 장비는 존재할 수 있습니다.

이런 복잡한 장치들에 대한 신뢰성은 어떻게 확보될까요? 여러분이 선주라면 과연 그 장치를 만든 제조사의 말만 믿고 쓸 수 있을까요?

(요즘 자동차 자율주행장치도 비슷한 맥락입니다)

물론 기계적, 전기적, 구조적 안정성은 이미 선급 등 검증,인증기관이 존재합니다.

하지만 소프트웨어는 어떤가요?

기구적인 장치에 비해 (소스코드)눈에 보이지 않다보니 검증절차가 비교적 간단했었습니다.

프로그래밍을 해 본 분들이라면 개발자조차 인지하지 못한 Software bug가 얼마나 많은지 잘 알 것 입니다.


점차 선급에서도 소프트웨어 안정성에 대한 테스트 검증절차를 강화하는 추세이지만 복잡도에 비례해 검증절차가 까다롭지는 않습니다.

그 이유는 해당 시스템의 복잡성에 기인하기도 하지만 그 제어로직이나 동작원리가 제조사의 핵심기술이기 때문에 공개되지 않기 때문입니다.

선박의 건조 후 문제점을 발견하면 다시 그것을 수정하는 일은 무척이나 번거롭고, 심각한 하자는 인도지연 등으로 이어져 제조비용의 급상승으로 이어지게 됩니다.

따라서 복잡한 장치는 설계단계부터 그 장비를 납품하는 제조사가 아닌 Third party에 의한 검증절차를 거친다면 문제점을 찾고 설계를 보완해 완성도 높은 결과물(선박,자동차,항공기)이 나오게 됩니다.

 

HIL Simulation 필요성

그럼 DPS, 차량자율주행, 비행기오토파일럿 등 복잡한 시스템의 검증은 어떻게 이루어져야할까요?

"오늘 파도가 20m 쯤 되니 어제 탑재한 DPS의 위치유지기능을 시운전하기위해 5억불짜리 시추선 끌고 동해바다로 가볼까?"

"오늘 방금 비행기 날개 조립이 완성되었으니 내일 누가 탑승해 날려볼까?"

 
물론, 꼭 필요한 절차이지만 좀 더 기본적인 안정성을 테스트한 후 진행하면 좋겠습니다.
 

몇 가지 떠오르는 방법을 정리하면, 

1. 선박, 차량, 비행기 완성 후 사람이 탑승해 시운전

가장 정확하고 필요하지만 위험부담이 크고, 완성 후 문제가 발견되면 수정이 어려움.


2. 컴퓨터 시뮬레이션

대상 제어기의 동작은 해당 기술의 핵심이므로 복잡하고, 제조사를 제외하고 비공개되어 있으므로 모사하기 어려움.

단, 선박, 차량, 비행기 등의 물리적 특성(크기, 무게, 형상)과 환경적 특성(바다, 바람, 파도, 조류, 중력, 마찰력 등)은 수학적 모델링으로 구현 가능.

 

3. 위 두가지를 적절히 섞으면?

DPS 시스템의 구성요소 중 제어기(Controller)는 탑재될 실제 장비(Real Device)를 그대로 사용하고, 나머지는 (Sea, Vessel, Thruster, GPS, Gyro, Wind sensor 등) 컴퓨터에서 가상으로 구현하면 어떨까요?

물론 Simulated 된 요소들은 실제 장비와 동일하게 모사됩니다.

대략 아래와 같은 느낌입니다.

[HILS by Bing Image Creator]


Schematic Diagram 으로 표현해 보면 아래와 같습니다.

 

실제 제어기를 대상으로 가상의 Simultor를 연결(Hardware-In-the-Loop)해 테스트를 진행하는 개념이 HIL 시뮬레이션입니다.

즉, 제어기를 제외한 모든 구성요소를 가짜(Simulated)로 만들어 제어기로 가짜 신호를 전송해 마치 제어기가 실제 동작하는 듯한 착각을 하도록 해 실제와 같은 환경에서 오동작이 없는지 테스트를 진행하게 됩니다.

테스트에 사용되는 제어기는 해당장비 제조사에서 제공하고, Third Party 업체에서 시뮬레이터를 이용해 테스트를 진행합니다.

실제 선박이나 비행기, 자동차 등 대상 장치를 가져올 필요가 없고(제어기만 필요), 시뮬레이터 신호는 전송은 미리 프로그램 해 둘 수 있으므로 공간적, 시간적 제약이 사라집니다.

 

HIL Simulation 진행 절차

HIL Simulation 진행 시기는 보통 건조공정의 초반에 진행됩니다.

테스트 이후 문제점이 초기 발견되면 설계에 수정사항을 반영, 해당 시스템 및 관련된 다른 시스템들도 초기에 수정하여 인도시점에 모든것을 변경해야하는 최악의 결과를 방지합니다.


시뮬레이션 진행일정은 앞서 말한 초기 시점에 선주, 선급, 조선소, 제조사, HILS 수행기관(Third Party) 이 조율해 결정하고 그 인원들이 보통 제조사에 모여 진행하게 됩니다.

테스트할 항목은 해당 선박의 선급 DPS Rule에 근거하여 FMEA(Failure Mode and Effect Analysis) 를 수행하는것 처럼 사전 작성된 테스트 시나리오에 따라 테스트를 진행합니다.

예를 들면, 제어기로 GPS 오작동 신호를 보내는 테스트 항목이 있다면, HIL Simulator에서 GPS malfunction signal을 전송하고 제어기가 어떻게 반응하지는 지켜봅니다.

이때 제어기는 선급에서 정한 규정에 따라, Error가 발생한 GPS 센서를 감지, Reject를 수행하고 Redundancy GPS를 가동하면 테스트는 성공한 것입니다.

참조로 DP Controller 와 HIL Simulator간 신호전송은 주로 Modbus TCP/IP Protocol 을 통해 진행되며, I/O의 수는 DP Class에 따라 차이는 있지만 대략 200~600 point 정도 입니다.


이 모든 사항은 선주, 선급, 조선소, 제조사, HILS 수행업체의 참관하에 진행, 기록됩니다.

테스트 시 발견되고 즉시 해결가능한 심각하지 않은 문제점은 제조사의 엔지니어가 바로 수정해 다시 테스트를 현장에서 재진행하기도 하고, 일정이 연기되어 2차 진행되기도 합니다.

저도 HIL Simulator를 개발을 진행하며 노르웨이 K사의 연구소에서 진행된 DP & PMS HIL Simulation을 2회 참석해 본 적이 있습니다.

많은 부분을 느꼈지만, 가장 핵심은 HILS가 실물 시운전을 제외하고 "복잡한 시스템의 제어기를 가장 효과적으로 검증하는 방법"이라는 확신이 들었습니다.

더불어, HILS는 조기에 문제를 발견, 설계에 반영해 제조비용, AS비용을 감소시킬 수 있는 혁신적인 Feedback 방법입니다.

 

HIL Simulation 소회,미래

연구소 재직 당시 PM으로 약 3년에 걸쳐 HIL Simulator의 개발에 성공했었고, 그 과정은 유익하고 즐거운 시간이었습니다.

늘 R&D 일을 해왔지만, 사실 Development에 많이 치우쳐 있었습니다. (Fast Follwer)

하지만 이 프로젝트는 Research과 D의 균형을 맞춰 진행되었으며, 내내 즐거움과 성장, 성취감을 느낄 수 있었습니다.

First Mover는 아니었지만 Second, Third 정도는 되었습니다.

 

현대자동차의 광고 중 "자동차는 이제 기계가 아니라 소프트웨어로 움직인다" 라는 문구를 본 기억이 납니다. 

개인적으로 "가장 완벽한 차량 자율주행은 도로운행 시스템에 의해 통제되는 방식"이라고 생각합니다.


인간이 만드는 Software는 아직도, 앞으로도 많이 불완전할 것입니다.

소프트웨어의 감춰진 빙산을 찾는 가장 효과적인 방법, HIL Simulation 이라고 생각합니다.

 

감사합니다.

댓글

이 블로그의 인기 게시물

Qt Designer 설치하기

C++ 예제 (소켓 서버, 이미지, 파일전송)