  Programmable Logic Controllers (PLC) and its programming standard IEC 61131-3
are widely used in embedded systems for the industrial automation domain. We
propose a framework for the formal treatment of PLC based on the IEC 61131-3
standard. A PLC system description typically combines code written in different
languages that are defined in IEC 61131-3. For the top-level specification we
regard the Sequential Function Charts (SFC) language, a graphical high-level
language that allows to describe the main control-flow of the system. In
addition to this, we describe the Instruction List (IL) language -- an assembly
like language -- and two other graphical languages: Ladder Diagrams (LD) and
Function Block Diagrams (FBD). IL, LD, and FBD are used to describe more low
level structures of a PLC. We formalize the semantics of these languages and
describe and prove relations between them. Formalization and associated proofs
are carried out using the proof assistant Coq. In addition to this, we present
work on a tool for automatically generating SFC representations from a
graphical description -- the IL and LD languages can be handled in Coq directly
-- and its usage for verification purposes. We sketch possible usages of our
formal framework, and present an example application for a PLC in a project
demonstrator and prove safety properties.
