バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
CANoeの内部プロセスとして描画プロセスと計測/演算プロセスが存在することと、
プロセス間通信がTCP/IPを使用していることのの裏付けの調査結果を確認。
引き続き調査結果の話とCANoeの設計思想の話。
登場人物
博識フクロウのフクさん
![指差しフクロウ](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
![技術者太郎](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
CANoe内のTCP/IPによるプロセス間通信の様子
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
CANoeの中の各プロセスがTCP/IPでプロセス間通信しているって前回言ってたけど、
具体的どうやってるのかって確認方法ってあるの?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
TCP/IPであれば可能だね。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
んー?
なんか方法があるってこと?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
Wiresharkでキャプチャできるはずだよ。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
プロセス間通信だから具体的なイーサネットインターフェースとか無いけど見れるものなの?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
物理的なインターフェースは無いけど、
論理的なインターフェースとしてはBSD-loopbackとかUnixドメインってことにはなるね。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
ほう。
論理的なインターフェースって考え方もあるのか。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まぁ実際にキャプチャしてみたから、それを見てみよう。
CANoe内のプロセス間通信をキャプチャ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
WiresharkでイーサネットインターフェースをBSD-lookbackを指定してキャプチャした結果が以下。
TCPポートは前回のnetstatで確認した2809、2810、3001が対象だな。
まぁ3001は見当たらなかったけど。
![CANoeのプロセス間通信をWiresharkでキャプチャ、Wiresharkでキャプチャ(Eth-I/FはBSD-loopback、ADDR_TYPE : Unixドメイン)、※ さすがに電文仕様はわからない。、Source Port:51772、Destination Port:2809](https://www.simulationroom999.com/blog/wp-content/uploads/2022/02/02_CANoeのプロセス間通信をWiresharkでキャプチャ-1024x570.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者03アップ.png)
あ、本当にキャプチャできるんだ!
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
キャプチャはできたけど、さすがに電文仕様まではわからないね。
少なくともかなり速いレート(msオーダー)で通信しているってことだけが分かる。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
まぁCANoeのハックするのが目的じゃないし、
本当にTCP/IPでプロセス間通信をしている裏付け情報としては十分だね。
CANoeの設計思想
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
あと、TCP/IPを使ってプロセス間通信をしているのはCANoeの設計思想に依存しているようなこといってたけど、そこらへんの話はどうなるの?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
おそらく以下の構成が取れることを想定していると思われる。
![CANoeの連携機能、ユーザインターフェース(64bitプロセス)、ランタイムカーネル(32bitプロセス)、VN89XX(Windows Embedded)、TCP/IP](https://www.simulationroom999.com/blog/wp-content/uploads/2022/02/03_CANoeの連携機能-1024x645.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
ほう。
ユーザインターフェースとランタイムカーネルが同一のCANoeじゃないパターンを想定しているってことか。
それも同一PCである必要も無いと。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
特に右側なんかはPCですらないパターンだね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
こういう構成を想定するとTCP/IPでプロセス間通信させた方が汎用性が上がるんだよね。
そういう意味ではうまく設計されたツールと言えるだろう。
で、結局FMUはどうするの?
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
で、元々の問題のFMUはどうしようか?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
CANoeのVersionを変えられないならWin32向けのFMUを作るしかないだろうね。
ただ、Win32向けのFMUを作るにはOpenModelicaの32bit版じゃないと作れないと思う。
さらにOpenModelicaの32bit版と64bit版を両方インストールするとライブラリの参照が後から入れた方に依存するみたいだから、結果として共存はできない。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
じゃー、一旦OpenModelica64bit版をアンインストールして、32bit版をインストールしてFMUを作り直すってことで。
次回までにやっておくねー。
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- CANoe内のTCP/IPによるプロセス間通信の様子を確認。
- WiresharkでBSD-loopbackをキャプチャ。
- netstatで確認したポートをキャプチャ。
- CANoeの設計思想予想。
- ユーザインターフェースとランタイムカーネルは別PC、別プラットフォームでも動作する思想。
バックナンバーはこちら。
コメント