LabVIEW Real-Time과 CarSim/TruckSim을 이용한 HIL(Hardware-in-the-Loop) 시스템 구현
개요
HIL 어플리케이션은, 새로운 시스템, 조립 및 차량의 개발 과정 중에 디자인 및 테스트 엔지니어들이 차량 부품들을 평가하고 검증하기 위해 사용합니다. HIL 시스템은 완벽하게 구성된 시스템의 부품들을 테스트하기보다는 새로운 부품과 프로토타입을 차량 시스템의 소프트웨어적 시뮬레이션 모델과 연동하여 테스트 하는데 사용됩니다. 실제 차량 부분을 컴퓨터를 활용한 소프트웨어 시뮬레이션 모델로 대체함으로서, 어플리케이션의 크기와 복잡성을 대폭 줄이고, 유연성이 향상되며, 다양한 테스트와 테스트 시나리오를 구현할 수 있습니다. 테스트 중인 실제 부품들은 실제 차량에서 작동하지만, 실제로 다른 부품들이 보낸 신호와 컴퓨터내의 소프트웨어 모델이 제공하는 신호간의 차이점을 구분하지 못하기 때문에 실제 신호 대신에 시뮬레이션 된 신호를 사용할 수 있습니다.
대부분의 경우, 새로운 부품들은 먼저 소프트웨어로 모델을 제작합니다. 설계자는 새로운 부품의 모델을 차량의 전체의 모델과 연동하여 전체 시스템의 동작을 확인함으로써, 새로운 부품의 프로토타입을 제작하기 전에 사용되는 알고리즘과 루틴을 최적화할 수 있습니다. 이런 유형의 어플리케이션을 일반적으로 통합시뮬레이션(co-simulation)이라고 하는데, 이것은 시스템의 모든 부분이 소프트웨어에서 시뮬레이션 되기 때문입니다. 그 후 최종 프로토타입은 차량 하드웨어와의 상호작용으로 발생하는 상황들을 포함한 HIL 어플리케이션에서 검증됩니다(샘플링, 시간 지연 등). 또한 HIL 시스템은 일반적으로 새로운 부품의 고장 허용범위 연구(fault tolerant studies)와 안정성(내구성)을 위해 사용됩니다.
이 글에서는 내쇼날인스트루먼트의 LabVIEW와 Mechanical Simulation Corporation社의 CarSim을 연동하여 ABS 전자 컨트롤 유닛(ECU)의 성능을 평가하는 HIL 어플리케이션을 소개합니다. 이 어플리케이션은 자동차, 비행기, 기차 및 기타 운송 수단 등, 다양한 범위에서 사용되는 ECU를 테스트 하는 전형적인 시스템입니다. CarSim은 차량 동적 모델이 필요한 어플리케이션에서 사용되어 차량 ABS 컨트롤 유닛에 차량의 응답 신호를 제공하는데 사용됩니다.
목차
어플리케이션 아키텍쳐
이 어플리케이션은 차량과 브레이크 액츄에이터의 소프트웨어 모델과 ECU를 인터페이스하고 다양한 브레이크 시나리오를 통해 시스템을 구동함으로써 ABS ECU의 성능을 평가하는 시스템입니다. 소프트웨어 모델뿐 아니라 ABS 컨트롤러의 성능은 다른 부품간에 이동하는 시스템 변수를 로깅 및 플로팅하여 모니터링됩니다. 시스템 파라미터는 ABS 컨트롤러의 솔레노이드 출력, 브레이크 액츄에이터의 힘과 토크, 차량 모션 및 차량 모델의 동역학을 포함합니다.
그림 1: 시스템 부품간의 논리적 흐름을 보여주는 어플리케이션 아키텍쳐
브레이크 액츄에이터 모델과 차량 동역학 모델은 PXI 컨트롤러에서 소프트웨어 모델로 구동합니다. PXI 시스템에서 구동하는 소프트웨어의 어플리케이션은 LabVIEW와 LabVIEW Real-Time 모듈을 이용하여 개발됩니다. LabVIEW 어플리케이션과 결합된 CarSim 소프트웨어에서 차량 동역학 모델이 만들어져 실행되는 동안, LabVIEW 코드에서 브레이크 엑츄에이터 모델 또한 실행됩니다. PXI 시스템과 실제 ECU 컨트롤러간의 통신과 신호 인터페이스는 내쇼날인스트루먼트의 측정 하드웨어, 특히 재구성 가능한 I/O(RIO)를 가진 PXI-7831R을 이용하여 실행됩니다. RIO 하드웨어는 온보드 FPGA를 가지고 있어 ECU와 함께 일반적으로 사용되는 PCM, PWM, 및 주파수 신호와 같은 통신 인터페이스와 광범위한 신호들을 지원합니다. RIO 카드는 LabVIEW와 LabVIEW FPGA 모듈을 이용하여 구성됩니다.
CarSim에서의 차량 동역학 정보를 기반으로, ECU는 브레이크 액츄에이터 모델로 다시 보내지는 브레이크 솔레노이드 신호를 발생시킵니다. 액츄에이터 모델은 루프를 종료하기 위해 Carsim 차량 동역학에 공급되는 브레이크 압력과 브레이크 토크를 계산합니다. 이런 프로세스들은 LabVIEW 기반 어플리케이션에서 실시간으로 수행되어 각 컴포넌트의 시퀀스와 동기화를 제어합니다.
소프트웨어와 하드웨어의 구성은 아래 다이어그램과 같습니다.
Mechanical Simulation Corporation社의 CarSim과 TruckSim은 리얼타임 PC 플랫폼 상의 HIL 어플리케이션과 통합시뮬레이션 어플리케이션 모두에 대한 차량 동역학 시뮬레이션을 위한 시스템 레벨의 모델에 대한 표준을 제공합니다. CarSim과 TruckSim은 자동차, 경트럭, SUV, 트레일러가 있는 차량과 없는 차량을 시뮬레이션 및 분석하는데 사용되며, 3D 도로 표면상에서 운전자의 제어에 따라 응답하게 됩니다. TruckSim은 이름에서도 알 수 있듯이, 트럭, 버스, 트레일러 차량의 동역학을 모델링하는데 사용되는 CarSim의 특정 버전입니다.
수 십 년의 연구를 거쳐 CarSim은 수학 모델을 통해 차량을 특성화하고 차량의 동작을 구현하기 위하여 노력하였고, 수많은 시간을 그 성과가 검증되어 왔습니다. 어플리케이션 구현 환경이 그래픽 기반의 사용자 인터페이스인 point-and-click 기반으로 실행되기 때문에 사용하기도 편리합니다. CarSim내에서 차량과 그 속성은 시스템-레벨 모델에서 사용되는 수 많은 파라미터 및 테이블들의 세트로 정의됩니다. 현재 리얼타임 PC 하드웨어상에서 시뮬레이션은 오프라인 시뮬레이션 동안 시간을 절약해주는 리얼타임보다도 더 빠르게 구동합니다.
CarSim은 차량 동역학, 속성, 입력 및 출력 변수들의 모든 수학적 처리를 수행하는 중앙 모델링 엔진으로 구성되어 있습니다. 핵심 구성품 주변의 어플리케이션 환경은 독립형 어플리케이션의 수학적 모델과 상호작용하는데 사용되고, 새로운 차량을 구성하고 시퀀스를 모델링하는데 사용됩니다. 또한 이 환경은 개별적 모델링을 실행하고 분석하는데 사용됩니다. 이 환경은 굉장히 많은 데이터베이스 편집기, 설정창, 및 시각화 툴을 포함하고 있어 차량 동역학 모델과의 작업을 간결하게 합니다. 또한 CarSim 모델링 엔진은 여기 설명하고 있는 LabVIEW 어플리케이션과 같은 기타 소프트웨어와의 시뮬레이션 기능 통합을 그 자체적으로도 지원합니다. 이 구성에서 시뮬레이션과 모델링 기능만 이출되고 다른 소프트웨어 패키지의 어플리케이션 환경 및 사용자 인터페이스와 통합됩니다. 모든 차량 속성은 한 세트의 구성 파일로 모델에 공급되는 동시에 모델의 동적 입력과 출력은 호스트 어플리케이션과 주고 받게 됩니다.
CarSim Math Model
다음 그림은 CarSim 내에서 사용되는 모델 중 하나(4륜 독립현가장치)를 나타내는 것으로 차량의 다이나믹 작동방식을 계산합니다. 이 그림은 여러 몸체들과 구동하는 힘들을 보여주며, 각 차량 부품의 모션과 전체 프레임을 찾아내는데 사용됩니다. 브레이크 압력, 가속, 도로 표면과의 마찰과 같은 개별적 힘들을 찾아, 각각의 휠에 작용되는 값으로 계산하고, 차량 전체의 동작을 결정합니다. 전부 합해 수 백 개의 파라미터와 테이블은 정적인 차량을 설정하는데 사용되고, 139개의 입력 파라미터 중 일부는 모델에 대한 동적인 영향을 정의하는데 사용됩니다. 474개의 출력 파라미터 중 일부는 모델에서 다른 컴포넌트로 보내져서 실시간으로 모니터링하고 디스플레이 할 수 있습니다. 이런 파라미터 기반의 CarSim 어플리케이션 환경에는 차량을 시각화하는 실시간 애니메이션을 포함하고 있습니다.
그림 3. 차량 동역학 시뮬레이션용으로 CarSim에서 사용되는 수학적 모델의 몸체 및 힘 다이어그램
CarSim은 차량에 작용하는 모든 힘들(ABS, 현가력, 조향력, 공력, 주행력)의 모델들을 포함하고 있고 사용자는 이 모든 힘들을 손쉽게 수정하고 대체할 수 있습니다. ABS 브레이크 어플리케이션에서 CarSim의 ABS 모델은 외부 ABS ECU와 LabVIEW에서 실행되는 브레이크 액츄에이터의 분리된 모델로 교체됩니다.
LabVIEW Real-Time
LabVIEW와 LabVIEW Real-Time 모듈은 결정성 있는 런타임 환경과 그래픽 기반 어플리케이션 개발 툴로써 HIL 테스트와 평가 어플리케이션을 위한 이상적인 플랫폼을 제공합니다. LabVIEW의 그래픽 기반 프로그래밍 환경은 광범위한 프로토타이핑, 검증, 및 테스트 어플리케이션을 위한 유연한 어플리케이션이나 어플리케이션 프레임워크를 구축하는데 사용되고, Real-Time 모듈을 통해 이런 어플리케이션들은 고성능 PXI 컨트롤러의 실시간 환경에서 정확하고 빠른 타이밍으로 실행할 수 있습니다. 데이터 수집과 CAN등의 다양한 I/O 옵션을 제공하는 PXI 플랫폼은 필요한 모든 통신과 다양한 어플리케이션이 요구하는 데이터 인터페이스를 제공합니다. 또한 추가적인 통신 및 데이터 수집 인터페이스는 내쇼날인스트루먼트의 재구성 가능한 I/O(RIO) 하드웨어와 LabVIEW FPGA 모듈을 이용하여 개발할 수 있습니다. 이 툴로 사용자는 자신만의 어플리케이션을 위한 하드웨어를 구성할 수 있으며 맞춤 타이밍 및 트리거링, 통신 프로토콜과 폐루프 컨트롤 루틴을 실행합니다.
ABS 브레이크 어플리케이션은, LabVIEW로 어플리케이션 프레임워크를 개발했으며 어플리케이션에 차량 동역학을 제공하기 위해 CarSim 모델링 엔진을 통합하였습니다. 아래 그림은 최상위-레벨 어플리케이션 다이어그램을 보여줍니다. 이 어플리케이션은 세 부분의 루프로 구성되어 있습니다. 이 세 부분은 외부 ABS 컨트롤러와 인터페이스, LabVIEW에서 실행되는 브레이크 액츄에이터, CarSim의 차량 동역학(CS Step.vi) 입니다. 이 각각의 컴포넌트는 다이어그램의 메인 루프에서 세개의 VI라고 불립니다. 동적 파라미터는 각각의 컴포넌트에서 돌아가고 난 후 다음 컴포넌트로 전달됩니다. 메인 어플리케이션이 시작되기 전에 CarSim 모델링 엔진은 초기화되고 시뮬레이션 된 차량의 정적 속성이 로드됩니다(CS Init.vi)..
ABS ECU 평가 어플리케이션에서 CarSim 차량 모델은 CarSim 엔진을 DLL로 컴파일하여 LabVIEW Real-Time과 통합되고 Call Library Node를 이용하여 LabVIEW 다이어그램으로부터 DLL을 불러옵니다. CarSim 모델의 구성은 한 세트의 설정파일에 저장되며 어플리케이션이 초기화될 때 CarSim 엔진에 의해 로드됩니다. 목적파일(object file)에 포함된 핵심엔진은 CarSim 엔진을 DLL로 컴파일하기 위해, Visual C++에서 개발되고, 일반적인 DLL로 컴파일되는 얇은 C 래퍼(wrapper)에서 액세스됩니다. 이 얇은 wrapper는 엔진에서 그리고 엔진으로 동적 데이터를 전달하고 LabVIEW에 인터페이스를 제공합니다. 그리고 단위변환과 데이터 형변환과 같은 작업을 수행할 때도 사용됩니다. 또한 이 래퍼는 어떤 파라미터가 시뮬레이션 엔진에서 넘어지고 엔진으로 넘어갈지 결정합니다. 이 어플리케이션에서 CarSim과의 인터페이스는 세 가지 간단한 함수들로 구성되어있습니다. 이 세가지는 Init, Step, Terminate입니다. Step 함수는(CS Step.vi) 입력 파라미터를 엔진에게 보내고, 엔진이 시뮬레이션의 다음 번 단계와 같이 진행하도록 명령하며, 그리고 난 후 출력 파라미터를 돌려 보냅니다. 이 기능은 LabVIEW의 클러스터(C언어 구조와 유사)로 파라미터 세트들을 함수 안이나 밖으로 전달합니다.
어플리케이션 결과
이 어플리케이션의 목적은 브레이크를 개발하기 위해 평가중인 ABS ECU를 이용하여 다양한 차량의 브레이크 조작을 시뮬레이션하는 것입니다. 시작 속도, 브레이크 페달에 적용된 압력 양, 그리고 도로표면 마찰율과 같은 변수들을 변화시켜 다양한 시나리오를 통해 실행함으로서 ABS 시스템의 동작을 특성화할 수 있습니다. 이는 ABS ECU를 개발할 때 사용된 이론적 모델과 ECU에서 실행되는 모델을 모두 검증하게 될 것입니다.
이 어플리케이션의 결과는 차량의 운동학, 휠 속도, 브레이크 압력의 타임 플롯입니다. 그래픽 기반 사용자 인터페이스를 이용하면 가기 다른 브레이크 조작을 실행, 시각화, 및 빠르게 평가하는 것이 편리합니다. 또한 이 데이터는 로깅되어 세밀한 평가 및 문서화를 위해 저장될 수 있습니다.
이 어플리케이션의 다음 그래프는 split-mu 시나리오(좌/우측간 도로 마찰율의 변화)에서 직선 운동의 브레이크 조작 동안의 일반적인 플롯과 휠 속도를 나타냅니다. 두 번째 그래프는 ABS/브레이크 액츄에이터가 각각의 휠에 가해지는 브레이크 압력을 나타냅니다. ABS가 브레이크를 잡고 풀어주어 차량의 조작을 가능하게 합니다.
그림 6. ABS ECU 테스트 어플리케이션에서 시뮬레이션 된 차량 속도와 브레이크 압력의 플롯
Related Links:
임베디드 시스템 디자인
법적 정보
"이 튜토리얼 (이 ""튜토리얼"")은 내쇼날인스트루먼트 (""NI"")가 개발한 것 입니다. 이 튜토리얼에 대한 내쇼날인스트루먼트의 기술 지원이 가능하더라도, 이 튜토리얼의 내용은 완전하게 테스트 및 검증되지 않을 수 있으며, NI는 어떠한 방식으로도 품질 또는 관련 제품 및 드라이버의 새로운 버전에 따른 컨텐츠의 지속적인 지원을 보장하지 않습니다. 이 튜토리얼은 어떠한 종류의 보증 및 NI.COM의 이용 약관에 명시된 특정한 제약 규정에 대한 전제 없이 있는 그대로 제공됩니다. (http://ni.com/legal/termsofuse/unitedstates/us/)
