エンベデッドシステムスペシャリスト 2015年 午後1 問01
ポータブル心電計に関する次の記述を読んで、設問1~3に答えよ。
A社は、心電波形を24時間計測するポータブル心電計(以下、心電計という)を開発している。心電計は、胸部に貼り付けて(以下、装着という)計測するセンサユニット(以下、センサという)、及びセンサを装着した人が携帯して、センサが計測したデータを記録するレコーダユニット(以下、レコーダという)で構成される。センサとレコーダ間は、無線通信をしている。
心電計のシステム構成を図1に示す。

〔センサのシステム概要〕
センサのシステム構成を図2に、センサ構成要素の機能概要を表1に示す。


〔心電計の動作概要〕
① センサ及びレコーダは、電池交換後、24時間以上動作する。
② レコーダは、開始ボタン及び異常ボタンを備える。レコーダに電池がセットされた後、最初に開始ボタンが押された場合だけ、レコーダはレコーダ内のデータを消去し、さらに、開始ボタンが押されたことをセンサに通知(以下、開始通知という)する。センサは、開始通知を受け取ると、初期化を行う。
③ センサは、心電信号及び体温を500マイクロ秒周期で計測する。また、センサを装着した人の一定以上の動きを検出すると、加速度を1回計測する。計測した心電信号、体温及び加速度のデータは、それぞれ16ビットデータでデータ用RAMに保管(以下、一時保管という)される。
④ センサは、一時保管してある未送信のデータを4秒ごとに、レコーダに送信する。この1回の送信に、40ミリ秒掛かる。
⑤ センサを装着した人は、体の異常を感じた場合に、レコーダの異常ボタンを押して、異常の発生を記録することができる。レコーダは、異常ボタンが押された前後の各10秒間のデータにマークを付ける。さらに、異常ボタンが押されたことを、センサにも通知(以下、異常通知という)する。異常ボタンが押された後10秒間は、再度異常ボタンが押されても受け付けない。
⑥ センサは、異常通知を受け取ると、一時保管されている未送信のデータを送信する。異常通知を受け取った後10秒間は、計測したデータを一時保管しないで、その都度レコーダに送信する。
〔センサのソフトウェア概要〕
・センサに電池がセットされた場合、又は開始通知を受け取った場合、マイコンは、ハードウェア、変数及びフラグ類の初期化を行った後、各割込みを許可してスタンバイモードになる。
・マイコンは、いずれの割込み処理が完了した場合も、スタンバイモードになる。
・マイコンは、一時保管されているデータをリングバッファで管理する。リングバッファ操作中も割込みを受け付ける。
各割込み処理プログラムの動作概要を表2に示す。
設問1:心電計のシステムについて、(1)、(2)に答えよ。
設問1(1)
問題文を見るレコーダは、電池がセットされた後、最初に開始ボタンが押された場合だけ、心電計を初期化する。2回目以降の開始ボタン操作を有効にしていない理由を、計測したデータの保管に着目して、40字以内で述べよ。
模範解答
計測中に開始ボタンが押されると、計測したデータが消えてしまうから
解説
解答の導き方
この設問では、開始ボタンを2回目以降に押せるようにすると、計測済みのデータの保管にどんな問題が起きるかを考えます。
まず、計測したデータはセンサのデータ用RAMに一時保管され、未送信のデータは「4秒ごとに」レコーダへ送信されます。つまり、計測を続けるうちに、データの一部はレコーダに蓄積されていきます。
一方、開始ボタンが押されたときの処理について、本文には「最初に開始ボタンが押された場合だけ、レコーダはレコーダ内のデータを消去し」とあります。開始操作を2回目以降も有効にすると、計測中に開始ボタンが押された場合にも、レコーダ内に蓄積されていたデータを消去する処理が起こり得ます。
その結果、すでに計測してレコーダに保管していたデータが失われます。したがって、2回目以降の開始ボタン操作を有効にしていないのは、計測中の再操作によって計測済みデータが消えてしまうのを防ぐためです。
誤りやすいポイント
- 開始ボタンを押すと計測が始まることだけに注目し、レコーダ内のデータ消去を見落とさないようにします。
- センサのデータ用RAMに一時保管されるデータと、レコーダに送信されて保管されるデータを区別します。この設問で特に問題となるのは、レコーダ内に蓄積されたデータの消去です。
- 異常ボタンの処理と混同しないようにします。異常ボタンは異常の発生を記録するためのもので、開始ボタンとは役割が異なります。
FAQ
Q: 開始ボタンを2回目に押すと、なぜデータが消えるのですか?
A: 開始操作に伴う処理には、レコーダ内のデータを消去する処理が含まれています。計測中にその処理が再び実行されると、すでに蓄積したデータが失われるおそれがあります。
A: 開始操作に伴う処理には、レコーダ内のデータを消去する処理が含まれています。計測中にその処理が再び実行されると、すでに蓄積したデータが失われるおそれがあります。
Q: センサのデータ用RAMにあるデータも、同じ理由で消えるのですか?
A: 設問の中心は、レコーダ内に保管された計測データが消えることです。センサでは未送信データを一時保管し、レコーダへ送信しています。
A: 設問の中心は、レコーダ内に保管された計測データが消えることです。センサでは未送信データを一時保管し、レコーダへ送信しています。
Q: 異常ボタンも、計測データを消去する操作ですか?
A: いいえ。異常ボタンは異常の発生を記録し、センサへ異常通知を送るための操作です。
A: いいえ。異常ボタンは異常の発生を記録し、センサへ異常通知を送るための操作です。
関連キーワード: データ保全、初期化、データ消去、データ記録、データ転送
設問1(2)
問題文を見るセンサは、データ用RAMにある未送信のデータを4秒ごとに送信しているが、データ用RAMは4秒以上のデータを保管できる。無線通信時の通信エラー以外に、どのような理由から4秒以上のデータを保管するのか。一時保管されているデータの保管タイミングに着目して、50字以内で述べよ。
模範解答
タイマ2の割込み直後に、タイマ1の割込みが入り、計測データを保管する場合があるから
解説
解答の導き方
-
センサは、未送信のデータを「4秒ごとに」レコーダへ送信します。これは送信する間隔を示しており、送信のタイミングによっては、計測したデータが次の送信まで一時保管されることがあります。
-
計測データは、タイマ1の割込み処理で一時保管されます。タイマ1の割込み周期は「500マイクロ秒周期」です。一方、タイマ2の割込み周期は「4秒周期」で、タイマ2の割込み処理がレコーダへの送信を行います。表2の割込み優先度はタイマ1が1、タイマ2が3で、タイマ1の方が高いため、タイマ2の処理中でもタイマ1の割込みは直ちに受け付けられます。
-
タイマ2の割込みの直後にタイマ1の割込みが入ると、送信処理を中断して計測データが一時保管されます。このデータは、始まったばかりの今回の送信には含まれず、4秒後の次のタイマ2割込みまでリングバッファに残ります。その間にも500マイクロ秒ごとの計測データが続けて保管されるため、次の送信が始まる時点では、このデータを含めてほぼ4秒分のデータがたまっており、さらに送信中にも計測データが加わるので、4秒分を超えます。
したがって、送信間隔が4秒でも、送信の直後に保管されたデータが次の送信まで丸4秒残り、さらに1回の送信には「40ミリ秒」掛かるので、その間の計測データも加わります。このため、データ用RAMには4秒分を超えるデータを保管できる容量が必要になります。
誤りやすいポイント
- 送信間隔が4秒だから、保管するデータも4秒分あれば十分だと考えることです。送信の直後に保管されたデータは、次回の送信まで一時保管されます。
- 送信が終わった後に保管されたデータだけを考えることです。それらは次の送信まで4秒未満しか待ちません。問題になるのは、優先度の高いタイマ1がタイマ2の処理に割り込み、今回の送信に含まれないデータが送信の直後に保管される場合です。
- 無線通信時の通信エラーだけを理由にすることです。この設問では、計測データが保管されるタイミングに着目します。
- タイマ1とタイマ2の役割を混同することです。タイマ1は計測データの保管に関係し、タイマ2は定期送信に関係します。
FAQ
Q: 送信直後の計測データは、なぜその送信に含まれないのですか?
A: タイマ1の優先度はタイマ2より高いため、タイマ2の割込み直後にタイマ1の割込みが入ると、送信処理を中断して計測データが保管されます。このデータは今回の送信の対象にならず、次回の定期送信まで一時保管されます。
A: タイマ1の優先度はタイマ2より高いため、タイマ2の割込み直後にタイマ1の割込みが入ると、送信処理を中断して計測データが保管されます。このデータは今回の送信の対象にならず、次回の定期送信まで一時保管されます。
Q: タイマ1とタイマ2の割込み優先度は、どう関係しますか?
A: タイマ1の優先度は1、タイマ2の優先度は3です。タイマ1の割込みはタイマ2より優先されるため、タイマ2の処理中でも計測データを保管するタイミングが生じます。
A: タイマ1の優先度は1、タイマ2の優先度は3です。タイマ1の割込みはタイマ2より優先されるため、タイマ2の処理中でも計測データを保管するタイミングが生じます。
Q: 4秒ごとに送信するなら、保管期間も最大4秒と考えてよいですか?
A: 送信間隔だけでは決まりません。送信直後に保管されたデータは次の送信まで丸4秒残り、その送信中にも計測データが保管されるため、4秒分を超える容量が必要です。
A: 送信間隔だけでは決まりません。送信直後に保管されたデータは次の送信まで丸4秒残り、その送信中にも計測データが保管されるため、4秒分を超える容量が必要です。
関連キーワード: 割込み処理、割込み優先度、周期処理、データバッファ、データ保管
設問2:センサのハードウェアについて、(1)、(2)に答えよ。
設問2(1)
問題文を見る心拍と心電波形の1周期の関係を図3に示す。心電波形1周期のサンプリング回数を200回以上としたとき、計測できる1分当たりの最大心拍数は何回か。答えは小数第1位を四捨五入して、整数で求めよ。


