データの自動記録 その1
こんばんは。マダム でんでん♪でございます。
以前、「焙煎機の改造(改良)」で少し触れた焙煎データの自動記録システムの開発をやっとはじめました。プログラミングは久しぶりなので、ちょっとカンが鈍ってます。というか、もともと鈍るようなカンなどなかったわけですが。。。(笑
とりあえずは、データロガーとPCをRC-232で接続して、PCからデータロガーにコマンドを送って定期的に温度データを取得し、エクセルのシートにデータを書き込み、リアルタイムで表、グラフに表示するような簡単なものを作ろうと思ってます。
今使っているデータロガーは、マザーツールという会社のMT-306という2chのデジタル温度ロガーで、10個くらいのコマンドですべての機能を制御できるインタフェースになってます。このうち、Aコマンド(RS-232経由でASC 41Hを送る)で現在の温度情報をエンコードされた形で取得できるようになってます。
で、Excel VBAからCOMポート通信ができるモジュールをネットで探してたら、ちょうどよさそうなEasyCommっていうのを見つけました。リンク先からダウンロードしたアーカイブに含まれるec.basとecDef.basをExcelのブックにインポートすると、VBAからCOMポートと通信するためのメソッド、プロパティが利用できるようになります。
こういうプログラム書いた経験があまりない上に、MT-306のマニュアルの記述があまりに素っ気ないので、ずいぶん悩んだ末、とりあえず、MT-306から現在の温度情報を取得するコード断片を書いてみました。
Sub Main()
Dim recBinData() As Byte
ec.COMn = 2
ec.Setting = "9600,n,8,1"
ec.Delimiter = ec.DELIMs.LF
ec.BinaryBytes = 10 '取得バイト数を10に設定ec.AsciiLine = "A"
Do While ec.InBuffer < 10 '10バイト受信するまで待機
DoEvents
Loop
recBinData() = ec.Binary 'エンコードデータの読み込み' T1の各桁をデコード
t1dig4 = recBinData(3) \ 16
If t1dig4 = 11 Then t1dig4 = 0
t1dig3 = recBinData(3) Mod 16
t1dig2 = recBinData(4) \ 16
t1dig1 = recBinData(4) Mod 16' T2の各桁をデコード
t2dig4 = recBinData(7) \ 16
If t2dig4 = 11 Then t2dig4 = 0
t2dig3 = recBinData(7) Mod 16
t2dig2 = recBinData(8) \ 16
t2dig1 = recBinData(8) Mod 16' 小数点の有無を判別しT1、T2を数値(ヴァリアント型)に変換
t1 = t1dig4 * 100 + t1dig3 * 10 + t1dig2 + t1dig1 * 0.1
If recBinData(2) And 4 Then
t1 = t1dig4 * 1000 + t1dig3 * 100 + t1dig2 * 10 + t1dig1
End Ift2 = t2dig4 * 100 + t2dig3 * 10 + t2dig2 + t2dig1 * 0.1
If recBinData(2) And 32 Then
t2 = t2dig4 * 1000 + t2dig3 * 100 + t2dig2 * 10 + t2dig1
End IfMsgBox ("T1: " & t1 & "/T2: " & t2)
End Sub
VBAエディタのイミディエイトウィンドウからmainプロシージャを実行すると、メッセージボックスに現在の温度(T1、T2)が表示されるだけの単純なコードです。後は、タイマーで定期的にこのコードを呼び出して、Excelのワークシートに時系列順にデータを書き込んでいけば、Excelのグラフ描画機能を使ってリアルタイムに温度データを表示できるかなと。で、過去30秒、1分、5分etc.の温度上昇率とか、火力、排気操作や1ハゼ、2ハゼの時間、温度なんかも自動で記録できるようにしたいなあと。
「T1の各桁をデコード」、「T2の各桁をデコード」ってコメントのあるあたりのコードは、BCDエンコードされている温度データをデコードしてるんですが、なんかどう考えてもだっさいコードです。もっとすぱっとキレイに書けるに違いないんですが。。。だれか教えてください~♪
VBAニガテなので、ちょっと苦労しそうですが。。。明日、明後日くらいで動くようになったらいいなあ。。。
| 固定リンク
|
「開発日記」カテゴリの記事
- 開発の進捗状況(2007.10.31)
- 4ch温度計の取り付け(2007.07.22)
- FUSO-304対応(2007.07.13)
- 中点の自動検出機能を追加(2007.06.30)
- 焙煎データ記録プログラム完成!!(2007.06.25)



コメント