PLCコード変換:ラダーからストラクチャードテキストへ、 Siemens から Rockwell へ
TIA Portal、Studio 5000、TwinCAT のプログラムを貼り付けてください。PLC Gym はどのメーカーのコードかを判断し、もう一方のメーカーのコードにして返します。両方のバージョンを並べて実行し、違いを1行ずつ示します。自分のコードで別のメーカーを学べ、移行の手始めにもなります。変換するのはロジックだけなので、実機でのテストは必要です。
- すべての行を対応付け ラングや行にカーソルを合わせると、元の場所がわかります
- 推測ではなく確認済み 当社のシミュレータで、両方のプログラムを同じ入力でスキャンごとに実行します
- コードは保存されません 変換のために当社サーバーに送られますが、保存も記録もされません
Siemens か Rockwell のどちらかしか知りませんか?
自分のコードを貼り付けて、もう一方のメーカーならどう書くかを見てみましょう。あなたにとっての違いと、それぞれの違いがある行のまとめも表示されます。その後、操作パネルで実行し、ミッションで試せます。学習と移行の手始めのためのもので、稼働中の設備で使うコードではありません。
Siemens から Rockwell へ
TIA Portal から Studio 5000 へ、そして SCL からストラクチャードテキストへ
- タイマ
#Delay(IN := #Start, PT := T#2s);Delay.PRE := 2000; Delay.TimerEnable := Start; TONR(Delay);- 完了ビット
#Delay.QDelay.DN- ワンショット
#Edge(CLK := #Eye);Edge.InputBit := Eye; OSRI(Edge);
Rockwell から Siemens へ
Studio 5000 から TIA Portal へ、そしてストラクチャードテキストから SCL へ
- タイマ
Delay.PRE := 2000; Delay.TimerEnable := Start; TONR(Delay);#Delay(IN := #Start, PT := T#2s);- 完了ビット
Delay.DN#Delay.Q- ワンショット
Edge.InputBit := Eye; OSRI(Edge);#Edge(CLK := #Eye);
Siemens、Rockwell、TwinCAT 早見表: 1つの命令、3つの名前
変換ツールはこれらを自動で対応付けます。現場を移るときの便利な早見表にもなります。
| はたらき | Rockwell Studio 5000 | Siemens TIA Portal | Beckhoff TwinCAT 3 ストラクチャードテキスト |
|---|---|---|---|
| ノーマルオープンとノーマルクローズの接点 | XIC, XIO | a接点(NO)と b接点(NC) | 論理で書く:A AND NOT B |
| コイル、ラッチ、アンラッチ | OTE, OTL, OTU | コイル、S、R | x := …, IF … THEN x := TRUE |
| オンディレイタイマ | TIMER 上の TON(.PRE .ACC .DN)、ST では FBD_TIMER 上の TONR | TON_TIME (PT, ET, Q) | TON (PT, ET, Q) |
| オフディレイタイマ | TOF。ST では TOFR | TOF_TIME | TOF |
| カウントアップカウンタ | COUNTER 上の CTU、RES でリセット。ST では CTUD | IEC_COUNTER 上の CTU(PV, CV, Q, R) | CTU (PV, CV, Q, RESET) |
| 立ち上がり | ONS、OSR。ST では OSRI | P 接点、P_TRIG、R_TRIG | R_TRIG |
| 立ち下がり | OSF。ST では OSFI | N 接点、N_TRIG、F_TRIG | F_TRIG |
| 値を転送する | MOVE(v36 より前は MOV) | MOVE | x := y |
| 比較 | EQ, NE, LT, GT, LE, GE(v36 より前は EQU, NEQ, LES, GRT, LEQ, GEQ) | CMP ==, <>, <, >, <=, >= | =, <>, <, >, <=, >= |
| 計算 | ADD, SUB, MUL, DIV, CPT | ADD, SUB, MUL, DIV, CALCULATE | +, -, *, / |
| アナログ入力をスケーリングする | SCP | NORM_X、続けて SCALE_X | 数式として書く |
| 整数 | DINT(INT もありますが、DINT が標準です) | Int, DInt | INT, DINT |
| 時間 | DINT のミリ秒:2000 | 時間:T#2s | TIME:T#2S |
| ブロックの中のタグ | プログラムタグ、接頭辞なし | #Name (block interface) | 接頭辞なし(VAR セクション) |
| 自分のデータ型 | UDT(BOOL が隠れた SINT にまとめられます) | PLC データ型:TYPE … STRUCT | DUT の中の STRUCT |
| 自分のブロック | 裏付けとなるタグを持つアドオン命令(AOI) | FB。マルチインスタンスとして呼び出します | インスタンスを持つ FUNCTION_BLOCK |
| 呼び出し方 | PumpCtl(Pump1, Start, Stop, Run):インスタンスが先、必須パラメータは順番どおり | #Pump1(Start := …, Run => …) | Pump1(Start := …, Run => …) |
| ラングがオフのブロック | EnableIn が偽になると、ロジックは動きません(EnableInFalse ルーチンがあれば、それが動きます) | EN がオフ:FB は呼び出されません(ENO は偽) | 呼び出されません:呼び出しを IF の中に入れます |
| 起動時に1回だけ実行 | AOI の Prescan ルーチン:プリスキャン中、コントローラが Run になるときに動きます | 起動 OB(OB100)、または FB の中の初回呼び出しフラグ | FB の中の初回呼び出しフラグ(または FB_init) |
変換できるもの、できないもの
ロジックを変換します。引き継げないものは、行番号と対処法を添えて一覧にします。黙って省くことはありません。
変換できる
- ラダーロジックからストラクチャードテキストへ、いつでも
- ストラクチャードテキストからラダーへ、ロジックがラダーに合う場合:接点、コイル、セットとリセット、タイマ、カウンタ、エッジ、比較、移動、計算
- Siemens から Rockwell へ、またその逆を、ストラクチャードテキストまたはラダーで、そして TwinCAT は両方向に
- タイマとカウンタのメンバー(IN/PT/Q/ET と TimerEnable/PRE/DN/ACC の対応)、# 付きのローカル、データ型、エッジ、MOVE と MOV、比較、計算
- コメント付きのタグ宣言と、コード内のコメント
- 自分のファンクションブロック、アドオン命令、UDT:定義、呼び出し、すべての Tag.Member を、各メーカー独自の形式で
- ラダーで書かれた AOI を、Prescan と EnableInFalse のルーチンごと変換:ラダーが変換先ならラングのまま、そうでなければストラクチャードテキストとして書き出します
- TIA Portal の XML 書き出しからの Siemens LAD と FBD のブロック:各ネットワークは、同じ働きをする SCL として読み取られます
- プログラム全体を一度に:データブロック付きの Siemens ソース、メインルーチンがほかを呼び出す Studio 5000 のプログラム、一緒に開いた複数の TwinCAT や TIA Portal のファイル
- コピーとフィルを使う Studio 5000 のラング(COP、CPS、FLL、最大64要素)、両方向に数えるカウンタ(CTU と CTD)、ビットロジック、MOD、ABS、SQR、MVM
- パルスタイマ(TP)を、それを持たない Studio 5000 のストラクチャードテキストへ:TONR を使って書き出し、元のものと1スキャンずつ照らし合わせて確認します
- テキストファイルとして保存できるレポート:あなたの対応が必要な点、何がなぜ変わったか、並べて比べるチェックで試したことと試さなかったこと
変換できない
- ハードウェア構成、I/O アドレス、ネットワーク、通信(MSG、PUT/GET、EtherNet/IP、PROFINET)
- HMI のタグ、アラーム、画面
- PID、モーション、インバータのような、メーカーのライブラリブロック
- ロジックがファンクションブロックダイアグラムか SFC の AOI:印が付くので、先にそのルーチンをラダーかストラクチャードテキストで書き直せます
- TwinCAT のメソッド、プロパティ、アクション、ユニオン
- 文字列:それを使う行には印が付き、あなたに任されます
- ラダーへの FOR ループ:行と提案つきで印が付きます
- STL、IL、SFC、GRAPH、そして Studio 5000 のファンクションブロックダイアグラム
証明のしくみ
コードは中立な形式に読み込まれ、変換先のメーカーの書き方で書き出されます。Logix ではメンバーへの書き込みと TONR、SCL では TON_TIME の呼び出し1つ、T#2s または 2000 といった形です。
PLC Gym のシミュレータが、元のプログラムと変換後のプログラムを 3,000 スキャン(シミュレーション上の60秒)実行します。入力を押す、押し続ける、離すといった操作を行い、数値はコードが比較するすべての境界値をまたぐように変化させます。
すべての出力を、すべてのスキャンで比較します。メーカー間で本当に違いがある箇所(最初のスキャンでのワンショット、カウンタのリセット)では、動作が一致するようにコードを書き、そのことを明記します。
PLC Gym のシミュレータで実行するので、ロジックの確認としては強力ですが、あなたの設備での動作を保証するものではありません。現場の決まりに従って実機でテストしてください。実行の様子を見たい場合は、「実行する」を押すと、変換したプログラムが次の場所で開きます: オンライン PLC シミュレータの操作パネル。または 3D 機械で PLC コードをテスト.
エンジニアからよくある質問
変換ツールを信頼する前に、みんなが確認すること。
Siemens の TIA Portal のコードを、Rockwell の Studio 5000 に変換できますか?
はい。SCL を貼り付けるか .scl ファイルを開くと、デフォルトでは Rockwell に、ストラクチャードテキストかラダーとして変換されます。SCL からストラクチャードテキストへの変換は、タグ名以外も変わります。TON_TIME の呼び出しは .PRE と .TimerEnable 付きの TONR になり、R_TRIG は OSRI に、.Q は .DN に、T#2s は 2000 に、INT は DINT になります。取り込める .L5X をダウンロードできます。変換するのはロジックだけです。そのファイルは、PLC Gym に読み戻して確かめただけなので、Studio 5000 での取り込みを必ず確認してください。
Rockwell の Studio 5000 のコードを、Siemens の TIA Portal に変換できますか?
はい。ストラクチャードテキストかラングのテキストを貼り付けるか、L5X の書き出しを開くと、デフォルトでは Siemens に変換されます。ストラクチャードテキストからは SCL、ラダーからは LAD です。TONR タイマは TON_TIME に、CTUD カウンタは CTU に、OSRI のワンショットは R_TRIG に、DN は Q に、ACC は ET か CV になり、ローカルタグにはすべて SCL で # が付きます。
Siemens は分かりますが、Rockwell は分かりません。これで学べますか?
はい。逆の場合も同じです。自分のコードを貼り付けると、あなたにとって何が違うかの要約が出ます。タイマ、ワンショット、タグ名がどう変わるかと、それぞれがプログラムの何行目にあるかです。そのあと、変換したプログラムを PLC Gym の操作パネルで動かし、そのメーカーの言語でミッションを遊べます。そのほかは、このページのチートシートにまとめてあります。
変換したコードは、そのまま実際のプラントで使えますか?
いいえ。学ぶための方法、そして移行の足がかりとして使ってください。変換するのはロジックだけです。ハードウェア構成、I/O アドレス、通信、HMI、PID、モーション、インバータは、あなたが対応します。並べて比べるチェックは、あなたの機械ではなく PLC Gym のシミュレータで動き、ファイルは、メーカー自身のソフトウェアで確認する必要があります。同僚のコードを見るときと同じようにレビューし、現場の決まりに従って、実際の機械でテストしてください。
どのメーカーのコードか、どうやって分かりますか?
コードを読んで判断します。翻訳者が言語を見分けるのと同じです。タグ名の前の # は Siemens、TONR や .DN は Studio 5000、# のないタグの T#2s は TwinCAT を意味します。見つけたものを教えてくれ、どのメーカーのコードでもありうる場合は、そう伝えて、選ばせてくれます。ファイルは、種類が分かります。.scl、.L5X、.TcPOU、TIA Portal の .xml 書き出しです。
TIA Portal の Siemens ラダー(LAD)と FBD も読めますか?
はい。TIA Portal の XML 書き出しから読めます。LAD や FBD のブロックには .scl ソースがないので、XML が TIA Portal から出す方法です。V16 以降では、プロジェクトツリーの「Version control interface」の下にワークスペースを追加してブロックを入れると、TIA Portal がそのブロックを .xml ファイルとして書き出します。Openness スクリプトも同じファイルを書き出します。各ネットワークは、同じ働きをする SCL として読み取られ、コイルは入力につながるすべてとして、ボックスは呼び出しとして扱われ、そこから Rockwell や TwinCAT へ、ストラクチャードテキストかラダーで変換されます。ブロックのデータブロックとデータ型も一緒に開くと、まとめて読まれます。このリーダーは、Siemens による形式の説明をもとに作られていて、すべての TIA Portal バージョンで試したわけではないので、読めない部分があるネットワークは名前が示され、あなたに任され、ブロックの残りはその周りで変換されます。
ラダーロジックをストラクチャードテキストに変換できますか?
はい、いつでもできます。各ラングは、ストラクチャードテキストの1〜2行になります。接点は AND と OR に、コイルは代入に、OTL と OTU は IF … THEN に、タイマ、カウンタ、ワンショットは、変換先メーカー独自の書き方の呼び出しになります。ラングのコメントは、コメントとして引き継がれます。
どんなストラクチャードテキストでも、ラダーにできますか?
ほとんどの制御ロジックはできます。接点、コイル、セットとリセット、タイマ、カウンタ、エッジ、比較、移動、計算です。FOR ループはできません。ラダーは、1スキャンにつき各ラングを1回実行するからです。そのため、変換ツールはその行に印を付け、要素ごとに1つのラングを書くか、その部分をストラクチャードテキストのままにすることを提案します。
自分のファンクションブロック、アドオン命令、UDT も変換できますか?
はい。Studio 5000 の AOI は、TIA Portal の FB や TwinCAT の FUNCTION_BLOCK になり、その逆もできます。ラダーで書かれた AOI は、TIA Portal の LAD に変換するときはラダーのままで、それ以外ではストラクチャードテキストになります。UDT は、PLC データ型や TwinCAT の STRUCT になります。呼び出しも変わります。Studio 5000 は、インスタンスのあとに必須パラメータを順番に渡し、TIA Portal と TwinCAT は、各パラメータに名前を付けます。入力の構造体は、AOI には InOut として渡され、TIME は DINT のミリ秒になり、UDT の既定値は、Logix の UDT が既定値を持てないため、タグに移されます。すべての変更はレポートに載り、検証の実行では、構造体の各メンバーも比べます。
TIA Portal や TwinCAT では、AOI の EnableInFalse と Prescan のルーチンはどうなりますか?
どちらにもスキャンモードのルーチンはないので、ファンクションブロックが同じ仕事を自分で行います。EnableInFalse は EnableIn 入力になります。ブロックは毎スキャン呼び出され、EnableIn にはそのラングの値が入り、ラングがオフのときは、その IF … ELSE が EnableInFalse のロジックを動かします。Prescan は、ブロックの最初の呼び出しの先頭で、1回だけ動くコードになります。Postscan は SFC のアクションが終わるときにしか動かないので、Studio 5000 用に残し、ほかでは注記します。検証の実行では、両方のバージョンが同じように動くことを確認します。
変換したコードが同じことをするかどうか、どうやって分かりますか?
PLC Gym は、元のプログラムと変換したプログラムを、シミュレータの中で並べて数千スキャン動かし、両方に同じ入力を与えて、毎スキャンのすべての出力を比べます。数値の入力は、あなたのコードの限界値と、その型の全範囲に振られ、ページには試した範囲が表示されます。「一致」と表示されるのは、プログラムのすべての行が実行され、オンとオフのすべての出力が変化し、すべてのタイマとカウンタが実行中に最後まで進んだときだけです。試せなかったものは名前が示され、結果は「一部」になります。一致は、そのテストの範囲で合ったという意味で、保証ではありません。結果は、ロジックアナライザの波形として見られます。「実行してみる」を押すと、変換したプログラムが、そのタグから作ったボタン、スイッチ、ランプ付きの PLC Gym の操作パネルで開くので、自分で試せます。いつも、現場の決まりに従って、実際の機械でテストしてください。
変換ツールは無料ですか?
用意されている例は、アカウントなしで誰でも使えます。すべてのアカウントに、2026年12月5日 まで Pro 無料体験がつくので、それまでは、無料アカウントでも、自分のコードをいくらでも変換できます。そのあとは、無料アカウントで自分のプログラム3つまで変換でき、同じコードをもう一度変換したり、別のメーカーに変換したりしても、1つ分には数えません。
私のコードは、どこかにアップロードされますか?
あなたのコードは、変換のために、暗号化された接続でサーバーに送られ、結果がすぐに返ります。保存もログ記録もしておらず、サイト改善に使うセッション録画にも映りません。無料アカウントでは、同じコードが二重に数えられないよう、最大3つのプログラムの、ぼかした指紋だけを保存します。元のコードには戻せず、アカウントが消えると、一緒に消えます。
結果を TIA Portal、Studio 5000、TwinCAT に取り込めますか?
はい。.scl ソースをダウンロードして TIA Portal の「Generate blocks from source」を使うか、Studio 5000 に取り込む .L5X、または TwinCAT 3 のプロジェクトに追加する .TcPOU をダウンロードします。自分の型やブロックも一緒に出ます。.scl と .L5X の中に入るか、TwinCAT 用には .TcDUT と .TcPOU ファイルの zip になります。TIA Portal にはラダーのテキスト形式がないので、Siemens の LAD では、表示されたネットワークを描き直すか、SCL ファイルを使います。これらのファイルはベータ版として扱ってください。.L5X は、PLC Gym に読み戻して確かめただけなので、取り込みはそれぞれ、メーカー自身のソフトウェアで確認してください。
何が変換されませんか?
ロジックだけです。ハードウェア構成、通信、HMI のタグ、PID やモーションのようなメーカーのライブラリブロックは変換されません。自分のファンクションブロック、AOI、UDT は、ロジックがラダーかストラクチャードテキストなら変換されます。持ち越せないものは、行と対処方法つきで一覧に載り、黙って抜けることはありません。
メーカー間で変換していますか?コツの交換はこちらで: ロッカールーム.