模範解答
600
解説
解答の導き方
1分当たりの最大心拍数を求めるには、心拍1回分の波形を計測できる最短時間を求めます。
本文には、センサが「心電信号及び体温を500マイクロ秒周期で計測」するとあります。つまり、心電信号のサンプリング間隔は500マイクロ秒です。
また、図3では、心電波形の1周期を200回以上サンプリングするとされています。最大心拍数を求めるため、1周期に必要なサンプリング回数を最小の200回として計算します。
したがって、心拍1回分の波形を計測する最短時間は、
です。1分間に含まれる心拍数は、
となります。小数第1位を四捨五入しても値は変わりません。
誤りやすいポイント
- 500マイクロ秒を、1秒間に計測する回数と取り違えないようにします。これは1回ごとのサンプリング間隔です。
- 「1周期を200回以上」という条件では、最大心拍数を求めるため、1周期当たりのサンプリング回数を最小の200回として計算します。
- 1分間の心拍数を求めるため、まず心拍1回分の時間を求め、その後に60秒で割ります。
FAQ
Q: 500マイクロ秒周期では、1秒間に何回サンプリングしますか?
A: 1秒は1,000,000マイクロ秒なので、回です。
A: 1秒は1,000,000マイクロ秒なので、回です。
Q: なぜ1周期のサンプリング回数を200回として計算するのですか?
A: 200回以上という条件を満たす最短の周期が、最大心拍数に対応するためです。
A: 200回以上という条件を満たす最短の周期が、最大心拍数に対応するためです。
Q: 心拍1回分の時間が短くなると、心拍数はどうなりますか?
A: 1分間に含まれる心拍の回数が増えるため、心拍数は大きくなります。
A: 1分間に含まれる心拍の回数が増えるため、心拍数は大きくなります。
関連キーワード: 心拍数、サンプリング周期、サンプリング周波数、サンプリング回数
設問2(2)
問題文を見る体温の測定に関する次の文中のa、bに入れる適切な数値を求めよ。
体温を25.0℃~50.0℃の範囲で、0.1℃の刻みで計測したい。この範囲及び刻みで体温を表現するために必要なビット数は、aビットである。また、温度とADC2入力電圧の関係が図4の場合、ADC2の変換誤差は考えないとすると、ADC2のビット数は、bビット以上必要になる。ここでADC2の変換値は、入力電圧が0Vの場合に0になり、5Vの場合に最大値になるものとする。


