Wärtsilä - 프로덕션 코드 생성을 사용한 엔진 제어 개발 가속화 사례
최신 제어 기능은 개발 난도가 높고 종종 광범위한 엔진 테스트를 수반합니다. Simulink와 Embedded Coder를 통해 개발 초기 단계에서 이러한 기능을 설계하고 최적화할 수 있었고, 그 결과 많은 비용이 드는 엔진 테스트를 크게 줄일 수 있었습니다.
과제
솔루션
결과
- 재사용 가능한 모델
- 20% 더 빠른 코드
- 생산성 200~300% 증가
대형 디젤 및 가스 엔진의 주요 시장인 에너지 생산과 선박 추진 분야는 더 친환경적이고 효율적인 엔진을 개발해야 하는 환경적 및 상업적 과제에 직면해 있습니다. Wärtsilä는 대형 중유 디젤 엔진에 커먼레일 전자식 연료 분사 기술을 세계 최초로 적용한 제조업체로서, 임베디드 시스템 혁신을 선도하고 있습니다. 이러한 혁신의 핵심은 엔진 제어 소프트웨어입니다. 이 소프트웨어는 배출가스를 줄이고 성능을 향상시키며 신뢰성을 확보하기 위해 제어 전략 전문가, 소프트웨어 엔지니어, 하드웨어 설계자로 구성된 팀에 의해 개발되었습니다.
그러나 엔진 소프트웨어의 규모와 복잡성이 증가함에 따라, Wärtsilä의 수동 C 코드 기반 개발 방식은 엔지니어링 팀이 명확한 사양을 정의하고 효과적으로 의사소통하는 데 어려움을 초래했습니다. 이에 Wärtsilä는 MathWorks의 모델 기반 설계 툴을 활용해 모델링과 시뮬레이션을 중심으로 하는 보다 직관적인 개발 방식을 도입했습니다.
“엔진 제어용 고도화된 임베디드 소프트웨어를 개발하려면, 실행 가능한 사양과 자동 코드 생성을 지원하는 모델 기반 프로그래밍이 필수적입니다. Wärtsilä의 자동화 전문가 Ari Saikkonen이 설명합니다. "Simulink와 Embedded Coder는 모델 기반 설계를 적용하기 위한 우리의 핵심 툴이며, 실제 프로덕션 프로그램에서 성공적으로 활용되고 있습니다."
과제
고급 제어 전략은 모든 엔진 시스템에 걸쳐 활용이 확대되고 있으며, 특히 신기술 분야에서 그 중요성이 더욱 커지고 있습니다. 전력망 문제의 영향을 받지 않고 고객 설비를 독립적으로 운영할 수 있는 분산 발전 환경에서는 전력 품질과 신뢰성을 향상시키기 위해 소프트웨어에 크게 의존하고 있습니다. 또한 천연가스 기반 엔진 시스템의 보급이 확대되면서, 엔진 성능 제어는 전자 제어 시스템에 전적으로 의존하게 되었습니다.
Wärtsilä는 새로운 전략을 설계하고 높은 시스템 신뢰성을 유지하며 시장 출시 시간 요구를 충족하기 위해 검증된 임베디드 소프트웨어 개발 프로세스가 필요했습니다. 이 새로운 프로세스를 적용하기 위해서는 실행 가능한 다이어그램과 자동 코드 생성을 제공하는 기호 설계 툴이 필요했습니다. 이런 툴들은 엄격한 검증 및 확인을 포함한 기존의 공식 개발 프로세스와도 연계되어야 했습니다.
“C 언어 기반 개발 방식은 매우 어려워졌고, 지나치게 많은 엔진 시험이 필요했습니다." Saikkonen의 말입니다. "우리는 애플리케이션을 상세한 소프트웨어 모델과 비교해 테스트할 수 있는 통합 동적 시뮬레이션 환경이 필요했습니다. 또한 실제 엔진에서 애플리케이션을 처음 실행할 때도 문제가 거의 발생하지 않을 정도의 높은 정확도를 확보해야 했습니다.”
솔루션
여러 대안을 평가한 후, Wärtsilä는 시스템 모델을 설계하고 시뮬레이션하기 위해 Simulink®를 선택하였으며, 모델로부터 프로덕션 코드를 자동으로 생성하기 위해 Embedded Coder®를 선택하였습니다. 이 접근 방식을 통해 설계에서 구현 단계로 원활하게 전환할 수 있었으며, 초기 개발 단계에서 모델을 검증하고 확인할 수 있게 하여, 촉박한 출시 일정에 부응하고 실제 엔진 테스트를 줄임으로써 개발 비용을 절감할 수 있었습니다.
"MathWorks 제품은 설계부터 구현 단계까지 지원했으며, 테스트 단계의 상당 부분까지 포괄했습니다." Wärtsilä 자동화 전문가인 Tom Kaas가 설명합니다. "MathWorks의 툴은 특정 문제만 해결하는 개별 솔루션이 아니라 제어 시스템 개발 전반을 위한 완전한 개발 환경을 제공합니다.”
Wärtsilä 엔지니어들은 MathWorks의 모델 기반 설계 툴을 사용해 계층적 블록 다이어그램과 상태 머신을 활용해 복잡한 기능과 알고리즘을 구조화하고 표현했습니다. 그들은 데이터형, 기능 분할, 샘플 시간 정보와 같은 소프트웨어 설계 정보를 포함하도록 다이어그램을 구체화하고 정교화했습니다.
엔지니어들은 Simulink를 사용해 PID 제어, 연료 제한기, 피드포워드 제어와 같은 제어 법칙 기능을 모델링하였습니다. 또한 Stateflow를 활용해 모드 전환과 같은 논리 기반 상태 머신을 설계했습니다. Wärtsilä는 Simulink와 Stateflow를 사용하여 속도/부하 제어기와 같은 다양한 응용 사례의 구현 기반이 되는 완전한 컴포넌트 라이브러리를 구축했습니다. 엔지니어들은 이런 모델 컴포넌트를 활용해 대규모 애플리케이션을 신속하게 구성하고 관리할 수 있었습니다.
이러한 블록과 모델을 기반으로 Wärtsilä는 후속 개발 프로젝트를 쉽고 체계적으로 발전시킬 수 있었으며, 더 이상 새로운 애플리케이션을 처음부터 개발할 필요가 없었습니다. 또한 나선형 개발 방식을 적용해 먼저 비즈니스 요구사항을 식별하고 초기 제품 출시 이후에도 애플리케이션을 지속적으로 유지관리했습니다. 이 프로세스를 MathWorks의 모델 기반 설계 툴을 중심으로 구축함으로써 설계가 더 명확해지고 구현과의 일관성이 높아져 반복 개발을 더 쉽게 수행할 수 있습니다.
"Simulink와 Embedded Coder를 통해 얻은 결과는 인상적이었습니다." Kaas가 말합니다. "품질, 효율성, 엔지니어링 시간 등 소프트웨어 개발의 모든 핵심 지표에서 상당한 개선을 확인했습니다.”
현재 Wärtsilä의 속도/부하 제어기는 상용 환경에서 사용되고 있습니다. 그리고 MathWorks 툴을 기반으로 한 여러 신규 프로덕션 소프트웨어 애플리케이션을 활발하게 개발하고 있습니다.
결과
- 재사용 가능한 모델. "우리는 첫 번째 프로젝트 동안 모든 목표를 달성하였으며, 향후 프로젝트에 활용할 수 있는 견고한 재사용 모델의 기반도 구축했습니다." Kass는 말합니다.
- 20% 더 빠른 코드. "자동 생성된 코드는 RAM, ROM 및 실행 속도 측면에서 수작업 코드보다 우수했습니다." Saikkonen이 설명합니다. "코드 크기는 최대 30% 감소했으며 CPU 실행 시간은 거의 20% 단축된 것으로 추정됩니다."
- 생산성 200~300% 증가. "Simulink와 Embedded Coder가 제공하는 더 높은 추상화, 개선된 구조, 그리고 자동 생성되는 프로덕션 코드를 통해 생산성이 약 2~3배 향상되었습니다." Saikkonen의 말입니다.