reTerminalはラズパイのCompute Module 4で動作しています.
通常のラズパイのPHYと違い、IEEE-1588/PTP通信が可能なメリットがあります。
ハードウェアタイムスタンプ使ってPTP通信をテストした内容を紹介します。
ラズパイのCompute ModuleでPTP通信を試してみた
reTerminalは「ラズパイのCompute Module 4」で動作しています。
「通常のラズパイ4」が入っているわけではないです。(今回の一番重要な箇所です。)
Compute Moduleだと通常のラズパイのPHYと違い、IEEE-1588/PTP通信ができます。
n(ナノ)sec単位で時刻同期を取ることが可能です。
ハードウェアタイムスタンプ使ってPTP通信をテストした内容を紹介します。
テスト動画は下記となっています。ぜひ一緒にご覧ください。
reTerminal
reTerminalはタッチパネルやケース付きのラズパイみたいなようなものです。
下記記事でCODESYSをインストールして、PLCにした内容を紹介しています。
reTerminalにCODESYSをインストールして、PLCにしてみた
但し、reTerminalの中には通常のラズパイが入っていません。
分解してみると、下記のようなモジュール形状のラズパイが入っています。
Raspberry Pi Compute Module 4です。下記はreTerminalをバラした写真です。
Compute Moduleは有線LANのIC(PHY)が違う
「Compute Moduleのラズパイ」と「通常のラズパイ」ではPHY(有線LANのIC)が違います。
下記記事でも紹介されています。
PTP and IEEE-1588 hardware timestamping on the Raspberry Pi CM4
- Compute Module 4(5)…BCM54210PE *IEEE-1588/PTP対応
- 通常のラズパイ4(5)…BCM54213PE
Compute Module 4 ではIEEE-1588/PTP通信ができます。
Hardware TimeStampの機能を持っており、1us以下のn(ナノ)sec単位での時刻同期が可能です。
また最新の「Compute Module 5」でも、IEEE-1588/PTP通信が可能ということです。
普通のラズパイではできないこと
普通のラズパイだと、有線LANがありますがPTP通信は出来ません。
ICがハードウェアタイムスタンプに対応していないためです。
筆者が持っているラズパイ4でも「PTP Hardware Clock: none」でPTP非対応でした。
1 2 3 4 5 6 7 8 9 |
pi@raspberrypi:~ $ ethtool -T eth0 Time stamping parameters for eth0: Capabilities: software-transmit (SOF_TIMESTAMPING_TX_SOFTWARE) software-receive (SOF_TIMESTAMPING_RX_SOFTWARE) software-system-clock (SOF_TIMESTAMPING_SOFTWARE) PTP Hardware Clock: none Hardware Transmit Timestamp Modes: none Hardware Receive Filter Modes: none |
他ネットの情報見ても通常のラズパイ4・5でも同じICを使っているので、同様だと思います。
ハードウェアタイムスタンプに関しては、下記記事でも詳細を紹介しています。
IEEE-1588/PTP対応のLANカード(NIC)を動かしてみた
ラズパイのCompute Module でのPTPの環境構築
ラズパイModule側の、reTerminalで有線LANのPTPの設定をしていきます。
1 2 3 4 5 6 7 |
pi@raspberrypi:~ $ ifconfig eth0 eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 ether xx:xx:xx:xx:xx:xx txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 |
eth0の情報を確認すると、ハードウェアクロックがあることが分かります。
PTP Hardware Clock: 0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
pi@raspberrypi:~ $ ethtool -T eth0 Time stamping parameters for eth0: Capabilities: hardware-transmit hardware-receive hardware-raw-clock PTP Hardware Clock: 0 Hardware Transmit Timestamp Modes: off on onestep-sync onestep-p2p Hardware Receive Filter Modes: none ptpv2-event |
PTP通信をするためにも、必要なライブラリ(linuxptp)をインストールしときます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
pi@raspberrypi:~ $ sudo apt install linuxptp Reading package lists... Done Building dependency tree... Done Reading state information... Done The following package was automatically installed and is no longer required: raspinfo Use 'sudo apt autoremove' to remove it. The following NEW packages will be installed: linuxptp 0 upgraded, 1 newly installed, 0 to remove and 38 not upgraded. Need to get 150 kB of archives. After this operation, 641 kB of additional disk space will be used. Get:1 http://ftp.udx.icscoe.jp/Linux/raspbian/raspbian bullseye/main armhf linuxptp armhf 3.1-2.1 [150 kB] Fetched 150 kB in 4s (39.6 kB/s) Selecting previously unselected package linuxptp. (Reading database ... 149849 files and directories currently installed.) Preparing to unpack .../linuxptp_3.1-2.1_armhf.deb ... Unpacking linuxptp (3.1-2.1) ... Setting up linuxptp (3.1-2.1) ... Created symlink /etc/systemd/system/multi-user.target.wants/timemaster.service → /lib/systemd/system/timemaster.service. Processing triggers for man-db (2.9.4-2) ... |
PCのNIC(ネットワークカード)でのPTPの環境構築
PCのネットワークカード(NIC)でも同様です。最初にIPアドレス周辺を確認しておきます。
1 2 3 4 5 6 7 8 |
misoji@misoji-Inspiron-3650:~$ ifconfig enp4s0 enp4s0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 ether xx:xx:xx:xx:xx:xx txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device memory 0xdf200000-df2fffff |
PCに接続したNICカードもPTP通信可能であることを確認します。
PTP Hardware Clock: 0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
misoji@misoji-Inspiron-3650:~$ ethtool -T enp4s0 Time stamping parameters for enp4s0: Capabilities: hardware-transmit software-transmit hardware-receive software-receive software-system-clock hardware-raw-clock PTP Hardware Clock: 0 Hardware Transmit Timestamp Modes: off on Hardware Receive Filter Modes: none all |
PC側でも同様にlinuxptpをインストールします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
misoji@misoji-Inspiron-3650:~$ sudo apt install linuxptp [sudo] password for misoji: Reading package lists... Done Building dependency tree... Done Reading state information... Done The following NEW packages will be installed: linuxptp 0 upgraded, 1 newly installed, 0 to remove and 3 not upgraded. Need to get 224 kB of archives. After this operation, 785 kB of additional disk space will be used. Get:1 http://jp.archive.ubuntu.com/ubuntu noble/universe amd64 linuxptp amd64 4.0-1ubuntu1 [224 kB] Fetched 224 kB in 1s (155 kB/s) Selecting previously unselected package linuxptp. (Reading database ... 156536 files and directories currently installed.) Preparing to unpack .../linuxptp_4.0-1ubuntu1_amd64.deb ... Unpacking linuxptp (4.0-1ubuntu1) ... Setting up linuxptp (4.0-1ubuntu1) ... Processing triggers for man-db (2.12.0-4build2) ... |
ラズパイModuleをPTPのスレーブとして通信テスト
冒頭でも紹介しましたが、テスト動画は下記となっています。
reTerminalのラズパイModule側と、接続先のNIC(ネットワークカード)は1対1で接続しています。
両方のデバイスともにPTP通信ができる環境であることを確認しています。
最初にラズパイモジュール側をスレーブとしたテストです。
PC側のNIC(ネットワークカード)ではマスターとして動作させています。
問題なくマスター(PCのNIC側)のマスタークロックを基準にPTP通信が出来ています。
マスター側のクロック基準に約100ns程度の時刻同期取れていることが分かります。
ptp4l[386.921]: port 1: new foreign master 6cb311.fffe.529d82-1
ptp4l[411.924]: master offset -1280036 s2 freq -7816727 path delay 144
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
pi@raspberrypi:~ $ sudo ptp4l -i eth0 -m -s --step_threshold=1 ptp4l[374.474]: selected /dev/ptp0 as PTP clock ptp4l[374.478]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE ptp4l[374.479]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE ptp4l[381.657]: selected local clock d83add.fffe.7833b9 as best master ptp4l[386.921]: port 1: new foreign master 6cb311.fffe.529d82-1 ptp4l[388.751]: selected local clock d83add.fffe.7833b9 as best master ptp4l[390.921]: selected best master clock 6cb311.fffe.529d82 ptp4l[390.922]: port 1: LISTENING to UNCALIBRATED on RS_SLAVE ptp4l[392.922]: master offset -1733603093159960683 s0 freq +0 path delay 2061 ptp4l[393.924]: master offset -1733603093159970427 s1 freq -9743 path delay 3101 ptp4l[394.922]: master offset -1305203 s2 freq -1314946 path delay 3101 ptp4l[394.923]: port 1: UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED ptp4l[395.923]: master offset -1278908 s2 freq -1680212 path delay 3031 ptp4l[396.922]: master offset -1270114 s2 freq -2055090 path delay 1739 ptp4l[397.923]: master offset -1270533 s2 freq -2436544 path delay 548 ptp4l[398.923]: master offset -1275285 s2 freq -2822456 path delay 1125 ptp4l[399.923]: master offset -1277567 s2 freq -3207323 path delay 1152 ptp4l[400.923]: master offset -1278387 s2 freq -3591413 path delay 575 ptp4l[401.923]: master offset -1279650 s2 freq -3976192 path delay 539 ptp4l[402.923]: master offset -1280170 s2 freq -4360607 path delay 539 ptp4l[403.923]: master offset -1280283 s2 freq -4744771 path delay 539 ptp4l[404.923]: master offset -1280170 s2 freq -5128743 path delay 486 ptp4l[405.924]: master offset -1280040 s2 freq -5512664 path delay 381 ptp4l[406.924]: master offset -1279938 s2 freq -5896574 path delay 215 ptp4l[407.924]: master offset -1280045 s2 freq -6280663 path delay 185 ptp4l[408.924]: master offset -1280074 s2 freq -6664705 path delay 164 ptp4l[409.924]: master offset -1280073 s2 freq -7048726 path delay 157 ptp4l[410.924]: master offset -1280053 s2 freq -7432728 path delay 151 ptp4l[411.924]: master offset -1280036 s2 freq -7816727 path delay 144 ptp4l[412.924]: master offset -1280020 s2 freq -8200722 path delay 144 ptp4l[413.924]: master offset -1280018 s2 freq -8584726 path delay 144 |
ラズパイModuleをPTPマスターとしてテスト
逆にラズパイモジュール側もマスターにしても、問題なく動作できていることを確認しています。
1 2 3 4 5 6 7 |
pi@raspberrypi:~ $ sudo ptp4l -i eth0 -m ptp4l[448.291]: selected /dev/ptp0 as PTP clock ptp4l[448.294]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE ptp4l[448.295]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE ptp4l[456.253]: port 1: LISTENING to MASTER on ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES ptp4l[456.253]: selected local clock d83add.fffe.7833b9 as best master ptp4l[456.253]: port 1: assuming the grand master role |
まとめ
reTerminalはラズパイのCompute Module 4で動作しています.
通常のラズパイのPHYと違い、IEEE-1588/PTP通信が可能なメリットがあります。
ハードウェアタイムスタンプ使ってPTP通信をテストした内容を紹介しました。
reTerminal(ラズパイのCompute Module)ならではの機能は多くあります。
下記記事ではCODESYSをインストールして、PLCにした内容も紹介しています。
reTerminalにCODESYSをインストールして、PLCにしてみた
コメント