Anvil
Anvil – 鍛造の中核
すべての鍛冶場において、鉄床は中心的な道具です – ここで金属が成形され、焼入れ され、精錬されます。Anvil は PLC ランタイムとプロトコルブリッジの間の中間 層です。ここでプロセスデータが鍛造されます:受信、変換、そして正しい受信者に 配信されます。
Anvil はプロセス間通信のために独自のゼロコピー共有メモリトランスポート層を使用 します。シリアライゼーションなし、コピーなし、妥協なし。
アーキテクチャ
+--------------+ +------------+ +------------------+
| | | | | |
| PLC プログラム|<------->| anvild |<------->| Modbus ブリッジ |---> フィールド機器
| (IEC コード) | gRPC | (デーモン) | Anvil | EtherCAT ブリッジ|---> ドライブ
| | | | | Profibus ブリッジ |---> センサ
+--------------+ +------------+ | OPC-UA ブリッジ |---> SCADA
+------------------+
<--- Anvil --->
ゼロコピー IPC
共有メモリ
anvild とプロトコルブリッジ間のデータ交換は Anvil を通じて行われます –
ゼロコピー共有メモリに基づく高性能 IPC チャネルです。各セグメントは独自の通信
チャネルを取得します。
なぜ Anvil なのか?
マイクロ秒レベルのレイテンシ
従来の IPC メカニズム(パイプ、ソケット、メッセージキュー)はプロセス間でデータ をコピーします。Anvil はすべてのコピーを排除します。データは共有メモリに常駐 し、受信者が直接読み取ります。
| 方式 | 典型的なレイテンシ | コピー回数 |
|---|---|---|
| TCP ソケット | 50-200 マイクロ秒 | 2-4 |
| Unix ソケット | 10-50 マイクロ秒 | 2 |
| Anvil | < 1 マイクロ秒 | 0 |
産業品質
- 決定論的動作 – ホットパスでの動的メモリ割り当てなし
- ロックフリーアルゴリズム – ブロッキングなし、デッドロックなし
- パブリッシュ/サブスクライブモデル – プロデューサとコンシューマ間の疎結合
- 自動ライフサイクル管理 – ブリッジはクラッシュ時に監視・再起動
IEC プログラムでの PUBLISH/SUBSCRIBE
Anvil は IEC 61131-3 プログラミングにシームレスに統合されます:
VAR_GLOBAL PUBLISH 'Motors'
K1_Mains AT %QX0.0 : BOOL;
K1_Speed AT %QW10 : INT;
END_VAR
VAR_GLOBAL SUBSCRIBE 'Sensors'
Temperature AT %IW0 : INT;
Pressure AT %IW2 : INT;
END_VAR
PUBLISH/SUBSCRIBE キーワードは IEC 61131-3 標準に対する ForgeIEC 拡張です。 コンパイラは自動的に Anvil バインディングを生成します。
サポートされるプロトコル
| プロトコル | ブリッジ | ステータス |
|---|---|---|
| Modbus TCP | tongs-modbustcp | 利用可能 |
| Modbus RTU | tongs-modbusrtu | 利用可能 |
| EtherCAT | tongs-ethercat | 開発中 |
| Profibus DP | tongs-profibus | 開発中 |
| OPC-UA | tongs-opcua | 計画中 |
各ブリッジは独立したプロセスとして動作します。anvild はブリッジを自動的に
起動、監視、再起動します。ブリッジのクラッシュは PLC にも他のブリッジにも
影響しません。
技術詳細
- IPC フレームワーク:Anvil(独自ゼロコピー共有メモリ)
- アーキテクチャ:バスセグメントごとに1つのパブリッシャ/サブスクライバチャネル
- データフォーマット:生の IEC 変数 – シリアライゼーションなし、オーバーヘッドなし
- プラットフォーム:x86_64、ARM64、ARMv7(Linux)
- プロセスモデル:アクティブセグメントごとに1つのブリッジプロセス
Anvil – データが制御コマンドに鍛造される場所。