PLCで怒っている鳥?

画像 前のトピックでは、産業用PLCプログラミングの機能、およびそのようなプログラミングが従来のソフトウェアの開発にますます似ている理由を詳細に説明することを約束しました。 IEC61131-3 ST(Pascalの工業用方言)の言語についてはすでに書いていますが、 このhabratopikは優れた導入と考えることもできます。 この投稿は、PLCコンパイラ、開発環境、プログラミング、および言語とエコシステムの進化的機能に関するものです。



IEC61131コンパイラの主要メーカーは、CoDeSys、KW、およびSiemensの3社のみです。 シーメンスコンパイラはシーメンス製品で使用され、他のほとんどすべてのベンダーがCoDeSysまたはKWコンパイラのライセンスを取得しています。 したがって、3つの最も有名なコンパイラは、ドイツの小さな町で開発されています。



あまり一般的ではない言語コンパイラには共通の問題があります-それらのプロデューサーには、たとえばgccコミュニティやiccコマンドなどのリソースがありません。 したがって、絶えず変化するアーキテクチャ向けにバックエンドを最適化し、最新の命令セットを使用することはできません。 そのようなあまり最適化されていないコンパイラによってコンパイルされたコードは、すぐに「つまずき」ます-プロセッサのフロントエンド/デコーダで。 I-cacheミス(特にNehalem以前の場合はprefitcherが失敗する)およびその他の理由により、Vtuneの分析結果に多数のフロントエンドストールがはっきりと表示されます。 また、多くのエキゾチックまたは「若い」コンパイラバックエンドは、Atomプロセッサのよく知られた機能につまずきます。 もちろん、最も真の解決策はLLVMを使用することです。 誰もこれまで考えもしなかったことは奇妙です。 しかし、KWエンジニアも同様のアイデアを思いつきました。彼らはIEC61131をCLRにコンパイルするだけです。 CLRのパフォーマンスは、Microsoftによって既に十分に最適化されています。 さて、CLRはどこにありますか、C#があります。 KWのもう1つの機能は、IEC61131とC#を混合できることです。 そして、これらすべてをMicrosoft Visual Studioで開発します。



Cで書かれた同じプログラムのパフォーマンスに匹敵するPLCプログラムのパフォーマンスを他にどのように得ることができますか? たとえば、CでIEC61131-3トランスレータを作成し、Cコンパイラを使用することができますが、これはカナダの小さなGeb Automationチームによって行われます。 私は彼らの進歩を興味を持ってフォローしています。 Cでパフォーマンスが重要なモジュールを記述し、PLCコードから呼び出すこともできます。 IEC61131用のJNIの類似物を作成します。 ほとんどの人がこのアプローチをサポートしています-たとえば、Siemens、B&R、Beckhoff(おそらく他の人も、しかし、機能はこれまであまり標準的ではないため、個人的には経験していません)。



コンパイラーメーカーよりも、PLC開発に適したIDEメーカーが多くあります。 それらのリストは、人気のあるPLC鉄ベンダーのリストとほぼ一致しています(+ KWおよびCoDeSys、ほとんど独自の鉄を製造していません)。 開発環境は、シーメンス、ロックウェル、フェニックス、オムロン、ベッコフ、B&R、CoDeSys、KWによって作成されています。 それらのほとんどは独自のドラッグアンドドロップで独自の環境を記述しますが、上で書いたように、KWはMS Visual Studioを使用します。 Beckhoffは最近、CoDeSysベースの環境全体を独自のMS Visual Studioプラグインに置き換えました。 一般的な開発環境でPLCを開発およびデバッグできますが、内部にはCoDeSysのコンパイラがあります(KWコンパイラとは異なり、CLRコードではなくマシンコードをすぐに生成します)。



PLC開発の興味深い機能の1つは、同じコードをさまざまな角度から記述および表示できることです。IL「アンダーアセンブラー」、「STストレンジパスカル」、FBD「回路ブロック」、「LD電気ロジック」。 PLCのIDEの重要な機能(および一般的には存在理由)の1つは、これらのフォーム間の移行と変換です。 これはこれらのIDEに少し似ていますが、コードを生成する画像を描くというジャンルの創始者と、IDEで直接画像を再描画するコード-Delphiがあります。 興味深いことに、PLCを開発するとき、抽象化のレベルを上げてMathWorks Simulinkを使用できます。 有名なメーカーであるMatlabには、PLC開発者向けの特別な製品があり、Matlab関数、Simulinkモデル、フロー図からIEC61131-3 STコードを生成できます。 これはどのように見えるかです。



画像



「PLCコードの生成」ボタンをクリックすると、画像のグラフィックモデルが「ほぼPascal」に変換されます。



C怒っている鳥の記事のタイトルで、もちろん、私は興奮しました。 PLCに書き込むことも、実際のアクチュエータを使用することもできますが、これまでのところ、HMIを備えた産業用コントローラーで実行できるIEC61131-3 STに実装された麻雀を見てきました。



画像



実際には、HMIを除いて、何にも触れませんが、これは修正できます。 タイトル画像もIEC61131のプログラムであり、人に対して三目並べをするロボットを制御します。 この写真は、昨年11月にSPS DrivesのCoDeSysブースで撮影しました。 多くの人は、このゲームを有名にした主要な流通チャネルであるAngry Birdsをアプリストアに関連付けています。 PLCプログラム用の最初のApp Storeが最近登場しました! そのため、別の店で人気のおもちゃをファックするユニークな機会がありました。 App Store'aモデルがこの分野でどのように適用できるかはわかりません。これまでのところ、その中の3つのメーカーの50のアプリケーションしかカウントしていません。



したがって、次の一般的に一般的な技術は、Visual Studio、Matlab、Cコード、CLR / C#、さらにはアプリストアとリンクする、エキゾチックな言語でのPLCの開発に役立ちます。 もちろん、上記のすべてのコンパイラと環境では、X86を含む自動化で使用される多くのプロセッサアーキテクチャのコードを生成できます。 Intelの従業員として、x86プラットフォームがこの分野でますます使用されていることを非常に嬉しく思います。



All Articles