Listen to this Post

The latest version of IEC 61131-3 (2025) introduces key updates, most notably UTF-8 string support, paving the way for better IT/OT convergence. While the standard remains focused on industrial automation, there’s a growing need for modern programming features like async I/O, simplified concurrency, and vendor-independent task scheduling.
You Should Know:
1. UTF-8 Support in Structured Text (ST)
With UTF-8, PLC programs can now handle international characters, making them more adaptable for global deployments.
Example ST Code:
VAR utf8String : STRING(100) := 'こんにちは'; // Japanese greeting END_VAR
- Async I/O & File Operations (Vendor Extensions)
Many PLC vendors already support file operations and sockets. Here’s how you might use them:
Beckhoff TwinCAT Example:
FUNCTION_BLOCK FileReadExample
VAR
fileHandle : UINT;
dataBuffer : ARRAY[1..100] OF BYTE;
END_VAR
fileHandle := SysFileOpen('C:\Data\log.txt', FOM_READ);
SysFileRead(fileHandle, ADR(dataBuffer), SIZEOF(dataBuffer));
SysFileClose(fileHandle);
3. Simplified Concurrency (Without Locks)
Modern PLCs (e.g., Codesys-based systems) support task-based concurrency:
PROGRAM Main VAR task1 : TASK(PRIORITY := 10, INTERVAL := T20MS); task2 : TASK(PRIORITY := 5, INTERVAL := T50MS); END_VAR // Task execution task1(IN := TRUE, PT := T10MS); task2(IN := TRUE, PT := T20MS);
4. Sockets & Network Communication
Python-like socket handling in ST (Siemens S7-1500 example):
FUNCTION EstablishTCPConnection : BOOL VAR socketID : INT; connected : BOOL := FALSE; END_VAR socketID := TCONNECT(ADDR := '192.168.1.100', PORT := 8080); IF socketID > 0 THEN connected := TRUE; END_IF
Linux & Windows Commands for IT/OT Engineers
- Linux (PLC logging & diagnostics):
journalctl -u codesys-runtime --no-pager -n 50 Check PLC runtime logs tcpdump -i eth0 port 502 -w modbus_traffic.pcap Capture Modbus traffic
- Windows (PLC interfacing):
Get-NetTCPConnection -State Established | Where-Object {$_.RemotePort -eq 44818} Find EtherNet/IP connections
What Undercode Say
The IEC 61131-3:2025 update is a step forward but still lags behind modern programming needs. Engineers should push vendors for:
– Built-in MQTT/HTTP libraries.
– Zero-copy data sharing between tasks.
– Docker-like containerization for PLC programs.
Prediction
By 2027, PLC programming will merge with DevOps, bringing GitOps, CI/CD pipelines, and Kubernetes-style orchestration to industrial automation.
Expected Output:
// Sample ST program with UTF-8 and file I/O
PROGRAM ModernPLC
VAR
welcomeMsg : STRING := 'Hello, 世界';
fileData : ARRAY[1..256] OF BYTE;
END_VAR
// Read config file
IF NOT FileRead('config.bin', fileData) THEN
LogError('Config load failed!');
END_IF
Relevant Links:
IT/Security Reporter URL:
Reported By: Activity 7333277231013646336 – Hackers Feeds
Extra Hub: Undercode MoN
Basic Verification: Pass ✅


