Technology
不揮発性メモリ
(ふきはつせいメモリ)
不揮発性メモリとは、機器の電源を切っても保存したデータが失われない記憶媒体です。組込機器では、設定値、校正値、積算値、異常履歴、製品情報など、再起動後も保持する必要があるデータの保存に使用されます。
代表的な不揮発性メモリには、フラッシュメモリ、EEPROM、FRAM、MRAMなどがあります。種類によって、書換え可能回数、保存容量、書込み速度、消費電力、データ保持期間が異なります。
ハカルプラスでは、保存するデータ量、更新頻度、停電時の動作、製品寿命を確認し、適切な不揮発性メモリと保存方式を検討します。
不揮発性メモリの主な用途
- 機器の設定値や動作条件
- ロードセルなどの校正値
- 積算流量、積算電力量、累積運転時間
- 異常履歴や操作履歴
- 製造番号、製品ID、基板バージョン
- ファームウェア更新用データ
電源投入時には、不揮発性メモリから必要なデータを読み出し、制御処理へ反映します。
フラッシュメモリ
フラッシュメモリは、大容量のデータを比較的低コストで保存できる記憶媒体です。マイコン内蔵フラッシュ、外付けシリアルフラッシュ、SDカード、USBメモリなどに利用されています。
一般に、データを書き換える前に一定単位で消去する必要があります。1バイトだけ変更したい場合でも、セクタやページ単位の処理が必要になることがあります。
EEPROM
EEPROMは、比較的小容量の設定値や校正値の保存に適しています。フラッシュメモリより細かい単位で書き換えられる製品が多く、設定変更の保存に使用されます。
ただし、書換え可能回数には上限があります。頻繁に更新する積算値などを毎回書き込むと、製品寿命より早く書換え限界へ達する可能性があります。
FRAMとMRAM
FRAMやMRAMは、一般的なフラッシュメモリやEEPROMより書込み速度が速く、書換え可能回数が多い不揮発性メモリです。
頻繁に更新する積算値や履歴に適していますが、容量、価格、入手性を確認する必要があります。製品の長期供給性も選定条件となります。
書換え寿命
不揮発性メモリには、同じ場所を書き換えられる回数の上限があります。例えば、1秒ごとに同じアドレスへ積算値を書き込むと、短期間で寿命へ達する場合があります。
書込み頻度を減らす、複数の領域を順番に使用する、書換え耐久性の高いメモリを選ぶなどの対策が必要です。
ウェアレベリング
ウェアレベリングとは、同じ領域へ書込みが集中しないよう、複数のメモリ領域へ書込み位置を分散する方法です。
最新データの位置を管理し、順番に別領域へ保存します。全領域を使い切ったら、古い領域を消去して再利用します。
停電時のデータ保存
運転中の積算値や工程状態を停電時に保存する場合、電源電圧低下を検出し、電源が完全に失われる前に書込みを完了させます。
コンデンサやバックアップ電源で必要な保持時間を確保します。停電検出から書込み完了までに必要な時間を実測し、余裕を持たせます。
定期保存
停電直前だけに保存を行うと、電源回路故障や急激な電圧低下では間に合わない場合があります。
一定時間ごと、一定量変化するごと、工程完了ごとに定期保存し、停電時には最新差分だけを書き込む構成が有効です。
データ破損への対策
書込み途中に電源が失われると、一部のデータだけが更新され、内容が不整合になる可能性があります。
チェックサムやCRCを付加し、読み出し時にデータが正常か確認します。二つの領域へ交互に保存し、更新完了フラグがある方を採用する方法もあります。
二重化保存
同じデータを二つ以上の領域へ保存すると、一方が破損してももう一方から復旧できます。
単純に同じデータを同時に書き込むと、停電時に両方が破損する可能性があります。旧データを残したまま新データを書き、検証後に有効データを切り替えます。
データ形式とバージョン管理
ファームウェア更新によって設定項目やデータ構造が変わる場合があります。不揮発性メモリへ保存するデータにバージョン番号を持たせ、旧形式から新形式へ変換します。
変換できない場合は、安全な初期値へ戻し、校正値や重要設定を別領域から復元できる構成を検討します。
初期値の扱い
製造直後やメモリ異常時には、保存データが存在しない場合があります。その際に使用する初期値をあらかじめ定めます。
初期値で設備を自動運転すると危険な場合は、設定未完了として運転を禁止し、作業者へ設定操作を求めます。
校正値の保護
ロードセルやセンサの校正値は、誤って消去・変更すると計測精度へ影響します。通常設定とは別の領域へ保存し、変更権限を制限します。
校正日時、校正者、旧値、新値も保存すると、保守履歴として利用できます。
積算値の保存
積算流量、運転時間、生産数量などは頻繁に変化します。毎回保存するのではなく、一定量増加した場合や一定時間ごとに保存します。
停電後に少量の差が失われても問題ないか、完全保持が必要かによって保存周期を決めます。
異常履歴の保存
異常履歴は、循環バッファとして古いデータから上書きする方法があります。保存件数、1件あたりのデータ量、想定発生頻度から必要容量を決めます。
異常が短時間に大量発生した場合でも、最初の異常を失わないように設計します。
書込み中の排他制御
複数の処理が同時にメモリへアクセスすると、データ破損や処理競合が起こる可能性があります。
書込み中は他の処理を待たせる、キューへ保存要求をまとめるなど、アクセスを管理します。リアルタイム制御へ影響しないよう、書込み時間も確認します。
メモリ異常の検出
読出しエラー、CRC不一致、書込み失敗、容量不足などを監視します。異常を検出した場合は、バックアップデータへ切り替える、初期値へ戻す、運転を禁止するなどの処理を行います。
重要データが失われた状態で自動運転を続けないようにします。
ハカルプラスの対応
ハカルプラスでは、保存容量、更新頻度、製品寿命を確認し、フラッシュ、EEPROM、FRAMなどを選定します。
ウェアレベリング、二重化、CRC、停電保存、データ移行を組み合わせ、設定値や履歴を安定して保持できる組込ソフトを検討します。
よくある質問
Q. 不揮発性メモリは何回でも書き換えられますか?
A. 種類ごとに書換え可能回数の上限があるため、更新頻度に応じた設計が必要です。
Q. 電源が突然切れてもデータは残りますか?
A. 書込み完了済みのデータは保持されますが、書込み途中のデータは破損する可能性があります。
Q. 積算値を毎秒保存できますか?
A. メモリ寿命へ影響するため、保存周期、ウェアレベリング、耐久性の高いメモリを検討します。
Q. ファームウェア更新後も設定値を引き継げますか?
A. データ形式とバージョンを管理し、旧形式から変換できる構成にすれば引き継げます。
Q. データ破損を検出できますか?
A. CRC、チェックサム、二重化保存などを使用して検出・復旧できます。