3

私は現在、PLC、特に WAGO 750-8206 PLC に精通しています。Linux OS を提供し、CoDeSys プログラムを実行できます。コントローラには、750-530、750-430、および 750-600 の I/O モジュールが接続されています。私が知りたいのはこれです:

PLC で実行され、デジタル入力と出力を取得/設定する C++ Linux アプリケーションを作成することは可能ですか?

さらに良いことに、「I/O と対話」し、すべてのロジックを処理し、同時に C++ Linux プログラムからアクセスできる CoDeSys プログラムを作成できますか? アイデアは次のとおりです。CoDeSys プログラムに、たとえば 2 つのデジタル入力をチェックしてもらいたいと考えています。両方が高い場合、変数を定義済みの値に設定する必要があります。Linux アプリケーションは、その変数を読み取り、さらに処理を実行できる必要があります (JSON データをサーバーなどに送信するなど)。

また、Linux アプリケーションがコマンドをトリガーするメッセージを受信したときに、デジタル出力を切り替える (またはアナログ出力の値を設定するなど) ために、Linux アプリケーションから CoDeSys プログラムにコマンドを送信できる必要があります。

私はこのトピックにまったく慣れていないので、このトピックに関する考えやコメントは大歓迎です。前もって感謝します!

4

2 に答える 2

8

あなたが望むかもしれない答え

先ほどの回答とは真逆の状況に変化しています。

WAGO の最近のボード サポート パッケージとドキュメントは、PLC200 ラインの変更と拡張を積極的にサポートします。具体的には、WAGO 750-8206 および 17 (2016 年 3 月現在) の他の PLC :

wago.us -> 製品 -> 自動化用コンポーネント -> モジュラー WAGO-I/O-SYSTEM、IP 20 (750/753 シリーズ)

あなたがしなければならないことは、彼らに連絡して、PLC200 ライン用の最新のボード サポート パッケージ (BSP) を要求することです。

前の回答から引用し、変更点をマークします。追加したものは太字で示しています。

あらすじ

  • PFC200 をハッキングして、カスタム バイナリを実行できますか? おそらく 絶対にそうです。プログラムが Linux-3.6.11 カーネルと glibc-2.16 で実行するコンテンツであり、「armhf」API 用にコンパイルされている限り、既存の ARM アプリケーションは、それが使用するライブラリもコピーすれば、そのまま実行されます。特に PFC200 用にコンパイルする必要さえありません。
  • それは簡単ですか、それとも速いですか?いいえはい、Linux コマンド ラインを恐れていないのであれば。ボード サポート パッケージ (BSP) が提供するクロス コンパイラを提供されている C ライブラリと共に使用し、これを実行してプログラムを PFC のフラッシュに転送して実行するのと同じくらい簡単です。
    scp your-program root@PFC200:/usr/bin
    ssh root@FC200 /usr/bin/your-program
    もちろん、Eclipse CDT を PFC200 の Cross Toolchain と一緒に使用し、Eclipse を構成してリモートでの実行とデバッグを行うことができます。
  • これは将来変更されますか?多分。PFC200 は北米ではかなり新しいことを思い出してください。あり、2014年9月にPFC200が登場しました

FORTE for Wagoの公開 HOWTO Building FORTEでは、4DIAC の IEC 61499 ランタイム環境である FORTE を実行するために初期 BSP を使用する方法が説明されています(リンク: sf.net/projects/fordiac ) ベンダーに中立な方法でソリューションを制御します。4DIAC は、IEC 61131-3 を拡張する IEC 61499 を実装し、コントローラー間の通信と動的再構成のサポートを強化します。

KBUS (I/O と対話する) に直接アクセスしたい場合は、現在 KBUS を担当できるアプリケーションは 1 つだけであることを知っておく必要があります。

したがって、CODESYS、FORTE、または独自の KBUS アプリケーションのいずれかで KBUS を担当できます。

2015 年の BSP には、PLC200 のすべての I/O (KBUS、CAN、MODBUS、PROFIBUS、および PFC200 のスイッチと LED を直接) を使用する方法の多くの例とデモがあります。カーネル、すべてのカーネル ドライバー、およびその他のオープン ソース コンポーネントのソースは、Board Support Package (BSP) で提供およびコンパイルされます。

ただし、WAGO によってゼロから開発され、GPL/オープン ソース コードに基づいていないライブラリとツールのソースは提供されていません。これらには、CANopen、PROFIBUS を実行する Application Device Interface (ADI)/Device Abstraction Layer (DAL) ライブラリが含まれます。 -スレーブと KBus (メイン PLC ユニットに接続されたすべての PLC I/O モジュールで使用されます)

CANopen は標準の Linux Socketcan API を使用してカーネルと通信しており、提供されている libsocketcan を使用して通常の socketcan プログラムを作成するだけで済みますが、KBus API は WAGO 固有の発明であり、リバース エンジニアリングを行う必要があります。 PLC のすべての電気的 I/O にアクセスするために WAGO の DAL を使用したくないが、DAL が文書化されており、その使用方法の例が BSP で提供されている場合。

