PLCシミュレーションの苦い思い出
ローランド・シュルツ氏による 2002 年の論文からのこのかさばる声明は、全体として非常にうまくまとめられています。
要するに、「試行とテストはエラーの発見に役立ちます」.
ここでは、生産プラント全体のシミュレーションについて書いているのではなく、原則を自動化プログラムやユーザー プロジェクトなどの個々のユニット (コンポーネント) にさらに分解します。
以前は、フエニックス コンタクトの若手社員として、プログラミングも学ばなければならず、コントローラのシミュレーションができればよかったと思っていました。 「試行錯誤」によって、ブロックまたはプログラムの動作と機能について詳しく知ることができます。残念ながら、当時は存在せず、その後の PLC シミュレーションは非常に限られたものでした。 IEC61131-3 コードは適切にシミュレートできましたが、特別なデバイスのサポートや、Intel と ARM または Motorola ベースのシステム間のコードの動作の違いが欠けていました。
これらの考えと、PLC の「古典的な」シミュレーションで経験した苦痛の記憶を念頭に置いて、大きな労力を費やすことなく付加価値のあるものを本当に見つけようと試みました。一方ではシミュレーションの開発における努力と、後でそれを使用する際に生じる可能性のある努力。
ユーザーとして、私は自分のプロジェクトを PLC またはシミュレーションに、せいぜいマウス クリックで送信できるようにしたいと考えています。私はプロセッサ アーキテクチャに注意を払いたくありません。また、シミュレーションでサポートされていないコード内の関数を非表示にしたり、さらに悪いことに削除したりすることを強制されたくありません。
実際の制御ハードウェアでも使用されている、シミュレーションで実際のファームウェアを使用するよりも明白なことはありますか?
最近では、Windows でさまざまなオペレーティング システムを実行できるだけでなく、本格的なシステム エミュレーションがあります。また、さまざまなプロセッサ アーキテクチャとその特性のエミュレーションも可能です。
当社のコントローラーが Linux ベースであることは周知の事実です。しかし、ここでも異なるプロセッサ アーキテクチャが使用されることがコードの開発にとって重要です。
エンジニアリングでは、私たちの場合は PLCnext エンジニアです。顧客は、コントローラーの IP アドレスまたはシミュレーションのどちらかを選択できる必要があります。マウスを 1 回クリックするだけで、さらなるコードの適応やバイナリ コードの互換性について心配する必要はありません。
それらの考えから何が生まれましたか?
システム エミュレーション QEMU を見つけ、それを使用してコントローラーをシミュレートしました。 QEMU は 「オープン ソース マシン エミュレーション」 です。 まさに私たちが求めていたものを提供してくれます。
「ただ」 その中でファームウェアを実行すると、QEMU は PLCnext テクノロジの完全な Linux システムをエミュレートします。これには、一部の PLCnext コントローラの ARM プロセッサ アーキテクチャが含まれます。PLCnext シミュレーションが誕生しました。確かに、いくつかの小さな制限が含まれていました。 PROFINET 通信またはその他の通信プロトコルが無効になっています。ただし、OPC UA サーバーなどは影響を受けません。
ただし、PLCnext Technology のすべての特別な機能は維持できます。そのため、C/C++、C#、または Matlab Simulink プログラムとコンポーネントをシミュレーションに送信することもできます。また、ストアで特定のアプリケーションを見つけることができる APP を実行に移すこともできます。
さらにいくつかの制限があることは明らかです。このようなシミュレートされたシステムから決定論は期待できません。また、Windows システムの負荷に応じて、PLCnext シミュレーションにいずれかのウォッチドッグが存在する場合があります。しかし、そのような場合、Windows システムで常にシミュレーション プロセスの優先度を高くすることができ、ウォッチドッグ エラーはすぐに解決されます。
そして今、ついにそれを手に入れました。シミュレーション、あるいは定義によってはコントローラーのエミュレーションでさえあります。しかし残念なことに、それなしでプログラミングを学ばなければなりませんでした。
産業技術