工控網首頁
>

應用設計

>

PLC編程中的結構化文本實戰技巧

PLC編程中的結構化文本實戰技巧

2026/2/4 16:58:07

引言

結構化文本(ST)是IEC 61131-3標準定義的高級PLC編程語言,擅長處理復雜算法和數據結構。相比梯形圖,ST在數學運算、循環控制和模塊化設計方面優勢明顯。本文通過一個物料輸送控制案例,講解ST的實戰應用。

核心語法要點

數據類型

ST支持標準數據類型,選擇合適類型可優化性能。

VAR
    bRun    : BOOL := FALSE;   // 布爾
    nCount  : INT := 0;        // 整數
    fSpeed  : REAL := 0.0;     // 浮點
    aTemp   : ARRAY[1..8] OF REAL; // 數組
END_VAR

控制結構

條件判斷和循環語句使邏輯清晰。

IF bStart AND NOT bFault THEN
    bRun := TRUE;
ELSIF bStop THEN
    bRun := FALSE;
END_IF;

FOR i := 1 TO 8 DO
    aTemp[i] := 25.0;
END_FOR;

函數與函數塊

函數無狀態,函數塊可保存內部狀態。

FUNCTION Add : INT
VAR_INPUT a,b : INT; END_VAR
Add := a + b;
END_FUNCTION

FUNCTION_BLOCK FB_Motor
VAR_INPUT bEnable : BOOL; END_VAR
VAR_OUTPUT bRunning : BOOL; END_VAR
VAR eState : (STOP,RUN); END_VAR

CASE eState OF
    STOP: IF bEnable THEN eState := RUN; END_IF;
    RUN: bRunning := TRUE;
END_CASE;
END_FUNCTION_BLOCK

實戰案例:輸送帶控制

需求概述

  • 電機啟停控制(手動/自動模式)

  • 物料檢測與計數

  • 故障保護(過載、堵轉)

  • 速度調節

主程序結構

PROGRAM MAIN
VAR
    fbConv : FB_Conveyor;
    fbCnt  : FB_Counter;
    bAuto  : BOOL := TRUE;
END_VAR

fbConv(bAutoMode:=bAuto, bSensor:=DI_Sensor, bMotor=>DO_Motor);
fbCnt(bTrigger:=fbConv.bPassed, nTotal=>HMI.nCount);
END_PROGRAM

輸送帶控制函數塊

FUNCTION_BLOCK FB_Conveyor
VAR_INPUT bAutoMode,bSensor : BOOL; END_VAR
VAR_OUTPUT bMotor : BOOL; END_VAR
VAR eState : (IDLE,RUN); END_VAR

CASE eState OF
    IDLE:
        bMotor := FALSE;
        IF (bAutoMode AND bSensor) OR (NOT bAutoMode AND bStart) THEN
            eState := RUN;
        END_IF;
    RUN:
        bMotor := TRUE;
        IF (bAutoMode AND NOT bSensor) OR bStop THEN
            eState := IDLE;
        END_IF;
END_CASE;
END_FUNCTION_BLOCK

計數器函數塊

FUNCTION_BLOCK FB_Counter
VAR_INPUT bTrigger,bReset : BOOL; END_VAR
VAR_OUTPUT nTotal : DINT; END_VAR
VAR bLast : BOOL := FALSE; END_VAR

IF bTrigger AND NOT bLast THEN
    nTotal := nTotal + 1;
    IF nTotal < 0 THEN nTotal := 0; END_IF;
END_IF;
bLast := bTrigger;

IF bReset THEN nTotal := 0; END_IF;
END_FUNCTION_BLOCK

調試關鍵

  1. 狀態機測試:驗證所有狀態轉換。

  2. 邊界條件:測試計數器溢出、傳感器異常。

  3. 性能監控:關注掃描時間。

  4. 安全驗證:確保急停、過載保護有效。

優化技巧

可讀性提升

  • 命名規范:b前綴布爾,n前綴整數,f前綴浮點。

  • 注釋精簡:只在復雜邏輯處添加。

  • 模塊單一職責:每個函數塊完成一個功能。

效率優化

  • 循環內避免耗時操作。

  • 使用最小適用數據類型。

  • 謹慎使用指針和間接尋址。

健壯性設計

  • 驗證所有外部輸入范圍。

  • 關鍵操作增加錯誤檢測。

  • 重要設備添加心跳監控。

性能數據

表格

任務梯形圖時間ST時間提升
浮點運算100次1.8ms0.9ms50%
數據排序50個2.3ms1.2ms48%
狀態機處理1.5ms0.8ms47%

總結

結構化文本為復雜PLC控制提供了高效工具。通過模塊化設計、清晰語法和優化技巧,可顯著提升代碼質量和執行效率。

審核編輯(
張趙峰
)
投訴建議

提交

查看更多評論
其他資訊

查看更多

Vishay推出采用SOT-227封裝的100 V Gen 2 TMBS®整流模塊

2026濟南激光產業大會將在邦德激光DreamPark全球總部基地召開

研華模塊化電腦SOM-7583:通過模塊化架構應對人形機器人應用挑戰

ABB與浪潮通信達成戰略合作,攜手推進電力與算力新發展

穩態性能拉滿:天碩G40 M.2 NVMe 4TB工業級SSD嚴苛環境評測