データ・テクノ
  1. SDロガー4_技術情報

ローコスト小型軽量シリアル(RS-232C)データロガー

SDロガー4(ケース付き、基板タイプ)

特徴事例集仕様・オプションダウンロード技術情報

技術情報

一定サイズごとにファイル分割

 SDロガー、CFロガーのスクリプト、「#FCHANGE」文を使えば、一定サイズごとにファイルを分割することが出来ます。
 以下にその例を示します。

■1024バイトごとにファイルを分割する例

#LOOP EVER
  #WAIT BYTE 1024
  #FCHANGE
#END

■100000バイトごとにファイルを分割する例(60000バイト以上のサイズを指定したい場合)

#LOOP EVER
  #LOOP 100
    #WAIT BYTE 1000
  #END
  #FCHANGE
#END

 「#WAIT BYTE」文で待てるのは最大60000バイトまでです。
 60000バイト以上のサイズを分割したい場合は、このように何回かループさせることで、行なえます。

■1024バイトを超えた改行でファイルを分割

#LOOP EVER
  #WAIT BYTE 1024
  #WAIT DATA :0D0A
  #FCHANGE
#END

 「#WAIT BYTE」文だけでは、データの切れ目とは関係なく、ファイルが分割されてしまいます。
 例えば対象のデータがテキストデータの場合、つぎの改行まで待ってファイル分割したい場合は、このようなスクリプトで、行なえます。


 なおスクリプトの実行には少しの時間がかかります。スクリプト文実行中に高速にデータを受信した場合には、カウントや、待ち解除の取りこぼしが発生する場合があります。取りこぼしが発生した場合は、分割されたファイルのサイズが、意図したサイズより少し大きくなる場合があります。
 また、「#FCHANGE」文の実行には、他の文より多くの時間がかかります。「#FCHANGE」文実行中に大量のデータを受信した場合は、データ通信上のエラーが発生することがあります。

ロガーのスクリプトは日本語文字コードをサポートしていません

SD/CFロガーのスクリプトは、日本語文字(漢字)コードの処理を行っていません。日本語文字(半角英数字以外の文字)の記述があった場合、使用した文字によっては、誤動作する可能性があります。

例外としてコメント行には、日本語文字の記述があっても、とくに問題は起こしません。コメント以外の行に、日本語文字を記述されないように、してください。

拡張子指定機能

SD/CFロガーで、ロギングファイルの拡張子を、スクリプトファイルで、指定できるようになりました。

ロギングファイルの拡張子は、従来「LOG」のみでしたが、ロガーで自由な拡張子が付けられます。パソコンに取り込んでから改名されていた場合は、その手間が省けます。

2015年5月出荷分(V052X)から対応いたします。

電池でロギングの例

SDロガー3を、乾電池で使用する例を紹介します。乾電池(単3)8本を、SDロガー3の電源として使います。フルークのテスターを用い、自らが駆動されている電池電圧をロギングしてみます。1行ごとに日付時刻を付加するスクリプトを用いて、日付時刻をデータに含めます。

ロギングしたデータをエクセルに取り込み、グラフにするとつぎのようになります。この例では、3日以上稼働しました。(ただし、電池寿命は、条件により、大きく変わります)

 

●スクリプト

    ;1行ごとに、日付時刻を付加するスクリプトです。

    ;改行コード(または、)を受信した場合、保存データから省くことを指定します。
    #f:OMIT :0D0A

    ;END文まで繰り返します。
    #LOOP EVER

    ;改行コードを受信するのを待ちます。
    #WAIT DATA :0D

    ;「, 20YY/MM/DD, hh:mm:ss 」の書式で、日付時刻を保存データに付加します。
    #LOG , 20@Y/@M/@D, @h:@m:@s@r@n

    ;ここまでを繰り返します。
    #END

 

※スクリプトの解説は下記「1行ごとに日付時刻を付加するスクリプト例」をご覧ください。

 

●フルークテスターの設定

9600bps、パリティ無、エコーオフ

[2ND]->[RATE]->「9600」->[AUTO]->「no」->[AUTO]->「OFF」->[AUTO]

 

