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 TCPtongs-modbustcp利用可能
Modbus RTUtongs-modbusrtu利用可能
EtherCATtongs-ethercat開発中
Profibus DPtongs-profibus開発中
OPC-UAtongs-opcua計画中

各ブリッジは独立したプロセスとして動作します。anvild はブリッジを自動的に 起動、監視、再起動します。ブリッジのクラッシュは PLC にも他のブリッジにも 影響しません。


技術詳細

  • IPC フレームワーク:Anvil(独自ゼロコピー共有メモリ)
  • アーキテクチャ:バスセグメントごとに1つのパブリッシャ/サブスクライバチャネル
  • データフォーマット:生の IEC 変数 – シリアライゼーションなし、オーバーヘッドなし
  • プラットフォーム:x86_64、ARM64、ARMv7(Linux)
  • プロセスモデル:アクティブセグメントごとに1つのブリッジプロセス

Anvil – データが制御コマンドに鍛造される場所。

blacksmith@forgeiec.io