カード記録データが異常の場合のデータ救済方法
TOB3 Data rescue service by CLIMATEC is here
How to rescue alive data from broken data files written in CF card
(English version is here)
2011/08/01 クリマテック(株) サポート係
手に負えない場合は、当方にご連絡下さい
1)当社に問い合わせる方はこちら
2) PCに詳しく、自分でトライしてみたい方はこちら
まず最初に | Repair 処理を行ってみて下さい。 方法はこちら |
1) | 当社に状況をメールでお知らせ下さい お名前、会社名(所属名)、職名 使用ロガー、CFカードの情報(容量、メーカー、型番)、FORMATの方法(FAT/FAT32) どんなデータか(データの期間、並び、インターバル) データの重要性 |
2) | CFカードに記録された生データファイルを用意して下さい(*.dat) |
3) | Zipまたは、LZHタイプに圧縮して下さい |
4) | 宅ファイル便やFTPサイトを使用して、ファイルをお送り下さい メールには添付しないで下さい 100M以上の場合は、当社にご相談下さい(FTPサイトをご紹介します) |
5) | 当社にて解析します |
6) | 回収に成功したデータをお送りします。 データファイルは、1日、1時間、30分区切りが選択できます |
条件 以下の条件をご了承頂ける場合、当社のサービスを受けられます。 データの救済を保証するものではありません 当社のお客様以外は、1ユーザー、1ファイルまでとします。 お送り頂いたファイルは、第3者に公開、コピーすることはありません。 解析した結果をWeb上に公表することがあります(その場合、オリジナルデータはわからないように、マスクします。 |
大前提>>元の生データファイルは、必ず保存しておいて下さい
同じファイルを圧縮して、バックアップとしても保存してください。
CR1000などのロガーで記録したTOB3形式データが異常な場合の
修正方法の解説です
専門的な用語も出てきますので、手に負えない場合は、当方にご連絡下さい
異常データの処理例を今後記載していきます
(なお、16進数は、2Ch 10進数は 32xなどと、表示します。 簡単な演算方法はこちら)
データサイズが大きい場合(1GBなど)には、USBフラッシュなど高速なメディアにコピーして
作業されることをお奨めします。また、PCには十分なメモリー容量(1GB以上)が必要です。
ここでは、RDtob V2.41以後を使用した救済方法を記します。
目次
その1:ヘッダーの後にある、不要データを読み飛ばし
その1) ヘッダーの後にある、不要データを読み飛ばし
症状:時刻が最初からずれている
バイナリーエディター(例えば、Stirling)で対象のファイルを表示します。
0)基礎
CR1000などで採用している TOB2,3のバイナリファイル形式は、以下の通りです
ファイル
ヘッダー(512バイト)・・・ヘッダーの長い場合は、512(200h)の倍数
フレーム
|
フレーム
フレーム(EOFフレーム)
という構造で 1つのフレームは
フレーム
フレームヘッダー(12バイト):フレーム番号と時刻情報
データレコード*約1000バイトになるまでの数
フレームフッター(4バイト):終了情報
1)RDtobで読み取り
とりあえず、エラーは出ますが、RDtobで読み込んでみます。
致命的でない限りヘッダーの情報を得ることができます
下の例では、Start time End time が異常になっています
ヘッダーサイズ:512
データサイズ:990
レコードサイズ:22
1フレームの中のレコード数:45
というデータが得られます
上記より、1フレームの長さは
12+990+4=1006バイト/フレーム
2)バイナリーエディターで調査
1)正しい例
200hよりデータフレームが始まります。
200-20Bh 最初の12バイト:フレームのヘッダー(時刻など)
必ず、00 00 00 00 という004個組が存在する
20C-221h データ1(22バイト)
222-237h データ2(22バイト)
200h + 1006x(3DEh) = 5EEh
5D4-5E9h:データ45
5EA-5EDh:1フレーム目 最後の4バイト:フレームフッター
5EE-60Fh:2フレーム目 ヘッダー(12バイト)
610-625h:データ46(2フレーム目 最初のデータ)
2)正しくない例
200h:初めのフレームヘッダーに、00 00 00 00 という004個組が存在しない
以下を検索する
検索すると、最初に以下がヒット
前後調べてみると
54E-551:前のフレームのフッター
552-55D:フレームヘッダー
上記前後はデータ
であるとみられる。更に次のフレームを調査
940-94Bh:フレームヘッダー
のようだ
940h−552h=3FEh=1006x
ということで、ちょうどフレーム間隔であることが判明
200h−551hまでの850xバイトを読み飛ばせば、正常に処理できる可能性がある。
3)RDtobで読み取り処理
3−1) Startデータの読込
仮読み込みした後、読み飛ばし数がわかったのでEDITボタンを押します
ウィンドウが表示されるので、読み飛ばし数850を入力→OKをクリック
以下の、右下のAuto search end of dataのチェックをはずします
そして、もう一度、ファイルを読み直します
今度はデータが正常に読み込めました。
これでスタートデータレコードはOK
3−2)終了データレコードの探索
自動検索がうまくいかない場合、以下の方法で検索していきます
Data Read:のチェックをはずしてから、NextMark>> ボタンをクリックします。
Frame Headerのテキストボックスのフレーム番号がカウントアップされ、時刻が表示されます
上記オプションでは、フレームのヘッダーだけ読み込むので、高速にデータを検索できます。
ある程度読み込むと、上のように1990/01/01というように、日付が異常になります。
そこで、STOPボタンを押します。
最後のデータはそれより前なので、今度は、<<PrevMarkを押します
以下のように正常な日付が見られたら、再度STOPボタンを押すということを
繰り返し、最後のフレーム近くまで位置を動かします
上記方法は高速で特定できないので、Data ReadボタンをONにしてゆっくりと、表示していき、
最後のフレームを特定します
Next frame> 1フレームずつ、前に進みます
Next Mark>> 連続でStopを押すまで前に進みます Prevはその逆
STOPの下のテキストボックスにフレーム番号を入力し、
Next Mark>>ボタンを押すと、ジャンプすることができます
最終フレームが特定できたら、出力フレームを設定します
3−3)データのファイル出力
n
File Output設定の中で、OutFrameのなかのEndを指定します。
その後、オプションを設定して、Output to Fileボタンを押すと
データが出力されます。
以上で終了。
参考) 16進計算
16進の演算はWindows標準の電卓で簡単に行えます。
16進で200hは
10進では、512xです。
10進ボタンを押すだけ。
16進の演算、そのまま16進モードで行います。
16進10進の混合演算。
入力するたびに、各モードへ移行します