1프로젝트 배경
기아는 생성형 AI(Generative AI)를 활용하여 PLC 프로그램 개발 생산성을 혁신하는 PoC(Proof of Concept) 프로젝트를 진행했습니다. 현재 PLC 프로그램 개발은 숙련된 엔지니어에 의존하며, 인력 부족과 품질 편차가 주요 과제입니다.
기아 생성형 AI PLC 코드 생성 시스템
사용자 입력
"컨베이어 시작 버튼을 누르면 모터가 동작하고, 정지 버튼을 누르면 멈추는 로직을 작성해줘"
RAG + LLM 엔진
AAS 참조
(I/O정보)
RAG 검색
(기존코드)
LLM 생성
(GPT/Claude)
이 프로젝트의 목표는 자연어로 공정 요구사항을 입력하면 LLM이 표준화된 PLC 코드를 생성하는 시스템을 구축하는 것입니다. AAS는 생성된 코드의 맥락 정보(설비 사양, 변수 정의 등)를 제공하는 역할을 합니다.
2시스템 아키텍처
LLM 기반 PLC 코드 생성 시스템은 다음과 같은 구성요소로 이루어집니다:
- 사용자 인터페이스: 자연어로 공정 요구사항을 입력하는 웹 기반 에디터
- RAG (Retrieval-Augmented Generation): 기존 PLC 코드, 매뉴얼, AAS 정보를 검색하여 컨텍스트 제공
- LLM 엔진: GPT-4 또는 Claude 기반의 코드 생성 모델
- AAS 저장소: 설비 사양, I/O 테이블, 표준 함수 블록 정보 제공
- 검증 모듈: 생성된 코드의 문법 검사 및 시뮬레이션
AAS 활용: LLM이 코드를 생성할 때 AAS의 Technical Data 서브모델에서 I/O 구성, 변수 타입, 통신 설정 등을 참조하여 정확한 코드를 생성합니다.
3동작 예시
엔지니어가 자연어로 요구사항을 입력하면 시스템이 PLC 코드를 생성합니다:
// 입력: "컨베이어 시작 버튼을 누르면 모터가 동작하고,
// 정지 버튼을 누르면 멈추는 로직을 작성해줘"
// 생성된 래더 로직 (ST 표현)
PROGRAM ConveyorControl
VAR
StartButton : BOOL; // %I0.0
StopButton : BOOL; // %I0.1
Motor : BOOL; // %Q0.0
END_VAR
Motor := (StartButton OR Motor) AND NOT StopButton;
// 정지 버튼을 누르면 멈추는 로직을 작성해줘"
// 생성된 래더 로직 (ST 표현)
PROGRAM ConveyorControl
VAR
StartButton : BOOL; // %I0.0
StopButton : BOOL; // %I0.1
Motor : BOOL; // %Q0.0
END_VAR
Motor := (StartButton OR Motor) AND NOT StopButton;
시스템은 AAS에서 해당 설비의 I/O 어드레스를 자동으로 참조하여 변수 주석을 추가합니다.
4적용 범위 및 제약
PoC 단계에서 확인된 LLM 기반 코드 생성의 적용 범위와 제약사항:
- 적용 가능: 표준화된 패턴의 시퀀스 로직, 인터락 조건, 타이머/카운터 로직
- 부분 적용: 복잡한 알고리즘, 최적화가 필요한 연산, 안전 관련 로직
- 제약: 생성된 코드는 반드시 숙련 엔지니어의 검토 필요
- 검증 필수: 시뮬레이션과 실제 테스트를 통한 검증 단계 필수
안전 고려: 안전 관련 로직(Safety PLC)은 LLM 생성 코드를 그대로 사용하지 않으며, 보조 도구로만 활용합니다.
5PoC 결과 및 향후 계획
PoC를 통해 확인된 주요 성과와 향후 확대 계획:
- 생산성 향상: 단순 로직 작성 시간 70% 단축 확인
- 품질 표준화: 코딩 스타일과 변수 명명 규칙 일관성 확보
- 지식 활용: 기존 코드와 매뉴얼의 RAG 기반 재활용 가능성 확인
- 향후 계획: 2025년까지 협력사 포함 확대 적용 검토
기아는 이 기술을 AAS 기반 플랫폼과 통합하여, "자연어 → AAS → PLC 코드"의 End-to-End 자동화를 목표로 하고 있습니다.