Theo tiêu chuẩn IEC 61131-3, ngôn ngữ lập trình hệ thống tự động hóa công nghiệp được chuẩn hóa sẽ bao gồm 5 ngôn ngữ:

  • Ladder diagram (LD)
  • Function block diagram (FBD)
  • Structured text (ST)
  • Instruction list (IL)
  • Sequential function chart (SFC)

Hàm chức năng trong ngôn ngữ ST theo tiêu chuẩn IEC 61131-3:
  • :=
  • RETURN
  • IF
  • CASE
  • FOR
  • WHILE
  • REPEAT
  • EXIT
Phép toán logic và toán học trong ST theo IEC 61131-3:
  • ( )
  • -
  • NOT
  • **
  • *
  • /
  • MOD
  • +
  • -
  • <, > , <=,
  • >=
  • =
  • <>
  • &, AND
  • XOR
  • OR

Ví dụ: Điều khiển quét 8 LED sáng tuần tự từ 1 đến 8, sau đó tự động đảo chiều.
- Lập trình bằng phần mềm TIA Portal 
- PLC Siemens S7-1200
- Ngôn ngữ lập trình: SCL (ST)

1. Tạo một Project mới
Trong phần mềm TIA Portal, tạo file project mới.

2. Khai báo cấu hình phần cứng
Trong Menu, chọn "Add new device" để thêm mã PLC và các module tương ứng theo cấu hình thực tế. Kích hoạt "System memory bits" "Clock memory bits" để thuận tiện sử dụng về sau.

3. Khởi tạo các biến
Tạo một Data block DB1 và khai báo các biến chương trình.

4. Khai báo các Tags cho ngõ ra vật lý
Khai báo các Tags cho các địa chỉ ngõ ra vật lý từ Q0.0 đến Q0.7 để thuận tiện khi viết chương trình.

5. Thêm chương trình điều khiển FC1
Khai báo chương trình FC1, chọn ngôn ngữ lập trình là SCL.

6. Viết chương trình SCL
Có thể copy đoạn code bên dưới và paste vào chương trình FC1.
(* Bắt đầu chương trình -----------------------------------------------------------------------------*)
"R_TRIG_DB"(CLK:="Clock_10Hz",
            Q=>"Data".Pulse_Clock); (* Lấy tín hiệu cạnh lên của xung CLOCK *)

IF "Data".Pulse_Clock THEN
    "Data".iCount := "Data".iCount + "Data".Dir; (* Tăng/ giảm giá trị bộ đếm theo chiều Dir *)
    "Data".LED := "Data".Zero; (* Đặt các LED về "O" *)
END_IF;

IF "Data".iCount >= 7 THEN
    "Data".Dir := -1; (*Đảo chiều khi tới biên Phải *)
ELSIF "Data".iCount <= 0 THEN
    "Data".Dir := 1; (* Đảo chiều khi tới biên Trái *)
END_IF;

"Data".LED["Data".iCount] := TRUE; (* ON các LED theo bộ đếm iCount *)

"Q0.0" := "Data".LED[0]; (* Nạp các bit ở ô nhớ DATA vào ngõ ra vật lý Q tương ứng *)
"Q0.1" := "Data".LED[1];
"Q0.2" := "Data".LED[2];
"Q0.3" := "Data".LED[3];
"Q0.4" := "Data".LED[4];
"Q0.5" := "Data".LED[5];
"Q0.6" := "Data".LED[6];
"Q0.7" := "Data".LED[7];

(* Kết thúc chương trình --------------------------------------------------------------------------*)


7. Gọi chương trình FC1
Trong chương trình chính OB1, gọi chương trình FC1 để thực thi.

8. Biên dịch chương trình
Nếu không có cảnh báo lỗi "Errors", chương trình đã sẵn sàng để nạp xuống PLC.

9. Nạp chương trình xuống PLC
Download chương trình vừa viết vào PLC. Có thể dùng PLC Sim nếu thay cho PLC thực tế.

10. Trực tuyến PLC
Dùng chức năng online để theo dõi chương trình thực thi.