【ロードセル】CPLT静荷重データを処理するVBATool<CPLTキャリブレータ>

荷重変換センサを作っていると頻繁に錘をつかった校正実験があります。
CPLTで波形をみながら測定していますので、データをそのまま自動処理はしないで、測定作業が終わった直後に測定データをEXCELに取り込んで半自動処理するVBAを作って便利に使ってます。

●手順
錘を順に荷重してピラミッド状のCPLTグラフを測定します
この場合は750gの錘4個を載せて校正した場合

②EXCEL VBAマクロでCPLTキャリブレータrev02.を開きます。
EXCEL2007です(VBAが速く走るバージョンです)
CPLTキャリブレータrev02.xlsmでマクロ付きなのでマクロを有効
にする必要があります。標準モジュール Form1のform_open()
から起動します。ここから起動しないとエラーがでます。
画面は、左にCPLTのグラフ、右にEXCELを開きます。

③VBA Form_Openしてダイアログを表示させます。

左のCPLTのデータファイルCSVを読み込みます

ファイルを読み込んだらデータ範囲の選択作業です。
左のCPLTのカーソル1、2でデータとして採用できる範囲を指定します。下図のようにノイズがあるところは避けて指定します。
目視でデータ変動を確認することが重要です。
ここが全自動化ができない理由です。

③範囲を指定しながら、平均と3シグマをチェックして記録していく

 

④全データの平均値計算が終わったら回帰処理は手動処理
相関係数correlが0.99999と直線性が高いのでこの校正実験はOKです。

■追記2020年9月
この4年間CPLTを使ってマイコン計測で各種開発をしてきました。
しかし、大規模で複雑なデータ処理をグラフィックで判定する必要が生じてきました。そこで、高速でデータ受信とグラフィック処理ができるシステムをVisualStudio2019のVB.NETでプログラムを作ることにしました。VB.NETの使い方から始めて約3週間で何とかリアルタイムグラフアプリまで作りました。CPLT並みの速度で描画できますが、未だ、画面サイズが小さいです。VB.NETのカテゴリーはこちらです
完成してリアルタイムグラフアプリです。

【VB.NET】7CHリアルタイムモニターver1.0完成<Serial.CloseでPgmハングする対策>

 

 

●VBAプログラム備忘録
EXCELファイルのZIP Excel2007ですのでそれ以降のバージョンなら走るはずです。
CPLTキャリブレーターrev02

中身をいじる場合にソースを記録しておきます。
 ①UserForm1 のプログラム

Private Sub CommandButton1_Click() ‘OPEN CSV FILE

OpenFileName = Application.GetOpenFilename(“CPLTファイル,*.csv?”)
Workbooks.Open OpenFileName
TextBox1.Value = OpenFileName
ActiveSheet.Name = “sheet1”
MaxRow = Range(“A2”).End(xlDown).Row
MaxCol = Range(“A2”).End(xlToRight).Column
If MaxCol > 8 Then
MaxCol = 1
End If

ch = MaxCol
dataN = MaxRow
For i = 1 To MaxRow
Cells(i, MaxCol + 1) = 1000
Next i

TextBox21.Value = ch
TextBox22.Value = dataN
ScrollBar1.Min = 0
ScrollBar1.Max = dataN
ScrollBar2.Min = 0
ScrollBar2.Max = dataN
Cursol_1 = 1
Cursol_2 = 1

End Sub

Private Sub CommandButton2_Click() ‘平均 分散計算
startN = TextBox2.Value
endN = TextBox3.Value
For i = 1 To ch
aveN = Application.WorksheetFunction.Average(Range(Cells(startN, i), Cells(endN, i)))
Controls(“TextBox” & i + 3).Value = aveN
sig = 3 * Application.WorksheetFunction.StDev(Range(Cells(startN, i), Cells(endN, i)))
If aveN <> 0 Then
Controls(“TextBox” & i + 12).Value = sig
End If

Next i

End Sub

Private Sub CommandButton3_Click() ‘登録 データがOKなら登録番号行に記録
tourokuN = TextBox12.Value

Cells(tourokuN, ch + 1) = tourokuN
Cells(tourokuN, ch + 2) = Yvalue
For i = 1 To ch
Cells(tourokuN, i + ch + 2) = Controls(“TextBox” & i + 3).Value
Cells(tourokuN, i + ch * 2 + 2) = Controls(“TextBox” & i + 12).Value
Next i
Cells(tourokuN, 20) = TextBox2.Value
Cells(tourokuN, 21) = TextBox3.Value

TextBox12.Value = tourokuN + 1
End Sub

②標準モジュール Module1 内のプログラム
form_Opnen 関数を最初に呼び込むことで、vbModelessで操作が自由にできるようにんしてます。
初期値も入れてあります。

Sub form_Open()
UserForm1.Show vbModeless
UserForm1.TextBox12.Value = 1
UserForm1.TextBox2.Value = 1
UserForm1.TextBox3.Value = 10End Sub

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です