top of page

【Blog】ChatGPTで三菱PLC FX5を解析・ST言語化する方法|GX Works3対応例

  • 執筆者の写真: 河野譲二
    河野譲二
  • 1 日前
  • 読了時間: 5分

数か月前にChatGPTでST言語を生成できるデモを行ったのですが、その第2弾を!


今回は三菱電機製FX5シリーズ×ChatGPTでお届けします!またST言語を生成するだけでなく、プログラムの解析ができるか検証してみたいと思います!



  • ChatGPTで三菱PLC FX5のラダープログラムを解析する


自分以外の人が設計したラダー・・・よく意味が分からないことありますよね?・・・ね?

そんな時は一度、プログラムをスクショしてAIに投げかけて見てください!

例えば↓のようなプログラム。

三菱PLC FX5シリーズの運転時間カウント用ラダープログラム
三菱PLC FX5シリーズの運転時間カウント用ラダープログラム

このプログラムをスクリーンショットし、生成AIに貼り付けた上で「この画像は三菱FX5シリーズを使用したラダープログラムです。内容を読み解き、日本語でプログラム内容を説明してください。」とプロンプトを打ち込みます。 すると、このように回答が↓↓↓


--------------------

画像のラダープログラムは、自動運転中の「生産時間」を秒・分・時で積算し、表示用データとして正規化する処理です。三菱 FX5 シリーズ(GX Works3)でよく使われる、運転時間カウンタの定番構成になっています。

以下、回路の流れに沿って説明します。

① 回路の前提条件(左側の接点)

  • M503:運転中

    • 装置が「自動運転中」であることを示す内部リレー

  • SM412:1秒クロック

    • FX5 の特殊リレー

    • 1秒周期でON/OFFするパルス

👉**「自動運転中かつ1秒ごと」**に、時間カウント処理が実行されます。

② 秒(s)のカウント処理:D2068

  • INC D2068

    • 1秒ごとに D2068 を +1

    • D2068 = 「生産時間(秒)」

  • 比較命令:K60 ≤ D2068

    • D2068 が 60秒以上になったかを監視

  • 条件成立時の処理:

    • INC D2066 → 分を +1

    • MOV K0 → D2068 → 秒を 0 にリセット

👉60秒で1分に繰り上げる処理です。

③ 分(m)のカウント処理:D2066

  • INC D2066

    • 秒が60になったタイミングで分を +1

  • 比較命令:K60 ≤ D2066

    • 分が 60分以上になったかを監視

  • 条件成立時の処理:

    • INC D2064 → 時を +1

    • MOV K0 → D2066 → 分を 0 にリセット

👉60分で1時間に繰り上げる処理です。

④ 時(h)のカウント処理:D2064

  • INC D2064

    • 分が60になったタイミングで時間を +1

  • 比較命令:K24 ≤ D2064

    • 時間が 24時間以上になったかを監視

  • 条件成立時の処理:

    • MOV K0 → D2064 → 時を 0 にリセット

👉**24時間で0に戻す(1日周期)**構成です。

⑤ デバイス割り当てまとめ

デバイス

内容

D2068

生産時間(秒)

D2066

生産時間(分)

D2064

生産時間(時)

いずれもコメントから、「TP 自動運転画面 生産時間 表示用」として、GOT(タッチパネル)表示に使われる想定です。

⑥ このプログラムの特徴・評価

  • FX5 標準の SM412(1秒クロック)を使った堅実な構成

  • 秒 → 分 → 時 の 多段カウンタ

  • 表示用として扱いやすい(60進・24進)

  • 異常に複雑なFBやタイマを使っていないため、

    • 保守性が高い

    • トラブル時に原因を追いやすい

一言でまとめると

自動運転中だけ、生産時間を1秒単位で積算し、秒・分・時に正規化してタッチパネルに表示するプログラム

です。

もし次に

  • 「停止中は止めたい/積算したくない」

  • 「電源OFF後も保持したい」

  • 「稼働率計算に使いたい」

などの発展用途があれば、そこも具体的に解説できます。

--------------------


このように日本語でわかりやすく解説してくれます!

理解しにくいプログラムがあったら、試しにAIに聞いてみると教えてくれるかもしれませんね!



  • キーエンスだけではない!三菱電機もST言語対応している!


KV-Xが発売されて、ST言語に興味をもった方もいるかと思いますが

実は三菱電機では以前より、ラダーとSTの両方記述が可能でした。


そこで・・・今回はスクショしたラダーをChatGPTが解説したものをST言語で生成し直してみます!


手順1:プロンプトを打ち込んでみる

 私「先ほどの解説を基に、GXW3で使用できるST言語を三菱電機仕様に則り作成してください」


やはりこのプロンプトだけでは、構文エラー等の不具合がでましたので、エラーの内容を2~3回ほど指摘した結果、このようなプログラムが完成しました! ----------------------

// ------------------------------------------------------------

// 生産時間(秒/分/時)積算 + リセット

// M503 : 運転中

// SM412 : 1秒クロック

// D2068 : 秒, D2066 : 分, D2064 : 時

// M5100 : SM412前回値(内部使用)※未使用番号に変更可

// M5101 : 立上りパルス(内部使用)※未使用番号に変更可

// M504 : 生産時間リセット(外部/画面ボタン等)※未使用番号に変更可

// ------------------------------------------------------------


// --- リセット優先 ---

IF M504 THEN

// 表示用(時分秒)をクリア

D2068 := 0;

D2066 := 0;

D2064 := 0;


// 立上り検出内部もクリア(誤カウント防止)

M5100 := FALSE;

M5101 := FALSE;


ELSE

// --- 1秒クロック立上り検出 ---

M5101 := SM412 AND (NOT M5100);

M5100 := SM412;


// --- 運転中のみ積算 ---

IF M503 AND M5101 THEN


// 秒 +1

D2068 := D2068 + 1;


// 60秒で分へ繰上げ

IF D2068 >= 60 THEN

D2068 := 0;

D2066 := D2066 + 1;

END_IF;


// 60分で時へ繰上げ

IF D2066 >= 60 THEN

D2066 := 0;

D2064 := D2064 + 1;

END_IF;


// 24時で0へ

IF D2064 >= 24 THEN

D2064 := 0;

END_IF;


END_IF;

END_IF;

----------------------

※途中でリセットの条件も加えてます。

動作は以下の通り↓↓↓

GX Works3でST言語をモニタしている画面(FX5)
GX Works3でST言語をモニタしている画面(FX5)
GOTで生産時間(秒・分・時)を表示する例1
GOTで生産時間(秒・分・時)を表示する例1

GOTで生産時間(秒・分・時)を表示する例2
GOTで生産時間(秒・分・時)を表示する例2


このように、少しずつAIによって制御設計の仕事も変化していくことでしょう!

私はまだまだAIを使いこなせていないので、是非こんな使い方あるよ!と情報交換出来たらうれしいです!





 
 
 

コメント


bottom of page