ただし、CODESYS を使用する場合は、CODESYS が使用するライブラリを提供する方法を示す「codesys_lib_demo-0.1」サンプル ライブラリがあります。

于 2016-03-10T13:44:51.993 に答える
3

古い回答

この回答は、2014 年と 2015 年の状況に非常に特化したものでした。2016 年現在、誤った情報が含まれています。背景を提供するために、今のところはそのままにしておきます。


おそらく望まない簡単な答え

Codesys を使用して、JSON パケットをまとめて別の場所のサーバーに送信するコードを合理的に作成できます。JSON は単なるテキストであり、Codesys は C と非常によく似た方法でテキストを操作できます。また、Wago が提供するアドオン ライブラリを使用して、Codesys 内から利用できる多くのイーサネット プロトコルがあります。


今長い答え

最初にいくつかの背景

あなたは Wago と Codesys の哲学全般に不慣れなように思われるので、歴史を簡単に説明します。

Codesys は、Hard Realtime実行環境の構築と展開に使用されます。その結果を完全に理解せずにライブラリを使用すると、システム全体のパフォーマンスが不安定になる可能性があることを理解することが重要です (Codesys を屈服させ、プログラムでウォッチドッグ エラーをスローします)。多くの PLC は、クラッシュした場合に誰かを殺す可能性のある機器を制御していることを思い出してください。

Wago は、Linux を使用して低レベルのタスク スケジューリング用のプリエンプティブ RT カーネルを提供し、Codesys を構成して、多くの場合 Linux に付随する標準 C ライブラリを利用することを好みます。Wago はかなり長い間これを行ってきましたが、Codesys を介さずに (つまり、C++ が含まれていない IEC 61131 言語を使用することを意味する)カバーをはがすことは決して許可されませんでした。製品イメージ)。Wago で Linux のパワーが必要な場合は、完全に裸の OS を備えた特別な PLC を入手する必要があり、実際にはマニュアルもサポートもありません。また、Codesys ランタイム全体を放棄する必要がありました。

新しい PFC200 は、最近のモデルよりもはるかに多くの RAM とメモリを利用できるため、Codesys ランタイムを損なうことなく、より多くの標準的な Linuxユーザーランド スタック(ssh、ftp、http など) を含めることができ、彼らはこれを宣伝しています。しかし...彼らは、コンパイルツールと、Codesysライブラリへのコンパイルとリンク、または特殊なハードウェア(I / OモジュールとのインターフェースとなるWago KBUS)へのアクセスに必要なヘッダーファイルをまだ隠しています。


シナプス

  • PFC200 をハッキングして、カスタム バイナリを実行できますか? おそらくそうだ。
  • それは簡単ですか、それとも速いですか?いいえ。
  • これは将来変更されますか?多分。PFC200 は北米ではかなり新しいことを思い出してください。

あなたが知らないかもしれないこと

Codesys は必ずしも Wago のことを知っているわけでも気にしているわけでもありません。Linux OS を実行している Intel プロセッサをターゲットとする Codesys のターゲット プラットフォームを入手できます。Codesysは外部ライブラリへのアクセスをサポートしていますが (逆方向の通信は危険です)、多くの場合、C スタイルのインターフェイスを期待しており、Codesys が分析する C ヘッダーを定義することによってのみこれらのライブラリにアクセスできます。 C++ がシームレスに動作するようにします。できることは、C++ と Codesys の両方がアクセスする共有メモリのセグメントを作成することです。これが、情報を渡す方法です (同期は別の問題です)。

Linux で Codesys を実行するOpen Wago PLCを入手できます。Wago の IPC は、この目的のために特別に作られています。一般に、より多くの電力、メモリ、および通信機能を備えています。ただし、通常の Wago PLC の 2 倍以上の費用がかかります。

Wago をハッキングするアイデアをいじくり回したい場合は、Codesys のマニュアル (独自のものがあります) と Wago IPC のマニュアルをバラバラにする必要があり、Linux スタイルのプロセス間通信と/または動的ライブラリ。

また、ネイキッド Linux 750-8?? を搭載した古い Wago PLC もあります。また、付属のヘッダーを使用して Wago ハードウェアにアクセスする方法についての非常に優れたマニュアルもあります。

まず、Codesys がターゲット オペレーティング システムとどのように通信することを期待しているかを理解する必要があります。次に、逆方向に作業して、そのオペレーティング システム上にある Wago 固有のライブラリと通信できるようにします。Codesys をハイジャックしないように注意する必要があります。

追加の C++ ライブラリは、Codesys を引き継ぐのではなく、支援する必要があります。たとえば、同じデバイスで sqlite データベースをホストし、C++ を使用してデータベースを管理し、Codesys が利用できる非常にシンプルなインターフェイスを提供します。Codesys は関数を呼び出していくつかの値を渡すだけですが、C++ は実際に SQL クエリを作成し、それをデータベースに発行します (Codesys はこれがなぜ、どのように発生するかを知る必要はありません)。

少なくとも 1 つの段落が何らかの形で役立つことを願っています。

于 2015-05-22T08:17:55.540 に答える