エンベデッドシステムスペシャリスト 2016年 午後1 問03
LEDを用いたイルミネーションシステムに関する次の記述を読んで、設問1~3に答えよ。
C社は、多数のLEDを使用して、一般的な家庭から、公共施設、テーマパークに至るまで、広範囲に使用できるLEDイルミネーションシステム(以下、LEDシステムという)を開発することになった。
〔LEDシステムの概要〕
(1) 特徴
開発予定のLEDシステムの概観を図1に示す。LEDシステムは、16個のLEDの点滅を制御するLED発光部(以下、子機という)と、子機を制御可能なシステム制御部(以下、親機という)から構成される。PCやタブレット端末(以下、ホストという)が無線LANを介して、1台又は複数台の親機を制御して、LEDを点灯させる。
LEDシステムは、親機に、全く同じ子機を最大254台までカスケードに接続することで、異なる使用条件に対応する。

(2) 機能
LEDシステムは次のような機能をもつ。
・ホストからの指示によってLEDを複雑な点滅パターンで点灯させる。
・PWM信号を利用して、2,000段階での明るさの調整、任意の時間での点灯・消灯を行う。
・PWM信号のデューティレシオの制御によって、使用するLEDによる明るさのばらつきを補正する。
(3) 動作
LEDシステムは、次のような動作を行う。
・ホストは、LEDを点灯させるためのデータ(以下、点灯情報という)を親機に送信する。
・親機は、点灯情報に従ってLEDを点灯させるために、子機に必要な指示を行う。
・親機と子機の間の通信には、通信速度20kビット/秒のシリアル通信を使用する。
〔子機の概要〕
(1) 構成
子機の外観を図2に、子機の構成を図3に示す。
・透明で柔軟性があるビニールチューブに格納されている。
・両端にコネクタ部をもち、カスケードに接続できる。


(2) MCU
MCUは、シリアルI/F1とシリアルI/F2を用いて親機又は別の子機と通信を行い、1バイトのデータを10ビットで送信する。
また、出力ポートを用いて16個のLEDを直接駆動する。出力ポート1本のドライブ能力を表1に示す。

LEDのドライブに使用可能な出力ポートのうちの8本は、タイマ機能によってPWM信号を出力する。タイマのPWM信号生成のブロック図を図4に示す。

〔パケットの概要〕
(1) 構成・種別
親機が子機に点灯指示を行うために送信するパケットの例を図5に、パケットの種類を表2に示す。図5では、1バイト目で子機のアドレスを、2バイト目でLEDとその動作を、3、4バイト目でLEDの明るさを指定している。

パケットは、表2に示すようにアドレスによって三つに分類できる。

(2) 機能
① 子機の選択
親機は、何番目に接続された子機への点灯指示かを、アドレスで指定する。最初に接続された子機をアドレス00、次の子機をアドレス01と指定する。
② 点灯指示
親機は、子機を指定したパケットで、LEDとそのLEDの明るさを2,000段階で指定してLEDを制御する。これを基本動作という。
〔複雑な点灯の制御〕
基本動作以外に、MCUには、表3に示す三つの点灯を制御するパターン(以下、点灯パターンという)があらかじめ書き込まれている。

