PLCのSTコードを他社方言に変換する(三菱⇔キーエンス⇔シーメンス等)
機種更新や他社PLCへの移行で既存のST/SCLコードを書き直したい。方言差の洗い出しが手作業では漏れるし、AIに丸投げすると存在しない命令を混ぜてくる。
おすすめAI
Claude — 長いコードの一貫した変換と「不確かな箇所は変換せず申告する」という制約への指示追従に強い
使い方(3分)
- 変換元のSTコードと、変換元・変換先の機種/ツール名を用意する
- 下のプロンプトの【】を自分の環境に置き換える
- コードと一緒にAIへ送る
- 出力の「要確認リスト」を公式マニュアルで1件ずつ潰す
- 変換先ツールでコンパイル→シミュレータ確認→段階的に実機検証
プロンプト(コピーしてAIに貼り付け)
あなたは複数メーカーのPLCでST言語の設計・移行を長年やってきたFAソフトウェアエンジニアです。以下のSTコードを移行先の方言に変換してください。 # 環境 - 変換元: 【メーカー・機種・開発ツール(例: 三菱電機 iQ-R / GX Works3)】 - 変換先: 【メーカー・機種・開発ツール(例: キーエンス KV-X / KV STUDIO Ver.12)】 - 変換先の変数の流儀: 【シンボリック変数のみ/デバイス併用可】 # 進め方(必ずこの順で) ステップ1: 変換元コードで使われている命令・ファンクション・デバイス・タイマを表で棚卸しする(種類/用途/変換先での対応方針の3列)。 ステップ2: 変換先に存在するか不確かな命令・表現を「要確認リスト」として分離する。**勝手にそれらしい命令へ置き換えない。** ステップ3: 変換コードを出力する。変更した行にはコメントで変更理由を付け、要確認箇所は (* 要確認: ○○ *) と明示する。 ステップ4: 変換で挙動が変わりうる箇所(タイマの単位、初回スキャン、ラッチ、暗黙の型変換)を重大度順に列挙する。 # 品質基準 - 変換先で実在が不確かな命令・FB名を創作しない - タイマ・カウンタの設定値は単位(TIME型リテラルか数値か)を必ず明示する - 非常停止・安全入力など安全関連部のロジックが含まれる場合は、変換対象から除外して「人間が設計すべき箇所」として報告する
精度を上げるコツ
- 一度に全部変換させず、1プログラム(1POU)ずつ。長いコードほど方言の混入率が上がります
- 「要確認リスト」が空の出力はむしろ疑ってください。不確かさを申告させるのがこのプロンプトの肝です
- 変換元と変換先の対応表(デバイス・命令)が2〜3回分たまったら、それを毎回プロンプトに同梱すると精度が安定します
もっと深掘りする追い打ちプロンプト
最初の回答が返ってきたら、続けてこれらを送ると精度と実用度が上がります。
- 要確認リストの【○○】について、変換先での標準的な実現方法の候補を、確実性が高い順に3つ挙げて
- 変換前後のコードを1行ずつ対応させた対照表を作って。挙動が同一と言い切れない行に印を付けて
- このコードのタイマ・カウンタだけを抜き出して、変換先の流儀(FB宣言)に統一した宣言部を書いて
AIの出力は移行の下書きです。実機投入前に必ず変換先ツールでのコンパイル・シミュレーション・段階的な実機検証を行ってください。安全関連部(非常停止・ライトカーテン等)はAI変換の対象にせず、機能安全の検証プロセスに従って人間が設計・承認してください。