沼津高専 電子制御工学科
MIRS9802ソフトウェア詳細設計書
MIRS9802-SOFT-0001
改訂記録
版数 作成日 作成者 承認 改訂内容
A01 1999.5.24 溝口 村木 初版

目次

  1. はじめに
  2. 概要
  3. プログラム作成規定
  4. リアルタイムモニタ
  5. task01〜10
  6. 試験
  7. 作成ドキュメント一覧
  8. 参考資料

1.はじめに

本ドキュメントは、MIRS9802基本設計書(MIRS9802-DSGN-0002)に規定されたシステムの動作規定、状態遷移を実現する各タスクの開発(コーディング、試験等)に必要な事項を述べる。

2.概要

MIRS9802ソフトウェアは、リアルタイムモニタMIRX68KとMIRX68K上で動作するタスクから構成される。タスクは低レベルタスクと高レベルタスクとメインタスクに大別され、基本的には低レベルタスクはハードウェアの制御を、高レベルタスクは低レベルタスクを用いて、システムの動作を実現する。メインタスク(行動計画タスク)はスイッチ状態やセンサ情報をもとに動作を決定し、それに応じたタスクの起動を行う。
MIRS9802ソフトウェアは下記のタスクから構成される。
低レベルタスク   高レベルタスク メインタスク      

3.プログラム作成規定

各タスクを実際にコーディングするときに特に注意すべき事項を次 に列挙する。

4.リアルタイムモニタ

割り込み処理タイマ処理コマンド処理
task01:MMI制御タスク     ××
task02:超音波センサ制御タスク×
task03:赤外線センサ制御タスク××
task04:タッチセンサ制御タスク××
task05:PWMモータ制御タスク ××
task06:自機位置認識タスク  ××
task07:行動計画タスク     ××
task08:自機位置補正タスク  ××
task09:総合試験タスク     ××
task10:初期設定タスク     ××

