Loading AILogicHMI...

Structured Text Syntax in PLC Programming: Complete Guide with Examples

admin
August 20, 2025
11 min read
2 visualizations
Ladder Logic Visualization
Structured Text Syntax in PLC Programming: Complete Guide with Examples PLC Structured Text Programming Variables Statements IF, WHILE, FOR Operators +, -, *, /, := Data Types Algorithms Complex Control AILogicHMI
Structured Text Syntax in PLC Programming: Complete Guide with Examples

Structured Text Syntax in PLC Programming: Complete Guide with Examples

Structured Text (ST) is a high-level programming language defined by the IEC 61131-3 standard for programmable logic controllers (PLCs). Unlike graphical languages like Ladder Diagram, ST uses a textual syntax similar to Pascal or C, offering powerful capabilities for complex algorithms, data manipulation, and advanced control strategies. This comprehensive guide provides a deep dive into Structured Text syntax, covering essential elements, operators, control structures, and practical examples to help you master this versatile language for industrial automation.

Introduction to Structured Text Programming

Structured Text is one of the five programming languages defined in the IEC 61131-3 standard for PLC programming. Its text-based nature makes it well-suited for implementing complex logic, mathematical calculations, and data processing tasks that can be cumbersome to represent in graphical languages. ST allows programmers to write concise and readable code, improving maintainability and reusability.

Key advantages of using Structured Text include:

  • Readability and Maintainability: Textual code is often easier to read and understand, especially for complex logic.
  • Powerful Data Handling: ST provides robust data types and operators for manipulating data efficiently.
  • Algorithm Implementation: Ideal for implementing complex algorithms and mathematical functions.
  • Reusability: Code can be easily reused in different parts of the program or in other projects.
Key Insight: Structured Text is particularly useful for tasks that involve complex mathematical calculations, data manipulation, or implementing advanced control algorithms. Consider using ST when ladder logic becomes too cumbersome or difficult to manage.

Basic Syntax and Elements of Structured Text

Understanding the fundamental syntax and elements is crucial for writing effective Structured Text code. Here are the core components:

Variables and Data Types

Variables are used to store data values. In ST, you must declare variables and specify their data types. Common data types include:

  • BOOL: Boolean (TRUE or FALSE)
  • INT: Integer (16-bit signed)
  • DINT: Double Integer (32-bit signed)
  • REAL: Floating-point number (32-bit)
  • STRING: Text string

Example of variable declarations:

VAR
    MotorSpeed : INT;
    IsRunning : BOOL;
    Temperature : REAL;
    ErrorMessage : STRING;
END_VAR

Operators

Operators are symbols that perform specific operations on variables and values. ST supports various types of operators:

  • Arithmetic Operators: +, -, *, /, MOD (modulo), ** (exponentiation)
  • Relational Operators: =, <>, <, >, <=, >=
  • Logical Operators: AND, OR, NOT, XOR
  • Bitwise Operators: AND, OR, NOT, XOR

Statements

Statements are instructions that perform actions. They are the building blocks of ST programs. Examples include assignment statements, conditional statements, and loop statements.

Comments

Comments are used to explain the code and are ignored by the compiler. In ST, comments are enclosed in (* *) or start with //.

(* This is a multi-line comment *)
// This is a single-line comment

Control Structures in Structured Text

Control structures allow you to control the flow of execution in your ST programs. Key control structures include:

IF Statements

IF statements execute a block of code based on a condition.

IF Temperature > 50 THEN
    IsOverheated := TRUE;
ELSE
    IsOverheated := FALSE;
END_IF

CASE Statements

CASE statements execute different blocks of code based on the value of a variable.

CASE MotorState OF
    0:  (* Motor is stopped *)
        MotorSpeed := 0;
    1:  (* Motor is running at low speed *)
        MotorSpeed := 500;
    2:  (* Motor is running at high speed *)
        MotorSpeed := 1000;
ELSE
    (* Invalid state *)
    ErrorMessage := 'Invalid Motor State';
END_CASE

FOR Loops

FOR loops execute a block of code a specified number of times.

FOR i := 1 TO 10 DO
    Result := Result + i;
END_FOR

WHILE Loops

WHILE loops execute a block of code as long as a condition is true.

WHILE Temperature < 100 DO
    HeatInput := TRUE;
END_WHILE
HeatInput := FALSE;

REPEAT Loops

REPEAT loops execute a block of code until a condition becomes true.

REPEAT
    Counter := Counter + 1;
UNTIL Counter >= 10
END_REPEAT
Professional Tip: When choosing between FOR, WHILE, and REPEAT loops, consider the specific requirements of your application. FOR loops are best when you know the number of iterations in advance. WHILE loops are suitable when you need to continue looping as long as a condition is true, and REPEAT loops are useful when you need to execute the loop body at least once.

