基本設計工程
次に基本設計工程を進めていきます。
基本設計工程では、各要件をどのように実現するか設計します。①入出力信号の定義、②機能分割、③スケルトンモデル(内部が空のサブシステム)作成の順番で進めます。
①入出力信号の定義
開発対象ソフトの入出力信号を整理します。
入力信号
入力信号を下表のように定義しました。
No | 信号名 | データ型 | 最小値 | 最大値 | 備考 |
1 | PhotoRef | uint16 | 0 | 1023 | ・ライン検出センサ(フォトリフレクタ)の電圧値。反射光が大きい(白色を検出する場合)ほど電流が流れるのでマイコンが検出する電圧は小さくなる。逆に反射光が少ない(黒色を検出する場合)は電流があまり流れないので、マイコンが検出する電圧は高くなる。 |
2 | Switch | booelan | 0 | 1 | スイッチ状態 0: 押されていない 1: 押されている |
※フォトリフレクタとは
フォトリフレクタとは、赤外線LEDとフォトトランジスタがセットになった電子部品。赤外線LEDの反射光をフォトトランジスタで受けることによりライン判定を行います。
出力信号
出力信号を下表のように定義します。
No | 信号名 | データ型 | 最小値 | 最大値 | 備考 |
1 | MotorSpeed_R | uint8 | 0 | 255 | 右側モーターPWM出力 0:停止 255:最速 |
2 | MotorSpeed_L | uint8 | 0 | 255 | 左側モーターPWM出力 0:停止 255:最速 |
3 | LED_ON | boolean | 0 | 1 | LED状態 0:消灯 1:点灯 |
②機能分割
要件に基づきソフトの機能分割を検討します。適切に分割を行うことにより「ソフト構造の可読性が高まる」、「複数人で分担しやすくなる」など効果があります。
今回は状態管理機能、LED制御機能、異常検知機能、ライントレース走行機能の4機能に分けて開発を進めます。それぞれの機能の概要と仕様は下記の通りです。
状態管理機能(サブシステム名:StateManagement)
概要: システムの状態(待ち状態、走行状態、異常状態)を管理する機能。
仕様: 起動時は待ち状態から開始する。待ち状態と走行状態はスイッチのONエッジに応じて行き来する。走行状態中に異常が発生すると異常状態に遷移し、一度異常状態に遷移するとシステムを再起動するまで異常状態を維持する。
LED制御機能(サブシステム名:LED)
概要: システム状態に応じてLEDの点灯、消灯を制御する機能。
仕様: システムが待ち状態の時はLEDを点灯させる。走行状態の時は0.5秒間隔でLEDの点灯消灯を繰り返す。異常状態の時は0.2秒間隔でLEDの点灯消灯を繰り返す。
異常検知機能(サブシステム名:ErrDetection)
概要: システムの異常を検出する機能。
仕様: システム状態が走行状態の時に一定時間(3秒とする)黒線を認識できなかった場合に異常と判定する。
モーター制御機能(サブシステム名:MotorControl)
概要: ラインをトレースしながら走行するように、左右のモーター回転数を制御する機能。
仕様: システム状態が走行状態の場合、ライントレースするように左右のモーター回転数を制御する。システム状態が待ち状態、異常状態の時はモーター回転数を0にする。
③スケルトンモデルの作成
機能分割検討結果に基づきスケルトンモデル(内部が空のサブシステム)を作成します。基本設計工程ではソフトの入出力、スケルトンモデル、モデル間の配線のみを行います。
下図のようにスケルトンモデルを作成しました。
以上の内容をまとめて基本設計書を作成して基本設計工程を完了とします。
次に詳細設計工程に移ります。