応用情報技術者 2015年 秋期 午後 問07
通信機能を内蔵したディジタル電力量計の設計に関する次の記述を読んで、設問1~4に答えよ。
H社は計測器のメーカである。今回、通信機能を内蔵したディジタル電力量計(以下、電力量計という)を設計することになった。この電力量計は、計測したデータを電力会社のサーバ(以下、サーバという)に自動で送信する。
〔電力量計の機能〕
電力量計を用いた電力量計測システムの構成を、図1に示す。

電力量計の機能は、次のとおりである。
(1) 電力量計は、一般家庭、工場などに設置され、電力量を計測し、記録する機能がある。また、内蔵した時計(以下、時計という)で時刻を計時する機能がある。内蔵バッテリを使用し、停電時にもこれらの機能を維持できる。
(2) 電力量計には通信機能があり、サーバと双方向通信ができる。通信は、携帯電話回線、インターネット、電力会社が敷設した専用線などのネットワークを使用して行う。
(3) 電力量計は、時刻補正サーバ又は検針員用の専用端末を利用し、時計を十分な精度で補正できる。
(4) 電力量計は、1秒ごとに1秒分の電力量を計測する。計測によって得られた電力量のデータには、年月日を含む秒単位の時刻情報(以下、タイムスタンプという)が付与される。このデータを1秒データといい、電力量計は最大70日分の1秒データを保持する。
(5) 電力量計は、每時0分0秒から29分59秒までのタイムスタンプが付いた1秒データ、又は毎時30分0秒から59分59秒までのタイムスタンプが付いた1秒デ一タ(以下、これらを電力量データという)をサーバに送信する。通常、電力量データは1,800個の1秒データから成るが、条件によっては1,800個とならないことがある。その場合、電力量計は電力量データ中の1秒データの個数が1,800個となるように補正する。
(6) 電力量計は、サーバに電力量データを送信するとき、電力量計の識別コード及びプログラムのバージョン番号を付与する。
(7) 検針員が出向いて検針し、データ収集することもできる。
〔電力量計のハードウェア構成〕
電力量計のハードウェア構成を表1に示す。この電力量計は計測部及び通信部から成る。

〔サーバの機能〕
(1) 電力量データの収集
サーバから電力量計に対して、指定した時間帯の電力量データの通知要求を送る。サーバは、電力量計から送られてきた電力量計の識別コード、プログラムのバージョン番号を確認し、電力量データとともにデータベースに格納する。
(2) 検針員による検針の指示
サーバは、月初めのバッチ処理で、データベース上で電力量データに欠落がある電力量計一覧を出力する。検針員は電力量計一覧に従って検針し、データを収集する。
〔計測部のADコンバータ〕
計測部は、竜圧と電流を計測して電力を求める。このうち、電圧値を計測するADコンバータは、最下位ビットが1/2,048ボルトの重みであり、負の値を2の補数表現として-1,024ボルト~1,024ー(1/2,048)ボルトの範囲の電圧を計測できる。このADコンバータに必要な最小のビット数は、aビットである。
〔電力量計のタスクの主な処理)
電力量計のプログラムは、通信制御タスク及び管理タスクから成る。力量計のタスクの主な処理は表2のとおりである。