模範解答
a:8
b:10
解説
解答の導き方
この設問では、まず測定したい温度の値の数から体温データに必要なビット数を求め、次に図4の温度と入力電圧の関係からADC2に必要なビット数を求めます。
[a] 体温を表現するためのビット数
問題文の測定範囲は「25.0℃~50.0℃」、刻みは「0.1℃」です。範囲の両端を含めた測定値の数は、次のようになります。
測定値を251通り表すには、少なくとも251種類のビットパターンが必要です。7ビットでは 通りで足りませんが、8ビットなら 通りを表せます。したがって、[a]は8ビットです。
[b] ADC2に必要なビット数
図4では、温度が25°Cのとき入力電圧は2 V、50°Cのときは4 Vで、温度と入力電圧は直線関係です。したがって、温度が0.1℃変化したときの電圧変化は、
です。つまり、ADC2は0.008 V程度の違いを識別できる必要があります。
ADC2は入力電圧0 Vで変換値が0、5 Vで最大値になります。温度の測定範囲に対応する電圧範囲は2 Vなので、全電圧範囲5 Vのうち、測定範囲が占める割合は です。25.0℃から50.0℃までには250個の刻みがあるため、その250個の変化を区別するには、ADCの最大変換値を として、次を満たす必要があります。
よって、 です。 ビットのADCの最大変換値は なので、9ビットでは最大値が511で不足します。一方、10ビットでは最大値が1023となり条件を満たすため、[b]は10ビット以上必要です。
誤りやすいポイント
- 測定値の数を求める際、両端の値を含めるための「+1」を忘れないようにします。刻みの数は250ですが、測定値は251通りです。
- [a]は測定対象の温度を表現するビット数、[b]は0 Vから5 Vまでの入力範囲を変換するADCのビット数です。対象となる値の数が異なるため、同じビット数にはなりません。
- ADCの必要ビット数を考えるときは、測定範囲に対応する2 Vだけでなく、ADCの入力範囲全体である5 Vも考慮します。
FAQ
Q: 温度の刻みが250個なのに、[a]で必要な値の数は251通りなのはなぜですか。
A: 25.0℃から50.0℃までの間には250個の刻みがありますが、最初と最後の値も測定値に含まれるため、値の数は251通りです。
A: 25.0℃から50.0℃までの間には250個の刻みがありますが、最初と最後の値も測定値に含まれるため、値の数は251通りです。
Q: なぜ温度データを表すビット数より、ADC2のビット数の方が多くなるのですか。
A: 温度データは測定範囲内の251通りを表せばよい一方、ADC2は0 Vから5 Vまでの範囲を変換します。測定範囲の電圧幅がその一部に限られるため、必要なADCの分解能はより細かくなります。
A: 温度データは測定範囲内の251通りを表せばよい一方、ADC2は0 Vから5 Vまでの範囲を変換します。測定範囲の電圧幅がその一部に限られるため、必要なADCの分解能はより細かくなります。
Q: ADCの変換誤差を考えない場合でも、変換値の段階数は考慮する必要がありますか。
A: はい。変換誤差を無視しても、ADCのビット数で決まる量子化の細かさは残ります。隣り合う測定値を区別できる分解能が必要です。
A: はい。変換誤差を無視しても、ADCのビット数で決まる量子化の細かさは残ります。隣り合う測定値を区別できる分解能が必要です。
関連キーワード: A/D変換、量子化、分解能、ビット数、フルスケール
設問3:センサのソフトウェア動作について、(1)、(2)に答えよ。
設問3(1)
問題文を見る模範解答
c:心電信号及び体温
d:10秒経過したら
e:リングバッファ内の未送信のデータ
解説
解答の導き方
まず c は、タイマ1割込み処理で周期的に計測するデータです。本文では、心電信号と体温を「500マイクロ秒周期で計測する」とあります。また、表1では心電信号測定部と体温測定部がそれぞれアナログ信号を出力し、制御部にはADC1及び2が備わっています。したがって、タイマ1割込みで計測するのは「心電信号及び体温」です。加速度は一定以上の動きが検出されたときに計測され、シリアルI/F2の割込み処理で扱うため、ここには含めません。
次に d は、異常通知フラグをいつクリアするかを表します。異常通知を受け取った後の10秒間は、センサが計測データを一時保管せず、その都度レコーダに送信します。この間は異常通知フラグをセットしておき、10秒が経過した時点でクリアすれば、その後は通常の一時保管と送信に戻れます。タイマ1は500マイクロ秒周期で動作し、異常通知を受け取った際にはタイマ1割込み回数も保存するため、経過時間を判断できます。
最後に e は、タイマ2割込みでレコーダに送信するデータです。タイマ2は4秒周期で割込み要求を出します。通常時は一時保管したデータを4秒ごとに送信するため、送信対象はリングバッファ内にある未送信のデータです。異常通知フラグがセットされている間は、タイマ1割込み処理などで計測データをその都度送信するため、タイマ2による定期送信の条件から除かれています。
誤りやすいポイント
- c に加速度を含めないようにします。加速度は周期的なアナログ計測ではなく、動きを検出したときにシリアルI/F2から受け取るデータです。
- d を「異常ボタンが再度押されたとき」と考えないようにします。ここで問われているのは、センサの異常通知フラグをクリアするタイミングです。
- e を「直近4秒間のデータ」と限定しないようにします。送信するのは、リングバッファに一時保管されている未送信のデータです。
FAQ
Q: 異常通知の後も、心電信号と体温の計測は続きますか。
A: 続きます。タイマ1割込み処理は異常通知フラグがセットされている場合にも計測を行い、計測したデータをレコーダに送信します。
A: 続きます。タイマ1割込み処理は異常通知フラグがセットされている場合にも計測を行い、計測したデータをレコーダに送信します。
Q: なぜタイマ2割込みでは異常通知フラグがセットされていない場合だけ送信するのですか。
A: 異常通知フラグがセットされている間は、計測データを一時保管せず、その都度送信する動作に切り替わるためです。
A: 異常通知フラグがセットされている間は、計測データを一時保管せず、その都度送信する動作に切り替わるためです。
関連キーワード: 周期割込み、A/D変換、割込み処理、リングバッファ、データ送信
設問3(2)
問題文を見るシリアルI/F2の割込み処理で、加速度データにタイマ1割込み回数の値を付加して一時保管している目的を、25字以内で述べよ。
模範解答
加速度の発生タイミングを明確にするため
解説
解答の導き方
問われているのは、加速度データに「タイマ1割込み回数の値」を付ける目的です。
表1では、タイマ1が「500マイクロ秒周期で割込み要求を出力する」とされています。また、表2の注記では、タイマ1割込み回数は初期値が0で、タイマ1の割込み処理内でインクリメントされる変数です。したがって、この回数から、初期化後の時間の経過を500マイクロ秒単位で把握できます。
一方、心電信号と体温は500マイクロ秒周期で計測されますが、加速度データは、一定以上の動きを検出したときに別の割込み処理で受け取ります。つまり、加速度データが発生するタイミングは、周期的な計測データのタイミングとは異なります。
そのため、加速度データにタイマ1割込み回数を付けることで、心電信号や体温の計測に対して、加速度がいつ発生したかを対応付けられます。目的は、加速度の発生タイミングを明確にすることです。
誤りやすいポイント
- 加速度データの値そのものを補正したり、動きの大きさを示したりするための情報だと考えないようにします。付加しているのはタイマ1割込み回数であり、時間位置を示す情報です。
- 加速度データの発生時刻を絶対時刻で記録していると誤解しないようにします。ここで分かるのは、タイマ1割込み回数に基づく相対的な時間位置です。
- 加速度データを一時保管する処理であっても、目的は保管そのものではありません。周期計測データとの時間的な対応を明確にするためです。
FAQ
Q: 加速度データは、心電信号や体温と同じ周期で計測されますか。
A: いいえ。心電信号と体温は500マイクロ秒周期で計測されますが、加速度は一定以上の動きを検出したときに送信されます。
A: いいえ。心電信号と体温は500マイクロ秒周期で計測されますが、加速度は一定以上の動きを検出したときに送信されます。
Q: タイマ1割込み回数から分かるのは、どのような時刻ですか。
A: 初期化後に何回のタイマ1割込みが発生したかを表すため、周期計測に対する相対的な時間位置を把握できます。
A: 初期化後に何回のタイマ1割込みが発生したかを表すため、周期計測に対する相対的な時間位置を把握できます。
関連キーワード: 割込み、周期計測、タイマカウンタ、相対時刻、非同期データ




