RemoteTwinCAT

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

Install

cargo add autd3-link-twincat --features remote
target_link_libraries(<TARGET> PRIVATE autd3::link::twincat)

メインライブラリに含まれている.

メインライブラリに含まれている.

メインライブラリに含まれている.

セットアップ

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 AmsNetId」を指定する.

また, server_ipclient_ams_net_idでサーバーのIPアドレスとクライアントのNetIdを指定する. これらは省略することも可能だが, 基本的には指定することを推奨する.

use autd3_link_twincat::remote::{RemoteTwinCAT, RemoteTwinCATOption};

fn main() {
let _ = 
RemoteTwinCAT::new("172.16.99.111.1.1", RemoteTwinCATOption {
    server_ip: "172.16.99.104".to_string(),
    client_ams_net_id: "172.16.99.62.1.1".to_string(),
});
}
#include "autd3/link/twincat.hpp"

int main() {
using namespace autd3;
link::RemoteTwinCAT("172.16.99.111.1.1",
                    link::RemoteTwinCATOption{
                        .server_ip = "172.16.99.104",
                        .client_ams_net_id = "172.16.99.62.1.1"});
return 0; }
using AUTD3Sharp;
using AUTD3Sharp.Link;

new RemoteTwinCAT(
        serverAmsNetId: "172.16.99.111.1.1",
        option: new RemoteTwinCATOption
        {
                ServerIp = "172.16.99.104",
                ClientAmsNetId = "172.16.99.62.1.1"
        }
);
from pyautd3.link.twincat import RemoteTwinCAT, RemoteTwinCATOption

RemoteTwinCAT(
    server_ams_net_id="172.16.99.111.1.1",
    option=RemoteTwinCATOption(
        server_ip="172.16.99.104",
        client_ams_net_id="172.16.99.62.1.1",
    ),
)

ファイアウォール

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

1

無線LANでも可