20秒周期

[RATE]で「S」を選ぶ。[2ND]->[MN MX]->「50」->[AUTO]

 

直流電圧を選ぶ

[V—]

 

設定を保存(するなら)

[2ND]を押しながら[AUTO]

1行ごとに日付時刻を付加するスクリプト例

SDロガー3は、日付時刻機能が追加されています。スクリプトを用いることによって、保存データに、日付時刻を付加することが出来ます。
ここでは、接続相手として、5秒に1回、温度データを、1行のテキストとして、送信してくる温度計を想定して、保存データの行末に、日付時刻を付加するスクリプトの作り方を紹介します。

 

ロギングしたファイルをパソコンに取り込み、エクセルで処理させるとつぎのようなグラフが描けます。

温度チャート

●スクリプト

    ;1行ごとに、日付時刻を付加するスクリプトです。

    ;改行コード(<CR>または、<LF>)を受信した場合、保存データから省くことを指定します。
    #f:OMIT :0D0A

    ;END文まで繰り返します。
    #LOOP EVER

    ;改行コードを受信するのを待ちます。
    #WAIT DATA :0D

    ;「, 20YY/MM/DD, hh:mm:ss<CR><LF>」の書式で、日付時刻を保存データに付加します。
    #LOG , 20@Y/@M/@D, @h:@m:@s@r@n

    ;ここまでを繰り返します。
    #END

(解説)

「#f:OMIT :0D0A」は、あとで解説します。

「#LOOP EVER」で「#END」までのあいだを、永久に繰り返します。

「#WAIT DATA :0D」で、改行コード「<CR>」を受信するのを待ちます。「<CR>」は、16進数では「0D」です。「#WAIT DATA」では、「:」を付けてデータを書くと、16進数で書いたことを意味します。

「#LOG」文は、スクリプトから保存データに追加することのできる機能です。通常は、受信したデータが保存されますが、「#LOG」文を使うことによって、好きなデータを、保存データに追加することが出来ます。

「#LOG」文には、特殊な情報を保存する機能があります。日付時刻もその機能を使って保存データに追加します。たとえば「@Y」と書くと、西暦の下2ケタが保存されます。詳細はリファレンスマニュアルを、ご参照ください。

このスクリプトは、改行コードが「<CR>」だけでも、「<CR><LF>」でも対応できます。

 

●除外(オミット)機能

さて、単純に日付時刻を付加するだけなら、つぎのようなスクリプトで行なえます。

;END文まで繰り返します。
#LOOP EVER

;改行コードを受信するのを待ちます。
#WAIT DATA :0D

;「, 20YY/MM/DD hh:mm:ss」の書式で、日付時刻を保存データに付加します。
#LOG , 20@Y/@M/@D @h:@m:@s

;ここまでを繰り返します。
#END

ただ、これでは、日付時刻が改行コードのあとに付いてしまい、つぎの行の先頭になってしまいます。そこで、使えるのが除外(オミット)機能です。ロガーの基本機能は、受信したデータを、全てカードに保存することですが、除外機能を使うことによって、指定したデータを保存から除外することが出来ます。

最初のスクリプトでは、「#f:OMIT :0D0A」で、改行コード「<CR>」と「<LF>」を、保存から除外するように指定しています。そして、スクリプトの「#LOG」文で、改めて改行コードを付け足しています。そうすることによって、データと同じ行の後ろに、日付時刻を付加することが出来ます。

 

●電源供給

この例では、温度計の電源は、ロガー側から供給しています。SDロガーは、小さな電力(500mA程度まで)であれば、相手の接続装置に、電源を供給することが出来ます。基板上のジャンパーピンJ2を短絡すると、CN1(D-Sub)コネクタの9番ピンに、電源ラインがつながります。ロガーが、CN2(DCジャック)から供給を受けている電源が、CN1(D-Sub)コネクタの9番ピンにも供給されます。

使用可能カード

ロガーでご使用いただくカードは、一般的なカードであれば使用可能ですが、全ての状況で保証しきれないため、弊社からの推奨は控えさせていただいております。お客様がご使用される状況で、動作確認していただくことを、お願いしております。

