Linux でのプロセス間通信 (IPC)
この章では、Linux システムにおけるプロセス間通信 (IPC) メカニズムの概要を説明します。ここで説明したメカニズムは、一般的な Linux プロセス間の IPC と、特に 1 つまたは複数の Linux プロセス間の IPC の両方に適用されます CODESYS Control SL ランタイムシステムとその他のプロセス。
以下にリストされているメカニズムは Linux ベースのもので抽象化され、利用できるようになっています。 CODESYS 経由のランタイムシステム CODESYS ライブラリ。
メカニズム | 目的 | 関連する CODESYS 図書館 | [メモ] | 標準的な Linux API |
|---|---|---|---|---|
共有メモリ | プロセスは大量のデータを同時に交換します。 |
|
|
|
POSIX セマフォ (同期メカニズム) | 共有リソースまたはフロー制御へのアクセスを制御します |
| IEC アプリケーションのコードをブロックしても、周期操作や周期的な IEC タスクに大きな遅延が発生しないようにする必要があります。 |
|
ソケット (UDP、TCP、UNIX ドメインソケット) | ストリームベースまたはパケットベースで、ローカルまたはホスト間でメッセージを交換します |
|
|
|
使用説明書
テクノロジーに依存しない:
IPC メカニズムは特定のテクノロジーに限定されません。これらのテクノロジーはどのような方法でも組み合わせることができます。プロセスは、次のようなさまざまな言語やランタイム環境で実装できます。
ネイティブバイナリ (C/C++)
Python スクリプト
Java アプリケーション
からのIECコード CODESYS
IEC アプリケーションのモジュール化により、保守性、耐障害性、拡張性が向上します。
1つの大規模IECアプリケーションであっても、IPCは機能単位に分解すると便利です。次に例を示します。
モーション
フィールドバス
視覚化
データ交換/エクスポート
ネイティブインターフェースがない場合のメリット:
IPCは、必要なAPIが目的のテクノロジーで利用できない場合に使用できます。
例:Python ライブラリには必要な機能が含まれていますが、IEC → Unix ソケットまたは共有メモリ経由の通信で直接使用することはできません。