H26 PM1問題
https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2014h26_1/2014h26h_es_pm1_qs.pdf
H26 PM1解答
https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2014h26_1/2014h26h_es_pm1_ans.pdf
H26 PM1講評
https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2014h26_1/2014h26h_es_pm1_cmnt.pdf

問2 自動販売機

設問1

(1)
(解説)
主LEDが点灯してから消灯するまでの時間です。
問題文P7を見ますと、「50ミリ秒ごとに起動され」「起動されると1ミリ秒間動作する」
「人を検知しなくなってから1秒後に主LED照明を消灯する」とありますので、大体1秒
前後になるんでしょうね。

詳細な処理を見ていきます。

表2に「50ミリ毎に~照明管理タスクに通知する」とありますので、ここの情報は必要そうです。
照明管理タスクの説明を確認すると、「センサが人を検知しなくなってから~20回受け取り~」
とありますので消灯までの時間はこれで計算できそうです。

点灯してから消灯するまでの最小時間をこれらの情報から計算します。
<——50ms—–>
|–*————|–*————|
1ms↑               ↑
人検知(A)         無人(B)

この図の(A)で点灯開始、(B)で「人を検知しなくなってから」に相当します。
この後(この図の後)に20回起動が発生するので
50ms×19回+1ms(起動20回目で無人が確定するまでの時間)
が発生します。
点灯開始してからの時間は
49ms + 50ms + 50ms×19回 + 1ms = 1050ms
となります。

(解答)
1.05秒
(2)
(解説)
時刻をもとに夜間と判断するかと問われました。
ここが一番悩みました。本番ではまず飛ばしちゃいそうです。
材料がほとんどありません。

そんな中でも問題文P7の「日の入りから日の出までの夜間」と
問題文P8の「売上データ送信時刻になると」という記述がありましたので
ここをくっつけるしかなさそうです。

ほんとはタイマ、設定領域などが存在しないと対応でき無いのでしょうが
他にヒントらしいものが無いので背に腹は代えられません。
(表1にはリアルタイムクロック、メモリ、タイマがあるので大丈夫だと思います。)

日の入り時刻と、日の出時刻を設定できる機能があることとして解答するしかなかったです。

他の解答候補としては「50ミリ秒、10ミリ秒」を活用して答えが作れないか
考えたのですが、かなり無理がありました。

(解答例)
設定した日の入り時刻から日の出時刻までの時間を夜間と判断する

(3)
(解説)
各ユニットが制御部が正常かどうかを判断するんですね。
機能安全的には「相互監視」というテクニックです。

問題文P9には
「10ミリ秒ごとにユニットと通信」「30ミリ秒間で全ユニットと通信」
とありますのでこれを使用するしかないです。

自分自身(ユニット)は、30ミリ秒に1回は自分あての通信が発生するはず
なので、それが検知できない場合は異常と判定できます。

と思ったのですが、表1の○○ユニットには「タイマ」という記載がないですね。
どうしよう。
とはいえ、通信機能に関しても何も書かれていないので大丈夫かな。
そもそも、20円くらいの8bitマイコンですら、通信、タイマ機能を持っているので
大丈夫なはずです。

(解答例)
30ミリ秒間隔で自ユニット宛ての通信がある事で正常動作を確認する

設問2
(1)
(解説)
aを考えてみます。
「設定時刻」とあるので問題文P8にある「専用線経由で管理会社に」の
機能を実現していると判断できます。
「管理会社」か「専用回線」のどちらかですが、「管理会社」タスクの説明に
「専用回線タスクに通知する」とありますので、「管理会社」が正解でしょう。

b,cを考えます。
何かの問い合わせです。その次の文に「品切れ」「投入金額」などがありますので
それらを管理している、「売上管理」「商品管理」です。
ここで、順番ですがほかにb,cが使用されているところが無いので、順不同で書いて
おけばよいでしょう。

(解答)
a:管理会社
b:売上管理
c:商品管理
(b,cは順不同)

(2)
(解説)
dを見てみましょう。
前後の文から、商品を販売できる状態がわかります。
問題文P7から「販売可能な商品の販売LEDを点灯する」をそのまま使用すればいいと考えます。

eを見てみましょう。
ここでは、購入者がボタンを押した状況だとわかります。
販売LEDを消灯する指示は、問題文P7から「販売可能な商品」であることがわかります。
「販売可能=販売LEDが点灯」と考え問題文P7を使用して解を準備しましょう。

