古い回答
この回答は、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 つの段落が何らかの形で役立つことを願っています。