【仮想ECU】最小構成のMBD事例 第2章 その214【PID制御⑤】

【仮想ECU】最小構成のMBD事例 第2章 その214【PID制御⑤】 事例
【仮想ECU】最小構成のMBD事例 第2章 その214【PID制御⑤】

バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/

はじめに

前回はPID制御器動作確認用Pythonコードを確認した。
コンフィグレーション、XCPマスター生成、DAQ起動、計測、書き換えを隠蔽するようなクラス化。
エントリポイントとして起動した際は簡単なXCP通信をするように組んでいるのでクラスの単体テストも可能。

というわけでクラス単体テストを兼ねる形で動作確認をする。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

技術者太郎

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

入出力する信号の種類

太郎くん
太郎くん

動作確認用のPythonコードもできたことだし、
さっそうやってみよう。

フクさん
フクさん

その前に入出力する信号の種類について書くにしておこう。

太郎くん
太郎くん

そういえば結局何が入力で出力になるんだっけか?

フクさん
フクさん

PID制御なんで以下の想定になる。

PID制御の入出力信号、目標値、実値、制御値
PID制御の入出力信号、目標値、実値、制御値
太郎くん
太郎くん

2入力、1出力ってことだね。

フクさん
フクさん

この入出力はしっかり頭に入れておこう。
じゃないと、これからの説明の意味がわからなくなっちゃう。

太郎くん
太郎くん

ばっちり覚えた!

動作確認実施

太郎くん
太郎くん

今度こそ、動作確認開始!

PID制御の結果、目標値[rad/s]、実値[rad/s]、制御値[V]
フクさん
フクさん

うん。
一応PID制御っぽい動きはしてるんじゃないかな。

太郎くん
太郎くん

目標値と実値に差がある時は追従しようと制御をそこに近づけるように動いてるね。
おおよそ目標値になったら、現状の出力を維持してるってところか。

DAQパケットとSTIMパケット

太郎くん
太郎くん

CAN回線も見ておこう。

 0.365371 1  1               Rx   d 2 DD 01
 0.368984 1  2               Rx   d 1 FF
 0.373555 1  2               Rx   d 7 00 00 00 00 00 00 00
 0.473162 1  2               Rx   d 7 00 00 00 00 00 00 00
 0.574054 1  2               Rx   d 7 00 00 00 00 00 00 00
 0.673849 1  2               Rx   d 7 00 00 00 00 00 00 00
 0.773579 1  2               Rx   d 7 00 00 00 00 00 00 00
 0.873702 1  2               Rx   d 7 00 00 00 00 00 00 00
 0.974037 1  2               Rx   d 7 00 00 00 00 00 00 00
 1.073906 1  2               Rx   d 7 00 00 00 00 00 00 00
 1.173635 1  2               Rx   d 7 00 00 00 00 00 00 00
 1.273340 1  2               Rx   d 7 00 00 00 00 00 00 00
 1.374094 1  2               Rx   d 7 00 00 00 00 00 00 00
 1.378337 1  1               Rx   d 5 01 00 64 00 00
 1.383039 1  2               Rx   d 1 FF
 1.473823 1  2               Rx   d 7 00 00 64 00 00 66 30
 1.573536 1  2               Rx   d 7 00 00 64 00 00 66 4A
 1.673454 1  2               Rx   d 7 00 00 64 00 00 66 64
 1.773330 1  2               Rx   d 7 00 00 64 00 00 00 78
 1.873068 1  2               Rx   d 7 00 00 64 00 00 00 78
 1.973699 1  2               Rx   d 7 00 00 64 00 00 00 78
 2.073510 1  2               Rx   d 7 00 00 64 00 00 00 78
 2.173354 1  2               Rx   d 7 00 00 64 00 00 00 78
 2.273387 1  2               Rx   d 7 00 00 64 00 00 00 78
 2.373132 1  2               Rx   d 7 00 00 64 00 00 00 78

