データセンターラダー言語・ST言語プログラム例

 

以下に、DeepSeekの回答に基づくラダー制御の改善版を「ラダー図形式(擬似的記述)」および「構造化テキスト(ST)形式」で提示します。


✅ 前提:改善点を反映した仕様

  • H2センサー:即時緊急モード移行+換気+警報
  • THEセンサー:温度・湿度をアナログ値比較で制御(D0, D1)
  • FANBANK:温湿度に応じた段階制御(最小/中間/全開)
  • 排他制御:温度高⇔低、湿度高⇔低を同時に動作させない
  • モード:通常(M3)、警報(M4)、緊急(M5)、オーバーライド時も表示保持
  • 非常停止:全出力停止+換気ON

🪜 ラダー図形式(擬似記述)

[初期設定]
LD    SM0
MOV   22, D2      ; 温度設定
MOV   50, D3      ; 湿度設定
SET   M3          ; 通常モードON

[H2センサー検知処理]
LD    X0
AN    X5          ; オーバーライドなし
AN    X6          ; 非常停止なし
SET   M2          ; H2アラーム
SET   M5          ; 緊急モード
OUT   Y5          ; ブザーON
OUT   Y6          ; 非常換気ON
RST   M3

[温度高⇔低の排他制御]
LD    D0
>     D2
OUT   M10         ; Temp_High

LD    D2
>     D0
OUT   M11         ; Temp_Low

LD    M10
AN    M5
AN    X5
SET   M0
OUT   Y0          ; チラーON
OUT   Y2          ; DAHU冷却バルブON
OUT   Y3          ; FANBANK1
OUT   Y4          ; FANBANK2

LD    M11
AN    M5
AN    X5
SET   M0
RST   Y0
RST   Y2
OUT   Y3          ; FANBANK1のみ(最小換気)
RST   Y4

[湿度高⇔低の排他制御]
LD    D1
>     D3
OUT   M12         ; Humid_High

LD    D3
>     D1
OUT   M13         ; Humid_Low

LD    M12
AN    M5
AN    X5
SET   M1
OUT   Y1          ; ERユニットON
OUT   Y3
OUT   Y4

LD    M13
AN    M5
AN    X5
SET   M1
RST   Y1
OUT   Y3
RST   Y4

[正常LED表示制御]
LD    M3
ANDN  M2
OUT   Y7          ; システム正常LED

[非常停止処理]
LD    X6
RST   Y0
RST   Y1
RST   Y2
RST   Y3
RST   Y4
SET   Y6
SET   M5
RST   M3

[手動オーバーライド]
LD    X5
SET   M4
RST   M3
RST   M5

🧠 構造化テキスト(ST)形式

// 初期化
IF SM0 THEN
    D2 := 22; // 温度設定値
    D3 := 50; // 湿度設定値
    M3 := TRUE; // 通常モード
END_IF;

// H2センサ警報処理
IF X0 AND NOT X5 AND NOT X6 THEN
    M2 := TRUE;
    Y5 := TRUE; // 警報ブザー
    Y6 := TRUE; // 非常換気
    M3 := FALSE;
    M5 := TRUE;
END_IF;

// 温度判定(アナログ比較)
Temp_High := D0 > D2;
Temp_Low  := D0 < D2;

// 温度制御
IF (Temp_High OR Temp_Low) AND NOT M5 AND NOT X5 THEN
    M0 := TRUE;
    IF Temp_High THEN
        Y0 := TRUE; // チラーON
        Y2 := TRUE; // DAHU冷却
        Y3 := TRUE;
        Y4 := TRUE;
    ELSIF Temp_Low THEN
        Y0 := FALSE;
        Y2 := FALSE;
        Y3 := TRUE;
        Y4 := FALSE;
    END_IF;
END_IF;

// 湿度判定
Humid_High := D1 > D3;
Humid_Low  := D1 < D3;

// 湿度制御
IF (Humid_High OR Humid_Low) AND NOT M5 AND NOT X5 THEN
    M1 := TRUE;
    IF Humid_High THEN
        Y1 := TRUE;  // ERユニットON
        Y3 := TRUE;
        Y4 := TRUE;
    ELSIF Humid_Low THEN
        Y1 := FALSE;
        Y3 := TRUE;
        Y4 := FALSE;
    END_IF;
END_IF;

// システム正常LED
IF M3 AND NOT M2 THEN
    Y7 := TRUE;
ELSE
    Y7 := FALSE;
END_IF;

// 非常停止処理
IF X6 THEN
    Y0 := FALSE;
    Y1 := FALSE;
    Y2 := FALSE;
    Y3 := FALSE;
    Y4 := FALSE;
    Y6 := TRUE;
    M5 := TRUE;
    M3 := FALSE;
END_IF;

// 手動オーバーライド処理
IF X5 THEN
    M4 := TRUE;
    M3 := FALSE;
    M5 := FALSE;
END_IF;

🔚 補足

ご希望に応じて:

  • GX Works、TIA Portal、KV STUDIOなどに合わせた記述形式にも対応可能です。
  • グラフィカルなラダー図(PDFやCAD形式)としての出力も可能です。
  • データロギングやPIDチューニング機能の追加も対応可能です。

必要であれば、実際のHMI連動画面(温湿度表示・強制切替)例や、Melsec・Keyence・Omron等のPLCモデル別命令にも対応しますので、お申し付けください。

コメント

このブログの人気の投稿

ミライアイ内服薬は薬事法違反で、ほとんど効果がない詐欺ですか?

最高裁での上告理由書受理・却下の判断基準について

裁判官の忌避申立書の作成例