設問1:
電力量データの1秒データの個数が1,800個とならないのはどのようなときか、40字以内で述べよ。ただし、うるう秒及び新たに電力量計を設置した場合を除くものとする。
模範解答
時計の補正機能によって、時計の時刻が1秒以上変化したとき
解説
解答の論理構成
-
1秒データの総数
- 問題文の機能(5)に「通常、電力量データは 1,800個の1秒データ から成る」とあります。
- 1時間を前半(0分0秒~29分59秒)と後半(30分0秒~59分59秒)に分け、各30分は60秒×30=1,800秒になるため、本来は必ず1,800個です。
-
1,800個とならない理由を探す
- 同じ機能(5)で「条件によっては 1,800個とならないことがある」と明記されています。
- 何の条件かは本文中に直接書かれていませんが、他に“秒数”が変動する要因を探すと、時計補正の記述が複数見つかります。
-
時計補正の存在
- 機能(3)には「電力量計は、時計を十分な精度で補正できる」とあります。
- 表2 管理タスクには「時刻の誤差が±0.5秒を超えないように、一定周期で…時刻補正要求を送る」とあります。
-
補正量と秒単位データの整合
- 時計を補正するとき、1秒未満の微調整なら観測上の秒数は変わりません。
- しかし誤差が蓄積し 1秒以上ずれる と、
- 進める補正 ⇒ ある秒が“飛ばされ”1秒データが欠落(1,799個)
- 遅らせる補正 ⇒ 同じ秒が“重複”し1秒データが重複(1,801個)
- したがって「時計補正で時刻が1秒以上動いたとき」が該当条件となります。
-
うるう秒と新設は除外
- 設問の但し書きで「うるう秒及び新たに電力量計を設置した場合を除く」とあるため、唯一残る要因は時計補正だけです。
結論:時計補正で時刻が1秒以上変化すると、30分間に生成される1秒データの数が1,800個からずれてしまいます。
誤りやすいポイント
- 「停電で計測が止まる」と考える
内蔵バッテリがあり、停電時でも計測は継続します。 - 「通信障害で送れないから不足する」と考える
データ送信に失敗しても計測と格納は行われるため個数には影響しません。 - 「うるう秒」「設置初日」を理由に挙げる
設問で除外指定されています。 - 補正量が±0.5秒と勘違い
±0.5秒を超えないように補正要求を出しますが、実際の補正では1秒単位の調整が起こり得ます。
FAQ
Q: 0.3秒ずれただけで補正した場合も1,800個とならなくなりますか?
A: 1秒未満の補正では秒そのものは削除・重複しないため、1,800個のままです。
A: 1秒未満の補正では秒そのものは削除・重複しないため、1,800個のままです。
Q: 通信制御タスクがビジー状態でも個数は変わりますか?
A: いいえ。1秒データ生成は管理タスクがRTC割込みで行うため、通信負荷と無関係に1秒ごとに生成されます。
A: いいえ。1秒データ生成は管理タスクがRTC割込みで行うため、通信負荷と無関係に1秒ごとに生成されます。
Q: 個数が不足・過多になった場合、電力量計はどうしますか?
A: 機能(5)にあるとおり「電力量計は電力量データ中の1秒データの個数が1,800個となるように補正する」処理を実行します。
A: 機能(5)にあるとおり「電力量計は電力量データ中の1秒データの個数が1,800個となるように補正する」処理を実行します。
関連キーワード: RTC, 時刻補正、サンプリング、データ補完、バッファ管理
設問2:
〔サーバの機能〕について、サーバのデータベース上で、電力量データの欠落を検出するのに使用するデータの情報を答えよ。
模範解答
タイムスタンプ
解説
解答の論理構成
- 電力量計がサーバへ送る各レコードには、秒単位までの時刻情報が付く
【問題文】「計測によって得られた電力量のデータには、年月日を含む秒単位の時刻情報(以下、タイムスタンプという)が付与される。」
─ 電力量データごとに「タイムスタンプ」が必ず存在します。 - サーバは受信したデータをデータベースに格納し、月初めに欠落チェックを実施
【問題文】「サーバは、月初めのバッチ処理で、データベース上で電力量データに欠落がある電力量計一覧を出力する。」
─ 欠落判定には、連続しているはずの時系列が抜けていないかを調べる必要があります。 - 抜けているかどうかを調べる最も直接的な鍵は時系列そのもの
1時間を前半・後半に区切って送る仕様も【問題文】「每時0分0秒から29分59秒…」「毎時30分0秒から59分59秒…」と示されており、 この区切りが揃っているかを確認するには各レコードに付く「タイムスタンプ」を比較するのが自然です。 - よって欠落検出に用いる情報は「タイムスタンプ」である。
誤りやすいポイント
- 「電力量計の識別コード」や「プログラムのバージョン番号」と混同する
これらは【問題文】「確認し、電力量データとともにデータベースに格納する。」とあるだけで、欠落チェックのキーではありません。 - 1,800件そろっているかどうか(電力量データの個数)で判断すると誤解
電力量計側で欠けを「補正」する仕様があり、サーバでは個数が常に 1,800 になる場合があります。したがって個数ではなく時系列での存在確認が必要です。 - 「RTC の誤差」や「時計補正」に目を取られてしまう
誤差があっても補正されるため、サーバ側で行う欠落検出の対象は記録された時刻情報そのものです。
FAQ
Q: 電力量データは 1,800 件に調整されて届くのに、なぜ個数で欠落を判断できないのですか?
A: 電力量計が内部で補正して 1,800 件にしてから送信するため、個数は常に正しく見えます。連続しているはずの「タイムスタンプ」にギャップがないかを調べる方が確実です。
A: 電力量計が内部で補正して 1,800 件にしてから送信するため、個数は常に正しく見えます。連続しているはずの「タイムスタンプ」にギャップがないかを調べる方が確実です。
Q: 「時計補正」は欠落検出に影響しますか?
A: 時計補正は計測精度維持のための機能で、サーバ側が欠落を検出するロジック(時系列確認)には直接影響しません。
A: 時計補正は計測精度維持のための機能で、サーバ側が欠落を検出するロジック(時系列確認)には直接影響しません。
関連キーワード: タイムスタンプ、時系列データ、欠落検出、バッチ処理、データベース
設問3:
〔計測部のA/Dコンバータ〕について、本文中のaに入れる適切な数値を答えよ。
模範解答
a:22
解説
解答の論理構成
-
量子化幅の確認
【問題文】には「最下位ビットが1/2,048ボルトの重み」とあります。したがって 1 V の中に
段階の刻みが存在します。 -
計測可能範囲の把握
同じく【問題文】に「-1,024ボルト~1,024ー(1/2,048)ボルト」とあります。幅は
ですが、正側の上限が 1 LSB(=1/2,048 V)だけ低く設定されています。
これは 2 の補数表現で
~ の対称範囲を実現する典型的な仕様です。 -
レベル総数の算出
・1 V あたり 段階
・全体で
よって離散レベル数は
段階。 -
必要ビット数の導出
2 の補数 ビットは 通りの値を表現できます。
段階を表す最小の は 。
従って a に入る値は 22 ビットです。
誤りやすいポイント
- 量子化幅「1/2,048ボルト」を 1/2048 V ではなく 1/2048 の分解能率(≈0.05 %)と誤読する。
- 範囲を ±1,024 V とみなして 1,024 V ÷ 1/2,048 V = 2,097,152 レベル ⇒ 21 ビットと計算し、負側を考慮し忘れる。
- 2 の補数の「-2^{n-1}~+2^{n-1}-1」という非対称性を無視して「正負対称だから奇数ビット」と決めつける。
FAQ
Q: 22 ビットより 24 ビットなど多めに取ると何か問題がありますか?
A: 容量・処理コストが増えるだけで実装上の支障はありません。ただし「必要最小ビット数」を問われているため 22 ビットが解答となります。
A: 容量・処理コストが増えるだけで実装上の支障はありません。ただし「必要最小ビット数」を問われているため 22 ビットが解答となります。
Q: 21 ビットで足りないと判断する決め手は?
A: 21 ビットの 2 の補数は ~(-1,048,576~+1,048,575 LSB)。これは求められる ±2,097,152 LSB の範囲を収めきれません。
A: 21 ビットの 2 の補数は ~(-1,048,576~+1,048,575 LSB)。これは求められる ±2,097,152 LSB の範囲を収めきれません。
Q: LSB 重みが変わった場合の考え方は?
A: 「総レンジ ÷ LSB 重み = 離散レベル数 → 2 のべき乗化 → ビット数」という手順は共通です。
A: 「総レンジ ÷ LSB 重み = 離散レベル数 → 2 のべき乗化 → ビット数」という手順は共通です。
関連キーワード: アナログ-ディジタル変換、量子化分解能、2 の補数、フルスケールレンジ、ビット幅
設問4:〔電力量計のタスクの主な処理〕について、(1)、(2)に答えよ。
(1)表2中のb、cに入れる適切な字句を答えよ(bとcは順不同)。
模範解答
b:電力量計の識別コード
c:プログラムのバージョン番号
解説
解答の論理構成
- 送信時に付与する追加情報を確認
【問題文】の「電力量計の機能」(6) に
「電力量計は、サーバに電力量データを送信するとき、電力量計の識別コード及びプログラムのバージョン番号を付与する。」
と明記されています。 - サーバ側で受信した後の扱いも確認
【問題文】「サーバの機能」(1) には
「サーバは、電力量計から送られてきた電力量計の識別コード、プログラムのバージョン番号を確認し、電力量データとともにデータベースに格納する。」
とあり、同じ二つの情報が必須であることが裏付けられています。 - 空欄箇所との対応付け
表2「通信制御タスク」の説明では
「サーバには、電力量データ、b及びcを送る。」
と記述されており、上記2箇所で繰り返し言及された情報がそのまま当てはまります。
以上より、
b:電力量計の識別コード
c:プログラムのバージョン番号
が適切です(順不同で可)。
c:プログラムのバージョン番号
が適切です(順不同で可)。
誤りやすいポイント
- 「時計補正」や「1秒データの個数補正」を送信項目に勘違いする。これらは送信前処理であって、データ本体に付与するメタ情報ではありません。
- 「サーバに送る=ネットワーク経由=通信部の情報」と短絡し、回線種別やネットワークアドレスを書いてしまうケース。問題文で“送る”対象は明確に限定されています。
- 表2を先に読んで空欄に目が行き、前半の機能説明を確認しないまま推測してしまう。情報が散在しているため全文引用確認が必須です。
FAQ
Q: 空欄は順不同と書かれていますが、試験ではどのように記入すれば良いですか?
A: 設問が「順不同」と明示しているので、どちらの欄にどちらを記入しても得点に影響しません。ただし実際のマークシートでは、指示通りに欄を使い切ることが重要です。
A: 設問が「順不同」と明示しているので、どちらの欄にどちらを記入しても得点に影響しません。ただし実際のマークシートでは、指示通りに欄を使い切ることが重要です。
Q: 「プログラムのバージョン番号」はどのような形式でも良いのですか?
A: 問題文では具体的な表記方法までは指定していませんが、現実的には「1.0.3」のような数値列や「A15」など識別可能な形式が一般的です。試験では字句さえ合っていれば評価されます。
A: 問題文では具体的な表記方法までは指定していませんが、現実的には「1.0.3」のような数値列や「A15」など識別可能な形式が一般的です。試験では字句さえ合っていれば評価されます。
Q: なぜ識別コードとバージョン番号を同時送信する必要があるのですか?
A: 識別コードで個体を特定し、バージョン番号でソフトウェアの世代を管理することで、サーバ側が機器固有の不具合や更新状況を把握しやすくなるためです。
A: 識別コードで個体を特定し、バージョン番号でソフトウェアの世代を管理することで、サーバ側が機器固有の不具合や更新状況を把握しやすくなるためです。
関連キーワード: メタデータ、バージョン管理、データ整合性、送信プロトコル
設問4:〔電力量計のタスクの主な処理〕について、(1)、(2)に答えよ。
(2)RTCの時刻の誤差が±0.5秒を超えないように時刻を補正するには、最大何時間ごとに時刻補正を行わなければならないか。答えは、誤差が一定として、小数第1位を切り捨てて、整数で求めよ。
模範解答
17(時間)
解説
解答の論理構成
-
誤差の発生速度を把握
【問題文】の表1に「RTCの誤差は1日当たり±0.7秒である。」とあります。
1日は24時間なので、1時間当たりの誤差は -
許容誤差の条件を確認
設問では「RTCの時刻の誤差が±0.5秒を超えないように」と指示されています。
したがって、±0.5秒に達するまでの最大時間を求めます。 -
最大時間を計算
-
指示どおり小数第1位を切り捨て
17.142…時間 → 17時間 -
結論
時刻補正は「17(時間)」ごとに行う必要があります。
誤りやすいポイント
- 「1日当たり±0.7秒」を12時間で割ってしまう
24時間で割るのが正しいです。 - ±表記を片側だけと誤認する
設問は「±0.5秒を超えないように」なので、0.5秒までが許容範囲です。 - 切り捨て・切り上げの取り違え
「小数第1位を切り捨て」と明記されています。
FAQ
Q: 0.029166…秒/時間を丸めても良いですか?
A: 丸めると最終結果が変わる恐れがあります。途中はできるだけ多くの桁で保持し、最後に切り捨ててください。
A: 丸めると最終結果が変わる恐れがあります。途中はできるだけ多くの桁で保持し、最後に切り捨ててください。
Q: ±0.5秒を安全側に見て16時間にすべき?
A: 設問は「最大何時間ごとに」と問うているため、計算値を切り捨てた17時間が適切です。
A: 設問は「最大何時間ごとに」と問うているため、計算値を切り捨てた17時間が適切です。
Q: 誤差が一定でない場合は?
A: 設問条件が「誤差が一定として」なので、ここでは線形に伸びると仮定して計算します。実務では温度などにより変動するため余裕を持たせるのが一般的です。
A: 設問条件が「誤差が一定として」なので、ここでは線形に伸びると仮定して計算します。実務では温度などにより変動するため余裕を持たせるのが一般的です。
関連キーワード: RTC, 誤差補正、時刻同期、ドリフト計算、計測精度


