HOME >> 鉄道模型実験室 > 動力測定装置がおかしい?
KATOの86モデルが発売されると言うことなので、暫く中断していた動力特性の測定を再開することにした。 この中断期間に入手していたモデルは、チビロコセットの動力ユニット改良品や、EF200とEF210のELもありましたので、これらのモデルの動力特性を測定することにしました。
しかし、測定を始めてから装置が正常に作動せず、右往左往する状態でした。 その様子を記録しておき、今後の参考とすることにします。 問題点は下記の2点です。
■ 動力測定の再開
まず、未測定であったEF200とEF210のEL動力特性を測定するために、装置をセットしました。 今回は、書斎の隅でコンパクトに実施したいと考えて、基本特性のみを測定し、パソコンはノートパソコンを使用することにしました。
基本特性の測定だけなので、モデルへのセンサ取付けや測定のための有線配線は実施不要です。 このため、書斎の片隅に配置することが出来、測定も気楽に出来ると考えました。 これは、「特性解析 今後の課題」(2019/6/27)でも述べたように、測定上の課題が多く見つかり、測定作業に対する意欲が萎えたためです。 このため、昔の戻って、基本特性だけを測定するようにしたのです。
● Excelのデータ処理がおかしい?
測定を始めると、Excelのデータ処理がいつもの様にリアルタイムモニタの様に反応してくれません。 測定状態が正常なのか、データは綺麗に測定されているのか観察出来ませんでした。 そして、30個のデータを収集した一区切り後に、やっとグラフに表示されるのです。 これではリアルタイムモニタにはなりません。
どこかの設定がおかしいのかとチェックしましたが異常は見つかりませんでした。 ちなみに、使用したパソコンは
です。 今回の組合せでの測定は初めてですので、何かの相性が悪いものと思われます。 推定原因としては、OSとマクロが合わない? Excelのバージョンにあったマクロ記述ではない? タイムアウトの設定が悪い? など考えられます。
この辺の事情には疎いので、あれこれトライするしかありません。 今まで実施したことのあるExcelでのデータ取り込み処理は、
上記の(1)と(2)は今回と同じマクロであり、正常に機能していました。 また、(3)〜(5)では、処理速度が追っつかなかったので、まずデータを取り込んだ後に計算とグラフ表示を実施しているので、リアルタイム処理ではありませんでした。
そこで、昔から有名なEasyComn方式でのデータ取り込みをトライしてみることにしましたが、実験環境をいちいちモデル車両を走らせて測定するのでは無くて、パソコンとArduinoだけの組合せにしました。
Arduino UNO には、単にデータを送信するだけのスケッチを書き込みました。 送信するデータは、今までの測定データから送信データをコピーして作成しました。 送信間隔は、2秒と5秒の2種類を設定しました。 データ送信は実際と同じように30個のデータを送信するとマクロは終了し待機状態に入ります。
● EasyComn方式でのトライ結果
EasyComnは既にサービスを終了されており、ホームページも閉鎖されていますが、昔のモジュールが有りましたのでこのソフトをインストールして測定を実施しました。
でもその結果は見事に失敗しました。 その時のエラーメッセイジを下に示す。
ポート番号の指定方法はマニュアルどうりに設定したのですが、エラーとなってしまいます。 昔はこれで正常に作動していたのですが・・・・・・・・・・。 やはり、OSかExcel のバージョンがアップされたからののでしょうか?
このソフトのメンテナンスはすでに終了しているため、我が技量では手打ちようが無いのであっさりと諦めることにしました。
● Application.ScreenUpdating の設定を変えてみる
ネットで ScreenUpdating に関して調べると、マクロの処理速度を上げるために、マクロを実施中は画面の再表示を停止させる、即ち False にしておくと良いとのことであったので、この命令をいじってみることにしました。
元のマクロ処理方法に戻して、シリアル通信を始める前に False を記述するマクロに修正してマクロを実行してみました。 すると、グラフ表示は勿論、セルのデータを書込んで行く動作も表示されず、マクロが終了すると、初めてセルとグラフの表示が実施されました。 このことは、この命令は生きていることが分かりましたが、True の命令が何故実行されないのか不明です。 False が実行されて True が実行されない・・・・・・・・・?
ネット情報をもとにあれこれ試してみましたが、いっこうに改善されないので昔の環境にて測定することにしました。
■ 昔の環境で測定する
昨年まで実施していた環境で測定することにしました。 即ち、パソコンはVAIOのデスクトップパソコンを使用しました。
重くて大きいパソコンを動かせないので、測定台を近くに持ってきました。 上左写真では余裕があるようですが、画面のすぐ右が部屋の入口で、測定台が部屋の半分を斜めに占領しています。 でもソフトは昔のように正常に作動しました。 パソコンの環境は、
です。 勿論ネットには接続せず、スタンドアロンで使用しました。 久々の稼働でしたが、スタート時には、なにやらゴチャゴチャしましたが、日付けが初期値に戻ってしまったぐらいで正常に動きました。
そうして、KATO製のEF200とEF210のEL、およびチビロコセットの動力ユニット改良品の動力特性を測定し、ホームページアップしました。
● 測定データが2重になる
再開した測定データを見ていて気になる点が有りました。 測定データが2重になるのです。 EF210-114号機の牽引力特性のグラフを下左に示しますが、測定データが大きくバラツイテいます。
.
.
そこで、手前と奥にある二つの測定ゲートを選別して表示させてみました。 この選別はデータから容易に判別できるのです。 「電源供給ラインの改善」(2016/2/10)にて工作したように、測定ゲート毎に電圧を測定しており、それぞれのデータを送信してきているからです。 データを選別してグラフにしたのが上右のグラフです。 測定するゲートによって速度データがドリフトしているのがはっきりと分かります。
原因は手前と奥の二つのゲートの環境が異なっている事であることは明らかです。 光ビームをカットする状態の違いか、あるいは線路の傾斜角の違いと推定します。
まず、光ビームをカットする状態の違いでは無いかと疑ってこの方法を変更しました。 EF200 と EF210 では、右の写真のように、コロナ対策(?)もどきに前面にウレタンピースを被せて、光ビームをカットさせるようにしています。 これはカプラーや手すりなどの部分で光ビームをカットすると信号があいまいになると考えていたからです。
しかし、ゲートの光ビームを横切る状態が二つのゲートで一致する保証はありませんでした。 そこで、線路中央でナイフカットのように横切るように工夫してみました。 この考えは、従来から実施して来たのですが、今回は少しサボってしまいました。 そこで、専用のビームカット台車を工作することにしました。 これならサボる事は無くなるでしょう。
鉄コレ用台車の上に写真のようなビームカッタを取付けました。 台車とは接着剤で接着しています。
測定時には、測定動力車の前に連結してして走らせます。 でも、走行させるとすぐに脱線してしまいました。 重量が3グラムと軽すぎたので、10グラムの重りを載せて走行するようにしました。
.
光ビームが照射している状態を上右に示しますが、これなら線路中央でカットするので、二つのゲートでの差が無くなると思われます。
この方法でチビロコセットの動力ユニット改良品の測定を実施した結果を右のグラフに示す。 測定対象が異なっていますが、明らかに改善されたことが分かります。
でも、まだ少しずれている様です。 これは、測定台の傾斜の違いではないかと考えます。 スマホの傾斜計で測ったのですがその違いは判然としませんでした。 速度の違いは大雑把に計算して100Km/h時には 5Km/hですので、誤さと言えば5%程度です。 測定精度と考えるとホビーとして許容されるかも知れませんが、グラフの様に表示されると、その違いは鮮明に出て来てしまいます。
結論として、木製のガタ付く測定台では、これ以上の正確さは無理かもしれません。
■ まだ諦めてはいません
デスクトップパソコンでは、何時まで持つのか心もとないので、ノートパソコン、いや、Winodows10とExcel2016での使用が本当に駄目なのか、再挑戦しました。
いろいろ探し回ったネット情報で注目したのは、Microsoftのサポートページにあった「Excel 2013 で複数のブックを開き Appliction.ScreenUpdating プロパティ使用中にアクティブ ブックが切り替わるとウィンドウが点滅しデスクトップが見えることがある」でした。
Excel 2013 から、ウィンドウの管理方法は SDI (Single Document Interface) に仕様変更されました。・・・中略・・・・また、Excel 2013 では、画面の更新処理は最後に行われるように動作変更が行われました。
説明のいきさつは異なっていましたが、内容的には自分が問題としていることをピッタリでした。 Excel2013から仕様が変更されているのだ!
画面更新処理はマクロ処理の最後に実施するのだってさ・・・・・!!
そしてマクロの途中で強制的に画面処理を実施するには、
DoEvents と Window.Activate メソッドを併用し、画面表示の更新処理を強制的に行うことで改善できる場合があります。 ただし、どの程度画面のちらつきが発生するかは、マクロの処理内容やコード量に依存するため、DoEvents と Window.Activate メソッドを追加するタイミングは、実際のシステムにあわせ十分なテストを実施し追加してください。
と有りました。 早速実験してみることにしました。 実験方法はノートパソコンとArduinoを使った方法と同じである。
テストNo. | 方法 | マクロ記述 | 結果 | 判定 |
---|---|---|---|---|
テスト1 | 前後にDoEventsを記述する。
|
DoEvents Application.ScreenUpdating = True DoEvents |
データ取り込みは表示するもグラフは表示されず。 取り込んだデータも少しおかしい? |
× |
テスト2 | もう一つDoEventsを追加する。
|
DoEvents Application.ScreenUpdating = True DoEvents DoEvents |
かなりの頻度でグラフを表示する。 データの取り込みエラーがたびたび発生。 |
△ |
テスト3 | さらに、もう一つDoEventsを追加する。
|
DoEvents Application.ScreenUpdating = True DoEvents DoEvents DoEvents |
毎回グラフは表示されるようになった。 データの取り込みエラーの頻度が多くなった。 |
〇 |
テスト4 | 命令をScreenUpdatingからDisplayFullScreenに変えてみる。 |
DoEvents Application.DisplayFullScreen = True DoEvents |
グラフは時々表示される。 | △ |
テスト5 | DoEventsを追加する。 |
DoEvents Application.DisplayFullScreen = True DoEvents DoEvents |
毎回グラフは表示されるようになった。 データの取り込みエラーがたびたび発生。 |
〇 |
さるネット情報によると、DoEventsは、VBAからWindowsに制御を渡す命令だそうです。 ある程度の時間が掛かる処理の場合には、ここで時間稼ぎさせるのだそうです。 そこで、その命令をいくつも挿入してみると、確かにグラウはリアルタイムで表示されるようになりました。
そして、ApplicationオブジェクトのメソッドとしてScreenUpdatingを使っていましたが、試しに同じ画面操作用のDisplayFullScreenを使ってみました。 どうせフルスクリーンで使用しているので問題無いと考えたからです。 なぜだかわかりませんが、こちらの方がDoEventsの命令数がすくなくて済みました。
************************************************
データ毎にグラフ表示を実行するようになりましたが、データの取り込みエラーが増えたような気がします。 こちらも問題ですが・・・・・・・・。
● 結論
やはり、自分の技量ではこの問題をクリアーすることは出来ないと判断し、Excel2016での使用は当面実施しないことにしておきます。 古い環境のパソコンを大切に使っていくことにしましょう。
また、測定台については、簡単ながら頑丈な装置にならないか検討してみようかな? やはり工作派ですな!
2020/8/27 作成