これらの点灯パターンを利用することで、親機からパターンと繰返し時間、明るさなどを指定するだけで、複雑な点灯を制御することができる。
① LEDの明るさ制御
LEDの明るさの調整は、PWM信号で明るさの異なるLEDの補正を行って2,000段階で制御する。
② LEDの明るさばらつき補正
最も明るいLEDと最も暗いLEDとの明るさの比は4対1である。LEDの明るさはデューティレシオに比例するので、デューティレシオで明るさを補正できる。
③ LED駆動タイミング
LED1とLED2を時分割でドライブするときのLEDの駆動タイミングを図6に示す。
・LED1は出力ポート1のハイレベルの期間1で選択し、LED2は出力ポート2のハイレベルの期間2で選択する。
・出力ポートで選択されたLEDの明るさは、PWM信号のデューティレシオで制御する。
・ちらつきを抑えるため、PWM信号の周期を10ミリ秒以下とする。
ここで、出力ポートを切り換える時間は無視できるものとする。
〔PWM信号の発生〕
PWM信号を発生するタイマは、16ビットカウンタ(以下、カウンタという)とPWM信号の周期を指定する比較レジスタA、及びPWM信号のa期間を指定する比較レジスタ1~8から成る。比較レジスタ1~8にはバッファレジスタ1~8がそれぞれ対になっている。カウンタと比較レジスタAの値が一致すると、bが発生する。同時に、PWM信号はローレベルに変化し、比較レジスタ1~8には対になっているcの値が転送される。カウンタは0からカウントを始め、カウンタと比較レジスタ1~8の値が一致すると、対応したPWM信号が反転してハイレベルとなる。
bが発生した後の処理では、次の周期のPWM信号のdに対応した値を、バッファレジスタに設定する。
設問1:LEDのドライブ方法の仕様設計について、(1)~(3)に答えよ。
設問1(1)
問題文を見るタイマのPWM信号は8チャネル分しかないので、ソフトウェアでPWM信号を出力できないか検討する。ここで、ソフトウェアでPWM出力を行った場合、最小分解能は5マイクロ秒とし、割込み応答時間は無視できるものとする。
(a) LEDシステムにおいて、ソフトウェアでのPWM出力は使用可能かどうか答えよ。また、そのように判断した理由を、20字以内で述べよ。
(b) タイマのPWM信号を用い、図6に示すように時分割してLEDを制御するとき、4本の出力ポート(期間1の出力に2本、期間2の出力に2本)を使用する必要がある。その理由を30字以内で述べよ。
模範解答
(a):不可能
理由:MCUの処理速度が不足するから
(b):1本の出力ポートでは8個のLEDをドライブできないから
解説
解答の導き方
(a) ソフトウェアでPWM出力できるかは、求められるPWMの時間分解能と、ソフトウェアで実現できる最小分解能を比べます。
本文では、明るさの調整を「2,000段階」で行い、最も明るいLEDと最も暗いLEDの明るさの比を「4対1」としています。明るさのばらつきを補正しながら2,000段階を実現するには、PWMの分解能として が必要です。
また、ちらつきを抑えるため、PWM信号の周期は「10ミリ秒以下」です。図6では、期間1と期間2が同じ長さで、1点灯周期は期間1と期間2を合わせた長さです。したがって、それぞれの期間は最大でも ミリ秒です。各期間で8,000段階を表すには、時間の刻みを 程度にする必要があります。
一方、ソフトウェアPWMの最小分解能は「5マイクロ秒」です。これは必要な刻みより粗く、 ミリ秒の期間内で扱える刻みは約1,000個にとどまり、必要な8,000段階を実現できません。したがって、ソフトウェアでのPWM出力は使用できません。理由は、MCUの処理速度が不足するためです。
(b) 表1では、出力ポート1本でドライブできるLEDは、パルス出力電流の場合でも4個です。図6のように出力ポートを期間1と期間2で交互に使うと、16個のLEDは各期間で8個ずつを駆動します。そのため、各期間で8個を駆動するには、1本では足りず、2本の出力ポートが必要です。期間1と期間2の両方に2本ずつ使うので、合計4本となります。
誤りやすいポイント
- 2,000段階だけを見て必要な分解能を判断し、明るさのばらつき「4対1」の補正を考慮しないことです。
- 1点灯周期全体ではなく、期間1または期間2の長さで時間分解能を検討する必要があります。
- 出力ポート1本の駆動能力を、連続出力の2個だけで判断しないことです。図6のように時分割で駆動する場合は、パルス出力の条件を確認します。
- 期間1と期間2のそれぞれで必要な出力ポート数を考えず、16個のLED全体だけから本数を決めないことです。
FAQ
Q: PWMの分解能が8,000になるのはなぜですか。
A: 2,000段階の明るさ制御に、LEDの明るさのばらつきを補正するための4倍分の分解能が必要だからです。
A: 2,000段階の明るさ制御に、LEDの明るさのばらつきを補正するための4倍分の分解能が必要だからです。
Q: 出力ポート1本で連続出力できるLEDが2個なら、各期間で2本必要という説明と矛盾しませんか。
A: 矛盾しません。時分割駆動では出力ポートのアクティブ期間が50%以下になるため、表1のパルス出力電流の条件を使い、1本当たり4個をドライブできます。
A: 矛盾しません。時分割駆動では出力ポートのアクティブ期間が50%以下になるため、表1のパルス出力電流の条件を使い、1本当たり4個をドライブできます。
Q: ソフトウェアの最小分解能が5マイクロ秒でも、PWM周期を長くすれば使えませんか。
A: 周期を長くすれば、5マイクロ秒刻みで扱える段階数そのものは増えます。しかし、ちらつきを抑えるためにPWM信号の周期は「10ミリ秒以下」と定められているので、周期を延ばして分解能を確保することはできません。
A: 周期を長くすれば、5マイクロ秒刻みで扱える段階数そのものは増えます。しかし、ちらつきを抑えるためにPWM信号の周期は「10ミリ秒以下」と定められているので、周期を延ばして分解能を確保することはできません。
関連キーワード: PWM制御、デューティ比、時分割駆動、分解能、割込み処理
設問1(2)
問題文を見る本文中のa~dに入れる適切な字句を答えよ。
模範解答
a:アクティブ
b:割込み要求
c:バッファレジスタ1~8
d:デューティレシオ
解説
解答の導き方
まず、タイマの動作を本文と図4、図6から追います。本文では、比較レジスタAが「PWM信号の周期」を指定し、カウンタと比較レジスタAの値が一致するとPWM信号はローレベルに変化します。図4では、この一致でカウンタがクリアされるので、ここが周期の区切りです。その後、カウンタは0から数え直し、比較レジスタ1~8の値と一致すると、対応するPWM信号が反転してハイレベルになります。図6を見ると、LEDが点灯しているのはPWM信号がローレベルの区間です。つまり、周期の始まりから比較レジスタ1~8との一致までのローレベルの時間がLEDの点灯時間であり、比較レジスタ1~8が定めるのは周期全体ではなく、PWM信号のアクティブな期間です。表1でも、出力が有効な期間を「アクティブ期間」と呼んでいます。
次に、周期の切替え時に何が起きるかを確認します。カウンタと比較レジスタAの値が一致すると、PWM信号がローレベルに変化し、対応するバッファレジスタの値が比較レジスタ1~8へ転送されます。図4でも、比較レジスタAとの一致信号がカウンタのクリアとレジスタ間の転送につながっています。この周期の境目で発生し、CPUに処理を促すものがbです。したがって、ここには「割込み要求」が入ります。
比較レジスタ1~8とバッファレジスタ1~8は、それぞれ対になっています。本文にも「対になっている」とあるため、比較レジスタ1~8へ転送される値の格納先は、対応する「バッファレジスタ1~8」です。
最後に、割込み後の処理でバッファレジスタに設定する値を考えます。本文では「次の周期のPWM信号のdに対応した値」を設定するとあります。LEDの明るさはPWM信号で制御され、PWM制御における明るさの割合を表すのがデューティレシオです。次の周期に使うデューティレシオに対応した値をバッファレジスタに設定します。
誤りやすいポイント
- 比較レジスタAと比較レジスタ1~8の役割を混同しないようにします。比較レジスタAはPWM信号の周期を決め、比較レジスタ1~8は各チャネルのアクティブ期間を指定します。
- PWM信号がハイレベルの期間をLEDの点灯時間と誤認しないようにします。図6では、LEDはPWM信号がローレベルの期間に点灯しています。
- カウンタと比較レジスタAの一致で起きるのは、比較レジスタ1~8との一致による出力反転とは別の処理です。周期の切替えと、チャネルごとの出力制御を区別します。
- 比較レジスタに転送されるのは、対になったバッファレジスタの値です。比較レジスタ1~8に設定する値そのものを、割込み後に直接変更すると考えないようにします。
- デューティレシオは周期そのものではありません。周期は比較レジスタAが指定し、デューティレシオに対応する値は比較レジスタ1~8に反映されます。
FAQ
Q: なぜバッファレジスタを使うのですか?
A: 割込み後に設定した値を次の周期の切替え時に比較レジスタへ転送し、周期の途中で設定が切り替わるのを避けるためです。
A: 割込み後に設定した値を次の周期の切替え時に比較レジスタへ転送し、周期の途中で設定が切り替わるのを避けるためです。
Q: 比較レジスタAとの一致と、比較レジスタ1~8との一致は何が違いますか?
A: 比較レジスタAとの一致は周期の切替えに関係します。比較レジスタ1~8との一致は、それぞれに対応するPWM出力の制御に関係します。
A: 比較レジスタAとの一致は周期の切替えに関係します。比較レジスタ1~8との一致は、それぞれに対応するPWM出力の制御に関係します。
Q: デューティレシオを変えると、何が変化しますか?
A: PWM信号の周期に対するアクティブ期間の割合が変わり、それによってLEDの明るさを調整できます。
A: PWM信号の周期に対するアクティブ期間の割合が変わり、それによってLEDの明るさを調整できます。
関連キーワード: PWM制御、比較レジスタ、バッファレジスタ、割込み要求、デューティレシオ
設問1(3)
問題文を見る次の文中のe~gに入れる適切な字句を答えよ。
タイマは、MCUの32MHzの動作クロックを2のべき乗で分周できるプリスケーラを用いて、できるだけ分周した信号をカウントさせる。時分割で二つのLEDを制御するPWM信号の分解能をそれぞれ8,000とすると、1点灯周期ではタイマはeカウントする必要がある。このとき、比較レジスタAの設定値はfになる。LED点灯の周期を10ミリ秒以下にする場合のプリスケーラでの分周比は、最大gとなる。ここで、PWM信号の周期は、“比較レジスタAの設定値+1カウント”になるものとする。
模範解答
e:16,000
f:7,999
g:16
解説
解答の導き方
まず、タイマが数えるカウント数と、比較レジスタAが設定するPWM信号の周期を区別します。
図6では、LED1を選択する期間1とLED2を選択する期間2が交互に続き、1点灯周期はこの二つの期間を合わせた長さです。設問では「時分割で二つのLEDを制御するPWM信号の分解能をそれぞれ8,000」としているので、期間1と期間2にはそれぞれ8,000カウントが必要です。したがって、1点灯周期に必要なカウント数は、カウントです。これが[e]に入ります。
次に、比較レジスタAが定めるPWM信号の周期を考えます。図6のPWM信号は、期間1と期間2のそれぞれで周期を繰り返すため、PWM信号の1周期は8,000カウントです。問題文には、周期は「比較レジスタAの設定値+1カウント」とあります。カウンタは0から数えるので、設定値が7,999なら、0から7,999までの8,000カウントで1周期になります。したがって、[f]は7,999です。
最後に、プリスケーラの分周比を求めます。分周比をとすると、タイマのカウント周波数はです。1点灯周期の長さは、必要なカウント数をカウント周波数で割って求められます。
この長さを10ミリ秒以下にするには、は20以下である必要があります。一方、プリスケーラの分周比は「2のべき乗」です。20以下で最大の2のべき乗は16です。実際、分周比が16なら1点灯周期は8ミリ秒ですが、次の2のべき乗である32では16ミリ秒となり、10ミリ秒を超えます。よって、[g]は16です。
誤りやすいポイント
- 1点灯周期全体と、PWM信号の1周期を混同しないようにします。1点灯周期は二つの期間を合わせた長さですが、PWM信号の1周期は一つの期間の長さです。
- カウンタは0から始まるため、周期のカウント数は比較レジスタAの設定値そのものではなく、設定値に1を加えた数です。
- 分周比の上限を計算すると20になりますが、分周比は2のべき乗なので、20をそのまま設定値にはできません。
- LEDの明るさを表す段階数と、PWM信号の分解能を混同しないようにします。この設問で計算に使うのは、各PWM信号の分解能8,000です。
FAQ
Q: 比較レジスタAの設定値が7,999になるのはなぜですか?
A: カウンタが0から数えるため、0から7,999までで8,000カウントになるからです。
A: カウンタが0から数えるため、0から7,999までで8,000カウントになるからです。
Q: 分周比を20にできないのはなぜですか?
A: プリスケーラの分周比は2のべき乗に限られるためです。20以下で最大の値は16です。
A: プリスケーラの分周比は2のべき乗に限られるためです。20以下で最大の値は16です。
Q: 分周比を大きくすると、タイマのカウントはどうなりますか?
A: カウント周波数が下がり、同じカウント数にかかる時間が長くなります。そのため、分周比を大きくしすぎると点灯周期の上限を超えます。
A: カウント周波数が下がり、同じカウント数にかかる時間が長くなります。そのため、分周比を大きくしすぎると点灯周期の上限を超えます。
関連キーワード: PWM、プリスケーラ、分周比、タイマカウンタ、カウント周波数
設問2:LEDシステムの設計について、(1)~(3)に答えよ。
設問2(1)
問題文を見る子機を接続順に区別するのは、LEDシステムのどのような要求仕様によるものか。30字以内で述べよ。
模範解答
全く同じ子機をカスケードに接続するから
解説
解答の導き方
この設問は、子機を接続順に区別する必要が生じる、LEDシステムの要求仕様を尋ねています。
本文には、LEDシステムは「全く同じ子機を最大254台までカスケードに接続」するとあります。つまり、接続する子機はすべて同じ仕様であり、子機ごとの違いで見分けるのではありません。
一方、親機は点灯指示のパケットで子機をアドレス指定します。さらに、最初に接続された子機をアドレス00、次をアドレス01とするため、子機はカスケード上の接続順によって区別されます。
したがって、接続順による区別が必要になるのは、全く同じ子機をカスケード接続するという要求があるからです。
誤りやすいポイント
- アドレスで区別する仕組みだけを答えないようにします。設問が尋ねているのは、アドレス指定の方法ではなく、その方法が必要となる要求仕様です。
- 「最大254台まで接続できるから」だけでは不十分です。台数ではなく、子機が「全く同じ」であることと、カスケード接続することが根拠です。
- 子機の点灯機能やLEDの数など、接続順による区別と直接関係しない仕様を答えに含めないようにします。
FAQ
Q: 接続順は、どのようにアドレスと対応していますか?
A: 最初に接続された子機がアドレス00、次に接続された子機がアドレス01となります。
A: 最初に接続された子機がアドレス00、次に接続された子機がアドレス01となります。
Q: 子機の種類が同じであることと、接続順で区別することはどう関係しますか?
A: 子機がすべて同じ仕様なので、個体の仕様の違いではなく、カスケード上の位置を基準に区別します。
A: 子機がすべて同じ仕様なので、個体の仕様の違いではなく、カスケード上の位置を基準に区別します。
関連キーワード: カスケード接続、アドレス指定、シリアル通信、制御対象の識別
設問2(2)
問題文を見るアドレスが00~FDのパケットを受信した子機は、自局宛て以外のパケットだけ、次の子機に送信する。そのとき、アドレスをどのように加工して次の子機に送信すればよいか。15字以内で述べよ。また、自局宛てであることはどのようにして判断するのか。25字以内で述べよ。
模範解答
加工:アドレスを−1する。
判断:アドレスが00なら自局宛てと判断する。
解説
解答の導き方
本文では、子機のアドレスについて「最初に接続された子機をアドレス00、次の子機をアドレス01と指定する」とあります。子機は親機から順に接続されているので、後方の子機を指定するパケットは、手前の子機を通ってから宛先に届きます。
そこで、受信した子機は、まずアドレスが00かどうかを確認します。00なら、手前に通過すべき子機が残っていないため、自局宛てと判断できます。00でなければ自局宛てではなく、宛先はさらに後方にあります。
次の子機へ進むごとに、宛先までの残りの子機の数は一つ減ります。そのため、自局宛てでないパケットを転送するときは、アドレスを−1します。例えば、最初の子機の次にある子機を指定する場合、最初の子機は受信した01を00にして次の子機へ送り、次の子機は00を見て自局宛てと判断します。
このように、判定はアドレスを減らす前に行います。受信時のアドレスが00なら自局宛て、00でなければアドレスを−1して次の子機へ転送します。
誤りやすいポイント
- アドレスを減らしてから自局宛てか判定すると、転送先のアドレスを自局のアドレスと取り違えます。まず受信したアドレスが00かどうかを確認します。
- 自局宛てのパケットも次の子機へ転送すると、宛先で処理した後も不要な転送が続きます。次の子機へ送るのは、自局宛てではないパケットだけです。
- アドレスをそのまま転送すると、子機を一つ通過した分が反映されず、宛先を正しく判定できません。転送のたびにアドレスを−1します。
FAQ
Q: なぜアドレスを−1するのですか?
A: 子機を一つ通過するごとに、宛先までの残りの子機の数が一つ減るためです。
A: 子機を一つ通過するごとに、宛先までの残りの子機の数が一つ減るためです。
Q: アドレスが00でないときは、すぐに自局宛てではないと判断してよいのですか?
A: はい。受信時のアドレスが00でなければ次の子機へ転送し、その際にアドレスを−1します。
A: はい。受信時のアドレスが00でなければ次の子機へ転送し、その際にアドレスを−1します。
Q: この判定と転送の仕方は、全てのアドレスのパケットに適用されますか?
A: ここで扱うのは00~FDの子機指定パケットです。FEとFFは別の用途のパケットです。
A: ここで扱うのは00~FDの子機指定パケットです。FEとFFは別の用途のパケットです。
関連キーワード: アドレス指定、パケット転送、カスケード接続、シリアル通信
設問2(3)
問題文を見るLEDの制御において、複数の子機間で同期をとるために、5バイト長でアドレスがFFのパケットを使用する。しかし、これだけでは、子機間の通信時間の蓄積によって誤差が発生する。この対策として、親機は使っている子機の台数をアドレスFEのパケットのデータとして送信し、受信した子機はデータを−1して次の子機に送信する。
(a) 親機がブロードキャストパケットの送信を開始して、201台目の子機が受信開始するまでの時間は何ミリ秒か。答えは小数第1位を四捨五入して、整数で求めよ。ただし、子機は受信完了後に送信を開始し、通信時間以外は無視できるものとする。
(b) 子機は、アドレスFEのパケットのデータをどのように使えばよいか。30字以内で述べよ。
模範解答
(a):500
(b):データに比例した時間待ってから制御する。
解説
解答の導き方
(a)201台目の子機が受信を開始するまでの時間
本文では、MCUは「1バイトのデータを10ビットで送信」し、親機と子機の通信速度は「20kビット/秒」とされています。また、この設問ではブロードキャストパケットの長さが5バイトです。
したがって、パケット1個の送信にかかる時間は、次のとおりです。
子機は「受信完了後に送信を開始」します。1台目の子機は親機が送信を始めた時点で受信を開始するため、201台目が受信を開始するまでには、その前にいる200台分の受信完了を待つことになります。つまり、パケット1個分の時間が200回経過します。
よって、201台目の子機が受信を開始するまでの時間は500ミリ秒です。四捨五入しても値は変わりません。
(b)アドレスFEのパケットのデータの使い方
親機は、使用している子機の台数をデータとして送り、受信した子機はその値を1減らして次の子機へ送ります。そのため、子機ごとに受信するデータの値が異なり、後ろの子機ほど値が小さくなります。
一方、ブロードキャストパケットは子機を順に経由するため、後ろの子機ほど受信開始が遅れます。この遅れを補うには、早く受信した子機ほど長く待ち、遅く受信した子機ほど短く待ってから制御すればよいです。データの値が大きい子機ほど長く待つように、待ち時間をデータに比例させると、子機間の通信時間の差を補正できます。
誤りやすいポイント
- 201台分ではなく、1台目の受信開始から201台目の受信開始までの間にある200台分の時間を数えます。
- 受信開始までの時間を求めるので、201台目のパケット全体を受信する時間は加えません。
- 1バイトは8ビットではなく、この問題では「1バイトのデータを10ビットで送信」する条件を使います。
- データを減らす目的は、単に子機の順番を表すことではありません。子機ごとの受信時刻の差を考慮して、制御開始時刻をそろえるために使います。
FAQ
Q: なぜ201台分ではなく200台分を計算するのですか?
A: 1台目は親機の送信開始と同時に受信を開始すると考えるためです。201台目までに経過するパケット送信時間は、1台目からの差である200回分です。
A: 1台目は親機の送信開始と同時に受信を開始すると考えるためです。201台目までに経過するパケット送信時間は、1台目からの差である200回分です。
Q: データの値が大きい子機ほど、なぜ長く待つのですか?
A: データの値は子機を経由するたびに1減ります。値が大きい子機は早い段階で受信しているので、後から受信する子機より長く待つことで制御時刻をそろえられます。
A: データの値は子機を経由するたびに1減ります。値が大きい子機は早い段階で受信しているので、後から受信する子機より長く待つことで制御時刻をそろえられます。
Q: パケットの送信時間以外も計算に含めますか?
A: この設問では通信時間以外は無視する条件なので、パケットの送信時間だけを計算します。
A: この設問では通信時間以外は無視する条件なので、パケットの送信時間だけを計算します。
関連キーワード: シリアル通信、通信速度、パケット転送、通信遅延、同期制御
設問3:不具合対策について、(1)、(2)に答えよ。
点灯指示の基本動作だけでは、子機が増えたときに、緩やかに点灯時の明るさの変化時間に制限が生じるとの指摘があり、点灯パターンを追加した。
設問3(1)
問題文を見る指摘内容について、(a)、(b)に答えよ。
(a) どのような制限が指摘されたか。20字以内で述べよ。
(b) それはどのような理由によるか。20字以内で述べよ。
模範解答
(a):明るさの変化時間が短くできない。
(b):点灯指示の送信に時間が掛かるから
解説
解答の導き方
この設問では、点灯指示の基本動作だけで「緩やかに点灯」させるとき、子機が増えることで何が制約されるのか、また、その原因は何かを考えます。
まず、基本動作では、親機がパケットで子機を指定し、LEDとその明るさを指示します。緩やかに明るさを変えるには、明るさを少しずつ変えた指示を親機から繰り返し送る必要があります。
ところが、親機と子機の間は「通信速度20kビット/秒のシリアル通信」です。通信には時間がかかり、子機が増えるほど、指示を送る相手や回数も増えていきます。その結果、各子機へ明るさの指示を送る間隔を十分に短くできなくなります。
したがって、(a)で指摘された制限は、明るさを変化させる時間を短くできないことです。(b)の理由は、子機が増えるほど点灯指示の送信に時間がかかることです。点灯パターンを子機側で実行すれば、親機が明るさの変化を逐次指示し続ける必要がなくなるため、この制約を緩和できます。
誤りやすいポイント
- 2,000段階で明るさを指定できることと、明るさを短時間で変化させられることを混同しないようにします。前者は明るさの細かさ、後者は指示を送る時間に関する問題です。
- 原因をPWM信号の周期やLEDの駆動能力に求めないようにします。この設問で問題となっているのは、親機から子機への点灯指示にかかる通信時間です。
- 「子機が増えると送信時間がかかる」という因果関係を明確にします。単に「通信速度が遅い」とするだけでは、指摘された制限とのつながりが不足します。
FAQ
Q: なぜ明るさの指示を繰り返し送る必要があるのですか?
A: 基本動作では、パケットで指定した明るさにLEDを制御するためです。段階的に変化させるには、異なる明るさの指示を順に送る必要があります。
A: 基本動作では、パケットで指定した明るさにLEDを制御するためです。段階的に変化させるには、異なる明るさの指示を順に送る必要があります。
Q: 点灯パターンを使うと、なぜ通信時間の制約を緩和できるのですか?
A: パターンや時間などを指示した後は、子機側で明るさを変化させられるため、親機が変化のたびに点灯指示を送る頻度を抑えられます。
A: パターンや時間などを指示した後は、子機側で明るさを変化させられるため、親機が変化のたびに点灯指示を送る頻度を抑えられます。
関連キーワード: シリアル通信、パケット通信、通信遅延、点灯パターン
設問3(2)
問題文を見る点灯パターンで緩やかに点滅させるときに、LEDの明るさ情報以外で送信しておく情報を二つ答えよ。
模範解答
①:変化する時間
②:繰返しの周期
解説
解答の導き方
問われているのは、LEDの明るさそのものではなく、「緩やかに点滅」させる動作を子機が実行するために必要な情報です。
表3では、緩やかに点滅する動作について、「指定した二つの明るさの間を連続的に変化させる」とあります。二つの明るさの値だけでは、どのくらいの時間をかけて一方の明るさからもう一方へ変化させるのかが分かりません。そのため、明るさが変化する時間を送る必要があります。
さらに、この動作は「指定した周期で繰り返す」とされています。繰り返す間隔が分からなければ、点滅をどのような周期で続けるかを子機が決められません。そのため、繰返しの周期も送信しておく必要があります。
誤りやすいポイント
- 明るさが変化する時間と、点滅を繰り返す周期を混同しないようにします。前者は二つの明るさの間を変化するのにかける時間、後者は点滅動作を繰り返す周期です。
- 「PWM信号の周期」と取り違えないようにします。ここで問われているのは、点灯パターンとしての緩やかな点滅を繰り返す周期です。
- LEDの明るさ情報だけで動作に必要な情報がそろうわけではありません。明るさの変化の速さと、繰り返しのタイミングも指定する必要があります。
FAQ
Q: 「変化する時間」は何を表しますか?
A: 指定した二つの明るさの間を、どれだけの時間をかけて変化させるかを表します。
A: 指定した二つの明るさの間を、どれだけの時間をかけて変化させるかを表します。
Q: 「繰返しの周期」は何を表しますか?
A: 緩やかな点滅の動作を、どの周期で繰り返すかを表します。明るさが変化する時間とは別の情報です。
A: 緩やかな点滅の動作を、どの周期で繰り返すかを表します。明るさが変化する時間とは別の情報です。
Q: 明るさの情報には何が含まれますか?
A: この点灯パターンでは、連続的に変化させる二つの明るさが該当します。これとは別に、変化する時間と繰返しの周期を指定します。
A: この点灯パターンでは、連続的に変化させる二つの明るさが該当します。これとは別に、変化する時間と繰返しの周期を指定します。
関連キーワード: 点灯パターン、明るさ制御、時間制御、繰返し周期