Functions and Function Blocks in Structured Text

Functions and function blocks are reusable code modules that encapsulate specific logic. They promote modularity and code reuse.

Functions

Functions are self-contained code blocks that perform a specific task and return a value. They do not maintain state between calls.

FUNCTION CalculateArea : REAL
    VAR_INPUT
        Length : REAL;
        Width : REAL;
    END_VAR
    CalculateArea := Length * Width;
END_FUNCTION

Function Blocks

Function blocks are similar to functions but can maintain state between calls. They have input variables, output variables, and internal variables.

FUNCTION_BLOCK MotorController
    VAR_INPUT
        Start : BOOL;
        Stop : BOOL;
    END_VAR
    VAR_OUTPUT
        Running : BOOL;
    END_VAR
    VAR
        InternalState : INT;
    END_VAR

    IF Start AND NOT Running THEN
        InternalState := 1;
        Running := TRUE;
    ELSIF Stop AND Running THEN
        InternalState := 0;
        Running := FALSE;
    END_IF
END_FUNCTION_BLOCK

Here's an SVG chart illustrating the difference between Functions and Function Blocks:

Functions vs. Function BlocksFunctionNo Internal StateReturns a ValueInput VariablesOutput ValueFunction BlockMaintains Internal StateCan Have Multiple OutputsInput VariablesOutput VariablesInternal Variables
Important: When using function blocks, be mindful of their internal state. Ensure that the state is properly initialized and updated to avoid unexpected behavior.

Advanced Topics in Structured Text

Beyond the basics, Structured Text offers advanced features for complex applications:

Arrays

Arrays are collections of elements of the same data type.

VAR
    Temperatures : ARRAY[1..10] OF REAL;
END_VAR

Structures

Structures are user-defined data types that group related variables.

TYPE
    MotorData :
        STRUCT
            Speed : INT;
            Current : REAL;
            Status : BOOL;
        END_STRUCT
END_TYPE

VAR
    MyMotor : MotorData;
END_VAR

Pointers

Pointers are variables that store the memory address of another variable.

VAR
    MyInt : INT := 10;
    MyPointer : POINTER TO INT;
END_VAR

MyPointer := ADR(MyInt);  (* Get the address of MyInt *)
MyInt := MyPointer^ * 2; (* Dereference the pointer and multiply by 2 *)

The following SVG chart illustrates the usage of arrays in Structured Text:

Array Usage in Structured TextArray IndexArray ValueArray[1]Array[2]Array[3]Array[4]255075100Temperatures[1]Temperatures[2]Temperatures[3]Temperatures[4]
Key Insight: Mastering advanced topics like arrays, structures, and pointers can significantly enhance your ability to develop complex and efficient PLC programs using Structured Text.

Frequently Asked Questions

Q: What is the IEC 61131-3 standard?

A: The IEC 61131-3 standard is an international standard for programmable logic controller (PLC) programming languages. It defines five standard programming languages: Ladder Diagram (LD), Function Block Diagram (FBD), Structured Text (ST), Instruction List (IL), and Sequential Function Chart (SFC).

Q: When should I use Structured Text instead of Ladder Diagram?

A: Structured Text is generally preferred for complex logic, mathematical calculations, and data manipulation tasks. Ladder Diagram is often used for simpler, discrete control tasks.

Q: How do I declare a variable in Structured Text?

A: Variables are declared using the VAR keyword, followed by the variable name, data type, and optional initial value. For example: VAR MotorSpeed : INT := 0; END_VAR.

Q: Can I use Structured Text with different PLC brands?

A: Yes, because Structured Text is part of the IEC 61131-3 standard, it is supported by many PLC manufacturers. However, there may be slight variations in syntax or available functions depending on the specific PLC brand.

Q: What are the best practices for writing readable Structured Text code?

A: Use meaningful variable names, add comments to explain the code, indent code blocks properly, and break down complex logic into smaller, reusable functions or function blocks.

Q: How can I debug Structured Text code?

A: Most PLC programming environments provide debugging tools, such as breakpoints, watch windows, and single-stepping, to help you identify and fix errors in your Structured Text code. Simulation tools can also be useful for testing your code before deploying it to a physical PLC.

Conclusion

Structured Text is a powerful and versatile programming language for PLCs, offering a robust solution for implementing complex automation logic. By understanding its syntax, control structures, and advanced features, you can develop efficient and maintainable PLC programs. Embrace the power of Structured Text to unlock new possibilities in industrial automation.

Ready to take your PLC programming skills to the next level? Explore our advanced tutorials and resources to deepen your understanding of Structured Text and other PLC programming languages!

Comments (0)

Be the first to comment!
Share your thoughts on this article.