Comments
Description
Transcript
企業提案型プロジェクト学習実践教材 - 平成24年度 成長分野等における
平成24年度文部科学省 成長分野等における中核的専門人材養成の戦略的推進事業 企業提案型プロジェクト学習実践教材 自動車組込み分野の中核的専門人材養成のための実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 目次 1. 2. 3. はじめに .......................................................................................................................................... 9 1.1. 本書の目的 ..................................................................................................... 9 1.2. 本書の構成 ..................................................................................................... 9 1.3. PC 環境 ........................................................................................................ 10 1.4. 使用機材 ....................................................................................................... 10 組み込みプログラム .................................................................................................................11 2.1. マイコン ....................................................................................................... 12 2.2. PIC(ピック) ............................................................................................. 12 設計とは........................................................................................................................................13 3.1. 設計書の必要性 ............................................................................................ 13 3.2. 基本設計 ....................................................................................................... 14 3.3. 詳細設計 ....................................................................................................... 14 3.4. モデリング ................................................................................................... 15 3.4.1. ユースケース図 ......................................................................................... 16 3.4.2. ステートマシン図 ..................................................................................... 17 3.4.3. クラス図.................................................................................................... 18 3.4.4. シーケンス図............................................................................................. 19 3.4.5. フローチャート図 ..................................................................................... 20 3.5. 4. 開発の流れ ................................................................................................... 22 赤外線コントローラの制作 .....................................................................................................23 4.1. 制作手順 ....................................................................................................... 23 4.2. 部品表・配置図 ............................................................................................ 24 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 -2– 企業提案型プロジェクト学習実践教材 4.2.1. 4.3. 4.3.1. 5. はんだ付け ................................................................................................... 25 手順........................................................................................................... 25 4.4. 配線図 .......................................................................................................... 26 4.5. 回路図 .......................................................................................................... 27 設計書の作成 .............................................................................................................................28 5.1. 設計書の書き方 ............................................................................................ 28 5.2. LED 処理Ⅰ .................................................................................................. 29 5.2.1. はじめに.................................................................................................... 29 5.2.2. 仕様........................................................................................................... 29 5.2.3. 基本設計書の作成 ..................................................................................... 30 5.2.4. 詳細設計書の作成 ..................................................................................... 32 5.3. 6. 赤外線コントローラ .................................................................................. 25 ミニカー操作Ⅰ ............................................................................................ 35 5.3.1. 仕様........................................................................................................... 35 5.3.2. 基本設計書 ................................................................................................ 36 5.3.3. 詳細設計書 ................................................................................................ 38 開発環境構築 .............................................................................................................................40 6.1. 6.1.1. 6.2. 6.2.1. 6.3. 6.3.1. 6.4. PICC LITE(コンパイラ) .......................................................................... 40 セットアップ............................................................................................. 40 HI-TIDE(開発環境) ................................................................................. 44 セットアップ............................................................................................. 44 開発環境の日本語化 ..................................................................................... 48 セットアップ............................................................................................. 48 IC-Prog(PIC ライター) ............................................................................ 49 -3- 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 6.4.1. 6.5. セットアップ............................................................................................. 49 プロジェクト設定 ......................................................................................... 53 6.5.1. プロジェクトの設定方法 ........................................................................... 53 6.5.2. プロジェクトの設定確認方法 .................................................................... 58 6.5.3. HI-TIDE の起動方法................................................................................. 59 6.5.4. HI-TIDE の起動時エラーについて ........................................................... 59 6.5.4.1. 7. プログラムの作成 ......................................................................................................................61 7.1. 8. 作業手順 ................................................................................................ 59 HI-TIDE によるプログラム作成 .................................................................. 61 7.1.1. 仕様........................................................................................................... 61 7.1.2. プログラム作成 ......................................................................................... 61 7.1.3. コメント.................................................................................................... 63 7.2. PIC ライター書き込み.................................................................................. 64 7.3. 動作確認 ....................................................................................................... 66 C 言語の基礎 .............................................................................................................................67 8.1.1. 変数........................................................................................................... 67 8.1.1.1. 変数プログラムと説明 ........................................................................... 67 8.1.1.2. 変数名の文字制限 .................................................................................. 67 8.1.2. 計算式 ....................................................................................................... 68 8.1.2.1. 算術演算プログラムと説明 .................................................................... 68 8.1.2.2. シフト演算プログラムと説明................................................................. 69 8.1.3. for 文(繰り返しと条件分岐) .................................................................. 70 8.1.3.1. 文法 ....................................................................................................... 70 8.1.3.2. 例題プログラム...................................................................................... 70 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 -4– 企業提案型プロジェクト学習実践教材 8.1.4. while 文(繰り返し) ............................................................................... 71 8.1.4.1. 文法 ....................................................................................................... 71 8.1.4.2. 例題プログラム...................................................................................... 72 8.1.5. 8.1.5.1. 文法 ....................................................................................................... 73 8.1.5.2. 条件式の一例 ......................................................................................... 73 8.2. C 言語の配列 ................................................................................................ 74 8.2.1. 文法........................................................................................................... 74 8.2.2. 配列の効果 ................................................................................................ 74 8.2.3. 注意点 ....................................................................................................... 74 8.2.4. 例題プログラム ......................................................................................... 75 8.3. 9. if 文・else 文 ............................................................................................. 73 C 言語の関数 ................................................................................................ 77 8.3.1. 文法........................................................................................................... 77 8.3.2. 例題プログラムと説明 .............................................................................. 78 8.3.3. 例題プログラムと説明2 ........................................................................... 80 8.3.4. 引数........................................................................................................... 81 赤外線 ...........................................................................................................................................82 9.1. 赤外線とは ................................................................................................... 82 9.2. 命令の送信方法 ............................................................................................ 83 9.3. データの伝送方法 ......................................................................................... 84 9.3.1. 伝送仕様について ..................................................................................... 84 10. 実践プログラム(LED 編) .......................................................................................................86 10.1. 10.1.1. LED 処理Ⅰ............................................................................................... 86 仕様 ....................................................................................................... 86 -5- 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 10.1.2. 10.2. プログラムの作成と説明........................................................................ 86 LED 処理Ⅱ............................................................................................... 88 10.2.1. 仕様 ....................................................................................................... 88 10.2.2. 詳細設計書の作成 .................................................................................. 88 10.2.3. 処理の流れ ............................................................................................. 89 10.2.4. プログラムの作成と説明........................................................................ 92 11. 自動車組込み製品の品質管理 ...........................................................................................96 11.1. 製品の品質 ................................................................................................ 96 11.2. 品質管理.................................................................................................... 97 11.2.1. テストの種類 ......................................................................................... 97 11.2.2. テストケース ......................................................................................... 98 11.2.3. 品質 ....................................................................................................... 98 11.2.4. バグ分析 ................................................................................................ 99 11.2.5. 品質向上対策 ......................................................................................... 99 11.2.6. 再テスト ................................................................................................ 99 11.3. テストの重要性 ....................................................................................... 100 11.3.1. 社会への影響度.................................................................................... 101 11.3.2. 損失 ..................................................................................................... 102 11.3.3. ユーザへの迷惑.................................................................................... 102 11.4. テストの実施........................................................................................... 103 11.5. バグ修正.................................................................................................. 105 11.5.1. バグ票(B 票)記入 ............................................................................. 105 11.5.2. プログラム修正.................................................................................... 105 11.6. テスト仕様書........................................................................................... 106 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 -6– 企業提案型プロジェクト学習実践教材 11.6.1. テスト仕様書 LEDⅠ .......................................................................... 106 11.6.2. テスト仕様書 LEDⅡ .......................................................................... 107 12. 実践プログラム(ミニカー編) .............................................................................................. 108 12.1. ミニカー操作Ⅱ ....................................................................................... 108 12.1.1. 仕様 ..................................................................................................... 108 12.1.2. 赤外線送信の考え方............................................................................. 108 12.1.3. プログラムの作成 ................................................................................ 109 12.1.4. 解説とヒント ....................................................................................... 110 12.1.5. フローチャート図 ................................................................................ 112 12.1.6. プログラムの確認 ................................................................................ 114 12.2. ミニカー操作Ⅲ ....................................................................................... 117 12.2.1. 仕様 ..................................................................................................... 117 12.2.2. フローチャート図の確認...................................................................... 118 12.2.3. プログラムの確認 ................................................................................ 119 12.3. ミニカー操作Ⅳ ....................................................................................... 121 12.3.1. 仕様 ..................................................................................................... 121 12.3.2. 走行パターン表の数字化...................................................................... 121 12.3.3. フローチャート図の確認...................................................................... 122 12.3.4. プログラムの確認 ................................................................................ 125 12.4. ミニカー操作Ⅴ ....................................................................................... 131 12.4.1. 仕様 ..................................................................................................... 131 12.4.2. フローチャート図の確認...................................................................... 132 12.4.3. プログラムの確認 ................................................................................ 136 12.5. ミニカー操作Ⅵ ....................................................................................... 141 -7- 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 12.5.1. 仕様 ..................................................................................................... 141 12.5.2. プログラムの確認 ................................................................................ 142 13. 講習後のテスト ........................................................................................................................ 146 付録 A. リモコン通信仕様 .......................................................................................................... 151 付録 B. 関数仕様 .......................................................................................................................... 152 付録 C. CD-ROM 構成 ................................................................................................................ 153 付録 D. 講習後のテスト回答 ..................................................................................................... 154 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 -8– 企業提案型プロジェクト学習実践教材 1. はじめに 本書では以下の知識を有している読者を想定している。 基本的な Windows XP の操作 プログラミングの経験 ( C 言語または C++ ) Excel でのファイル編集 エディタでのファイル編集 1.1. 本書の目的 本書は、産業技術である複数のシステム統合を目的にインターフェース・通信規格なの 基礎、使用法を学び、その実践及び応用技術についての解説を目的としたテキストである。 ミニカーを題材に、実習を実務に近い形式で行うことで、自動車組込み産業の人材ニー ズに対応した実践的な知識・技術を有する技術力を持つ人材の育成を目指す。 1.2. 本書の構成 1章~3章までが共通する概論。4章は赤外線コントローラの制作。5章では設計につ いて解説している。6章は開発環境の構築手順。7章~9章については、プログラム開発 の基礎内容の解説。10~12章では、実践的使用法の導入実習の解説と製品の品質管理 を記載している。 ミニカーのコントロール方法は、赤外線コントローラよりコマンド送信により行う。 対象とするミニカーは、チョロQハイブリッド マリオカート Wii VS タイプとする。 -9- 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 1.3. PC 環境 本書で想定するパソコンの構成を以下に示す。 OS Windows XP Professional/Home SP3 CPU 2GHz 以上 メモリ 512MB 以上推奨 ディスク 2 GB 以上 1.4. 使用機材 使用機材について、以下に示す。 ミニカー 1 式 チョロQハイブリッド マリオカート Wii VS タイプ(タカラトミー) 本書では、チョロQハイブリッド マリオカート Wii VS タイプを例題として 記載する。 赤外線送信コントローラ 1 式 PIC ライター 1 式 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 10 – 企業提案型プロジェクト学習実践教材 2. 組み込みプログラム 現在、私たちの身の回りにはたくさんの電化製品がある。 例えば冷蔵庫、掃除機、洗濯機、炊飯器など。これら電化製品のほとんどに、制御を行 うためのコンピュータが入っている。 このコンピュータは、ごくごく小さなもので“マイコン”と呼ばれて、このマイコンを 動かすためのプログラムこそが「組み込みプログラム」である。 なぜ「組み込み」と呼ぶのかというと、掃除機ならば「掃除機の動作を制御するプログラ ム」をマイコンに仕込んでおき、マイコンとともに機械に「組み込んで」使うものだから である。 今回の学習ではミニカー(自動車)を例題として取り上げている。 自動車にとってのマイコンは、 「走る、曲がる、止まる」という基本機能を制御するだけ ではなく、安全、安心、快適などの付加価値を高めるための不可欠なパーツである。 - 11 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 2.1. マイコン “マイクロコントローラ”の略称であり、IC チップ一つ分の大きさしかない“小さな” コンピュータである。 機能や性能は一般的なパソコンと比べるまでもなく貧弱であるが、一方で非常に小さく、 また消費電力も少ないことから、性能よりも省電力、省スペースであることのほうが重要 なものなどによく用いられる。 2.2. PIC(ピック) PIC(Peripheral Interface Controller)とは、マイクロコントローラ(制御用 IC)製品 群の総称であり、プログラミングが可能なワンチップマイコンの一種である。ワンチップ マイコンとは一つの IC 上に CPU、メモリ、プログラムメモリなどが含まれていて、これに 電源を供給するだけ(ものによってはクロック回路やコンデンサなど)で動作するマイコ ンである。 ワンチップマイコンは、汎用的な処理を行うことはできないが、小さな IC 回路のみで特 定機能の処理を一手に行うことができる。そのためコンピュータ制御を必要とする装置の 多くに組み込まれている。 自動車や炊飯器の制御システムに採用され、あるいはマウスやキーボードにおける入力 情報の制御などにもワンチップマイコンが用いられている。 ワンチップのメリットは省面積、低コスト、回路の設計や配線作業の負担が大きく減る 事が挙げられる。 図 2-2 PIC とマイコン 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 12 – 企業提案型プロジェクト学習実践教材 3. 設計とは 設計とは、物(製品・システム・アプリ)を造る際に必要となる工程の一つである。 設計は、動作内容や制御内容の関連性を共通のモデル(図)を用いて表現し、関係者間で システム全体の妥当性を判断するための方法である。仕様の確実な伝達を目的として設計 し、設計書を作成する。 設計にはいくつかの種類があるが、大きく基本設計と詳細設計の2種類に分けられる。 3.1. 設計書の必要性 顧客が要望している内容を理解しているかを判断する基準となり、作業を行う場合の仕 様書となる。また、複数人で作業を行う場合に仕様を統一するために必要となる。 設計書を作成しておくことで、発展型のものを造るときに手間を減らすことになる。 図 3-1 設計書の位置づけ - 13 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 3.2. 基本設計 基本設計は、顧客や外部システム担当者と調整しながらシステムの全体像がつかめるよ うな内容を決める。外部システムと連携する部分の仕様を設計し、詳細設計を行うための 土台を作ることが目的である。 3.3. 詳細設計 詳細設計は、基本設計を元にシステムの各機能をより詳細化し、実際にどのような処理 を行ってプログラムを動作させるかを決める。 プログラマは詳細設計書を元にプログラムを実装していくため、プログラマに分かりや すい表記で設計していくことが求められる。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 14 – 企業提案型プロジェクト学習実践教材 3.4. モデリング ここで解説するモデリングとは、 「3 次元グラフィックスにおいて、モデル(物体)の形 状を作成すること」ではなく、共通のモデルを用いて、関係者間でシステム全体の妥当性 を判断するための方法であり、設計の一部として使用する。 自動車システムの開発にかかわらず、業務アプリケーションや、クライアント/サーバ、 ヒューマンインターフェースに至るシステムの開発では、プログラミング言語(C 言語、Java など)を用いて、システムを構築する。 ただし、プログラミング言語はすべて文字表現であり、その言語の仕組みを知っている人 間でないと、内容を理解できない。また、複数の機能を持つシステムを製造する場合、各 機能間での関連性や、データの受け渡し方法を事前に定義しておかないと、機能間の連携 が上手くいかず、システムが全く動作しない事態に陥ることになる。 これらの問題を製造前に払拭するため、システム全体を直感的で解りやすく理解するため の手段として、モデル(図)を作成(モデリング)する。 モデリングには、システム全体を直感的で解りやすく理解する利点のほかに、以下の利 点もある。 記憶に残りやすい 自分自身も、他人も概要が素早く理解できる 全体の構造、関係がわかりやすい 一目で要素同士の関連がわかる 関係者間で共通の認識が得られる(認識のずれを確認できる) システム全体を理解した上でコーディングするので、作業のやり直しが少なくなる 今回の学習では、フローチャート図を元にモデリングしていくが、モデリングには複数 の種類が存在する。以下、モデリングの手法について解説する。 - 15 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 3.4.1. ユースケース図 「Use case(ユースケース)」=システムの利用例を図で表現する。図を構成する要素は以 下の 5 項目である。 ① 作成するシステムには(サブジェクト) ② どんな利用者がいて(アクター) ③ どんな機能があり(ユースケース) ④ 利用者は機能を直接使えるのか(関連) ほうがん ⑤ 機能はどの機能を使用するのか(包含) No 名前 意味 ① サブジェクト システム全体 ② アクター 利用者や使用する他システム ③ ユースケース 作成する機能(RT コンポーネント) 図 システム名 ~する ④ 関連 利用者と機能の関係 (アクターとユースケースを結ぶ) (利用者が認識できる機能) ⑤ 包含 ある機能(ユースケース)が別の (ユースケースとユースケースを結ぶ) <<include>> 機能を使用する ミニカー走行 リモコン 操作する 前に進む 使用者 後ろに進む iPhone 左右に曲がる 図 3-2 ユースケース図 (例:iPhone で動くミニカー) 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 16 – 企業提案型プロジェクト学習実践教材 3.4.2. ステートマシン図 各機能の状態(ステート)の振り分けと、その状態へ移るための条件および効果を図で表 現する。 No 名前 意味 図 ① 開始状態 開始を示す ② 終了状態 終了を示す ③ ステート 機能の状態 ④ 遷移 現在の状態から別の状態へ遷移 ⑤ 選択仮状態 条件により遷移が分岐する 状態名 契機[条件]/効果 ミニカー起動中 1秒/受信状態監視 電源ON 起動待機中 アイドル状態 電源OFF 受信切断 受信切断 赤外線受信 駆動完了/ミニカー停止 駆動状態 赤外線受信状態 駆動要求/ミニカー走行 1秒/受信状態監視 1秒/受信状態監視 図 3-3 ステートマシン図 (例:iPhone で動くミニカー) - 17 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 3.4.3. クラス図 1 つ 1 つの機能についての関連性を図に表記する。各機能が行う動作(関数:メソッド) や、取り扱うデータ(変数:属性)を、クラス(クラス名の記述された四角)内に記入す ることで、どの動作がどの機能で使用されるのか、どのデータがどの機能に受け渡される かを判断する。 クラス図を詳細に詰めていくことで、ソースコードに変換することができる。 No 名前 意味 図 ① クラス 1 つの機能 ② メソッド 1 つの機能が行う動作 ③ 属性 1 つの機能が保持するデータ ④ 関連 クラス間の関係性を表現 ⑤ 多重度 クラス間の数的関係を示す ⑥ 集約 全体とその一部分を示す ⑦ public 他のクラスでも使用可な属性・メソッド + ⑧ private 自クラスのみ使用可な属性・メソッド ― クラス名 属性 メソッド (クラス間を結ぶ) 1 0..n 赤外線ドライバ +接続機器情報 +受信待機 +受信中 +通信切断 -接続機器情報受信() 1 行動制御 1 赤外線監視部 +接続機器情報 +赤外線状態監視() +接続機器情報送信() +接続機器情報取得() +接続機器情報変換() 1 1 +アイドル : int = 0 +受信 : int = 1 +駆動 : int = 2 +駆動要求() +状態変更() -アイドル状態イベント() -受信状態イベント() -駆動状態イベント() -接続機器線情報解析() 駆動制御 1 1 +前方移動 : int = 1 +後方移動 : int = 2 +右方向移動 : int = 3 +左方向移動 : int = 4 +モータに指示を出す() 1 1 モータ +後輪を動かす(in 移動方向 : int) +前輪を動かす(in 移動方向 : int) 図 3-4 クラス図 (例: iPhone で動くミニカー) - 18 – 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 3.4.4. シーケンス図 各機能間のやり取りを時系列に沿って表現する。複数の機能のやり取りと、その順番が 明確になる。 各要素については、クラス図で作成した名称を使用する。 No 名前 意味 図 ① オブジェクト 1 つの機能(クラス) ② ライフライン オブジェクトが生存している期間 :クラス名 点線で表す ③ メッセージ 別のオブジェクトに働きかける ④ リターン メッセージに対する返り値 ⑤ 活性区間 オブジェクトが活動中 赤外線 監視部 赤外線 ドライバ メソッド名 返り値 行動制御 駆動制御 モータ 赤外線 状態監視() 赤外線 状態() 接続機器情報取得() 接続機器情報() 接続機器情報変換() 接続機器情報送信() 状態変更() 駆動状態イベント () 駆動要求() 走行指示() 図 3-5 シーケンス図 (例: iPhone で動くミニカー) - 19 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 3.4.5. フローチャート図 “flow chart”とは、 「流れ図」という意味であり“処理の流れを図にしたもの”である。 フローチャート図を元にプログラミングを行うことができる。 No ① 名前 端子 意味 フローの開始と終了を記述するた めの記号 ② 処理 処理内容を記述するための記号 (計算、代入など) ③ 判断 条件分岐を記述するための記号 ④ 定義済み処理 関数・別の場所で定義された処理 を表す記号 ⑤ 線 データの制御や流れを示すための 記号 流れの向きを明示する必要がある ときは、矢印を付ける ⑥ ループ端 繰り返しの開始と終了を表す記号 ⑦ 結合子 フローチャートを分割する場合 や、処理の流れを違う場所へ移動 させたい場合に用いる記号 丸の中に数字や文字を入れ、対に なるように同じ数字の結合子を配 置する 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 20 – 図 企業提案型プロジェクト学習実践教材 図 3-6 フローチャート図 (例: iPhone で動くミニカー) - 21 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 3.5. 開発の流れ iPhone で走行する ミニカーがほしい ユーザから の要件 要件から基本設計 基本設計から詳細設計(モデリング) モデルからソースコーディング プログラムを組み込んで完成 図 3-7 要件から完成までの流れ 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 22 – 企業提案型プロジェクト学習実践教材 4. 赤外線コントローラの制作 この章では、部品の配置図・スズメッキ配線図・被服配線図・回路図を参照し、赤外線 コントローラを制作する。このコントローラを使用しミニカーを制御する。 次頁以降の部品表・配置図、配線図、回路図は、CD-ROM ドライブの“教材\部品表・配置 図”フォルダの“赤外線コントローラ_部品表・部品配置図.xls” 、 “教材\配線図・回路図” フォルダの“赤外線コントローラ_配線図・回路図.xls”を参照する。 4.1. 制作手順 1. 部品表を参照し、部品と数量を確認する。 2. 配置図を参照し、部品を配置する。 3. 回路図、配線図のスズメッキ配線図、被服配線図を参照し、はんだ付けする。 4. PIC を IC ソケット(はんだされていない部品側)にセットする。 5. 基盤の IC ソケットに(4)をセットする。 6. リチウム電池をセットする。 - 23 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 4.2. 部品表・配置図 図 4-1 部品表・配置図 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 24 – 企業提案型プロジェクト学習実践教材 4.2.1. 赤外線コントローラ LED 電源スイッチ 右端:1 番 上:OFF 左端:6 番 下:ON ソケット くぼみの向き 入力スイッチ に注意 SW2 SW1 図 4-2 赤外線コントローラ 4.3. SW3 SW5 SW6 SW4 はんだ付け はんだ付けは、はんだを熱で溶かしたものを一種の接着剤として用いることにより、金 属や電子部品を接合する作業のことである。 4.3.1. 手順 1. はんだ付けを行う部品の方に温めたコテを当てる。 温度差のあるものには、はんだは馴染みにくく、熱を与える時間が長いとはんだが駄 目になるので注意する。 2. 少しだけ早く先に部品にコテを当て、はんだをスルー(穴)に流し込むように、はん だを溶かす。 3. ある程度はんだを溶かしたら、コテとはんだを同時に離す。 4. はんだが、小山のような形になっていたら成功です。 以外の場合はうまく盛れていない状態なので、やり直す必要があります。はんだが劣 化したときに接触不良の原因となります。 - 25 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 4.4. 配線図 図 4-3 配線図 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 26 – 企業提案型プロジェクト学習実践教材 4.5. 回路図 図 4-4 回路図 - 27 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 5. 設計書の作成 この章では、3 章で述べた基本設計書と詳細設計書について学習する。 設計書を作成する際に、 「設計書は何のために存在しているのか」を意識し、設計書の必要 性を確認することが必要である。 5.1. 設計書の書き方 設計書の書き方には絶対的な公式があるわけではない。必然的に、設計者の「経験」と 「力量」に依存する部分が多くなり、完成した設計書の内容と質は設計者ごとに大きく異 なるような結果に陥りやすい。 そのため、標準の設計フォーム(ひな型)や設計書作成ガイドラインを用意することで、 共通の設計書を作成する。 今回の学習でも用意している設計フォームを元に作業を行う。 基本設計書には、システムの全体像がつかめる様な内容にするため、装置の外観図、操 作の処理内容などを記載する。 詳細設計書には、システムの各機能をより詳細化し、実際に行なう動作の内容を記載す るため、フローチャート図、関数仕様を記載する。 関数仕様は、学習用に用意されている関数( 「付録 B. 関数仕様」 )を参照する。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 28 – 企業提案型プロジェクト学習実践教材 5.2. LED 処理Ⅰ 「5.2.2 仕様」を元に基本設計書と詳細設計書を作成する。 5.2.1. はじめに 今回の学習で使用するファイルの保存先を作成する。 フォルダの新規作成より、 “自動車教材”のフォルダを作成する。 5.2.2. 仕様 ・赤外線コントローラ(機器)で構成されている。 ・スイッチを押した場合に LED を点灯する。 ・スイッチが押されてない場合は消灯する。 ・スイッチと LED の関連は対応表を参照する。 [対応表] スイッチ 点灯 LED SW1 LED1 SW2 LED2 SW3 LED3 SW4 LED4 SW5 LED5 SW6 LED6 - 29 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 5.2.3. 基本設計書の作成 1. CD-ROM ドライブから、 “教材\設計書”フォルダを開き、 “記入用_LED 処理Ⅰ_基本設計 書.xls”を“自動車教材”フォルダにコピーする。 2. コピーしたファイルをダブルクリックし、ファイルを開く。 3. Excel シートの“システム全体”をクリックする。 4. 赤外線コントローラの外形図に部品を配置する。 5. LED 番号の配置を記載する。 6. スイッチ番号の配置を記載する。 7. 構成表の電源を記載する。 8. 処理内容を記載する。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 30 – 企業提案型プロジェクト学習実践教材 -- LED 処理Ⅰ システム全体 -- - 31 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 5.2.4. 詳細設計書の作成 1. CD-ROM ドライブから、 “教材\設計書”フォルダを開き、 “記入用_LED 処理Ⅰ_詳細設計 書.xls”を“自動車教材”フォルダにコピーする。 2. コピーしたファイルをダブルクリックし、ファイルを開く。 3. Excel シートの“処理フロー”をクリックする。 4. 処理フローを記載する。 5. Excel シートの“関数仕様”をクリックする。 6. 「付録 B. 関数仕様」を参照し、関数名を記載する。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 32 – 企業提案型プロジェクト学習実践教材 -- LED 処理Ⅰ 処理フロー(メイン) -- - 33 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 -- LED 処理Ⅰ 関数仕様 -- 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 34 – 企業提案型プロジェクト学習実践教材 5.3. ミニカー操作Ⅰ [5.3.1 仕様]を元に基本設計書と詳細設計書を作成する。 5.3.1. 仕様 ・ミニカー本体とコントローラ(充電用)と赤外線コントローラで構成されている。 ・赤外線コントローラの赤外線出力でミニカーを操作する。 ・ミニカーの操作内容 SW2 を押せば前に、SW4 を押せば後ろに進む。 SW1 を押しながら SW2、または SW1 を押しながら SW4 を押せば左に曲がる。 SW3 を押しながら SW2、または SW3 を押しながら SW4 を押せば右に曲がる。 SW1 を押せば左に舵を切る。 SW3 を押せば右に舵を切る。 ・赤外線データを送信する。 (フロー図に関数を記載済み) - 35 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 5.3.2. 基本設計書 5. CD-ROM ドライブから、 “教材\設計書”フォルダを開き、 “記入用_ミニカー操作Ⅰ_基本 設計書.xls”を“自動車教材”フォルダにコピーする。 6. コピーしたファイルをダブルクリックし、ファイルを開く。 7. Excel シートの“システム全体”をクリックする。 8. スイッチの配置を記載する。 9. 赤外線コントローラの処理内容を記載する。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 36 – 企業提案型プロジェクト学習実践教材 -- ミニカー操作Ⅰ システム全体 -- - 37 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 5.3.3. 詳細設計書 1. CD-ROM ドライブから、 “教材\設計書”フォルダを開き、 “記入用_ミニカー操作Ⅰ_詳細 設計書.xls”を“自動車教材”フォルダにコピーする。 2. コピーしたファイルをダブルクリックし、ファイルを開く。 3. Excel シートの“処理フロー”をクリックする。 4. 処理フローを記載する。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 38 – 企業提案型プロジェクト学習実践教材 -- ミニカー操作Ⅰ 処理フロー(メイン) -- - 39 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 6. 開発環境構築 この章では、実習で必要な環境構築を行う。 C 言語プログラムのコンパイラと PIC ライターのセットアップを行う。 6.1. PICC LITE(コンパイラ) C 言語プログラムのコンパイラは、HI-TECH 社が提供しているフリーのコンパイラツール PICC LITE を使用する。 フリーツールのため、対応している PIC は 12F627,12F629, 16F627, 16F648A, 16C84, 16F84, 16F877(A)など制限がある。また、プログラミング領域として使える ROM サイズや使用でき る RAM 領域の制限などもある。 しかし、コンパイラとしては評価が高いため、通常使用する場合に特に問題はない。 6.1.1. セットアップ 1. CD-ROM ドライブから、 “実践\Install”フォルダを開き、“PICCLITE.exe”をダブルク リックする。 図 6-1 PICC LITE セットアップ① 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 40 – 企業提案型プロジェクト学習実践教材 2. セットアップ画面が立ち上がる。 「Next」をクリックする。 図 6-2 PICC LITE セットアップ② 3. ライセンス許諾のチェックをつけ「Next」をクリックする。 図 6-3 PICC LITE セットアップ③ - 41 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 4. 「Next」をクリックする。 図 6-4 PICC LITE セットアップ④ 5. 「Next」をクリックする。 図 6-5 PICC LITE セットアップ⑤ 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 42 – 企業提案型プロジェクト学習実践教材 6. インストール画面が表示される。すべてインストールされるまでしばらく待機する。 7. すべてインストールし終えると、セットアップ終了画面が表示される。 「Finish」をク リックし、セットアップを完了する。 図 6-6 PICC LITE セットアップ⑥ - 43 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 6.2. HI-TIDE(開発環境) HI-TIDE は HI-TECH 社が配布している IDE(総合開発環境)で、PICC Lite や HI-TECH C などを利用できる。 IDE はエディタ、コンパイラ、デバッガなど、プログラミングに必要なツールが一つのイ ンターフェースで統合して扱えるような環境のことである。 6.2.1. セットアップ 1. CD-ROM ドライブから、 “教材\Install”フォルダを開き、 “HI-TIDE.exe”をダブルクリ ックする。 図 6-7 HI TIDE セットアップ① 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 44 – 企業提案型プロジェクト学習実践教材 2. 「Next」をクリックする。 図 6-8 HI TIDE セットアップ② 3. ライセンス許諾のチェックをつて「Next」をクリックする。 図 6-9 HI TIDE セットアップ③ - 45 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 4. 「Next」をクリックする。 図 6-10 HI TIDE セットアップ④ 5. 「Next」をクリックする。 図 6-11 HI TIDE セットアップ⑤ 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 46 – 企業提案型プロジェクト学習実践教材 6. “Run HI-TIDE now ?”のチェックを外して「Finish」をクリックする。 図 6-12 HI TIDE セットアップ⑥ - 47 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 6.3. 開発環境の日本語化 6.3.1. セットアップ 1. CD-ROM ドライブから、 “教材\Install”フォルダを開き、“日本語化.bat”をダブルク リックする。 図 6-13 開発環境の日本語化① 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 48 – 企業提案型プロジェクト学習実践教材 6.4. IC-Prog(PIC ライター) 6.4.1. セットアップ 1. CD-ROM ドライブから、 “教材\Install”フォルダを開き、“ICProg”のフォルダごと任 意の場所にコピーする。 図 6-14 IC-Prog セットアップ① - 49 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 2. “icprog.exe”をダブルクリックする。 図 6-15 IC-Prog セットアップ② 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 50 – 企業提案型プロジェクト学習実践教材 3. エラーが出ますが無視して、 “設定”から“オプション”をクリックする。 図 6-16 IC-Prog セットアップ③ 4. 各種タブから“NT/2000/XP ドライバを使用”にチェックをつけて”OK”をクリックす る。 図 6-17 IC-Prog セットアップ④ - 51 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 5. パソコンを再起動する。 6. “icprog.exe”をダブルクリックする。 7. 右上のプルダウンを“PIC 16F648A”にする。 図 6-18 IC-Prog セットアップ⑤ 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 52 – 企業提案型プロジェクト学習実践教材 6.5. プロジェクト設定 開発環境の構築が完了したら今回の実習で使用する“プロジェクト”というものを設定 する。プロジェクトとは、プログラムを作るときに、必要となるソースファイルやライブ ラリ、ヘッダファイルなどを一括して管理するための集合体である。 6.5.1. プロジェクトの設定方法 1. CD-ROM ドライブから、 “教材\RC_Program”フォルダを開き、 “RC”フォルダを“自動車 教材”フォルダ(5 章で作成)にコピーする。 2. “HI-TIDE”を起動すると、最初にフォルダを指定する画面が表示される。“ワークス ペース“ (プログラム開発環境の作業場所)を 1 のフォルダとする。 図 6-19 プロジェクトの設定方法① 3. “この選択をデフォルトとして使用し、今後この質問を表示しない”にチェックをつ けて”OK”をクリックする。 - 53 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 4. ワークスペースを設定したら次のような画面が表示されます。 “ようこそ”のとなりの ×印をクリックし画面を閉じる。 図 6-20 プロジェクトの設定方法② 5. メニューバーの“ファイル”から“新規”→“プロジェクト”をクリックする。 図 6-21 プロジェクトの設定方法③ 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 54 – 企業提案型プロジェクト学習実践教材 6. “HI-TECH C”の中にある“PICC LITE Project”を選択し「次へ」をクリックする。 図 6-22 プロジェクトの設定方法④ 7. プロジェクト名を“RC”とし「次へ」をクリックする。 図 6-23 プロジェクトの設定方法⑤ - 55 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 8. 「次へ」をクリックする。 図 6-24 プロジェクトの設定方法⑥ 9. “16F627A”を選択し「次へ」をクリックする。 図 6-25 プロジェクトの設定方法⑦ 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 56 – 企業提案型プロジェクト学習実践教材 10. “18PDIP”を選択し“Create Main Function” のチェックをはずしてから「次へ」を クリックする。 図 6-26 プロジェクトの設定方法⑧ 11. 「終了」をクリックする。 図 6-27 プロジェクトの設定方法⑨ - 57 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 6.5.2. プロジェクトの設定確認方法 1. 左側に“RC”が表示されるか確認する。 図 6-28 プロジェクトの設定確認方法① 2. “ RC” を ダ ブ ル ク リ ッ ク し 、“ RC_Data.h ”、“ RC_Header.h ”、“ RC_Functions.c ”、 “RC_Main.c”が表示されているか確認する。 図 6-29 プロジェクトの設定確認方法② 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 58 – 企業提案型プロジェクト学習実践教材 6.5.3. HI-TIDE の起動方法 1. “スタート” ⇒ “すべてのプログラム” ⇒ “HI-TECH software” ⇒ “HI-TIDE v3.12PL1” ⇒ “HI-TIDE Integrated Development Enviroment” をクリックする。 6.5.4. HI-TIDE の起動時エラーについて HI-TIDE の起動時に次のようなエラーが表示された場合は、下記処理を行う。 図 6-30 HI-TIDE 起動時エラー① 6.5.4.1. 作業手順 1. エクスプローラを起動し、 “ローカル ディスク(C:))”をクリックする。 2. “Program Files”フォルダをクリックする。 3. “HI-TECH Software”フォルダをクリックする。 4. “HI-TECH”フォルダをクリックする。 5. “3.12”フォルダをクリックする。 6. “resouces”フォルダをクリックする。 - 59 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 7. “resouces”の中にある“jre-1_5_0_06-windows-i586-p.exe”をダブルクリックして 実行する。 図 6-31 HI-TIDE 起動時エラー② 8. “ 「同意する」をクリックする。 図 6-32 HI-TIDE 起動時エラー③ 9. 再度、HI-TIDE を起動する。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 60 – 企業提案型プロジェクト学習実践教材 7. プログラムの作成 この章では、プログラムの作成手順および、PIC への書き込み手順を学習する。 7.1. HI-TIDE によるプログラム作成 HI-TIDE を使用してプログラムをコンパイルする。 7.1.1. 仕様 赤外線コントローラの LED を全て点灯させる。 7.1.2. プログラム作成 1. HI-TECH を起動する。 2. 画面の左側の“RC_Main.c” (ファイル)をダブルクリックする。 3. 画面中央に“RC_Main.c”の内容が表示されプログラムの編集が可能となる。 4. 基本設計書と詳細設計書を元にプログラムを作成する。 コメント行の「ここにプログラムを書きます」の間に記載する。 - 61 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 -- プログラムの一例 -- 図 7-1 HI-TIDE によるプログラム作成① -- プログラムの一例 -- 図 7-2 HI-TIDE によるプログラム作成② 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 62 – 企業提案型プロジェクト学習実践教材 5. プログラムを作成し、左上のフロッピーアイコン(このソフトでは“保管”と表示) をクリックする。 プログラムの保存とビルド(実行可能ファイルを作成)が実行される。 図 7-3 HI-TIDE によるプログラム作成③ 7.1.3. コメント コメントとは、プログラムの実行とは関係のない文章であり使用用途としてその処理の 内容および返り値などを記述してプログラマ本人および本人以外の開発スタッフに対して、 何をしているかを明確に示す物である。 作成者により表現が異なるが、解りやすい記載を心がける必要がある。 開発言語により記載方法は異なるが、今回は下記の内容でコメントを記載する。 コメントは緑色(デフォルト)で表示される。 行 記載方法 記載例 1行 コメント文の先頭頭に//(スラッシュ)を2つつける 複数行 コメント文を/* と */で囲む - 63 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 7.2. PIC ライター書き込み 1. PIC ライターに PIC をセットする。 PIC マイコンには向きがあるので、差し込む部品の凹みを合わせる。 IC マイコンの金属部分(脚)は結構簡単に折れてしまうので注意する。 2. 「6.4. IC-Prog(PIC ライター)」で設定した ICProg フォルダの中にある icprog.exe をダブルクリックする。 3. メニューバーの”ファイル” → ”ファイルを開く”をクリックする。 図 7-4 PIC ライター書き込み① 4. 「6.5.1. プロジェクトの設定方法」で設定したプロジェクトフォルダ内の“Release” をダブルクリックする。 5. ファイルの種類を“IHX8 ファイル(*.hex,*.h8,*.sxh”)選択する。 図 7-5 PIC ライター書き込み② - 64 – 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 6. “RC.hex”ファイルを選択する。 7. “開く”をクリックする。 IC-Prog 画面に戻り、プログラムコードが読み込まれる。 8. メニューバーの”コマンド” → ”全てプログラム”をクリックする。 図 7-6 PIC ライター書き込み③ 9. 書き込みの確認ウィンドウが表示されるので“はい”をクリックする。 図 7-7 PIC ライター書き込み④ - 65 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 10. 書き込み待ち。 図 7-8 PIC ライター書き込み⑤ 11. 書込が完了した場合は、 “OK”をクリックする。 書き込みに失敗した場合は、2・3 回と試してみる。 図 7-9 PIC ライター書き込み⑥ 7.3. 動作確認 1. PIC を取り外し、リモコンに付けて電源を ON する。 2. LED1~LED6 全ての LED が点灯すれば正常動作とする。 異なる動作をした場合は、プログラムの修正を行う。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 66 – 企業提案型プロジェクト学習実践教材 8. C 言語の基礎 この章では、C 言語の基礎について説明する。 8.1.1. 変数 変数とは、データを一時的に記憶しておく領域のことである。 変数にはいろいろな種類(文字型・数字型)があり、それぞれ違う値を記憶することが できる。変数を使用する前には「宣言」が必要となる。 宣言とは、変数に名前を付け記憶するデータの型を決定することである。 8.1.1.1. 変数プログラムと説明 下記に、int 型の変数を用意し、5 を代入する処理を記載する。 ---変数プログラム--- (1):val という名前の int 型の変数を宣言する。 (2):val に、整数の 5 を代入する。 8.1.1.2. 変数名の文字制限 変数名には、使用できない文字があるので注意する必要がある。 ・if、 for、 while などプログラムとして意味を持っている文字 ・int、 char などの型名 ・数字から始まる文字 (例:12abc) ・関数名となっている文字 (例:printf) - 67 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 8.1.2. 計算式 C 言語では算術演算(四則演算と剰余演算) 、シフト演算、ビット演算、増減演算、代入 演算、条件演算ができる。演算子には優先順位があるので、複数の計算式を記載する際は 注意が必要である。ここでは、算術演算とシフト演算について説明する。 8.1.2.1. 算術演算プログラムと説明 ---算術演算プログラム --- (1):変数を初期化する。宣言した変数は 0 とは限らないので、初期値を代入する。 (2): val に 100 が増加される。 「val = val + 100;」と同じ計算式である。 (3):乗算で val2 に 500 が代入される。 (val = val × 5) (4):val に 99 が代入される。 「val = val – 1;」と同じ計算式である。 逆にプラス 1 する場合は、 「++」と記載する。 (5):除算で val2 に 3 が代入される。本来は 3.3333・・・であるが、val2 は int 型の宣 言なので整数の 3 のみ代入される。 小数点まで求める場合は、float 型(浮動小数点型)の変数を宣言する。 余り部分を求める場合は、 「val2 = 10 % 3」の計算式となり、val2 に 1 が代入 される。 まとめ 加 + ++ 減 += - -- -= 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 乗 除(商) 除(余) * / % - 68 – 企業提案型プロジェクト学習実践教材 8.1.2.2. シフト演算プログラムと説明 シフト演算は、アセンブリ言語における二進数のシフト演算と同じものである。 “<<”で左シフト、 “>>”で右シフトを行う。 ---シフト演算プログラム --- (1):x に 0x01 を代入する。 (0x01 = 1) (2):x の値を 2 ビットの左シフトを行い、y に代入する。 y に 4 が格納される。 [説明] x に代入した 0x01 を二進数表示すると 0b0000000000000001 となる。 2 ビット左シフトすると 0b0000000000000100 となる。 シフトされた数字を十進数表示すると 4 である。 - 69 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 8.1.3. for 文(繰り返しと条件分岐) C 言語では同じ処理を何度も繰り返す場合に、“for”文を使用する。 “for”は英語で、 「…の間、ずっと」と言う意味である。“for”文は条件分岐を満たし ている間は処理を繰り返す。 8.1.3.1. 文法 for( ループ開始時設定; 繰り返しを続ける条件; 繰り返す毎に行われる処理 ) { 繰り返す処理 ; } 8.1.3.2. 例題プログラム 下記のプログラム①は、LED1~3 を点灯させるプログラムである。 このプログラムを“for”を使用して記載するとプログラム②となる。 --- プログラム① --- 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 70 – 企業提案型プロジェクト学習実践教材 --- プログラム② --- (1) (2) (1) LED 関数(13 行目) For 文の変数を引数として LDE 関数を呼び出す。 (2) 繰り返し処理(12-16 行目) for 文に変数の初期値と繰り返す条件をセットする。 8.1.4. while 文(繰り返し) C 言語では同じ処理を何度も繰り返す場合に、“while”を使用する。 “while”文は条件式を評価し真の間は処理を繰り返す。 “for”文とは異なり条件式で使われる変数の値をどのように変化させるかは指定できな い為、実行される処理の中で別途記述する必要がある。条件値を変化させなければ無限 ループとなるので注意が必要である。 8.1.4.1. 文法 while( 繰り返しを続ける条件 ) { 繰り返す処理; } - 71 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 8.1.4.2. 例題プログラム 下記のプログラム②は for 文の LED1~3 を点灯させるプログラムである。 このプログラムを“while”を使用して記載するとプログラム③となる。 --- プログラム②--- --- プログラム③ --- (1) (2) (3) (1) 変数の初期化(13 行目) カウンタ用の変数に 1 を代入する。 (2) 変数の変更(17 行目) カウンタ用の変数を+1 する。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 72 – 企業提案型プロジェクト学習実践教材 (3) While 文(14-18 行目) While 文に繰り返し条件を設定する。 8.1.5. if 文・else 文 “if”は英語で、 「もしも ・・・ ならば」と言う意味であり、 “else”には「そのほかに」 という意味である。 “if” ・ “else”文は、条件に対する正、負により処理を選択する。 8.1.5.1. 文法 if ( 条件判定A ) { Aが条件通りの場合、ここを通過する; } else if ( 条件判定B ) { Aの条件とは違うが、Bの条件は満たしている場合、ここを通過する; } else { AとB、いずれの条件とも違う場合、ここを通過する; } ※else if も、else も不必要であれば省略できるが、いきなり else から始める条件文を記 載することはできない。 8.1.5.2. 条件式の一例 条件式 if (count < 10) if (count > 10) if (count <= 0) if (count >= 0) if (count == 5) if (count != 5) if (( count > 0 ) && ( count < 5 )) If (( count == 5 ) || ( count != 10 )) [&&]は、二つの条件があった時のみ正となる。 [||]は、どちらかの条件があえば正となる。 - 73 - 正の条件 10 より小さい場合 10 より大きい場合 0 以下の場合 0 以上の場合 5 と等しい場合 5 と等しくない場合 0 より大きく 5 よりも小さい場合 5 と等しい か 10 と等しくない場合 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 8.2. C 言語の配列 配列とは、同じ型の複数のデータを共通の名前でまとめて扱う方法であり、添字と呼ば れる番号で個々の要素を区別する。配列を使うことで、ある関係を持つデータをまとめて アクセスすることができる。 8.2.1. 文法 配列には宣言が必要である。 宣言によって、同じ型の変数が指定した数分だけ用意される。 [宣言] 型名 好きな変数名[ 必要な配列の数 ]; 例:int array[10]; [使用] 宣言した変数名[ 使いたい順番を指定 ] 例: array[1] = array[0] + 5; 8.2.2. 配列の効果 配列を上手に利用することで、同じ内容をひとまとまりに出来プログラムはより良いも のになる。結果、他人が見やすいプログラムとなる。 8.2.3. 注意点 配列を変数名[10]と宣言した場合、変数名[0]が初めの領域となり、変数名[9]が最後の領 域となる。間違えやすいので、特に注意する必要がある。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 74 – 企業提案型プロジェクト学習実践教材 8.2.4. 例題プログラム プログラム①は、LED を 1 から 4 まで待ち時間を置きながら点灯するプログラムである。 このプログラムを“配列”を使用して記載するとプログラム②となる。 --- プログラム① --- - 75 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 --- プログラム② --- (1) (2) (3) (1) 配列の宣言(9-10 行目) 待ち時間を代入する配列(変数)を宣言する。 1 から 4 までの配列を使用するので、5 を設定する。実際には、0 から 4 の配列が用意 されている。 (2) 配列(変数)への代入(9-10 行目) 回数ごとの待ち時間を代入する。 (3) for 文(21-29 行目) for 文に変数の初期値と繰り返す条件をセットする。 配列に代入した値を変数の変化を利用して取得し、LED を点灯と待ち時間の設定を行う。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 76 – 企業提案型プロジェクト学習実践教材 8.3. C 言語の関数 関数は、引数と呼ばれるデータを受け取り、定められた通りの処理を実行して結果を返 す一連の命令群である。多くのプログラミング言語では、関数がプログラムを構成する要 素となっている。 多くの言語や処理系では、開発者の負担を軽減するため、よく使う機能が関数としてあ らかじめ用意されている。 8.3.1. 文法 [関数の宣言] 戻り値の型 関数名( 引数の型と変数名, 引数の型と変数名 ) ; [関数処理] 戻り値の型 関数名( 引数の型 引数名, 引数の型 引数名 ) { いろいろと処理を記述する } - 77 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 8.3.2. 例題プログラムと説明 プログラム①は単価と数量から合計値を表示するプログラムである。 このプログラムを“関数”を使用して記載するとプログラム②となる。 --- プログラム① --- 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 78 – 企業提案型プロジェクト学習実践教材 --- プログラム② --- (1) (2) (3) (1) 関数プロトタイプ宣言(4-7 行目) C コンパイラはプログラムを上から順番に読み込み翻訳するため、関数の宣言を関数が 使用される前に行う必要がある。 #include <????> で指定している“stdio.h”ファイルや"RC_Header.h"ファイルなど は関数宣言が記述されているため、関数が正しく使うことができる。 [関数の宣言] 戻り値の型 ↓ 例: void 関数名( 引数の型と変数名, 引数の型と変数名 ) ; ↓ ↓ goukeiPrint(int hTanka, int hNum); - 79 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 (2) 関数呼び出し(17,22,27 行目) 関数に引数をセットする。 (3) 関数本文(30-36 行目) 関数の本文処理を記載する。 8.3.3. 例題プログラムと説明2 先ほどのプログラム②に、合計を戻す(戻り値を設定)プログラム③である。 --- プログラム③ --- (1) (2) (3) 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 80 – 企業提案型プロジェクト学習実践教材 (1) 関数プロトタイプ宣言(4-7 行目) 関数名の前の“void”を“int”に置き換える。 関数は戻り値として返す値の型を添えて宣言する必要がある。 void は、英語で「無効にする」といった意味があり、関数の宣言時に添えておくこと は、 “この関数が何も戻り値を返さない”ことを意味する。 (2) 関数呼び出し(18,23,28 行目) 関数に引数をセットする。 返値を変数に代入する。 (3) 関数本文(30-42 行目) 関数名の前の“void”を“int”に置き換える。 合計値を戻り値とする return 文を追記する。 関数に“return”を記述すると、たとえ処理がまだ残っていたとしても関数は終了し、 関数の呼び出し元(ここでは main())に戻る。 return のすぐ後に記述した変数の中身が、その関数の戻り値となる。 8.3.4. 引数 引数は、プログラミング言語において関数(サブルーチン)を呼び出すときにその関数 を実行するために渡す値と、その渡された値に名前を付け、関数内で変数として扱えるよ うにしたものである。 - 81 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 9. 赤外線 ここでは、ミニカー実装の実践講座の前に、赤外線通信について学習する。実習前に赤 外線について把握することで、今後のミニカー開発を円滑にする。 9.1. 赤外線とは 赤外線とは、可視光の赤色の外側(=周波数がより低い)に分布する電磁波の一種であ る。赤外線は光りであり、人間の目では直接見ることは出来ない。 直進性が非常に強く、回り込みが少ない特性を持っている。 図 9-1 赤外線① 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 82 – 企業提案型プロジェクト学習実践教材 9.2. 命令の送信方法 今回のリモコンは赤外線を使ってラジコンに命令を伝達する送信方法である。 赤外線は、 “赤外線 LED”より発行される。 “赤外線 LED”は、赤外線を発して光る LED の ことであらかじめ決めておいたルールを元に(目には見えない)点灯したり消灯したりし て信号を送り、ラジコンの動き命令している。 図 9-2 赤外線② しかし、赤外線 LED は、動かしたいラジコンのいる方向だけに集中して光っている訳で はなく、複数台のラジコンが存在する場合の区別が必要になってくる。その区別の方はバ ンドを切り替えることで対応する。バンドとは、電波の周波数の事である。 今回はバンドを周波数で区別するのではなく、命令の信号の最初にバンドを指定するこ とで、ラジコン側で信号が自分に向けられたものかどうかを判断する。 図 9-3 赤外線③ - 83 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 9.3. データの伝送方法 赤外線でデータを伝送する場合は、光っている時間と消えている時間を 0 と 1 で表現し ている。伝送方法には手順があり簡単に解説すると、データを送る際に開始合図(スター トビット)を付加する。 開始合図を受信側が受け取ることでデータの受取準備を行うことができる。その後に 0 または 1 のデータを次々と送信する。 仕様により何ビットの伝送になるかは異なってくる。 また、ON する間隔(秒)などいろいろな仕様が決まっているため、仕様に合わせた形で適 切に行わなければ命令として認識されない。 9.3.1. 伝送仕様について 今回の実習で使用する仕様は、①開始合図を送信、②バンドを表すデータを 1 ビット送 信、③ミニカーを移動させるデータを 4 ビット送信 で行う。 例えとして、バンドが 1 で右折するデータを伝送する場合を記載する。 それぞれ送るデータの ON、OFF の長さは「付録 A. リモコン通信仕様」を確認する。 ① 最初に開始合図を送る。 開始合図 ON OFF TIME 図 9-4 伝送仕様① 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 84 – 企業提案型プロジェクト学習実践教材 ② バンドを表すデータを送信する。バンドが 1 なので、バンドデータは 0 となる。 開始データ バンドデータ(0) ) 開始合図 0 ビット ON OFF TIME 図 9-5 伝送仕様② ③ 最後に移動データを送信する。右折のデータは 0100 となる。 開始データ バンドデータ(0) 移動データ(0100) ) 開始合図 0 ビット 0 ビット 1 ビット 0 ビット 0 ビット ON OFF TIME 図 9-6 伝送仕様③ - 85 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 10. 実践プログラム(LED 編) 10.1. LED 処理Ⅰ 10.1.1. 仕様 ・ 「5.2.LED 処理Ⅰ」で作成した設計書を元にプログラムの作成を行う。 10.1.2. プログラムの作成と説明 -- LED 処理Ⅰ プログラム(メイン) -- (1) (2) (3) (4) 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 86 – 企業提案型プロジェクト学習実践教材 (1) 繰り返処理(30 行目-72 行目) ・while 文(繰り返し)を設定する。 (2) スイッチ状態の取得処理(32-33 行目) ・SW_INPUT 関数を追記し、スイッチの状態を取得する。 (3) スイッチの確認と LED 処理(36-41 行目) ・スイッチの状態を確認する。 ・LED 関数を追記する。 状態が ON の場合は、引数に ON とスイッチ番号をセットする。 状態が OFF の場合は、引数に OFF とスイッチ番号をセットする。 (4) スイッチ数分の確認処理(35-71 行目) ・(3)の処理をスイッチ数分確認する。 - 87 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 10.2. LED 処理Ⅱ 仕様を元に詳細設計のフロー図を作成し、プログラムの作成・動作確認まで行う。 10.2.1. 仕様 ・LED を右から順番に一つずつ、1 秒間隔で点灯する。 ・端まで来たら一度全部点灯し消灯する。 ・繰り返し処理を行う。 ・ 「付録 B. 関数仕様」の“WAIT_MS”を用いて 1 秒間隔処理を行う。 電源ON 10.2.2. 詳細設計書の作成 フォームは、CD-ROM ドライブの“教材\設計書\記入用_LED 処理Ⅱ_詳細設計書.xls”を 用いる。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 88 – 企業提案型プロジェクト学習実践教材 10.2.3. 処理の流れ (1) 初期化を行う。 (2) LED1 を点灯する。 (3) 1 秒待つ。 (4) LED1 を消灯する。 (5) LED2 を点灯する。 (6) 1 秒待つ。 (7) LED2 を消灯する。 (8) LED3 を点灯する。 (9) 1 秒待つ。 (10) LED3 を消灯する。 (11) LED4 を点灯する。 (12) 1 秒待つ。 (13) LED4 を消灯する。 (14) LED5 を点灯する。 (15) 1 秒待つ。 (16) LED5 を消灯する。 (17) LED6 を点灯する。 (18) 1 秒待つ。 (19) LED6 を消灯する。 (20) 全ての LED を点灯する。 (21) 1 秒待つ。 (22) 全ての LED を消灯する。 (23) 1 秒待つ。 (24) (2)から繰り返す。 - 89 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 -- LED 処理Ⅱ 処理フロー(メイン) Type1 -- 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 90 – 企業提案型プロジェクト学習実践教材 -- LED 処理Ⅱ 処理フロー(メイン) Type2 -- - 91 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 10.2.4. プログラムの作成と説明 -- LED 処理Ⅱ プログラム(メイン) Type1 – (1) (2) (3) (4) (5) (6) (7) (8) (9) (1) 繰り返処理(27-59 行目) ・while 文(繰り返し)を設定する。 (2) LED 処理関数(LED)の呼び出し(34 行目) ・LED を点灯する。引数に、ON,スイッチ番号を渡す。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 92 – 企業提案型プロジェクト学習実践教材 (3) 待ち処理関数(WAITE_MS)の呼び出し(35 行目) ・時間を停止する。引数に 1000 を渡す。 (4) LED 処理関数(LED)の呼び出し(36 行目) ・LED を消灯する。引数に、OFF,スイッチ番号を渡す。 (5) LED1 から LED6 の処理(36-41 行目) ・(2) (3) (4)の処理を LED1 から LED6 まで行う。 (6) LED 処理関数(LED)の呼び出し(54 行目) ・全 LED を点灯する。引数に、ON,ALL を渡す。 (7) 待ち処理関数(WAITE_MS)の呼び出し(55 行目) ・時間を停止する。引数に、1000 を渡す。 (8) LED 処理関数(LED)の呼び出し(56 行目) ・全 LED を消灯する。引数に、OFF,ALL を渡す。 (9) 待ち処理関数(WAITE_MS)の呼び出し(57 行目) ・時間を停止する。引数に、1000 を渡す。 - 93 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 -- LED 処理Ⅱ プログラム(メイン) Type2 –- (1) (2) (3) (4) (6) (7) (8) (9) (1) 繰り返処理(27-59 行目) ・while 文(繰り返し)を設定する。 (2) LED 処理関数(LED)の呼び出し(34-35 行目) ・LED を点灯する。引数に、ON,スイッチ番号を渡す。 (3) 待ち処理関数(WAITE_MS)の呼び出し(38 行目) ・時間を停止する。引数に 1000 を渡す。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 94 – (5) 企業提案型プロジェクト学習実践教材 (4) LED 処理関数(LED)の呼び出し(41 行目) ・LED を消灯する。引数に、OFF,スイッチ番号を渡す。 (5) 繰り返処理(32-42 行目) ・For 文(繰り返し)を設定する。LED 数分の処理をセットする。 設定:カウンタの初期値を 1 にセットする。 LED 数分の繰り返しをセットする。 カウントアップをセットする。 (6) LED 処理関数(LED)の呼び出し(45 行目) ・全 LED を点灯する。引数に、ON,ALL を渡す。 (7) 待ち処理関数(WAITE_MS)の呼び出し(48 行目) ・時間を停止する。引数に、1000 を渡す。 (8) LED 処理関数(LED)の呼び出し(51 行目) ・全 LED を消灯する。引数に、OFF,ALL を渡す。 (9) 待ち処理関数(WAITE_MS)の呼び出し(54 行目) ・時間を停止する。引数に、1000 を渡す。 - 95 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 11. 自動車組込み製品の品質管理 この章では、自動車組込み製品の品質と評価テストについての考え方を解説している。 11.1. 製品の品質 製品は、ただ動作するだけでなく、信頼性、安全性、操作性も考えなければならない。 自動車組込み製品では、特に安全性が重要視される。 信頼性・・・製品の故障が起こりにくいこと 安全性・・・製品を扱うことによって生じる事故や、けがなどの被害がないこと 操作性・・・製品の使いやすさ 製造に携わる企業では、製品を販売する前に、信頼性、安全性、操作性が問題ないかど うかを厳重に確認して、製品をより良いもの = 品質の高い製品を提供しなければならな い。そのためには、評価テストという作業が必要となる。 ここでいう評価テストとは、コンピュータのプログラムを実行し、正しく動作するかど うか確認する作業のことである。 評価テストの目的は、プログラム中の欠陥(バグ)をできる限り多く発見することであ る。あらゆる視点でテストを行い、発見されたバグを早期に修正することによって、最終 的に、誰の目から見ても品質の高い製品であることを証明することができる。 そのためには、開発者、販売者、ユーザそれぞれの視点からテストを行う必要がある。 ただし、ただやみくもに、たくさんテストをするだけでは、品質が良いものとは評価さ れにくい。評価には、一定の評価基準が必要である。開発分野では、その基準を評価指標 と呼んでいる。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 96 – 企業提案型プロジェクト学習実践教材 11.2. 品質管理 製品の品質を確保するためには、評価テストがしっかり行われているかを管理しなけれ ばならない。どのような観点でテストを管理するかを以下に記す。 11.2.1. テストの種類 テストは大きく分けて、段階的に単体テスト、結合テスト、システムテストがある。 単体テスト・・・プログラムの構造単位(命令、分岐、反復)で確認する。 結合テスト・・・複数の部品を組み合わせで初めて実現できる動作の確認をする。 システムテスト・・・目的の機能(モデル図に記載)や性能が実現しているかを確認する。 単体テストはテストケース数が多く、結合テスト、システムテストと、段階を踏むごと にテストケース数は少なくなる。プログラム作成は 1 段階で済むが、テストは複数段階あ るため、テスト作業はプログラム作成より時間がかかる。しかし、段階的にテストを行わ ないと、バグを残すことになり最終的には品質が保てなくなる。 図 11-1 テストの段階イメージ ※テストケースとは、テストを行うために、あらゆる場合を想定して作成された、テスト の項目や条件のこと。前提条件、操作、それによって起こる結果が記載されている。 - 97 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 11.2.2. テストケース 一般的に開発会社で行っている基本的なテストケースは、次の通りである。 1)正常系(基本動作にかかわる項目) 予期された値でテストすること。 2)異常系(安全にかかわる項目) 予期しない値でテストすること。 3)限界(性能にかかわる項目) 限界を超えた値でテストすること。 4)境界(性能にかかわる項目) 有効範囲、無効範囲を決めて、その境界の値でテストすること。 11.2.3. 品質 開発会社で制作した製品の品質を高くするものとして次の指標がある。 1)テスト目標件数/実績件数 目標件数は、過去に行った各種製品のテストの実績より算出する。 また、実績件数は、テスト項目を消化した件数を示す。 2)テスト密度 プログラムステップ当たりのテスト件数を示す。 3)バグ摘出目標件数/実績件数 バグ摘出目標件数は、過去に行った各種製品のテストの実績より算出する。 また、実績件数は、現在のプログラムの摘出されたバグを示す。 4)バグ摘出達成率 実績件数÷目標件数で、品質の指標とする。 1.0 を超える場合、バグ摘出をやり込んだ感はあるが、逆にバグが残っている可能性 もある。1.0 を下回った場合、本当に妥当なテストを行ったか疑問であるが、逆にバ グが少ない可能性もある。 ※プログラムステップとは、プログラムファイルの 1 行=1 ステップ という単位 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 98 – 企業提案型プロジェクト学習実践教材 11.2.4. バグ分析 1)バグの内容 テスト通りの動きでない場合、その動きをバグ票の現象へ記述する。 2)バグの傾向 異常系なのか、境界、限界系なのかをバグの摘出状況から把握する。 11.2.5. 品質向上対策 テスト実施の内容(バグ分析)から弱点を見つけ、その弱点をカバーするテスト項目を 立ててテストを実施する。この対策をすることで更に品質が向上する。 11.2.6. 再テスト 組み込み製品を開発している会社には、製品を出荷するまでに品質を判定する機関があ る。その機関で製品の品質に対して一定の基準を満たして無い場合は不合格となり、シス テムの見直しを行う。見直したシステムをもとにテスト項目を立てて、再テストを行う。 再テストには内容的に大きく分けて次の 2 種類ある。 1)プログラムの不備 正常系が多く、異常系、境界、限界が少ない場合は、これにあたる。また、当初の 仕様通りでなかったなど、操作性が極端に悪い場合も同様である。この場合は、大 きなプログラムの変更が発生し、一からテスト項目を作成し直す必要がある。 2)テスト不足 プログラムには必ず、異常系、境界、限界が組み込まれており、そのテストが実際 に行われてない場合は、これにあたる。この場合は、新たに異常系、境界、限界の 項目を立てる。 - 99 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 11.3. テストの重要性 テストは物作りで必要不可欠であり、仕様通りに動作し、安全でなければならない。特 に組み込み系(ファームウェア)のプログラムは、業務系(ソフトウェア)のプログラム より多くのテストを行う。それは、組み込み系の場合は、あらかじめプログラムを製品上 のフラッシュ ROM に書き込みをして出荷するため、出荷後にバグが発覚した場合、簡単に 改修することができないためである。一方、業務系の場合は、プログラムを修正して修正 した実行形式を媒体(CD、DVD、USB メモリ等)または通信を使って置き換えるだけでよい。 実社会でテストを十分に行わなかった状態で製品を出荷して、バグが発覚した場合に考 えられることは次の通り。 1)社会への影響度 2)損失 3)ユーザへの迷惑 ※ファームウェアとは機器に組み込まれたシステムを制御するためのソフトウェアで、 特殊な機器でフラッシュ ROM 等に書き込んだもの。 例:BIOS(PC に組み込まれている) 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 100 – 企業提案型プロジェクト学習実践教材 11.3.1. 社会への影響度 組み込み系のプログラムは、機械を直接制御するものが多く、人命にかかわる物もある。 従って、出荷後にバグがあってはならない。バグによる事故が起きた場合、その製品を製 造した会社は社会的に信用を無くすことになる。 また、その製品の改修や損害が出た場合には、多くの関係者に損害賠償もしなければな らない。損害の大きさによっては、会社の存続にもかかわってくる。 このことから、個々が最善の注意を払い、出荷後のバグを出さないようにするためには、 テストを厳重に行い、出荷前にバグを多く発見することが大事となる。 (事例1)車のリコール [ 現象 ] 滑りやすい路面でブレーキを踏んだ際にブレーキが瞬間的に利かなくなる。 [ 原因 ] ブレーキを電子制御するシステムの不具合。 [ 対象台数 ] 数 10 万台。 [ 被害額 ] 約 20 億円 株価 10 数%ダウン (事例2)証券取引所の株式売買システムの障害による市場の大混乱 [ 現象 ] 発注ミスにより、1 株 61 万円で売り出すところ、1 株 1 円で 61 万株売り出してしまっ たが、発注ミスの取り消しができなかった。 [ 原因 ] 入力の限界値チェック漏れ ミスの取り消しが出来ない仕様不具合 [ 被害額 ] 約 300 億円 - 101 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 11.3.2. 損失 組み込み系での障害が発覚した場合の損失は、業務系に比べて手間がかかり、損失が大 きい。組み込み系と業務系の比較は次の通り。 組み込み系 障害調査 フェールセーフの再検討 障害箇所修正(バグ修正) 修正箇所のテスト 障害箇所に関連する処理の再テスト(デグレードチェック) テスト機に搭載してのテスト 修正したプログラムの配布方法(通常の方法ではプログラムの置換えができない) 修正対象の実機のプログラム置換 実機のテスト(項目を絞ったテストでユーザに渡す前に行う) 業務系 障害調査 修正箇所修正(バグ修正) 修正箇所のテスト 障害箇所に関連する処理の再テスト(デグレードチェック) 対象 PC のプログラム置換 対象 PC でのテスト(項目を絞ったテスト) ※フェールセーフとは障害が発生した場合、常に安全側に制御すること。 ※テスト機とは、製品に近いプロトタイプや実際に障害を起こした同じ製品のこと ※実機とは、ユーザが使用している製品のこと 11.3.3. ユーザへの迷惑 一度障害が発生すると、製造者はユーザに対し、安全のため製品使用を中止させる必要 がある。それにより、ユーザがその製品を使用できず、生活に支障が発生することもある。 また、修理のために製造者へ製品を返却しなければならない。製品を返却したユーザは、 修理が完了するまで待たされ、よけい時間が取られてしまう。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 102 – 企業提案型プロジェクト学習実践教材 11.4. テストの実施 ログ出力及び、デバッグ、目視確認によって、テストを取り行う。テストを実施してバ グを発見した場合は、バグ票に記録して管理する。 (一般的なテストの流れ) 前工程より チェックリスト作成 テスト項目消化 No テスト項目未消化 Yes No バグ発見 Yes バグ票記録(管理) バグ票記録完了 担当者報告 次の工程へ バグ修正完了 図 11-2 一般的なテストの流れ テストより発見されたバグは、プログラムを作成した担当者へ報告する。担当者はバグ 票の現象より原因を見つけだし、対策方法を考えプログラムを修正する。この時、安易に 修正を施すのではなく、他の処理に影響がないかをチェックする。 - 103 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 チェックする項目は次の通り。 1)他の処理で同じことを行っていないか? 2)他の処理でその変数等を参照していないか? 3)判定の場合、その判定は想定範囲以内であるか? 修正をするときに、上記 3 点を怠るとデグレードを招き、新たにバグを作り込んでしま う可能性が高いので、修正には特に注意する。 ※デグレードとは、修正前に動いた処理が修正により動かなくなること (一般的なバグの調査・修正) 担当者報告より バグ調査 プログラム修正 テスト(修正箇所) エビデンス作成 (必要であれば) バグ修正完了 図 11-3 一般的なバグの調査・修正 修正担当者は、バグの修正が完了したらテスト担当者へ修正報告と再テストの要請をす る。テスト担当者が修正を確認することで OK となる。 ※エビデンスとは証拠という意味であり、修正した内容でプログラムが仕様通りに動い ていることを示す。エビデンスには、ログによる処理の確認と画面コピーによる処理の 確認等がある。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 104 – 企業提案型プロジェクト学習実践教材 11.5. バグ修正 テストを行った際にバグを発見した場合は、バグ表(B 票)記入を行い。プログラムの 修正を行う。 11.5.1. バグ票(B 票)記入 一般的には、バグ票(B 票)記入には、以下のように担当者ごとに分かれている。 記入項目 記入者 現象・発生方法 発見者(テスト担当、プログラム担当、外部の人等) 原因・調査 プログラム作成者(場合によっては仕様作成者) 修正・対処方法 プログラム作成者 確認者・確認日 発見者(テスト担当、プログラム担当等) 11.5.2. プログラム修正 プログラム修正の修正箇所にコメントを追記する。コメントについては、色々と書き方 があるが、修正内容が分かる内容で記載することが重要である。 修正箇所の記述方法 形式: プログラム行 修正 // 修正 YYYY.MM.DD 障害番号 ADD 追加を表す CHG 変更を表す DEL プログラムの痕跡を残す場合に使い、削除対象の行の先頭に コメントの識別”//”を記述して、ADD、DEL と同じように行 の最後に DEL を記述する 修正日付 修正した日付を記述する 障害番号 B 票の障害番号を記述する 例)プログラム行 // ADD 2012.11.11 ST0001 - 105 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 11.6. テスト仕様書 「10. 実践プログラム(LED 編) 」で作成したプログラムのテスト仕様書を作成する。 11.6.1. テスト仕様書 LEDⅠ 1. CD-ROM ドライブから、 “教材\テスト仕様書”フォルダを開き、 “記入用_LED 処理Ⅰ_テ スト仕様書.xls”を“自動車教材”フォルダにコピーする。 2. コピーしたファイルをダブルクリックし、ファイルを開く。 3. Excel シートの“PCL”をクリックする。 4. テスト内容と結果より、判定と確認日を記載する。 5. Excel シートの“SCL”をクリックする。 6. テスト内容と結果より、判定と確認日を記載する。 7. Excel シートの“バグ票”をクリック、フォーマットを確認する。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 106 – 企業提案型プロジェクト学習実践教材 11.6.2. テスト仕様書 LEDⅡ 1. CD-ROM ドライブから、 “教材\テスト仕様書”フォルダを開き、 “記入用_LED 処理Ⅱ_テ スト仕様書.xls”を“自動車教材”フォルダにコピーする。 2. コピーしたファイルをダブルクリックし、ファイルを開く。 3. Excel シートの“PCL”をクリックする。 4. テスト内容と結果より、判定と確認日を記載する。 5. Excel シートの“SCL”をクリックする。 6. テスト内容と結果より、判定と確認日を記載する。 7. Excel シートの“バグ票”をクリック、フォーマットを確認する。 - 107 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 12. 実践プログラム(ミニカー編) 12.1. ミニカー操作Ⅱ 9 章の 9.3.データの伝送方法で説明した内容とリモコン通信仕様を確認しながら、赤外 線送信プログラムの作成を行う。 12.1.1. 仕様 ・電源を入れると前進するプログラムを作成する。 ・赤外線送信の関数を作成する。 関数名:ir_send() 引数:バンド番号, 送信データ 処理内容: 「12.1.2.赤外線送信の考え方」を参照する。 [作業] ・詳細説明書のフローチャート図を作成し、プログラムを作成する。 ・プログラム作成後に動作確認を行う。 12.1.2. 赤外線送信の考え方 「付録 A. リモコン通信仕様」と「付録 B. 関数仕様」を参照し、下記内容を確認する。 ・データビット(送信命令)の内容を確認する。 ・バンド詳細を確認する。 ・動作詳細を確認する。今回は前進命令を確認する。 ・赤外線を送出する方法(関数)を考える ・開始合図の ON 時間を確認する。 ・ビット 0 送信の OFF 時間、ON 時間を確認する。 ・ビット 1 送信の OFF 時間、ON 時間を確認する。 ・2 回データを送る際の送信間隔を確認する。(バンドにより異なる) 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 108 – 企業提案型プロジェクト学習実践教材 12.1.3. プログラムの作成 下記のプログラムを映しながら空白の部分を穴埋め(1~15)して、プログラムを完成さ せる。プログラムを前半・後半と分けて記載している。 -- ミニカー操作Ⅱ プログラム(メイン) (前半) -- - 109 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 -- ミニカー操作Ⅱ プログラム(赤外線送信関数) (後半) -- 12.1.4. 解説とヒント ①0b(45 行目) 0b を付けると数値を 2 進数で表記する。 送信するデータが 2 進数で表現されているため理解しやすい。2 進数とは、2 で桁が上 がる数の表現方法であり、必然的に 0 と 1 で表現される機械語である。 ②ビットシフト(71 行目) ビットシフトとは、2 進数で表現した場合の値で桁を横に移動させる操作となる。 ( 「8.1.2.2.シフト演算プログラムと説明」参照) 例えば 20 を 2 進数で表現すると 10100 である。 これに << や >> で 2 ビットシフトすると、右の場合なら 101 となり、左の場合なら 1010000 となる。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 110 – 企業提案型プロジェクト学習実践教材 ③AND や OR(72,82 行目) 2 進数で表現した場合の各ビットを、右揃えで比較する。 AND(&)の場合は両方とも 1 の場合のみ 1 となり、それ以外は 0 となる。 OR(|)の場合はどちらか 1 の場合 1 となり、両方とも 0 の場合のみ 0 となる。 例えば 10 進数の 10 と 20 の値で OR や AND を行うと以下のようになる。 値1 値2 OR 結果 AND 結果 2 進数 01010 10100 11110 00000 10 進数 10 20 30 0 - 111 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 12.1.5. フローチャート図 -- ミニカー操作Ⅱ 処理フロー(メイン)-- 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 112 – 企業提案型プロジェクト学習実践教材 -- ミニカー操作Ⅱ 処理フロー(赤外線送信関数)-- - 113 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 12.1.6. プログラムの確認 -- ミニカー操作Ⅱ プログラム(メイン) (前半) -- 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 114 – 企業提案型プロジェクト学習実践教材 -- ミニカー操作Ⅱ プログラム(赤外線送信関数) (後半) -- (1) 配列宣言(21-22 行目) ・バンドに対するバンドデータを宣言する。 (2) 配列宣言(24-25 行目) ・バンドに対する送信間隔を宣言する。 (3) 変数の代入(27-28 行目) ・バンド番号を設定する。バンド 1 ならば、0、バンド 2 ならば、1 を代入する。 (4) 赤外線送信関数(ir_send)の呼び出し(46-47 行目) ・赤外線を送信する。引数に、バンド番号,送信データを渡す。 (5) 待ち処理関数(WAITE_MS)の呼び出し(49-50 行目) ・1 回目の送信後の時間停止をする。引数に、時間を渡す。 - 115 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 (6) 赤外線送信関数(ir_send)の呼び出し(52-53 行目) ・赤外線を送信する。引数に、バンド番号,送信データを渡す。 (7) 待ち処理関数(WAITE_MS)の呼び出し(55-57 行目) ・2 回目の送信後の時間停止をする。引数に、時間を渡す。 (8) ビットシフトの処理(73 行目) ・バンドデータ(引数)を 4 ビット左にシフトする。 (9) 送信データの作成(74 行目) ・バンドデータと動作データ(引数)を OR する。 (10) 赤外線 LED の点滅関数(IR_PULSE)の呼び出し(78 行目) ・赤外線 LED を点灯する。引数に、開始合図の ON 時間を渡す。 (11) 待ち処理関数(WAITE_10US)の呼び出し(87 行目) ・赤外線 LED を消灯する。引数に、ビット 1 の OFF 時間を渡す。 (12) 赤外線 LED の点滅関数(IR_PULSE)の呼び出し(88 行目) ・赤外線 LED を点滅する。引数に、ビット 1 の ON 時間を渡す。 (13) 待ち処理関数(WAITE_10US)の呼び出し(92 行目) ・赤外線 LED を消灯する。引数に、ビット 0 の OFF 時間を渡す。 (14) 赤外線 LED の点滅関数(IR_PULSE)の呼び出し(93 行目) ・赤外線 LED を点滅する。引数に、ビット 0 の ON 時間を渡す。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 116 – 企業提案型プロジェクト学習実践教材 12.2. ミニカー操作Ⅲ スイッチ入力で前進するプログラムを作成する。 12.2.1. 仕様 ・赤外線コントローラの前進スイッチが押された場合に前進する。 ・ボタンが離された際に、停止信号を送る。 前進スイッチが押された場合は変数に 3 をセットし、繰り返し処理で変数が 0 となっ た場合に停止信号を送る。 スイッチが押されていない場合も停止信号を送る。 [作業] ・詳細説明書のフローチャート図を作成し、プログラムを作成する。 ・プログラム作成後に動作確認を行う。 - 117 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 12.2.2. フローチャート図の確認 -- ミニカー操作Ⅲ 処理フロー(メイン) -- -- ミニカー操作Ⅲ フローチャート図 (赤外線送信関数)-・ 「ミニカー操作Ⅱ フ処理フロー(赤外線送信関数)」を参照。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 118 – 企業提案型プロジェクト学習実践教材 12.2.3. プログラムの確認 -- ミニカー操作Ⅲ プログラム(メイン) -- (1) (2) (3) (4) (5) (1) 変数宣言(36-37 行目) ・停止フラグの変数を宣言する。 (2) スイッチ状態関数(SW_INPUT)の呼び出し(46-47 行目) ・スイッチの状態を取得する。 - 119 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 (6) 企業提案型プロジェクト学習実践教材 (3) 変数の代入(51-52 行目) ・停止フラグに 3 を代入する。 (4) 直進スイッチの確認(49-69 行目) ・if 文を記載し直進スイッチの状態を判断する。 ON している場合は、直進データを転送する。 (5) 赤外線送信関数(ir_send)の呼び出し(77-78 行目) ・停止信号を送信する。引数に、バンド番号,停止データ(0b1111)を渡す。 (6) 変数の確認(71-82 行目) ・停止フラグの代入値を確認し、0 以上の場合は変数を-1 する。 停止フラグが 0 の場合は、停止信号を送信する。 -- ミニカー操作Ⅲ プログラム(赤外線送信関数) -- 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 120 – 企業提案型プロジェクト学習実践教材 12.3. ミニカー操作Ⅳ ステアリング操作で動作するプログラムを作成する。 12.3.1. 仕様 ・ 「5.3.ミニカー操作Ⅰ」の仕様を参照する。 ・ボタンが離された際に、停止信号を送る。 ・バンド番号の変数と停止フラグの変数を外部変数とする。 ・実際の走行パターンを考えスマートなプログラムを作成する。 [走行パターン表] 左前 前進 右前 左 停止 右 左後 後進 右後 ・今までの学習を元に、プログラムの関数化処理を行う。 [作業] ・詳細説明書のフローチャート図を作成し、プログラムを作成する。 ・プログラム作成後に動作確認を行う。 12.3.2. 走行パターン表の数字化 今回の学習でポイントとなるのは、同時押しの処理を考えることである。 上記の走行パターン表を数字化することで同時押し処理をスムーズ行える。 スイッチが押された際に決められた数字をプラスし、その数字により動作を決定する。 SW1 が押された場合は、+1。SW2 の場合は、+2。SW3 の場合は、+4。SW4 の場合は、+8。 と決めた場合、上記の走行パターン表が下記の表となる。 [走行パターン表(数字化)] 3 2 6 1 0 4 9 8 12 - 121 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 12.3.3. フローチャート図の確認 -- ミニカー操作Ⅳ 処理フロー(メイン) -- 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 122 – 企業提案型プロジェクト学習実践教材 -- ミニカー操作Ⅳ 処理フロー(動作決定処理関数) -- - 123 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 -- ミニカー操作Ⅳ 処理フロー(信号送信関数) -- -- ミニカー操作Ⅳ 処理フロー(赤外線送信関数) -- 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 124 – 企業提案型プロジェクト学習実践教材 12.3.4. プログラムの確認 -- ミニカー操作Ⅳ プログラム(宣言) -- (1) (2) (3) (4) (5) (1) 関数宣言(15-16 行目) ・赤外線送信関数を宣言する。 (2) 関数宣言(18-19 行目) ・信号送信関数を宣言する。 (3) 関数宣言(21-22 行目) ・動作決定処理関数を宣言する。 (4) 変数宣言(25-26 行目) ・バンドの変数を宣言する。 バンド 1 の場合は、0 を設定し、バンド 2 の場合は、1 を設定する。 信号送信関数で設定する配列に関連している。 (5) 変数宣言(28-29 行目) ・停止フラグの変数を宣言する。 - 125 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 -- ミニカー操作Ⅳ プログラム(メイン) -- (6) (7) (8) (9) (6) 変数宣言(35-36 行目) ・スイッチ信号の変数を宣言する。 (7) 変数の初期化(44-45 行目) ・スイッチ信号の変数を初期化する。 (8) スイッチ信号の登録(50-66 行目) ・押されたスイッチを判断し、スイッチ信号の変数にスイッチ番号をプラスする。 (9) 動作決定処理関数(select_move)の呼び出し(68-69 行目) ・動作決定を行う。引数に、スイッチ信号変数を渡す。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 126 – 企業提案型プロジェクト学習実践教材 -- ミニカー操作Ⅳ プログラム(赤外線送信関数) -- - 127 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 -- ミニカー操作Ⅳ プログラム(信号送信関数) -- (9) (10) (11) ) (12) (9) 配列宣言(110-114 行目) ・バンドに対するバンドデータを宣言する。 ・バンドに対する送信間隔を宣言する。 (10) 赤外線送信関数(ir_send)の呼び出し(119-120 行目) ・赤外線を送信する。引数に、バンド番号,送信データを渡す。 (11) 待ち処理関数(WAITE_MS)の呼び出し(122-123 行目) ・1 回目の送信後の時間停止をする。引数に、時間を渡す。 (12) 待ち処理関数(WAITE_MS)の呼び出し(128-130 行目) ・2 回目の送信後の時間停止をする。引数に、時間を渡す。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 128 – 企業提案型プロジェクト学習実践教材 -- ミニカー操作Ⅳ プログラム(動作決定処理関数) -- (13) (14) (15) (16) - 129 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 (13) 送信データの決定(137-193 行目) ・受け取った引数により送信データを決定する。 (14) 信号送信関数(sign_send)の呼び出し(141,146,…行目) ・赤外線を送信する。引数に、送信データを渡す。 (15) 変数の代入(142,147,…行目) ・停止信号フラグの変数に 3 を代入する。 (16) 選択処理を抜ける(143,148,…行目) ・選択処理を抜けるための break を記載する。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 130 – 企業提案型プロジェクト学習実践教材 12.4. ミニカー操作Ⅴ バンド切り替えのプログラムを作成する。 12.4.1. 仕様 ・ 「12.3.ミニカー操作Ⅴ」にバンド切り替えのプログラムを追記する。 ・SW5 と SW1 の同時押しで、バンド 1 に切り替え、LED5 を点灯する。 ・SW5 と SW3 の同時押しで、バンド 2 に切り替え、LED6 を点灯する。 ・SW5 が押された場合は、+16。SW6 の場合は、+32 とする。 ・バンドの切り替え後に 1 秒待ち時間を入れる。 [作業] ・詳細説明書のフローチャート図を作成し、プログラムを作成する。 ・プログラム作成後に動作確認を行う。 - 131 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 12.4.2. フローチャート図の確認 -- ミニカー操作Ⅴ 処理フロー(メイン) -- 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 132 – 企業提案型プロジェクト学習実践教材 -- ミニカー操作Ⅴ 処理フロー(動作決定処理関数) -- - 133 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 -- ミニカー操作Ⅴ 処理フロー(信号送信関数) -- -- ミニカー操作Ⅴ 処理フロー(赤外線送信関数) -- 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 134 – 企業提案型プロジェクト学習実践教材 -- ミニカー操作Ⅴ 処理フロー(赤外線送信関数) -- - 135 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 12.4.3. プログラムの確認 -- ミニカー操作Ⅴ プログラム(宣言) -- (1) (1) 関数宣言(24-25 行目) ・バンドの LED 処理の関数を宣言する。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 136 – 企業提案型プロジェクト学習実践教材 -- ミニカー操作Ⅴ プログラム(メイン) -- (2) (3) (2) バンド LED 関数(led_band)の呼び出し(44-45 行目) ・バンド番号より LED 処理の点灯、点滅を行う。 (3) スイッチ信号の登録(73-80 行目) ・押されたスイッチを判断し、スイッチ信号の変数にスイッチ番号をプラスする。 - 137 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 -- ミニカー操作Ⅴ プログラム(赤外線送信関数) -- -- ミニカー操作Ⅴ プログラム(信号送信関数) 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 138 – -- 企業提案型プロジェクト学習実践教材 -- ミニカー操作Ⅴ プログラム(動作決定処理関数) -- (4) (5) (6) ) (4) 変数の代入(195-196,204-205 行目) ・バンド番号を設定する。バンド 1 ならば、0、バンド 2 ならば、1 を代入する。 (5) バンド LED 関数の呼び出し(197-198,206-207 行目) ・バンド番号より LED 処理の点灯、点滅を行う。 (6) 待ち処理関数(WAITE_MS)の呼び出し(199-200,208-209 行目) ・時間停止を行う。引数に、時間を渡す。 - 139 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 -- ミニカー操作Ⅴ プログラム(バンド切り替え LED 処理関数) -- (8) (9) (7) (7) LED 処理の決定(231-247 行目) ・バンド番号より LED 処理を決定する。 (8) LED 処理関数(LED)の呼び出し(236-237 行目) ・LED5 を点灯する。引数に、ON,5 を渡す。 ・LED6 を消灯する。引数に、OFF,6 を渡す。 (9) LED 処理関数(LED)の呼び出し(241-242 行目) ・LED5 を消灯する。引数に、OFF,5 を渡す。 ・LED6 を点灯する。引数に、ON,6 を渡す。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 140 – 企業提案型プロジェクト学習実践教材 12.5. ミニカー操作Ⅵ 自動走行機能を作成する。 12.5.1. 仕様 ・SW6 と SW1 を押した場合に、自動走行させる。 SW6 の同時押しにより複数のパターンを作成する。 ・自動で走行する仕様(ステップ)は各自で考える。 例えば、前進 → 右前進 → 前進 → 左前進 ・走行するステップに合わせて LED を点灯させる。 [作業] ・詳細説明書のフローチャート図を作成し、プログラムを作成する。 ・プログラム作成後に動作確認を行う。 - 141 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 12.5.2. プログラムの確認 -- ミニカー操作Ⅵ プログラム(宣言) -- (1) (2) (1) 関数宣言(27-28 行目) ・自動走行処理の関数を宣言する。 (2) 関数宣言(30-31 行目) ・繰り返し送信処理の関数を宣言する。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 142 – 企業提案型プロジェクト学習実践教材 -- ミニカー操作Ⅵ プログラム(動作決定処理関数) -- (3) (3) 自動走行関数(auto_run)の呼び出し(221-222,229-230 行目) ・自動走行処理を行う。引数に、処理番号を渡す。 - 143 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 -- ミニカー操作Ⅵ プログラム(自動走行処理関数) -- (4) (5) (6) (7) (8) (9) 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 144 – 企業提案型プロジェクト学習実践教材 (4) 送信繰り返し関数(send_loop)の呼び出し(284,288,292,296 行目) ・送信データを繰り返し処理する。引数に、繰り返し回数,送信データを渡す。 (5) 送信繰り返しの自動走行処理(282-296 行目) ・送信繰り返し関数に動作データを渡し、自動走行処理を行う。 ステップにより LED を順番に点灯する。 (6) 送信処理と時間停止の処理(303-304,308-309,313-314,318-319 行目) ・動作データを送信し、動作させる時間を設定する。 (7) 送信繰り返しの自動走行処理(301-319 行目) ・送信繰り返し関数に動作データを渡し、自動走行処理を行う。 ステップにより LED を順番に点灯する。 (8) LED 処理関数(LED)の呼び出し(327-328 行目) ・全 LED を消灯する。引数に、OFF,ALL を渡す。 (9) バンド LED 関数の呼び出し(330-331 行目) ・バンド番号より LED 処理の点灯、点滅を行う。 -- ミニカー操作Ⅵ プログラム(送信繰り返し処理関数) -- (11) (10) (10) 信号送信関数(sign_send)の呼び出し(343 行目) ・赤外線を送信する。引数に、送信データを渡す。 (11) 繰り返処理(340-344 行目) for 文に変数の初期値と繰り返す条件をセットする。 - 145 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 13. 講習後のテスト 下記の説明文の空白部分を回答欄に記入せよ。 1.組み込みプログラムについて 自動車や身近な電化製品(冷蔵庫、掃除機)などの制御を行うためにコンピュータが入 っている。このコンピュータは、"マイコン"と呼ばれる。 このマイコンを動かすためのプログラムを「①」プログラムと呼ぶ。 2.設計について 設計とは、製品・システム・アプリを造る際に必要となる工程の一つである。設計には いくつかの種類があるが、大きく「②」設計書と「③」設計書の2種類に分けられる。 「②」設計書は、顧客や外部システム担当者と調整しながらシステムの全体像がつかめ るような内容を決める。 「③」設計書は、システムの各機能をより詳細化し、どのような処理を行ってプログラ ムを動作させるかを決める。 3.設計書の必要性について 設計書は、顧客が要望している内容を「④」しているかを判断する基準となり、作業を 行う場合の「⑤」となる。 また、複数人で「⑥」を行う場合に仕様を統一するために必要となる。 設計書を作成しておくことで、 「⑦」型のものを造るときに手間を減らすことになる。 4.製品の品質 製造に携わる企業では、製品を販売する前に、信頼性、「⑧」性、「⑨」性が問題ないか どうかを厳重に確認して、より良い品質の製品を提供しなければならない。 そのためには、評価テストという作業が必要となる。 信頼性・・・製品の故障が起こりにくいこと 「⑧」性・・・製品を扱うことによって生じる事故や、けがなどの被害が少ないこと 「⑨」性・・・製品の使いやすさ 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 146 – 企業提案型プロジェクト学習実践教材 5.評価テスト 評価テストの目的は、プログラム中の「⑩」をできる限り多く発見することである。 あらゆる視点でテストを行い、発見された「⑩」を早期に修正することによって、最終 的に誰の目から見ても品質の高い製品であることが証明することができる。 そのためには、開発者、販売者、ユーザそれぞれの視点からテストを行う必要があり、 品質の良い評価を得るには、一定の評価基準が必要である。 開発分野では、その基準を「⑪」と呼んでいる。 テストは大きく分けて、段階的に「⑫」テスト、「⑬」テスト、システムテストがある。 「⑫」テスト・・・プログラムの構造単位(命令、分岐、反復)で確認する。 「⑬」テスト・・・複数の部品を組み合わせて初めて実現できる動作を確認する。 システムテスト・・・目的の機能や性能が実現しているかを確認する。 6.テストの重要性 テストは物作りで必要不可欠であり、仕様通りに動作し、安全でなければならない。 特に「⑭」系のプログラムは、業務系のプログラムより多くのテストを行う。 実社会でテストを十分に行わなかった状態で製品を出荷して、バグが発覚した場合考え られること。 1) 「⑮」への影響度 2)損失 3) 「⑯」への迷惑 - 147 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 下記のプログラムの空白行を教材の「付録 A. リモコン通信仕様」と「付録 B. 関数仕様」 を参照し回答欄に記入せよ。 [仕様] ・電源を入れると前進するプログラムを作成する。 (バンドは 1 とする) ・赤外線送信の関数を作成する。 関数名:ir_send()、引数:バンド番号, 送信データ 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 148 – 企業提案型プロジェクト学習実践教材 - 149 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 150 – 企業提案型プロジェクト学習実践教材 付録 A. リモコン通信仕様 今回使用するラジコンの、リモコン通信(赤外線通信)の方法に関する仕様である。 名称 仕様 赤外線周波数 38000Hz デューティー比 50% (1 周期のうち ON 状態である時間の 割合) データビット(通常) 5 ビット(上位 1 ビット:バンド 下位 4 ビット:動作) データビット(アイテム使用時) 8 ビット(上位 1 ビット:バンド 中位 4 ビット:動作 下位 3 ビット:アイテム) バンド詳細 バンド 1:0 動作詳細(通常) 前進 :0001 左前 :0110 後進 :0010 右前 :0111 左折 :0011 左後 :1010 右折 :0100 右後 :1011 動作詳細(アイテム使用時) バンド 2:1 停止:1111 ミドリこうら :001 サンダー :100 バナナ :010 スーバースター :101 ダッシュキノコ :011 開始合図 ON時間 :1780 マイクロ秒 ビット0 OFF時間:450 マイクロ秒 ON時間 :450 マイクロ秒 ビット1 OFF時間:450 マイクロ秒 ON時間 :880 マイクロ秒 送信間隔 ※注:バンドによって1回目と2回目の間の間隔が異なる。 1 回目 バンド 1:13 ミリ秒 バンド 2:39 ミリ秒 2 回目 (100 ミリ秒– 1回目の送信間隔 – 20 ミリ秒) - 151 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 付録 B. 関数仕様 今回使用する関数の仕様である。 関数名 戻り値 引数1 引数2 内容 PIC_INIT なし なし なし PIC の初期化 LED なし ON 又は OFF ALL 又は 1~6 LED の点灯・消灯を行う。 引数1:ON = 点灯、OFF = 消灯 引数2:ALL = 全ての LED 数字 = LED の番号 WAIT_MS なし UC 型* なし 引数ミリ秒処理を待つ。 例) WAIT_MS(1000) 1000 ミリ秒 = 1 秒待つ WAIT_10US なし UC 型* なし 引数×10 マイクロ秒処理を待つ。 但し、下限は 20 マイクロ秒となる。 例) WAIT_10US(100) 1000 マイクロ秒 = 1 ミリ秒待つ SW_INPUT なし なし なし SW1~SW6 にスイッチの状態を取り込む。 各 SW が ON と等しいなら押されている状態。 それ以外なら離されている状態となる。 IR_PULSE なし UC 型* なし 引数×10 マイクロ秒赤外線 LED の点滅を行う。 点滅する間隔はマイクロ秒単位で指定できる。 ROM_READ UC 型* UC 型* なし 引数のアドレスから 1 バイトデータを読み出す。 読み出したデータが戻り値となります。 *UC 型:unsigned char 型の略。変数の型の一種で、0~255 までの数を扱える。 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 152 – 企業提案型プロジェクト学習実践教材 付録 C. CD-ROM 構成 添付 CD-ROM の“教材”のディレクトリ構成を以下に示す。 ディレクトリ ファイル 内容 README.txt 注意事項など PICCLITE.exe PICC LITE(コンパイラ) HI-TIDE.exe HI-TIDE(開発環境) 日本語化.bat HI-TIDE 用の日本語化バッチ ICProg(フォルダ) IC-Prog(PIC ライター) RC(フォルダ) プログラム MPLAB バージョン違い(フォルダ) MPLAB の開発環境違い用 部品表・配置図 赤外線コントローラ_部品表・配置図.xls 赤外線コントローラ部品表・配置図 配線図・回路図 赤外線コントローラ_配線図・回路図.xls 赤外線コントローラ配線図・回路図 設計書 記入用_LED 処理Ⅰ_基本設計書.xls LED 処理Ⅰの基本設計書 記入用_LED 処理Ⅰ_詳細設計書.xls LED 処理Ⅰの詳細設計書 記入用_LED 処理Ⅱ_詳細設計書.xls LED 処理Ⅱの詳細設計書 記入用_ミニカー操作Ⅰ_基本設計書.xls ミニカー操作Ⅰの基本設計書 記入用_ミニカー操作Ⅰ_詳細設計書.xls ミニカー操作Ⅰの詳細設計書 記入用_ミニカー操作Ⅱ_詳細設計書.xls ミニカー操作Ⅱの詳細設計書 記入用_ミニカー操作Ⅲ_詳細設計書.xls ミニカー操作Ⅲの詳細設計書 記入用_ミニカー操作Ⅳ_詳細設計書.xls ミニカー操作Ⅳの詳細設計書 記入用_ミニカー操作Ⅴ_詳細設計書.xls ミニカー操作Ⅴの詳細設計書 記入用_LED 処理Ⅰ_テスト仕様書.xls LED 処理Ⅰのテスト仕様書 記入用_LED 処理Ⅱ_テスト仕様書.xls LED 処理Ⅱのテスト仕様書 LED 処理Ⅰ(フォルダ) LED 処理Ⅰの参考資料 LED 処理Ⅱ(Type1)(フォルダ) LED 処理Ⅱ(Type1)の参考資料 LED 処理Ⅱ(Type2)(フォルダ) LED 処理Ⅱ(Type2)の参考資料 ミニカー操作Ⅰ(フォルダ) ミニカー操作Ⅰの参考資料 ミニカー操作Ⅱ(フォルダ) ミニカー操作Ⅱの参考資料 ミニカー操作Ⅲ(フォルダ) ミニカー操作Ⅲの参考資料 ミニカー操作Ⅳ(フォルダ) ミニカー操作Ⅳの参考資料 ミニカー操作Ⅴ(フォルダ) ミニカー操作Ⅴの参考資料 ミニカー操作Ⅵ(フォルダ) ミニカー操作Ⅵの参考資料 講習後のテスト.xls 講習後のテスト問題と回答 Install PC_Program テスト仕様書 資料 講習後のテスト - 153 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 付録 D. 講習後のテスト回答 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 - 154 – 企業提案型プロジェクト学習実践教材 チョロQ、チョロQハイブリッドは、タカラトミーの登録商標です。 その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。 - 155 - 自動車組込み分野の中核的専門人材養成のための 実践的教育プログラムの開発と実証 平成 24 年度文部科学省委託 「成長分野等における中核的専門人材養成の戦略的推進事業」 自動車組込み分野の中核的専門人材養成のための実践的教育プログラムの開発と実証 ■実施委員会 ◎ 村岡 石川 古賀 岡田 村上 竹原 永井 伊藤 渡辺 柴原 吉岡 母里 飯塚 好久 浩 稔邦 靖志 登昭 伸 昌寛 政光 登 健次 正勝 健一 正成 名古屋工学院専門学校 テクノロジー学部 部長 日本工学院八王子専門学校 テクノロジーカレッジ ロボット・機械科 日本電子専門学校 校長 浜松情報専門学校 教務課長 大阪工業技術専門学校 教員 近畿大学 工学部 知能機械工学科 教授 愛知県立大学 情報科学部 情報科学科 教授 株式会社エスワイシステム 執行役員 中部事業部 事業部長 株式会社アフレル エディケーション・プランナー/事業企画室 室長 エキスパート・プロモーション 代表 株式会社日本教育ネットワークコンソシアム 事業開発部マネージャー 一般社団法人 組込みシステム技術協会 課長代理 一般社団法人全国専門学校情報教育協会 専務理事 ■調査担当者 ◎ 飯塚 柴原 西村 吉岡 正成 健次 紀和 正勝 一般社団法人全国専門学校情報教育協会 専務理事 エキスパート・プロモーション 代表 株式会社エスワイシステム 執行役員 中部事業部 事業部長 株式会社日本教育ネットワークコンソシアム 事業開発部マネージャー ■開発担当者 ◎ 村岡 好久 伊藤 政光 西村 紀和 柴原 健次 ギャワリ・アムリト 名古屋工学院専門学校 テクノロジー学部 部長 株式会社エスワイシステム 執行役員 中部事業部 事業部長 株式会社エスワイシステム 中部事業部 オープンシステム部 エキスパート・プロモーション 代表 株式会社日本教育ネットワークコンソシアム 平成 24 年度文部科学省委託 「成長分野等における中核的専門人材養成の戦略的推進事業」 自動車組込み分野の中核的専門人材養成のための実践的教育プログラムの開発と実証 企業提案型プロジェクト学習実践教材 平成 25 年 3 月 学校法人電波学園(名古屋工学院専門学校) 〒456-0031 愛知県名古屋市熱田区神宮 4-7-21 問合せ先 一般社団法人全国専門学校情報教育協会 〒164-0003 東京都中野区東中野 1-57-8 辻沢ビル 3F 電話:03-5332-5081 FAX 03-5332-5083 ●本書の内容を無断で転記、掲載することは禁じます。