4

既存の C コードをIEC 61131-3準拠の PLCに移植する必要があります。

コードを個別の機能ブロックに分割し、それらのブロックを標準ソリューション (ラダー、FB、構造化テキストなど) に織り込むオプションがいくつかあります。ただし、これには、各機能ブロックを構築するために C コードを分割する必要があります。

IEC 仕様を見て、IEC 命令リスト形式がコンパイラのターゲット言語になる可能性があることに気付きました。ウィキペディアの記事には、2 つの開発ツールがリストされています。

  1. コードシス
  2. ベレミス

しかし、これらは、CからIECではなく、IEC言語をCにコンパイルすることをターゲットにしているようです。

もう 1 つの考えられる解決策は、C から Pascal へのトランスレータを介して C コードをプッシュし、それを構造化テキストソリューションの出発点として使用することです。

これらのいずれでもない場合は、コードを機能ブロックに分割するルートをたどります。

編集

mlieson の返信に促されたように、C コードは既存のリアルタイム制御システムであることに言及する必要がありました。したがって、プログラムのアルゴリズムはすでに PLC 環境に適合しているはずです。

4

7 に答える 7

4

この答えは遅すぎるかもしれませんが、外部ライブラリのおかげでCoDeSysからCコードを呼び出すことができます。

ドキュメントは、CoDeSysフォーラム(http://forum-en.3s-software.com/viewtopic.php?t=620 )にあります。

これにより、わずかな変更を加えてCコードをPLCに使用できるようになります。関数または関数ブロックのインターフェースを定義する必要があります。

于 2009-10-15T12:25:32.470 に答える
3

私の推測では、C から Pascal への翻訳者は、苦労するだけの価値があるとは言えません。構造化テキストは Pascal によく似ていますが、どこでも修正が必要な違いがあります。

バグの問題ではありませんが、PLC の実行環境が少し異なることを忘れないでください。AC アプリケーションは main() で開始し、main() が戻ると終了します。PLC はそれを main() を何度も何度も、1 秒あたり 100 回呼び出しますが、決して終了しません。通常、時間のかかる計算と I/O は、C アプリケーションが使用する方法とは異なる方法でコーディングする必要があります。

Cソースが何千行ものコードでない限り、書き直してください。

于 2009-04-16T22:58:13.293 に答える
2

それは無理だ。簡単に言うと、IL言語は4GLです(つまり、ドメイン、および他のIEC 61131-3言語(ST、FBD、LD、SFC)に限定されます)。C言語は3GLです。

問題を理解するために、質問に答えてみてください。ポインターを使用してIL操作で表現する方法はどれですか。たとえば、ポインタで関数を明示的に呼び出す場合です。割り込みはどうですか?周辺機器への低レベルのアクセス?

(実際には、もっと問題があります)

ところで、Reflex言語、別名「Cwithprocesses」があります。Reflexは、Cのような構文を持つ制御ドメイン用の4GLです。しかし、既知の翻訳者はCコードとPythonコードを生成します。

于 2011-08-17T17:04:34.333 に答える
1

変換するコードの量が数千行の場合は、手動で再コーディングするのがおそらく最善の策です。

変換するコードが大量にある場合は、自動化ツールが非常に効果的です。DMS Software Reengineering Toolkitを使用して、トランスレータを構築し、メカニカル モーション ダイアグラムを RLL (PLC) コードにマッピングしました。DMS には、完全な C パーサー/アナライザー/フロント エンドもあります。CからRLLへのコードを構築するためのピースがあります。

これは簡単な作業ではありません。DMS を希望するものに似たものに構成するには、おそらく 6 ~ 12 人月かかります。それが手作業で行うよりも少ない場合は、それが正しい方法です。

于 2009-10-03T06:07:24.167 に答える
1

C ブロックを使用できる IEC 開発環境とターゲット ハードウェアがいくつかあります... IEC-61131 準拠のターゲットである必要がある理由についても見ていきます。私は、コンプライアンスと、それがしゃがむことを意味しない理由について詳しく書いてきました。SOFTplc corp は、ユーザー定義のロード可能なモジュールで確かに役立ちます...そしてそれらはCである可能性があります..

Schneider は C 関数ブロックもサポートしています...

Labviewも!なぜIECが重要なのかわからない それだけです!! コンパイラが存在する場合、確かに悪いコードが作成されます:)

于 2011-08-21T20:17:16.477 に答える
0

あなたの最善の策は、C コードを PLC 機能ブロックとして再コーディングできる小さな部分に分割し、構造化テキストで書き換えるブロックごとに C から PASCAL へのコンバーターを使用することです。自動変換はおそらくあなたを失望させるので、多くの手作業を行う準備をしてください.

このページもご覧ください: http://www.control.com/thread/1026228786

于 2011-08-19T13:34:19.057 に答える