8.1. TwinCATが対応するリアルタイムEthernetドライバの互換性はどのように調べますか?

関連InfoSys

Windowsの場合

デバイスマネージャからEthernetボードを選択し、詳細タブからプロパティにて「ハードウェアID」を選ぶと一覧される内容から読み取れます。VEN_に続く文字がベンダーIDで、DEV_に続く文字がデバイスIDです。

この値が、InfoSysサイトで案内しているサポートするリアルタイムEthernetドライバに含まれるか確認してください。

BSDの場合

dmesgコマンドで、Ethernetアダプタを検索します。

$ dmesg | grep -i ethernet
igb0: Ethernet address: 00:01:05:**:**:**
igb1: Ethernet address: 00:01:05:**:**:**

igb0, igb1の2ポートを備えていますので、pciconf -l <dev>コマンドでこのデバイスの詳細を確認します。

$ doas pciconf -l igb0
Password:
igb0@pci0:1:0:0:        class=0x020000 rev=0x03 hdr=0x00 vendor=0x8086 device=0x1533 subvendor=0x8086 subdevice=0x1533
Administrator@BTN-00004akf:~ $
$ doas pciconf -l igb1
Password:
igb1@pci0:2:0:0:        class=0x020000 rev=0x03 hdr=0x00 vendor=0x8086 device=0x1533 subvendor=0x8086 subdevice=0x1533

vendor=device=に記載されたコードが同じくInfoSysサイトで案内しているサポートするリアルタイムEthernetドライバに含まれるか確認してください。

また、次のTwinCATが提供するコマンドでリアルタイムドライバを確認する方法があります。

$ doas TcRteConfig show
Password:
sysctl:
dev.igb.1.iflib.tc_rte.mode: 0
dev.igb.1.iflib.support_tc_rte: 1
dev.igb.1.iflib.disable_tc_rte: 0
dev.igb.0.iflib.tc_rte.mode: 0
dev.igb.0.iflib.support_tc_rte: 1
dev.igb.0.iflib.disable_tc_rte: 0

support_tc_rte: 1であれば、通常はリアルタイムドライバは有効となっています。無効化させたい場合は、

$ doas TcRteConfig disable igb.1

これにより/boot/device.hintsファイルに以下の行が追加されます。

/boot/device.hints:
dev.igb.1.iflib.disable_tc_rte="1"

そのあと再起動すると設定が反映されます。リアルタイムドライバが無効化された場合次の通りdisable_tc_rte: 1となり、EtherCATや、その他フィールドバスが使えなくなります。

$ doas TcRteConfig show
Password:
sysctl:
dev.igb.1.iflib.support_tc_rte: 1
dev.igb.1.iflib.disable_tc_rte: 1
dev.igb.0.iflib.tc_rte.mode: 0
dev.igb.0.iflib.support_tc_rte: 1
dev.igb.0.iflib.disable_tc_rte: 0

/boot/device.hints:
dev.igb.1.iflib.disable_tc_rte="1"

8.2. サイトに掲載されているNICなのですがCompatibleとして認識されません

掲載一覧に記されているベンダIDとデバイスIDは、先頭に記載されている、Last updated: TwinCAT *.* ****のTwinCATバージョンで対応したものです。このバージョンより古いために未対応の可能性があります。記載されているTwinCATへのアップグレードをご検討ください。