Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

RemoteTwinCAT

NOTE: このリンクはRustからのみ使用可能である. 同等の機能がRemoteで提供されている.

前述の通り, AUTD3とTwinCATを使う場合はWindows OSと特定のネットワークアダプタが必要になる. Windows以外のPCで開発したい場合は, RemoteTwinCAT linkを用いてLinux/macOSから遠隔でTwinCATを操作することができる.

Install

cargo add autd3-link-twincat --features remote

セットアップ

RemoteTwinCATを使用する場合はPCを2台用意する必要がある. この時, 片方のPCはTwinCATが使えるPCである必要がある. このPCをここでは“サーバ“と呼ぶ. 一方, 開発側のPC, 即ちSDKを使用する側は特に制約はなく, サーバと同じLANに繋がっていれば良い, こちらをここでは“クライアント“と呼ぶ.

まず, サーバとAUTDデバイスを接続する. この時使うLANのアダプタはTwinCATと同じく, TwinCAT対応のアダプタである必要がある. また, サーバとクライアントを別のLANで繋ぐ. こちらのLANアダプタはTwinCAT対応である必要はない1. そして, サーバとクライアント間のLANのIPを確認しておく. ここでは例えば, サーバ側が172.16.99.104, クライアント側が172.16.99.62だったとする. 次に, サーバでAUTD Serverを起動する. この時, Client IP addressにクライアントのIPアドレス (この例だと172.16.99.62) を指定する.

右側の画面に, 「Server AmsNetId」と「Client AmsNetId」が表示されるので, これをメモっておく.

NOTE: 「Server AmsNetId」の最初の4桁は必ずしもServerのIPアドレスを意味しているわけではないので注意されたい.

APIs

RemoteTwinCATのコンストラクタにはServerのIPアドレスとAmsNetIdを指定する.

また, オプションでタイムアウトとソースアドレスを指定できる.

use autd3_link_twincat::{RemoteTwinCAT, RemoteTwinCATOption, Source, Timeouts};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let _ = 
RemoteTwinCAT::new(
    "0.0.0.0".parse()?,
    "1.1.1.1.1.1".parse()?,
    RemoteTwinCATOption {
        timeouts: Timeouts::none(),
        source: Source::Auto,
    },
);
Ok(())
}

ファイアウォール

TCP関係のエラーが出る場合は, ファイアウォールでADSプロトコルがブロックされている可能性がある. その場合は, ファイアウォールの設定でTCP/UDPの48898番ポートの接続を許可する.


  1. 無線LANでも可