PLC制御用のプログラムをC#で作成できますか?どのように?
12 に答える
ありそうもない。C# では、その言語または任意の .NET 言語で開発されたアプリケーションを実行するために、共通言語ランタイム (CLR) の実装が必要です。さまざまな理由から、これをサポートする PLC が製造される可能性は非常に低いと言えます。
これで、OPC プロトコルを使用して、C# アプリケーションで PLC からデータを読み書きできるようになります。.NET Framework で使用できる OPC を使用するためのライブラリがいくつかあります。
これは、オプションをレイアウトするための非常に優れたWebサイトです。
Beckhoff は、TwinCAT 2 または 3 で使用できる、C# (およびその他の言語) を使用して PLC プログラムで変数を直接操作するためのインターフェイス (ADS) を実際に提供しています。Ahmed Yazan Tibi も正しく言ったように、C++ を直接TC3でもPLCプログラム。
こちらをご覧ください: http://www.beckhoff.com/english.asp?twincat/twincat_ads_communication_library.htm
ただし、これが役立つ前に、PLC プログラム内で変数を作成し、Beckhoff のシステム マネージャー ソフトウェアを使用してそれらを物理インターフェイスに「接続」する必要があります。
これは完全に可能ですが、次の方法で PLC 環境で直接プログラミングすることの重要な利点のいくつかを見落としたり無視したりすることになります。
- 確定的な動作
- 実行時の安全性
そうは言っても、それには多くの利点があります-あらゆる種類のフロントエンドテクノロジーを非常に簡単にインターフェースできることから、データをデータベースに直接記録すること、およびその間のすべてのもの.
乾杯、
ラズマタズ
Beckhoff の TwinCAT がその方法です。または、IEC 6113-3 を 5 つのスタイルのプログラミングで使用する必要があります。これには、最も近い「テキスト コードの外観」である「構造化テキスト」コードが含まれます。
警告、定数ループ (while( 1 ) ) を含むプログラムを作成しないでください。エラーとして検出されます。ループはグローバルであり、検証されています。
PLCプログラミングをお楽しみください。
Twincat バージョン 3 (Beckhoff PLC 開発環境) は、C# に加えて C++ プログラミング言語をサポートします。
JA | TwinCAT 3: Visual Studio 統合、言語サポート (SPS/IPC/DRIVES 2010)
いいえ、少なくとも今は違います。将来は?ほぼ確実にそうではありません、IMO。
PLC はハードウェアに固有すぎて、CLR を使用してプログラムを作成することはできません。
さまざまなタイプの PLC 間で移植可能なコードを作成することに関心がある場合、現時点で最も近い方法は、IEC 6113-3 構造化テキストコードを使用することです。
Omron、Siemens、Allen Bradley、Mitsubishi、Telemecanique など、主要な PLC メーカーのすべてではないにしても、ほとんどが現在これを使用できます。
はい、できます。
私は現在、ライブ環境でそれを行っています。TCP経由でModbusプロトコルを使用しています。
それが簡単なことだとか、PLC プログラミングに最適なオプションだとは言いませんが、実際に機能します。実際に稼働しているマシンが世界中にあり、近くの病院で動作し、稼働しています :)
C# である必要さえありません。TCP 経由で通信できる任意の言語を使用できます。TCP 経由で動作する Modbus インターフェイスをプログラムするだけで済みます。これは驚くほど簡単です。次に、Modbus TCP を使用してコマンドをセットアップの他の部分に変換するスレーブ コントローラーを入手する必要があります。
多くの人は、この時点で眉をひそめ、「決定論的な環境ではない」、「メモリ管理」、または私のお気に入りの「RTOS で実行されていない」などのくだらないことを言うでしょう。これらはすべてゴミです。RTOS や決定論的プログラミングを必要とする環境はほとんどありません。環境で RTOS が必要な場合、C# の使用はお勧めしませんが、ほとんどの環境と同様に、人間の知覚時間内に制御するだけでよい場合は、C# [ここで言語の選択を入力してください] で問題ありません。
ああ、ラダー プログラミングや、電気エンジニア向けに設計されたばかげたものは何でも、彼らの移行を容易にするために避けてください。
PLC プログラミングを行ってから長い時間が経ちましたが、PLC は、入力、タイマーなどに基づいて決定を下し、出力を送信する論理ゲートのセットにすぎませんか? では、vb や c# などの .Net 言語がこのロジックを実行できないのはなぜでしょうか?
それはplcに指示することの問題ではなく、ハードウェア、ドライバー、およびdllが利用可能な場合にplcを置き換えることができるかどうかの問題です。
まだ利用可能でない場合、確かにこれはすぐに来るでしょう。
plc のメモリからデータを取得または保存することで、.net アプリケーションから plc に通信できます。これはDBと呼ばれます。次に、これらの変数を使用して plc のコードを操作できます。
plc との TCPIP 通信は、シーメンス plc とのみ互換性のあるオープンソース API snap7 を使用して行うことができます。
おそらくもう少し信頼性の高いセットアップは、opc サーバーを介した通信です。これは、kepware または SNMP SIEMENS によって実行できます。
これらのプロトコルによって opc を介した通信を可能にする購入可能な .net API がいくつかあります (他のプロトコルもあります)。
- COM経由のOPC DA
- TCP または Web サービス経由の OPC UA
はい、C# を使用して PLC に読み書きするソフトウェアを確実に作成できます。ただし、多くの作業が必要になる場合があります。運が良ければ、関心のある PLC の .NET ライブラリを追跡できます。私の場合、VB.NET ライブラリを見つけた DirectLogic PLC EBC モジュールと、別の VB.NET ライブラリを見つけたAllen Bradley SLC Microでした。どちらの場合も、コードを少しリファクタリングしてから、C# アプリケーションから参照する必要がありました。
.NET ライブラリが見つからない場合は、通常、いくつかの C/C++ コードを入手して、それを自分で移植できます。さらに悪いことに、プリコンパイルされたライブラリしかない場合は、ネイティブの相互運用性が常に存在します。
ユニトロニクスはどうですか?unitronics のすべての plc モデルのソース コードを含む通信ドライバーがあります。
C# は PLC の世界では使用されません。最も近いものは、.NET Micro Framework を使用したFEZ Dominoのようなものです。