データセンターラダー言語・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モデル別命令にも対応しますので、お申し付けください。
コメント
コメントを投稿