Programmable logic
controllers (PLCs) are digital control systems, commonly used in industrial automation and
safety-critical applications. Control systems used in
safety-critical areas must undergo an extensive and
thorough certification and verification process. In
safety-critical applications, the PLC programming
standard IEC 61131-3 is widely accepted in
industry. PLC programmers who develop control
systems for safety-critical systems are often required
to verify the logic of PLCs by using formal methods
such as model checking. Translating manually from a
PLC program to the input language of a model checker
takes times and is often error-prone.
We develop a compiler to automatically translate PLC programs in the function block diagram (FBD) language, one of five industry standard PLC programming notations, to the input language of the model checker NuSMV. We have evaluated correctness, robustness, and performance of the PLC-NuSMV compiler using a case study. Evaluation results show that the compiler can translate the PLC programs correctly. The compiler can also identify several input errors and can scale to relative large PLC programs