# 省略

 9.387573 1  1               Rx   d 5 01 00 00 00 64
 9.388909 1  2               Rx   d 1 FF
 9.473794 1  2               Rx   d 7 00 00 00 00 64 59 1F
 9.573761 1  2               Rx   d 7 00 00 00 00 64 59 05
 9.673368 1  2               Rx   d 7 00 00 00 00 64 5A EB
 9.773163 1  2               Rx   d 7 00 00 00 00 64 5A D1
 9.873981 1  2               Rx   d 7 00 00 00 00 64 5A B7
 9.973842 1  2               Rx   d 7 00 00 00 00 64 5A 9D
 10.073195 1  2               Rx   d 7 00 00 00 00 64 00 88
 10.174194 1  2               Rx   d 7 00 00 00 00 64 00 88
 10.273686 1  2               Rx   d 7 00 00 00 00 64 00 88
 10.373415 1  2               Rx   d 7 00 00 00 00 64 00 88
 10.380821 1  1               Rx   d 5 01 00 00 00 00
 10.381353 1  2               Rx   d 1 FF
 10.473185 1  2               Rx   d 7 00 00 00 00 00 00 A1
 10.574054 1  2               Rx   d 7 00 00 00 00 00 00 A1
 10.673685 1  2               Rx   d 7 00 00 00 00 00 00 A1
 10.773332 1  2               Rx   d 7 00 00 00 00 00 00 A1
 10.873217 1  2               Rx   d 7 00 00 00 00 00 00 A1
 10.974003 1  2               Rx   d 7 00 00 00 00 00 00 A1
 11.073757 1  2               Rx   d 7 00 00 00 00 00 00 A1
 11.173479 1  2               Rx   d 7 00 00 00 00 00 00 A1
 11.273232 1  2               Rx   d 7 00 00 00 00 00 00 A1
 11.373904 1  2               Rx   d 7 00 00 00 00 00 00 A1
 11.387314 1  1               Rx   d 5 01 00 00 00 00
 11.387806 1  2               Rx   d 1 FF
 11.473633 1  2               Rx   d 7 00 00 00 00 00 00 A1
 11.573609 1  2               Rx   d 7 00 00 00 00 00 00 A1
 11.673428 1  2               Rx   d 7 00 00 00 00 00 00 A1
 11.773207 1  2               Rx   d 7 00 00 00 00 00 00 A1
 11.873051 1  2               Rx   d 7 00 00 00 00 00 00 A1
 11.973714 1  2               Rx   d 7 00 00 00 00 00 00 A1
 12.073501 1  2               Rx   d 7 00 00 00 00 00 00 A1
 12.173468 1  2               Rx   d 7 00 00 00 00 00 00 A1
 12.273132 1  2               Rx   d 7 00 00 00 00 00 00 A1
 12.373934 1  2               Rx   d 7 00 00 00 00 00 00 A1
 12.380717 1  1               Rx   d 5 01 00 00 00 00
 12.381815 1  2               Rx   d 1 FF
 12.391015 1  1               Rx   d 2 DD 01
太郎くん
太郎くん

一応、ちゃんと動いているようには見えるが・・・。

フクさん
フクさん

少し見せ方を工夫してみよう。

DAQパケットとSTIMパケット、目標値、実地、制御値
太郎くん
太郎くん

あ、なるほど。
目標値と実値に関してはDAQもSTIMも同じレイアウトにしてるから、
キレイに縦並ぶのか。
そしてDAQパケットにだけ制御値が載ってるんだったね。

フクさん
フクさん

期待通りPID制御器もXCPのDAQ、STIMも動作していると言えるだろう。

太郎くん
太郎くん

とりあえず、XCP制御用のクラスは動作は大丈夫そうだね。

まとめ

フクさん
フクさん

まとめだよ。

  • 仮想ECU側のPID制御器の入出力する信号の種類を確認。
  • 実際にXCPのDAQ、STIMを実施して制御状態を計測。
    • 想定通りの挙動になっていた。
  • CAN回線モニタを確認。
    • DAQとSTIMの目標値、実値のレイアウトを合わせていたので、縦に慣れべることで挙動が推測できる。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました