mcpField
I
iec61131

iec61131

github.com/claude-dev-suiteDevelopment46148 installsUpdated 2d ago
Repository

About iec61131

A reference for developers working with IEC 61131-3 PLC programming, covering its languages, program units, data types, and exchange formats. It also summarizes PLCopen standards and vendor-specific format support.

Key features

  1. 01五种 IEC 61131-3 语言概览
  2. 02程序组织单元与变量范围
  3. 03数据类型参考
  4. 04PLCopen 标准与交换格式
  5. 05语言结构示例

Use cases

  1. 01选择适合 PLC 任务的编程语言
  2. 02查阅功能块与变量定义
  3. 03了解 PLC 程序交换格式支持

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/claude-dev-suite/claude-dev-suite --skill iec61131

After installing, type/iec61131in Claude Code to confirm it loaded.

Details

From the project README

IEC 61131-3 Programming Languages Reference

Overview

IEC 61131-3 defines 5 programming languages for PLCs, all interchangeable:

LanguageTypeBest ForStatus
LD (Ladder Diagram)GraphicalDiscrete logic, motor interlocksActive
FBD (Function Block Diagram)GraphicalContinuous control, PID, analogActive (DCS primary)
ST (Structured Text)TextualComplex calculations, algorithmsActive (most expressive)
IL (Instruction List)TextualLow-level, assembly-likeDeprecated (3rd ed. 2013)
SFC (Sequential Function Chart)GraphicalSequences, batch, state machinesActive

Program Organization Units (POUs)

PROGRAM

Top-level executable, associated with a task (scan cycle).

FUNCTION_BLOCK (FB)

Reusable block with persistent internal state (memory between calls). Used for motors, PID, timers, counters.

FUNCTION_BLOCK MotorControl
VAR_INPUT
    StartCmd : BOOL;
    StopCmd  : BOOL;
    FbkRun   : BOOL;
    Interlock: BOOL;
END_VAR
VAR_OUTPUT
    StartOut : BOOL;
    Running  : BOOL;
    Fault    : BOOL;
END_VAR
VAR
    MonTimer : TON;
    State    : INT;
END_VAR
FUNCTION (FC)

Stateless, no memory. Always returns same output for same input.

Data Types

Elementary

BOOL, BYTE, WORD, DWORD, LWORD, SINT, INT, DINT, LINT, USINT, UINT, UDINT, ULINT, REAL, LREAL, TIME, DATE, TIME_OF_DAY, DATE_AND_TIME, STRING, WSTRING

Derived (User-Defined)
TYPE MotorData :
STRUCT
    Running  : BOOL;
    Fault    : BOOL;
    Speed    : REAL;
    Runtime  : TIME;
END_STRUCT
END_TYPE

Variable Scopes

ScopeKeywordDescription
LocalVARInternal to POU
InputVAR_INPUTRead-only input parameter
OutputVAR_OUTPUTOutput parameter
In/OutVAR_IN_OUTBidirectional parameter
GlobalVAR_GLOBALAccessible by all POUs
ExternalVAR_EXTERNALReference to global
TempVAR_TEMPNo persistence
ConfigVAR_CONFIGSet at download
ConstantCONSTANTNamed constant

Language Details

ST (Structured Text) - Most Relevant for Code Generation
IF Motor.FbkRunning AND NOT Motor.Fault THEN
    Motor.Status := RUNNING;
    Motor.Runtime := Motor.Runtime + T#1s;
ELSIF Motor.Fault THEN
    Motor.Status := FAULTED;
    Motor.AlarmActive := TRUE;
END_IF;

CASE State OF
    0: (* IDLE *)
        IF StartCmd AND NOT Interlock THEN State := 1; END_IF;
    1: (* STARTING *)
        StartOut := TRUE;
        MonTimer(IN:=TRUE, PT:=T#10s);
        IF FbkRun THEN State := 2; END_IF;
        IF MonTimer.Q THEN State := 99; END_IF;
    2: (* RUNNING *)
        IF StopCmd THEN State := 3; END_IF;
    3: (* STOPPING *)
        StartOut := FALSE;
    99: (* FAULT *)
        StartOut := FALSE;
        Fault := TRUE;
END_CASE;
SFC (Sequential Function Chart)

Elements: Steps, Transitions, Actions

  • Steps contain actions (in any language)
  • Transitions are boolean conditions
  • Action qualifiers: N (non-stored), S (set), R (reset), L (time limited), D (delayed), P (pulse)
  • Parallel branches (simultaneous), Alternative branches (selective)
FBD (Function Block Diagram)

Signal flow left-to-right. Blocks represent functions. Wires connect outputs to inputs. Primary language in DCS (PCS 7 CFC, DeltaV Control Studio, ABB Freelance).

LD (Ladder Diagram)

Based on relay logic. Contacts (NO/NC), coils, timers, counters. Left/right power rails. Rungs top-to-bottom.

PLCopen Standards

TCTopicDescription
TC1StandardsIEC 61131-3 compliance testing
TC2Motion ControlMC_MoveAbsolute, MC_Stop, MC_Home, etc.
TC3Software EngineeringCoding guidelines
TC4CommunicationsOPC UA mapping
TC5SafetyIEC 61508 extensions
TC6XML ExchangeVendor-neutral program interchange format

PLCopen XML Format (TC6)

<project xmlns="http://www.plcopen.org/xml/tc6_0201">
  <types>
    <pous>
      <pou name="MotorControl" pouType="functionBlock">
        <interface>
          <inputVars>
            <variable name="Start"><type><BOOL/></type></variable>
          </inputVars>
          <outputVars>
            <variable name="Running"><type><BOOL/></type></variable>
          </outputVars>
        </interface>
        <body>
          <ST><xhtml><!-- Structured Text --></xhtml></ST>
        </body>
      </pou>
    </pous>
  </types>
</project>

Supported by: CODESYS, ABB AC500, Schneider, Beckhoff, B&R. NOT supported by: ABB Freelance (uses PRT), Emerson DeltaV (uses FHX), Siemens (uses SimaticML).

Other Exchange Formats

FormatStandardUsed By
PLCopen XMLIEC 61131-10CODESYS, Schneider, Beckhoff
SimaticMLSiemens proprietaryTIA Portal
AutomationMLIEC 62714Siemens PCS 7 V9+, multi-vendor
FHXEmerson proprietaryDeltaV
PRT/CSVABB proprietaryFreelance
DEXPIISO 15926P&ID exchange

Comments

Markdown supported