AutoPLC: Generating Vendor-Aware Structured Text for Programmable Logic Controllers
Abstract
Among the programming languages for Programmable Logic Controllers (PLCs), Structured Text (ST) is widely adopted for industrial automation due to its expressiveness and flexibility. However, major vendors implement ST with proprietary extensions and hardware-specific libraries - Siemens’ SCL and CODESYS’ ST each differ in syntax and functionality. This fragmentation forces engineers to relearn implementation details across platforms, creating substantial productivity barriers. To address this challenge, we developed AutoPLC, a framework capable of automatically generating vendor-aware ST code directly from natural language requirements. Our solution begins by building two essential knowledge sources tailored to each vendor’s specifications: a structured API library containing platform-exclusive functions, and an annotated case database that captures real-world implementation experience. Building on these foundations, we created a four-stage generation process that combines step-wise planning (enhanced with a lightweight natural language state machine support for control logic), contextual case retrieval using LLM-based reranking, API recommendation guided by industrial data, and dynamic validation through direct interaction with vendor IDEs. Implemented for Siemens TIA Portal and the CODESYS platform, AutoPLC achieves 90%+ compilation success on our 914-task benchmark (covering general-purpose and process control functions), outperforming all selected baselines, at an average cost of only $0.13 per task. Experienced PLC engineers positively assessed the practical utility of the generated code, including cases that failed compilation.
BibTeX
@inproceedings{Yang-al:ASE25,
author = {Donghao Yang and
Aolang Wu and
Tianyi Zhang and
Li Zhang and
Xiaoli Lian and
Fang Liu and
Yuming Ren and
Jiaji Tian and
Xiaoyin Che},
title = {{AutoPLC:} Generating {Vendor-Aware} Structured Text for Programmable Logic Controllers},
booktitle = {ASE},
pages = {3593--3604},
publisher = {{IEEE}},
year = {2025},
}