fを見てみましょう
商品搬送と品切れ確認の間の処理です。
問題文P8の③と④の間の処理ですが、ここにはヒントらしいものが見つかりません。

○○に通知とありますので、タスクの機能をもう一度読み返してみます。
ちゃんと販売完了した状態なので、関係ありそうなのは「売上管理」「商品管理」
でしょう。「商品管理」は確認要求か温度設定依頼しかないので、通知するのは
「売上管理」が適切みたいです。

gを見てみましょう
前後の文を見ると、補助LEDの点灯/消灯、主LEDの消灯は書かれていますが
主LEDの点灯が書かれていないですね。なので問題文P7からその箇所を抽出して
終了です。

(解答例)
d:販売可能な商品の販売LEDを点灯し
e:販売LEDが点灯している商品
f:売上金額集計指示を売上管理タスク
g:センサが人を検知すると主LED照明を点灯する

(3)
(解説)
(a)
販売タスク内をもう一度読んでみます。
「○○の指示を出す」というのがありますので、そこに解がありそうです。
・販売LEDを点灯する指示(d部) (設問記載)
・販売LEDを消灯する指示 (設問記載)
・釣銭金額を表示する指示
・商品搬送の指示  (設問記載)
・金額表示部を消灯する指示
・投入金額を返金する指示
・釣銭を出す指示
・品切LEDを点灯する指示

ここで、表1から制御部内に閉じている機能は、シリアルバスを使用する必要ないので
・釣銭金額を表示する指示     制御部→コイン選別ユニット
・金額表示部を消灯する指示   制御部→コイン選別ユニット
・投入金額を返金する        制御部→コイン選別ユニット
・釣銭を出す指示           制御部→コイン選別ユニット
・品切LEDを点灯する指示     制御部→商品選択ユニット
このような指示の流れなので、この中から4つ記載すれば良さそうです。

(b)
集計端末と商品管理の概要を読みます。
共通な情報としては「商品温度」くらいです。

(解答)
(a) 釣銭金額を表示、金額表示部を消灯、投入金額を返金、釣銭を出す、品切LEDを点灯する
(b) 商品温度の設定データ

設問3
(1)
(解説)
h,i,j一気に考えます。
問題文P11、12を読めば悩まないところかと思います。
「売上金額の集計、照明制御、商品温度管理方法」に追加するそうですね。
具体的には
(追加1)「専用回線経由で指示を受け取ると、売上金額、商品温度,品切れの有無を管理会社に送信する」
(追加2)「専用回線経由での商品温度の設定、LED照明の動作停止機能」
が必要らしいですね。
これを踏まえ、表3を見てみます。
管理会社の1文目ですが、ここが(追加1)の事を説明していそうですね。なのでhは「情報の送信」となります。

2文目、3文目は(追加2)の事を説明しています。
表2より、商品温度を設定しているのは「商品管理タスク」でLED照明の制御は「照明管理タスク」と
なっています。ただし、「照明管理タスク」は変更せず、さらに「自販機管理タスク」から呼び出され
るのでLED照明の制御は「自販機管理タスク」経由で行います。

表3の3文目が自販機管理タスクと書いてあるのでjが「主LED照明の動作停止」となり
iが「商品温度設定」となるはずです。

kはおのずと「商品管理」となります。

(解答)
h:情報の送信
i:商品温度設定
j:主LED照明の動作停止
k:商品管理

(2)
(解説)
こういった不具合を問う問題も結構多いですね。
だいたい変更したとき、変更部分に不具合が発生します。
ここを抑えようとしているのが、DRBFM手法です。

LED動作の不具合なので、2つしか考えられません。
・点灯すべき時に点灯しない。
・点灯しない時に点灯する。
のいづれかですね。
今回追加したのは「LED照明の動作停止機能」なので、おそらく
・点灯すべき時に点灯しない。
の可能性が高いですね。

具体的に追加した機能は、専用回線経由で夜間でない時間の動作停止を
自販機管理タスクに通知しています。
表3を見ると「夜間でない時間、照明管理タスクへの通知を停止」とあります。

(あまり深く考えるとはまりそうなので単純に考えます。)
朝になったら停止させます。じゃ夜になったら”動作させないといけない”ですよね。
そこが抜けている感じがします。
なのでそこ(不具合の内容)を解答すればよいでしょうね。

(解答例)
朝にLED照明の動作停止を指示した後、夜間になっても照明管理タスクへの通知が
停止した状態が継続しLED照明が点灯しない不具合