Advanced Language Constructs

Advanced IEC 61131-3 features for complex system organization and object-oriented programming.

🚀 Enhance Your Development Experience

Get syntax highlighting, IntelliSense, and debugging support for Structured Text:

Install VS Code Extension →

System Organization

Configuration and Resource Management

// CONFIGURATION - Top level system organization
CONFIGURATION MainSystem
    VAR_GLOBAL
        SystemMode : INT := 1;        // 1=Auto, 2=Manual, 3=Maintenance
        EmergencyStop : BOOL := FALSE;
    END_VAR
    
    // Resource declaration - Processing unit assignment
    RESOURCE CPU_1 ON PLC_Unit
        // Task scheduling
        TASK MainTask(INTERVAL := T#10ms, PRIORITY := 1);
        TASK SlowTask(INTERVAL := T#100ms, PRIORITY := 5);
        
        // Program assignment to tasks
        PROGRAM MainControl WITH MainTask : ControlProgram;
        PROGRAM DataLogging WITH SlowTask : LoggingProgram;
    END_RESOURCE
END_CONFIGURATION

Object-Oriented Programming

Interfaces, Methods, and Properties

// Interface definition
INTERFACE IMotor
    METHOD Start : BOOL
    METHOD Stop : BOOL
    PROPERTY Speed : REAL
    PROPERTY IsRunning : BOOL
END_INTERFACE

// Function block implementing interface
FUNCTION_BLOCK ServoMotor IMPLEMENTS IMotor
VAR
    _speed : REAL;
    _isRunning : BOOL;
END_VAR

METHOD Start : BOOL
    _isRunning := TRUE;
    Start := TRUE;
END_METHOD

METHOD Stop : BOOL
    _isRunning := FALSE;
    _speed := 0.0;
    Stop := TRUE;
END_METHOD

PROPERTY Speed : REAL
    GET
        Speed := _speed;
    END_GET
    SET
        _speed := Speed;
    END_SET
END_PROPERTY

Namespaces

Namespace Organization

// Namespace declaration
NAMESPACE Motors
    // Motor-related function blocks and functions
    FUNCTION_BLOCK StepperMotor
        // Implementation
    END_FUNCTION_BLOCK
    
    FUNCTION CalculateSteps : DINT
        // Implementation
    END_FUNCTION
END_NAMESPACE

NAMESPACE Sensors
    FUNCTION_BLOCK TemperatureSensor
        // Implementation
    END_FUNCTION_BLOCK
END_NAMESPACE

// Using namespace elements
USING Motors;
USING Sensors;

VAR
    Motor1 : Motors.StepperMotor;
    TempSensor : TemperatureSensor;    // Available through USING
END_VAR

Key Advanced Features

  • CONFIGURATION/RESOURCE: System-level organization
  • TASK: Scheduling and priority management
  • INTERFACE: Contract definitions for function blocks
  • METHOD: Object-oriented behavior implementation
  • PROPERTY: Controlled access to internal data
  • NAMESPACE: Code organization and modularity

© 2025 ControlForge Systems