弊社がSDロガーの、製品検査で使用しているカードは、つぎの通りです。弊社既定の検査項目では、動作確認が、できております。

「Transcend 2G Class4 TS2GSDC」

内部プログラムアップデートは8ビットで行ってください

SDロガー、CFロガーの、内部プログラム(ファームウェア)アップデートは、データビット設定は、8ビットで行ってください。
スクリプト版の場合、7ビットも指定できますが、7ビットで行なうと誤ったデータが書き込まれてしまい、最悪の場合、起動できなくなります。

外部からの電源制御

CFロガーは外部からの制御によって、電源をON/OFFすることが出来ます。

CFロガーの外部制御

PDFファイルをダウンロードして頂けます。(power-control-from-external.pdf)

取扱説明書の、[III 設定]−「3.ジャンパースイッチ」も、ご参照ください。

RTSの論理

スクリプトで制御するRTS信号の論理が逆です

スクリプト版でRTS信号を制御できるようになったCFロガーで、その論理が逆であることが分かりました。

CFロガーでは、

#RTS ON で Lowレベル。

#RTS OFF で Highレベル。

を出力します。申し訳ありませんが、スクリプトでRTSを制御される方はご注意ください。

 

この問題は、CMLoggerでは起こりません。すなわちCMLoggerとの互換性が損なわれています。

この問題は、スクリプトによるRTS制御を組み入れたV030S以降の、スクリプト版で起こります。

この問題の対策予定は、今のところ未定です。

ストップビットについて

Q:ストップビットの設定がありませんが、ストップビットはどうなっていますか
ストップビットは「1」固定です。
CFロガーが受信する場合は、ストップビット「1」のデータも、ストップビット「2」のデータも受け取れます。従がって、「自動ロギング版」では特にこだわる必要はありません。
CFロガーが送信する場合は、ストップビット「1」で送信されます。「コマンド版」、「スクリプト版」で、CFロガーからの送信を受け取る場合は、ストップビット「1」で受信してください。

※V032C以降のコマンド版では、ディップスイッチにより「2」ストップビットに設定できるようになりました。

※V032S以降のスクリプト版では、スクリプトの記述により「2」ストップビットに変更できるようになりました。

パーティションテーブルが無いカード

CFカードはごくまれに、パーティションテーブルが失われることがあるようです。

弊社のロガーは、パーティションテーブルが失われたカードを、うまく処理できません。例えば、マスター・ブート・レコード(ゼロセクタ目)がゼロクリアされたカードをWindowsでフォーマットすると、パーティションテーブルが無い状態でフォーマットされることが確認されています。

このような状況は特殊な状況で、通常は起こりえないと考えられます。

また、いったんパーティションテーブルが失われたカードに、例えばWindowsを用いて、再びパーティションテーブルを生成することは、難しいと思われます。

カメラなどの機器でフォーマットすると、パーティションテーブルが作られることもある、ことが確認されています。

パフォーマンスに関して

CFロガーは、フォーマット直後のカードを使用するのが一番パフォーマンスを発揮できます

パフォーマンスを必要とする応用には、フォーマット直後のカードを使用されることをお勧めします。

多くのファイルが入っているカードではどうなるか

起動されてから、ロギングが開始出来るまでの時間が長くなります。

また、作成できるファイルの数には上限があります。それを越えてしまった場合はロギングできません。

長く使っているカードではどうなるか

数多くファイルの作成や消去などを繰り返されたカードでは、空きスペースが連続せずに飛び飛びになっていることがあります。

そのようなカードで、高速にロギングしようとすると、書き込みが追いつかずエラーを起こす可能性があります。

どの程度でエラーを起こすかは、使用するカードにもよりますので一概にはいえませんが、あるカードで、最悪の条件を作った場合、19200bps以上で連続データをロギングしようとすると、エラーを起こす場合があります。

関連商品

アナログシリアルコンバータ

DT-ASC04i

詳細を見る

 

RS232C分配アダプタ

Page top