5.task01:MMI制御タスク

  1. 機能
    BBに書かれているセンサ情報やシステムの状態をLEDに表示する。
    またDIPスイッチの状態をBBにに書き込む。
    このタスクはタイマにより一定時間ごとに起動される。
  2. コマンド仕様
    BBの状態を読み込み、LEDに表示。
  3. BB仕様
    番号内容
    1LED表示内容
  4. 初期設定
    void mmi init():MMIの初期化とtimer task登録を行う。
    1. モジュール定義
      void inzt01():リアルタイムモニタから呼ばれる初期設定関数。
    2. HCPチャート
      図1-1.inzt01モジュールHCPチャート(頭脳winCAD形式

  5. 割り込み処理
    なし
  6. タイマ処理
    1. モジュール定義
      void timt01():10ms.ごとに起動される。
    2. HCPチャート
      図1-2.timt01モジュールHCPチャート(頭脳winCAD形式

  7. コマンド処理
    なし

6.task02:超音波センサタスク

  1. 機能
    4個の超音波を順に動作させ距離情報をBBに書き込む。
    タスクが起動されると、タイマストップコマンドが発行されるまで繰り返し測定を行い
    結果をBBに書き込む。
    超音波発信したのち、タスクは開放され割り込み待ちになる。
    超音波受信もしくはタイムアウトにより割り込み処理が起動され距離を計算してBBに書き込む。
    その後、次のチャネルのセンサより超音波を発信し再び割り込み待ち状態になる。
  2. コマンド仕様
    コマンド名 機能
    測定開始 4個のセンサの測定を開始する。測定はチャネル番号1〜4の順で行われる。既に測定が開始されている状態でこのコマンドが起動されたときは何もしない。
  3. BB仕様
    番号内容
    1チャネル1の測定結果[cm]
    タイムアウト:999
    2チャネル2の測定結果[cm]
    他は同上
    3チャネル3の測定結果[cm]
    他は同上
    4チャネル4の測定結果[cm]
    他は同上
  4. 初期設定
    IP-Digtal48のPIT(68230)のB側の初期設定を行う。ポートAをモード0サブモード01に設定する。
    タイマをDevice watchdog モードに設定し、タイマ初期値として最大測定距離3mに相当するカウント値を設 定する。
    注)PITのBポートは赤外線センサに使用しているのでこのPITの設定が両者のタスクで行われることがないよ うに配慮すること。
    1. モジュール定義
      void inzt02():リアルタイムモニタから呼ばれる初期設定関数。
    2. HCPチャート
      図2-1.inzt02モジュールHCPチャート(頭脳winCAD形式

  5. 割り込み処理
    1. モジュール定義
      void intt02():超音波受信時に使用。
    2. HCPチャート
      図2-2.intt02モジュールHCPチャート(頭脳winCAD形式

  6. タイマ処理
    1. モジュール定義
      void timt02():超音波発信時に使用。
    2. HCPチャート
      図2-3.timt02モジュールHCPチャート(頭脳winCAD形式

  7. コマンド処理
    なし

7.task03:赤外線センサタスク

  1. 機能
    赤外線センサ割り込みが入るごとに、センサ状態を読み取りBBに書き込む。
  2. コマンド仕様
    コマンド名 機能
    状態読み取り チャネルの測定結果をBBより読み取る。
  3. BB仕様
    番号内容
    1チャネル1の測定結果[cm]
    2チャネル2の測定結果[cm]
    他は同上
    3チャネル3の測定結果[cm]
    他は同上
    4チャネル4の測定結果[cm]
    他は同上
    5チャネル5の測定結果[cm]
    他は同上
    6チャネル6の測定結果[cm]
    他は同上
    7チャネル7の測定結果[cm]
    他は同上
    8チャネル8の測定結果[cm]
    他は同上
  4. 初期設定
    void irs init():タスクの初期化とint task登録を行う。
    1. モジュール定義
      void inzt03():リアルタイムモニタから呼ばれる初期設定関数。
    2. HCPチャート
      図3-1.inzt03モジュールHCPチャート(頭脳winCAD形式

  5. 割り込み処理
    1. モジュール定義
      void intt03():赤外線受信時に使用。
    2. HCPチャート
      図3-2.intt03モジュールHCPチャート(頭脳winCAD形式

  6. タイマ処理
    なし
  7. コマンド処理
    なし

8.task04:タッチセンサ制御タスク

  1. 機能
     タッチセンサが反応する毎にこのタスクが起動され、タッチセンサの状態を読み取りBBに書き込む。
  2. コマンド仕様
    コマンド名機能
    信号受信タッチセンサの状態をBBに書き込む。
  3. BB仕様
    番号内容
    1左タッチセンサのデータ
    2正面タッチセンサのデータ
    3右タッチセンサのデータ
  4. 初期設定
     Hardware Function Library(HFL)のロータリーエンコーダ・タッチセンサの初期化関数void re_ts_init();を用いる。BBを初期化し、割り込みタスク登録をする。
    1. モジュール定義
      void inzt04():リアルタイムモニタから呼ばれる初期設定関数。
    2. HCPチャート

      図4-1.inzt04モジュールHCPチャート(頭脳WinCAD形式

  5. 割り込み処理
    タッチセンサからの割り込み要求信号があったときに各タッチセンサの状態を読み取りBBに書き込む。
    1. モジュール定義
      void intt04():タッチセンサからの割り込み要求信号があったときに実行される関数。
    2. HCPチャート

      図4-2.intt04モジュールHCPチャート(頭脳WinCAD形式

  6. タイマ処理
    なし
  7. コマンド処理
    なし

9.task05:PWMモータ駆動タスク

  1. 機能
     30msec毎に起動され、タスク起動時に受け渡される引数によって指定される左右車輪の速度データをPWMに書き込む。
  2. コマンド仕様
    コマンド名機能
    左右モータ駆動タスク起動時に受け渡される引数によって指定される左右車輪の速度データをPWMに書き込む。
  3. BB仕様
    番号内容
    1右PWMデータ
    2左PWMデータ
  4. 初期設定
     HFLのPWM系初期化関数void pwm_init();を用いる。BBを初期化し、タイマタスク登録をする。
    1. モジュール定義
      void inzt05():リアルタイムモニタから呼ばれる初期設定関数。
    2. HCPチャート

      図5-1.inzt05モジュールHCPチャート(頭脳WinCAD形式

  5. 割り込み処理
    なし
  6. タイマ処理
    30msec毎に実行され、HFLのPWM系関数のvoid pwm_data(int r,int l);によって指定される左右車輪の速度データをPWMに書き込む。
    1. モジュール定義
      timt05:タイマ割り込みによって一定時間ごとに実行される関数。
    2. HCPチャート

      図5-2.timt05モジュールHCPチャート(頭脳WinCAD形式

  7. コマンド処理
    なし

10.task06:自機位置認識タスク

  1. 機能
     タイマ割り込みによって30msec毎に起動され、ロータリーエンコーダの値から自機位置のx、y座標と姿勢角θをBBに書き込む。
  2. コマンド仕様
    コマンド名機能
    姿勢演算ロータリーエンコーダの値から自機位置のx、y座標と姿勢角θを導く。
    座標獲得自機位置のx、y座標と姿勢角θをBBに書き込む。
  3. BB仕様
    番号内容
    1自機位置x座標データ
    2自機位置y座標データ
    3自機位置姿勢角θデータ
  4. 初期設定
     Hardware Function Libraryのロータリーエンコーダ・タッチセンサ系の初期化関数void re_ts_init();を用いる。BBを初期化し、タイマタスク登録をする。
    1. モジュール定義
      void inzt06():リアルタイムモニタから呼ばれる初期設定関数。
    2. HCPチャート

      図6-1.inzt06モジュールHCPチャート(頭脳WinCAD形式

  5. 割り込み処理
    なし
  6. タイマ処理
    30msec毎に起動され、ロータリーエンコーダの値から自機位置のx、y座標と姿勢角θを算出してBBに書き込む。
    1. モジュール定義
      void timt06():タイマ割り込みによって一定時間ごとに実行される関数。
    2. HCPチャート

      図6-2.timt06モジュールHCPチャート(頭脳WinCAD形式

  7. コマンド処理
    なし

11.task07:行動計画タスク

  1. 機能
    モードを管理し、各モードへの遷移処理を行う。その後、 各モード別のモジュールに移り、それぞれの処理を行う。
  2. BB仕様
    番号内容
    1現在のモード番号
    モード名は定数で宣言しておく。
    • MOVE 移動モード
    • SSS 超音波接近モード
    • SHUKAI ポスト周回モード
    • KAIHI ポスト回避モード
    • IRS 赤外線接近モード
    • RET 位置復帰モード
    2サブモード番号
    3目標座標(X)
    4目標座標(Y)
    *そのほか、位置、モード、目標座標を記憶しておくために、スタックを一つ用意する。
  3. 初期設定
    BBの初期化を行う。
  4. モジュール定義
    void inzt07() :リアルタイムモニタから呼ばれる初期設定関数。
    BBの初期化を行う。 void nrmt07() : コマンド処理モジュール。 モード遷移、モード別処理を呼び出す。

    図7-1.nrmt07モジュールHCPチャート (図脳Wincad形式

以下は、それぞれ各モード別の遷移処理、通常処理を行う。 各処理はそれぞれ一つの関数で実現される。

12.task08:自機位置補正タスク

  1. 機能
    行動計画タスクによって起動され、BBにあるロータリエンコーダの値と、
    超音波センサからの値とを比較し、自機位置のx、y座標と姿勢角θを補正し、BBに書き込む。
  2. コマンド仕様
    BBにある超音波センサからの値を読み込み、BBにある自機座標の値 と比較し、違いがあったら自機座標を更新する。
  3. BB仕様
    なし
  4. 初期設定
    1. モジュール定義
      void inzt08():リアルタイムモニタから呼ばれる初期設定関数。
    2. HCPチャート
      図8-1.inzt08モジュールHCPチャート(頭脳winCAD形式

  5. 割り込み処理
    なし
  6. タイマ処理
    なし
  7. コマンド処理
    1. モジュール定義
      void nrmt08():行動計画タスクより呼ばれる。
    2. HCPチャート
      図8-2.nrmt08モジュールHCPチャート(頭脳winCAD形式

13.task09:総合試験タスク

  1. 機能
    試験走行をするためのタスク。規定通りに走行するために、各タスクを呼び出す 。
  2. コマンド仕様
    各タスクを呼び出す。
  3. BB仕様
    なし
  4. 初期設定
    1. モジュール定義
      void inzt09():リアルタイムモニタから呼ばれる初期設定関数。
    2. HCPチャート
      図9-1.inzt09モジュールHCPチャート(頭脳winCAD形式

  5. 割り込み処理
    なし
  6. タイマ処理
    なし
  7. コマンド処理
    1. モジュール定義
      void nrmt09():初期設定タスクに呼ばれて起動。
    2. HCPチャート
      図9-2.nrmt09モジュールHCPチャート(頭脳winCAD形式

14.task10:初期設定タスク

  1. 機能
     電源投入時またはリセットボタン押下時に一回だけ起動され,処理終了後行動計画タスクを起動する。初期診断プログラムの実行,ハードウェアの初期設定,自機位置を競技開始位置に設定,タスクの初期化,掲示板(BB)の期化を行う。また,DIPスイッチを読み込み,動作モードをBBに書き込む。
  2. コマンド仕様
    コマンド名処理機能
    初期動作起動リセットボタン押下時に本タスクを起動する。
    診断初期診断プログラムの実行
    初期設定ハードウェアの初期設定,タスク・BBの初期化を行う。
    モード決定DIPスイッチを読み込み,動作モードをBBに書き込む。
    初動自機位置を競技開始位置に設定する。
  3. BB仕様
    番号内容
    1DIPスイッチ状態
  4. 初期設定
     タスク・BBの初期化を行う。
    1. モジュール定義
      void inzt10():リアルタイムモニタから呼ばれる初期設定関数。
    2. HCPチャート

      図10-1.inzt10モジュールHCPチャート(頭脳WinCAD形式

  5. 割り込み処理
    なし
  6. タイマ処理
    なし
  7. コマンド処理
    初期診断プログラムを実行し、DIPスイッチを読み込み動作モードをBBに書き込み、自機位置を競技開始位置に設定する。
    1. モジュール定義
      void nrmt10():電源投入時またはリセットボタン押下時に一回だけ起動される関数
    2. HCPチャート

      図10-2.nrmt10モジュールHCPチャート(頭脳WinCAD形式

7.試験

  1. タスク単体試験
  2. 標準MIRS上での試験
  3. 規定走行試験
  4. システム試験
    1. 各センサについての試験
    2. 回転走行試験
    3. 直進走行試験
詳細は、各試験仕様書を参照のこと

8.作成ドキュメント一覧

ソフトウェアインストール手順書

MIRS9802.X(プログラムファイル)
MIRS-SOFT-0002タスク単体試験仕様書
MIRS-SOFT-0003標準MIRS上試験仕様書
MIRS-SOFT-0004規定走行試験仕様書
MIRS-SOFT-0005システム試験仕様書
MIRS-SOFT-0006取扱説明書
関連文書