Skip to main content

梯形图中的二进制电路

梯形图中 POU 的示例选择

例 13. 例如:按钮开关控制灯

LD 块:FB_AssignToLamp.fb.ld

_c4ld_img_tutorial_assign_to_lamp

ST 中的等效项:

FUNCTION_BLOCK FB_AssignToLamp
VAR_INPUT    
    bPushButton : BOOL := FALSE;
END_VAR
VAR_OUTPUT
    bLamp : BOOL;
END_VAR
VAR
END_VAR
bLamp := bPushButton;


例 14. 示例计数器模块:FB_StorageCounter

反制措施FB_StorageCounter封装了一个 CTUD 计数器(预选:PV= 100)。

_c4ld_img_tutorial_storage_counter.png


例 15. 示例启动/停止块:FB_Latch

xMotor := (xStart OR xMotor) AND NOT xStop

第二支线ParallelClosed分支读取自身的输出xMotor(自持)xStop作为系列剧的开篇之作。

  • xStart简要地TRUE→xMotor保持不动(自身保持不动)

  • xStopTRUE→xMotor关机。

_c4ld_img_tutorial_latch.png


例 16. 运算符示例
  • 网络1:iSum := iValue1 + iValue2关于ADD -操作符块。

  • 网络2:xGreater := (iValue1 > iValue2)关于GT -操作块。

两个运算符块都具有EN启用输入和ENO启用输出。输入为:iValue1和iValue2输出结果为:iSum和xGreater

PROGRAM PRG_CompareArithmetic
VAR
    iValue1  : INT := 10; // first operand
    iValue2 : INT := 5;  // second operand
    iSum     : INT;       // result iValue1 + iValue2
    xGreater : BOOL;      // TRUE if iValue1 > iValue2
END_VAR
_c4ld_img_tutorial_compare_arithmetic.png


例 17. 例如:置位/复位线圈,SR锁存器PRG_SetReset
  • 网络1:xSet→ 将线圈 (S) 设置为xLatch(Modifier.Storage = 1)。

  • 网络2:xReset→ 将线圈 (R) 复位xLatch(Modifier.Storage = 2)。

xLatch遗留物xSet保存TRUE并由……重置xReset。

FUNCTION_BLOCK FB_Latch
VAR_INPUT
    xStart : BOOL; // start button (NO)    
    xStop  : BOOL; // stop button (logic: TRUE = pressed)
END_VAR
VAR_OUTPUT
    xMotor : BOOL; // latched motor output
END_VAR
VAR
END_VAR
_c4ld_img_tutorial_prg_setreset.png


例 18. 主程序示例:PLC_PRG
  • 网络1:

    实例化Storage1 : FB_StorageCounter并连接信号输入(xLightBarrierIn, xLightBarrierOut,xAck,xPreset)至信号灯输出端(xLampFull,xLampEmpty)以及用于显示(iDisplay)。

  • 网络2:

    xLamp50 := (iDisplay >= 50)通过GE比对器。

PROGRAM PLC_PRG
VAR
    Storage1   : FB_StorageCounter; // counter instance
    xLightBarrierIn  : BOOL; // infeed light barrier  -> xInfeed
    xLightBarrierOut : BOOL; // outfeed light barrier -> xOutfeed
    xAck       : BOOL; // acknowledge / reset   -> xReset
    xPreset    : BOOL; // preset to 100         -> xLoad
    xLampFull  : BOOL; // "storage full" lamp
    xLampEmpty : BOOL; // "storage empty" lamp
    xLamp50    : BOOL; // ">= 50% full" lamp
    iDisplay   : INT;  // stock display
END_VAR
_c4ld_img_tutorial_plc_prg.png