(57)【特許請求の範囲】
【請求項１】
半導体ウェーハを処理するシステムに用いられるモジュールであって、
前記半導体ウェーハを処理するための複数の機械ツールと、
前記機械ツールによって処理される前記半導体ウェーハを１の機械ツールから他の機械ツールに運搬するポッドと、
前記機械ツールに関連し、当該機械ツールの動作を制御するホスト・コントローラと、
前記機械ツールの各々に接続され、前記ポッドを受け取って前記ポッドを開け、処理のため前記ポッド内から前記半導体ウェーハを前記機械ツール内の位置に移送するロボットと、
特定のポッド及び当該ポッド内に担われる前記半導体ウェーハを識別し、当該ポッドによって運搬される識別手段を含む識別システムと、を有し、
前記モジュールは、前記識別システム、前記ホスト・コントローラ及び前記ロボットとの間で送受信の両方に用いられる単一電線接続手段によって特徴付けられ、前記単一電線接続手段は、通信信号のソースを識別し、当該ソースに応じて、前記通信信号を前記識別システムと前記ホスト・コントローラとの間、及び前記ホスト・コントローラと前記ロボットとの間でルーティングする手段を有するマイクロプロセッサを含むことを特徴とするモジュール。
【請求項２】
請求項１に記載のモジュールであって、
前記マイクロプロセッサに接続され、前記ポッドが前記機械ツールに配置されたとき、前記識別手段を読み取る読取装置をさらに有することを特徴とするモジュール。
【請求項３】
請求項２に記載のモジュールであって、
前記識別手段はＲＦ送信機を有し、前記読取装置はＲＦ受信機を有することを特徴とするモジュール。
【請求項４】
請求項２に記載のモジュールであって、
前記識別手段は赤外線送信機を有し、前記読取装置は赤外線受信機を有することを特徴とするモジュール。
【請求項５】
請求項２に記載のモジュールであって、
前記識別手段はバーコードであり、前記読取装置は光学式文字読取装置を有することを特徴とするモジュール。
【請求項６】
請求項２に記載のモジュールであって、
前記機械ツールに取り付けられ、前記ポッドの存在を検出する検出手段を更に有し、前記検出手段は前記ホスト・コントローラに接続され、ポッドが処理のために前記機械ツール上に配されたことを示すメッセージを前記ホスト・コントローラが前記検出手段から受け取ったとき、前記ホスト・コントローラは当該識別手段を読み取ることによって前記ポッドを識別するコマンドを前記読取装置に発することを特徴とするモジュール。
【請求項７】
請求項６に記載のモジュールであって、
前記マイクロプロセッサ及び前記読取装置に電力を供給する電力源及び電力調整手段を更に有することを特徴とするモジュール。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、製造システム、特に、例えば半導体ウェーハ等の物品を処理するシステムにおける構成要素間のインタフェースまたは伝達を容易にするために用いられるスタンド・アローンユニットすなわちモジュールに関する。
【０００２】
【発明の背景】
半導体ウェーハ製造の分野において、処理されるウェーハを１つの処理ツールから他の処理ツールへ、及び格納領域へ／から移送するための密封されたポッド（ｐｏｄ，格納器）またはコンテナの使用によってウェーハ汚染を最小にし、従って歩留りを最大にする技術が開発されている。コンテナ内のウェーハに対するアクセスは、標準機械インタフェース（ＳＭＩＦ）によって得られる。例えば、米国特許第４，５３２，９７０号を参照のこと。かかるポッドを用いた製造システムはＳＭＩＦファブとして知られるようになり、コンテナはＳＭＩＦポッドとして知られるようになった。
【０００３】
通常、ＳＭＩＦファブにおけるウェーハ処理のシステムは、ウェーハを運ぶためのＳＭＩＦポッド、ウェーハを処理するための機械ツールまたは処理ツール（「ホスト」と称される処理コントローラを有する）、ポッドを受け取ってウェーハ処理のためにポッド内から機械ツール上の位置に移送するための機械ツールに接続されたロボット、及びポッドの識別を可能にする識別システムを有する。この識別システムはポッド上のバーコードまたはＲＦトランスポンダ等の識別タグ及び読取装置からなる。読取装置のタイプは、識別タグのタイプに依存する。
【０００４】
米国特許第５，５３６，１２８号は、複数の処理ステーション及び処理される複数の加工物を運搬する輸送手段を開示している。また、運搬システム及び処理ステーション間で加工物を配送する移送手段が含まれている。
欧州特許第ＥＰ０５６２６２２号には、半導体製造システムにおいて用いられる一種の識別システムについて記載されている。この開示は、ウェーハを１の処理ツールから他のツールへ移送するキャリアの表面に搭載された回路モジュールを含む。各識別システムは、送信機および受信機、及びＩＣモジュールと双方向通信を実行するステーションを含む。
【０００７】
【発明の目的】
従って、前述した困難および不利な点を克服することが本発明の主要な目的である。
特に、プロセス・ツール、識別システム及びそのツールのロボットの間での１つの有線インタフェースをセル・コントローラに設けることによって上記した現在の接続構成を単純化することが本発明の目的である。従って、本発明は、識別タグを読み込むための読取装置、識別システムおよびホスト間及びホスト及びロボット間に接続経路を設けるためのマイクロ回路を含むモジュールを提供する。
【０００８】
本発明の他の目的は、容易にインストールすることができる低消費電力のモジュラー設計を用いた単純化された接続を提供することである。
本発明の他の目的、特徴および利点は以下の説明から明らかである。
【０００９】
【発明の概要】
半導体ウェーハ処理システムにおいて、識別システムは、通常のＲＦ読取装置およびトランスポンダ・タイプ、バーコード・タイプ、またはＩＲトランシーバ・タイプであってもよい。ロボットは、ウェーハのポッドを受け取ってプロセス・ツールがウェーハを扱うためのポッドにアクセスをする位置にウェーハを移動するための周知の構造であってもよい。ホストは、ツールと一体であるか、又は各々のツールに対する指示及び制御を与えるコンピュータ・ネットワークからなっていてもよい。
【００１０】
識別システムのＲＦ読取装置（または、バーコードの場合では光学式文字読み取り装置、ＩＲシステムの場合ではＩＲトランシーバ）は、動作時において、ポッドがロボットの受け取りポートに適切に置かれたときに識別タグを読み込むことができるように、ロボット内又はロボット上に取り付けられる。タグは、ポッドが処理のために置かれたというロボットからのメッセージを受けとったホストのコマンドによって読まれる。本発明によるホストからの全てのメッセージおよびコマンドは、単にメッセージまたはコマンドの内容を考慮せずに、適切な受信者に渡される。本発明のモジュールは、メッセージ処理を提供せず、メッセージのルーティングのみを提供する。一度、ホストはポッドが配置されたことを確定すると、モジュールを介してロボットと通信し、プロセス・ツールがウェーハにアクセスすることを許しロボットが動作を開始するように指示する。モジュールは、識別システムまたは他の手段によりポッド又はロボットと直接通信することはなく、ポッド内のウェーハの追加のプロセス要求を可能にするいかなるタイプのデータ格納または処理能力をポッドに要求することはない。
【００１１】
従って、本発明は分散システムとして動作する。情報のソースを認識して、それを適切な受信者に送ることができる。例えば、識別システムから来た信号はホストに送られる。ポッドを受け取ったことを示すロボットから来た同様の信号はまた、ホストに送られ、一定の機能を実行するためにホストからロボットに向けられた信号はモジュールを経て送られる。
【００１２】
伝達のために低電力を用いる本発明は、より高速で現在の技術より安価であり、様々なファブに容易に取り付けることができるスタンドアローンのモジュールである。本発明の使用は、ロボットまたはツールの再構成を必要とせず、また、異なる製造業者によって生産された多くの異なる既存のロボットとインタフェースをとることができる。
【００１３】
前述に加えて、本発明はファブにおいてウェーハ・コンテナを移送するために用いられる誘導された輸送手段とインタフェースをとることができる。
本発明の前述及び他の特徴は添付された図面を参照してより完全に記載されている。
【００１４】
【好適な実施例の説明】
図面を参照し、本発明の様々な好適な実施例の非限定的な説明を以下に行う。図１は、マイクロコンピュータ・ベースの統合材料管理モジュール（ＩＭＭ）１０のための回路カードアセンブリ２０（又はＣＣＡ）の機能ブロックを示す。図２は、ＩＭＭモジュール１０が既存のホスト−ロボット−輸送手段−識別メッセージ・ストリームとの接続を提供することを示す。
【００１５】
本技術は、半導体ウェーハとは異なるタイプのプロセス製品にも等しく適しており、以下においては説明のため半導体産業について記載する。そして、用語「ウェーハ」は、いかなる等しく適した製品の材料又は物を指すものとして用いられる。この点に留意し、以下に本発明のいくつかの異なる実施例について説明する。
【００１６】
図１を参照すると、本発明の他の好適な実施例において、ホスト１１はファステック（FASTECH）社により生産された「ファクトリ・ワークス（Factory Works）」などの製造実行システム（ＭＥＳ）、又はホストはツールオブジェクトモデル（ＴＯＭ）に基づく装置セットコントローラ（ＥＳＣ）であり、あるいはホストはツールそれ自身であってもよい。
【００１７】
本発明の異なる好適な実施例において、ロボット１２はまた、エレベータまたはローダーであってもよい。さらに図１を参照すると、本発明の他の実施例において、識別システム１３は、また、読取装置またはトラッカと呼ばれているものでもよく、あるいは、ジェノプティック・インファブ（Jenoptik Infab）社により販売されているイリドネット・アドバンスト・トラッキング・システム（Iridnet Advanced Tracking System）のようなシステムに基づくものでもよい。配送輸送手段１４は、人により誘導された輸送手段（ＰＧＶ）、レール誘導輸送手段（ＲＧＶ）または自動誘導輸送手段（ＡＧＶ）でもよい。さらに他の実施例において、配送輸送手段１４はなくてもよく、作業者によるウェーハ・キャリアのマニュアルの配送で置き換えられてもよい。
【００１８】
ＩＭＭ回路カードアセンブリ２０は、次の機能ブロックを含む。
配電、管理及び制御
ＣＣＡ２０は、１つの２４Ｖ直流電源１５によって電力を供給される。これは、次に、論理装置（マイクロプロセッサ１６、メモリなど）のための５Ｖ直流電源１８、バーコードおよび無線周波数識別読取装置のための２００ｋＨｚより高い周波数で（高調波干渉を避けるために）スイッチングされる別の５Ｖ直流電源１７、赤外線トランシーバ識別読取装置２１のための１５Ｖ直流電源１９に供給するためにレギュレートされる。加えて、その回路には電力の印加又は装置リセット時に全装置が適切に初期化され、プログラム初期化の決定論的状態を保証するためのリセット制御装置が設けられている。
【００１９】
マイクロプロセッサおよびメモリ
高速マイクロプロセッサ１６には、初期化、プログラム維持およびプログラム・ローディングの目的でリードオンリー・メモリ（ＲＯＭ）が設けられている。リードオンリー・メモリに加えて、プログラム格納および動作のために不揮発性のランダム・アクセス・メモリが設けられている。すなわち、メモリ内容は電力がない場合であっても保持される。プログラムの初期化時にホスト・システムの通信プロトコルを確定することができる「モード選択」制御が設けられた設計になっている。
【００２０】
通信
本設計では、ホスト・システム１１及びロボット・ローディング装置１２に業界標準ＲＳ２３２シリアル・インタフェース２２を介した電気通信インタフェースが設けられている。ホスト装置、ローディング・サービスおよび読取装置に対する全てのインタフェースはプログラム制御の下にある。
【００２１】
バーコードおよび／またはＲＦ読取装置１３への通信は業界標準ＲＳ２３２インタフェース２３を介してなされる。このインタフェースは、データレートおよび他のシリアル・インタフェース２２に関して可変である。ホスト装置、ローディング装置および読取装置に対する全てのインタフェースは、プログラム制御の下にある。
【００２２】
バーコードおよび／またはＲＦ読取装置１３への通信は業界標準ＲＳ２３２インタフェース２３を介してなされる。このインタフェースは、データレートおよび他のシリアル・インタフェース・パラメータに関し、受信装置の必要に応じて変更することができる。これらの装置のための電力は、電力管理および配電セクションから提供される。電力を直接装置に提供することによって、適切な電力要求を維持することができる。バーコードおよびＲＦ読取装置に加えて、赤外線トランシーバ２１の通信サポートが設けられる。この装置では、標準ＲＳ-２３２シリアル・インタフェースでは１つが送信、もう１つが受信に用いられる２芯の電線が使用されるのに対して、１つの電線２４が送受信の両方に用いられる非標準のシリアル通信方法が用いられる。この非標準のシリアル通信方法と連動して、赤外線トランシーバの電力要求は電力管理および配電設計１９によって満たされる。
【００２３】
電源投入／リセット
初期電源投入状態、スイッチＳ１を介したリセットまたはマイクロプロセッサ制御の下のリセットにおいて、マイクロプロセッサ・リセット制御回路は、約３５０ミリ秒の間リセット状態を維持し、マイクロプロセッサおよび外部の装置に電力を供給して初期化に先立って安定させる。
【００２４】
ブートストラップ/プログラム・ロード
リセット・タイマが終了すると、マイクロプロセッサはプログラムおよびハードウェア初期化タスクを開始する。最初に「ブートストラップ」プログラムは、内蔵リードオンリー・メモリ（ＲＯＭ）からローカル制御までマイクロプロセッサ１６を初期化してプログラム・ロードに必要なシリアルポートのハードウェア初期化を実行する。一旦「ローダー」/ローダー・シリアルポートが初期化されると、ブートストラップ・プログラムはシール・ポートをチェックしてデバイス・トランスミット・レディー（ＤＴＲ）信号が存在するかを確定する。ＤＴＲ信号の存在は、ユーザ/ホストが新たな又は更新されたオペレーショナル・プログラムをダウンロードする意図があることを示す。ＤＴＲ信号が無いことは、既存のオペレーショナル・プログラムが実行されることになっていることを示す。ブートストラップ・プログラムが既存のオペレーショナル・プログラムが実行されることを確定した場合、プログラム・コード・セグメントを実行してオペレーショナル・プログラムを含む外部記憶装置を使用可能にし、プログラム実行がオペレーショナル・プログラムで回復される。
【００２５】
ブートストラップ・プログラムは、新たな又は更新されたオペレーショナル・プログラムがダウンロードされることを検出した場合、次に、ユーザ端末装置とインタフェースをとり新たな／更新されたオペレーショナル・プログラムのダウンロード及び確認を制御するプログラム・ロード・ルーチンに制御を渡す。このプロセスが終了し、ＤＴＲ信号および／またはユーザ端末装置が除去されると、初期プログラム制御の下でマイクロプロセッサは新しくインストールされたオペレーショナル・プログラムに制御を渡すことを可能にする装置リセットを起動する。
【００２６】
モード選択
本発明は、プログラム動作の異なるモードの選択をオペレーショナル・プログラムによって可能にする個別のスイッチを含む。プログラム初期化において、オペレーショナル・プログラムは、モード制御スイッチが取り付けられたマイクロプロセッサ・ポートを読む。このファンクションを実行した後、オペレーショナル・プログラムは適切なモードに初期化して通常の動作が開始する。
【００２７】
下記モードが設計によりサポートされる。
モード０    RF ID読取装置によるＳＥＣメッセージ送信
モード１    バーコードＩＤ読取装置によるＳＥＣメッセージ送信
モード２    赤外線ＩＤ読取装置によるＳＥＣメッセージ送信
モード４    RF ID読取装置によるＡＳＣＩＩメッセージ送信
モード５    バーコードＩＤ読取装置によるＡＳＣＩＩメッセージ送信
モード６    赤外線ＩＤ読取装置によるＡＳＣＩＩメッセージ送信
モード３および７は、将来の使用のために予約されている。
【００２８】
下記は、（１）システム概要、（２）ハードウェア概要、（３）ソフトウェア概要、（４）ＳＥＣＳインタフェースに関する通信制御の説明及び（５）ＡＳＣＩＩインタフェースに関する通信制御である。
下記の説明において、コード指定の識別及び説明が記載されている「付録（APPENDIX）」を参照する。また、この付録は、Ｓ３Ｆ１メッセージ処理、RF IDインタフェース、ＩＤポート・ハンドラ、シリアルポート・ハンドラ、ミリ秒タイマ・ハンドラ、ウォッチドッグ・タイマ・ハンドラ、及び監視ルーチンの説明を含む。
【００２９】
１．システム概要
図２を参照すると、統合MaterialIDシステムは、RF IDシステムなどのＩＤシステム１３、及び既存のホスト−ロボット（１１−１２）メッセージ・ストリームとの接続を提供する専門のマイクロ・コントローラ・インタフェースからなる。マイクロ・コントローラまたは統合MaterialIDモジュール（ＩＭＭ）は、ＳＥＣＳ又はＡＳＣＩＩメッセージに適応するように構成されてもよい。ＩＭＭ １０はホスト１１及びロボット又はエレベータ１２の間に位置する。
【００３０】
ＩＭＭモジュール１０は、メッセージがホストからの材料ＩＤメッセージでない限り、ホスト１１とロボット１２との間でメッセージの受け渡しをする。材料ＩＤメッセージを受け取るとき、メッセージを遮断してＩＤシステム１３からの材料ＩＤを読み込み、適切な応答を生成する。従って、ロボット１１、ＩＭＭ１０およびＩＤシステム１３は、共に、ＩＭＭ１０に接続された１つの電線を介してホストに対する統合材料識別能力を示す。
【００３１】
２．ハードウェア概要
統合MaterialIDシステムのハードウェアは、マイクロ・コントローラ・ベースのＩＭＭボード、個別のRF IDシステムおよび電源からなる。ＩＭＭは、ロボット・コントローラ・カード・ケージに取り付けられ、接続は正面パネルによってなされる。RF IDシステムは、統合ＲＦ送信機およびアンテナから構成され、ＳＭＩＦポッドの隣のロボットのベース・プレートに取り付けられる。それはＲＳ-２３２インタフェースおよび５Ｖの電力を有するフレキシブルなケーブルによってマイクロ・コントローラに接続されている。電源は、マイクロ・コントローラおよびRF IDシステムから分離しており、カード・ケージの外側のロボット・シャシーに取り付けられている。ＲＦ送信機及びアンテナをマイクロ・コントローラとは個別のモジュールに実装することによって、既存のロボット制御システムへのＲＦの導入を回避することができ、他の応用においてRF IDシステムを再利用する能力を提供する。
【００３２】
ＩＭＭモジュールは、８０５１互換のダラス８７Ｃ５２０マイクロプロセッサを用いる。このマイクロプロセッサは、２つの組込みシリアルポート２５および２６、一度だけプログラム可能な１６キロバイト（Kbyte）の内蔵リードオンリー・メモリ（ＥＰＲＯＭ）、及び最長１０年のプログラム・メモリ保持が可能なリチウム・バッテリーによるバックアップの不揮発性メモリとして構成された１２８キロバイトの外部データ・メモリを有する。組込みシリアルポートに加えて、業界標準ＲＳ２３２通信を用いた識別システム（例えば、バーコードまたはＲＦ読取装置）１３に通信を供給するために利用可能な２つの追加のシリアルポート、InfabのIridNetトラッキングシステムの赤外線トランシーバ（ＩＲＴ）装置２１をサポートする適当なインタフェース、及び、例えばプッシュ・カート、レール誘導された輸送手段、及び半導体ウェーハ・キャリアを半導体ワークステーション・ロードポートに直接配置するために用いられる将来の自動化オーバーヘッド輸送システムに結合され整合する自動誘導の輸送手段、などの半導体ウェーハ輸送装置にコマンドおよび制御通信を提供するＩＲＤＡ赤外線シリアル通信をサポートする２つの追加のポート（輸送手段のための１４及び１４a）、が利用可能である。
【００３３】
このRF IDシステムは、テキサス・インスツルメンツTIRISマイクロリーダ（RI-STU-MRD1）および４５マイクロヘンリー・ワイヤ・ループ・アンテナを用いる。この読取装置は、小型、低消費電力、低放射エネルギーおよび低コストによって選ばれた。全ての装置は１つの外部パッケージとしてアセンブルされ、それはＲＳ−２３２インタフェースによってマイクロ・コントローラに接続される。接続ケーブルは、レギュレートされた電力（５Ｖ）を供給する。
【００３４】
ＩＭＭおよびRF IDシステムには、５Ｖのリニア電源（ロボット電源から分離した）によって電力が供給される。これは、製造時においてはロボット制御システムからの電力を直接用いることが望ましいとしても、ロボットおよびＲＦ回路のスイッチング電源の間で起こりうる相互作用を避けるためになされた。
３．ソフトウェア概要
ＩＭＭコードの一般的な構造は、シリアルポートおよびミリ秒タイマ・クロックからの事象（イベント）によって駆動される通信コントローラ状態機械のそれである。ＩＤシステムは、シリアルポートのうちの１つ上の層として作られる。有限状態通信制御はＳＥＣＳ又はＡＳＣＩＩを（しかし、両者を同時にではなく）取り扱うように構成されてもよい。製造時においては割り込みレベルで起こる初期化を除いてバックグラウンドで実行されるタスクは何もしないが、現在、この構成は、初期化コードを制御する条件つきのコンパイルによってなされる。ハードウェアのウォッチドッグ・タイマがバックグラウンドで実行され、システムがハングしているような場合にシステムをリセットする。全体の呼出グラフ（誰が誰を呼び出すか）は、図４に表される。
【００３５】
ＳＥＣＳの構成において、ホストおよびロボットとの通信は、ＳＥＣＳメッセージのENQ-EOT-MSG-ACKシーケンスを認識する有限状態マシンであるＳＥＣＳ通信制御モジュール２７によって制御される。その主たる目的は、ホストから送られたＳ３Ｆ１（材料状態要求）メッセージを認識、ブロックし、ＩＭＭがホスト−ロボット間の会話の途中で応答を送らないようにホスト−ロボット間の通信状態を追跡することである。入って来るＳＥＣＳメッセージはバッファリングされ、メッセージがＳ３Ｆ１である場合、ＩＤシステム１３からルーチンを呼ぶＳ３Ｆ１モジュール２９で処理される。ＩＤシステムは、ＲＦシステム読み込みを開始し、終了を検出し、Ｓ３Ｆ１モジュール２９のコールバック・ルーチンを呼び出して、Ｓ３Ｆ２（材料状態データ）応答を生成する。
【００３６】
ＡＳＣＩＩ構成において、全てのメッセージ処理はＡＳＣＩＩ通信制御モジュール２８において起こる。これは、様々なInfabのサービス・マニュアルにおいて文書化されたＡＳＣＩＩ通信プロトコルに従う小さい有限状態マシンである。ホストから届くメッセージは読み込まれバッファリングされ、READID材料ＩＤメッセージであるかどうかが調べられる。そうでない場合、メッセージはロボットに送られる。次に、モジュールはロボットからの応答を待って、それをバッファリングしてホストに送る。ホストからのメッセージが材料ＩＤメッセージである場合、読み込みを開始する要求がＩＤシステムで作られる。それが完了したとき、ＩＤシステムはコールバックを呼び、ホストにREADID応答を送る。
【００３７】
システムを構成するファイルは以下の通りである。
・reg80c320.h
・exec.h/exec.c
・SECS.h/SECS.c
・S3F1.h/S3F1.c
・ASCII.h/ASCII.c
・IDSys.h/IDS.ys.c
・IDPort.h /IDPort.c
・msTimer.h/msTimer.c
・wd.h/wd.c
・serialPorts.h/serialPorts.c
これらは、それぞれの.htmlファイルから生成される。
【００３８】
４．ＳＥＣＳインタフェースの通信制御
通信制御モジュールは、ＩＭＭ動作のコマンドセンタである。その一般的な目的はホスト及びロボット間でメッセージの受渡し、遮断を行い、材料ＩＤ要求に対して動作することである。通信制御モジュールは、ＩＤシステムから読込みを始めることができるよう材料ＩＤ要求を認識しなければならない。また、会話の途中で材料ＩＤ要求に応答を送らないようホストおよびロボットが通信に従事している時を認識しなければならない。
【００３９】
設計の考察
この問題を解決するために２つの一般的なアプローチが検討された。その１つは、全てのメッセージが届いてチェックされた場合にだけ、その後、ＳＥＣＳ−ＩメッセージをＩＭＭにバッファリングし、それをその最終的な宛先に転送することである。最初は、これは単純で直接的な方法であるように見えるが、故障のある状況で、通常のホスト−ロボット・システムの挙動をシミュレートしようとする複雑な問題を導く。例えば、ＩＭＭがホストからメッセージを受け取り、ロボットが応答していないことを発見した場合はどうであろうか。どのようにしてホストに通知することができるであろうか。ＩＭＭなしで、ホストはロボットがダウンし、ENQ-EOTライン・ネゴシエーション・プロトコルに応答しさえしないということを直ちに知る。しかし、ロボットがダウンしたということを発見する前にＩＭＭが応答したので、ホストは混乱する。
【００４０】
ＩＭＭにおいて採用されたこの方法は、届くとすぐにメッセージを１バイト毎に転送することになっている。これは全くほとんどバフェッティングを必要とせず、まるでＩＭＭが全くないように、ホストおよびロボットはリンクの正確な状況を維持することができる。しかしながら、通信リンク状態を追跡し続けることは、いくぶんより複雑である。我々は、メッセージ・トラフィックをロボット開始、ホスト開始、及びＩＭＭ開始のメッセージに分けて、それらを以下に議論する。
【００４１】
ロボットからのメッセージ
ロボットからホストへのメッセージの場合を検討する。多分、それはホスト問合せに対する応答又はホストに向けられたイベントレポートである。このシナリオのメッセージトラフィックが図５に表される。
MSGはメッセージを構成するバイトのストリームのちょうど短縮形である。メッセージの各バイトは届くとすぐに転送される。ＩＭＭラインに沿った箱は通信コントローラの状態を示し、ホスト−ロボット・リンクがアイドルであることを認識することを可能にする。ロボットからホストへのメッセージに関連する完全な状態図は図６に示される。
ホストおよびロボットが同時に会話を開始しようとすると起こる競合解決（ロボットからENQを受け取ると、状態ENQ_robotはENQ_hostに移行）に留意せよ。また、全てのタイムアウトはコントローラをＩＤＬＥ状態に戻すことに留意せよ。
【００４２】
未知（ＵＮＫＮＯＷＮ）状態
図７は、ＵＮＫＮＯＷＮ状態、ＩＭＭが始まる状態および予想外のイベントのシーケンスに遭遇したときに戻る状態を導入している。ＩＭＭがＵＮＫＮＯＷＮ状態にあるとき、受け取るあらゆるバイトを単に転送して、再同期を試みる。進行中のホスト−ロボット間会話を中断しないように、それ自身のいかなるメッセージも開始しない。通常のメッセージ・トラフィックではこのようなことは生じないが、ホストまたはロボットが再開し、又はそれらのうちの１つに対するリンクに実質的な中断が生ずる場合、理解しがたいシーケンスが発生する。このＩＭＭのＵＮＫＮＯＷＮ状態への移行は、図７に図示するように解決される。
【００４３】
ＩＭＭがリンクの状態を認識するために用いる１つの基本的な出発点は、時間の経過である。ホストもロボットもＴ２期間の間に何も送信しなかった場合、進行中の会話がなくリンクはＩＤＬＥであると仮定するのが安全である。他の出発点は、ENQの送信である。これは通常のネゴシエーション・シーケンスの開始であり、予想される応答はEOTである。これが生じない場合（例えば、一方が、ちょうど再開始したとき、他方がまだその事実に出会っていない場合）、ＩＭＭはＵＮＫＮＯＷＮ状態に再び入る。ホスト及びロボットの両者がＳＥＣＳ−Ｉプロトコルに従うとき、ＩＭＭはついにはＵＮＫＮＯＷＮ状態を抜け出る。ＵＮＫＮＯＷＮ状態の使用によって、ＩＭＭは、ホスト又はロボット（又はＩＭＭ）の再開始をうまく行うことができ、ついにはそれら間の通信リンクの状態を認識して、通信中のメッセージ・トラフィックの通常のフローを中断しないことが可能になる。
【００４４】
ホストからのメッセージ
ここで、ホストからロボットへのメッセージの場合を検討する。このシナリオについてのメッセージ・トラフィックが図８に示されている。
しかしながら、ホストが材料ＩＤ要求を送るとき、１バイト毎にメッセージを転送するという決定は、そのほとんどが送られるまえにロボットに送らないことをどのようにＩＭＭが知ることができるかという問題を生じる。ＩＭＭにおいて用いられる解はロボットにメッセージを正常なものとして送ることであり、チェックサムの最後のバイトを誤った値に変更することではない（図９を参照のこと）。
再び、競合解決（ロボットからENQを受け取ると、状態ENQ_robotはENQ_hostに移行）、また、全てのタイムアウトはＩＤＬＥ状態に戻ることに留意せよ。
【００４５】
ＩＭＭからのメッセージ
最後に、どのようにＩＭＭがホストにメッセージＩＤ応答を送るかを検討する。図１１に示されるように、これは単純なＳＥＣＳ−Ｉシーケンスである。
ロボットは、メッセージが破損されたかのように動作し、NAKを送り返して、更なる行動をとらない。しかしながら、ＩＭＭは、メッセージが正しく受け取られたことを知り、ホストにACKを戻す。メッセージがいずれにせよ、例えば、不良のチェックサムによって破損した場合、ＩＭＭによって材料ＩＤ要求として認識されず、他の認識されないメッセージとして取り扱われてロボットに渡されることに留意せよ。この全部の方法は、破損したメッセージを拒絶するロボットの能力に依存するが、これはＳＥＣＳ−Ｉ標準の基本的な部分であるので、この方法は確実に働く。
【００４６】
これらの両方のシーケンスに関する状態図は、図１０に示される。メッセージが送られて、認められるまで、ロボットから届いてた文字は無視される。通常の状況の下では、数十ミリ秒（メッセージは、１０文字の長さで、９６００ボーにおいて１文字は約１ミリ秒である）の間に起こり、ロボットは容認できるＴ２期間以下の僅かの遅延を経験するだけである。ホストがＩＭＭメッセージに応じず、Ｔ２タイムアウトが起こる場合、また、ロボットはタイムアウトを経験するが、いずれにせよＩＭＭがメッセージを送るのに忙しかった場合にはそれは多分生じたであろう。このシーケンスに関する状態図は、図１２に示される。
【００４７】
ホストが初めに認め損なった場合、ＩＭＭは材料ＩＤ応答を再送信しようとする点に留意せよ。しかしながら、現在のロボットのＳＥＣＳインタフェースの定義と一致して、再試行回数のデフォルトは０である。この構成においては、全てのタイムアウトはＩＭＭをＩＤＬＥ状態に戻す。
５．ＡＳＣＩＩインタフェースの通信制御
このモジュールは外部装置（ホスト、ロボット、ＩＤシステム）との全通信又はＡＳＣＩＩメッセージプロトコル構成に関し責任を有する。それは初期化の間、ロボットおよびホスト・シリアルポートとの全ての通信のためのハンドラとしてそれ自体を登録し、ＩＤ読込みインタフェースを介してＩＤシステムと通信する。ＳＥＣＳ通信制御と同様、有限状態マシンを実行するが、全てのステップで全メッセージを読み込みバッファリングし、かつタイマで文字を扱わないので、図１３に示すように、状態マシンの複雑さはより少ない。
【００４８】
初期化の後、モジュールはメッセージを受け取るためにRECEIVING_FROM-HOST状態で待つ。receiveHostルーチンは、入力された文字シーケンスをバッファに保存し、受け取るやいなや、メッセージを調べて、次のステップへ進む。メッセージが材料ＩＤメッセージではなく通常のロボットコマンドである場合、SENDING_TO_ROBOT状態に入り、ロボット・シリアルポートへのメッセージ送信を開始する。sendRobotがメッセージを送った場合、RECEIVING_FROM_ROBOT状態でロボットが応答を送るのを待つ。全てのメッセージをロボットから受け取ったとき、receiveRobotはSENDING_TO_HOST状態に入り、ホスト・シリアルポートへのメッセージ送信を開始する。メッセージが送られたとき、sendHostはRECEIVING_FROM_HOST状態に戻って再びこのサイクルを開始する。
【００４９】
メッセージが材料ＩＤ要求「READID」の場合、有限状態マシンはREADING_IDステートに入って、ＩＤシステムからの読込みを開始する。ＩＤシステムが読込みを完了するとき、ステータスおよびデータによりコールバック・ルーチンを呼び出すことによってＡＳＣＩＩモジュールに信号を送る。このルーチンは、応答メッセージをフォーマットしてホストに送る。
【００５０】
文字は、いつでも、ロボットまたはホストのいずれのソースから届いてもよく、ＡＳＣＩＩモジュールは予想外の入力を扱う準備ができていなければならないことに留意すべきである。これは特に単純である、なぜならば、各状態には正確に１つのイベントが、各イベントには１つのハンドラがあるからである。従って、モジュールがそれらがアクティブであると期待される状態にあるかをルーチンはまさにチェックし、もし他の状況でルーチンが呼ばれている場合、単に入力を無視して戻す。
【００５１】
ロックアップを避けるセイフティネットが、ＡＳＣＩＩモジュールには組み込まれている。もし、例えばコマンドの終了が失われたり、誤ったりした場合には、モジュールは永遠に完了メッセージを待つことになる。これは、バックグラウンドでウォッチドッグ・タイマを実行させ、モジュールがサイクルを完了してRECEIVING_FROM_HOST状態を再び入るときはいつでも、それをクリアすることによってなされる。我々は、メッセージがしばらくの間届かなかったからといってウォッチドッグを止めることを望まないが、また、バッファが空でアイドル状態であればウォッチドッグをクリアするタイムアウト・ルーチンを定期的に実行するミリ秒タイマ機能を用いる。
【図面の簡単な説明】
【図１】本発明によるマイクロコンピュータ・ベースのモジュールのための回路カードアセンブリの機能ブロックのハードウェア図である。
【図２】既存のハードウェア装置と本発明の統合材料管理モジュールの接続を示す図である。
【図３】誘導された輸送手段の伝達リンクを示す図である。
【図４】統合材料管理モジュール・コードの全体的なソフトウェア呼び出しグラフである。
【図５】ロボットからホストへの伝達シナリオに関するメッセージ・トラフィックを示す図である。
【図６】ＳＥＣＳインタフェースに関するロボットからホストへのメッセージに関連する状態図である。
【図７】ＵＮＫＮＯＷＮ状態がどのように解かれるかについて示す図である。
【図８】ホストからロボットへのシナリオに関するメッセージ・トラフィックを示す図である。
【図９】ホストからモジュールへのシナリオに関するメッセージ・トラフィックを示す図である。
【図１０】ホストからのメッセージに関連する状態図である。
【図１１】モジュールからホストへのシナリオに関するメッセージ・トラフィックを示す図である。
【図１２】モジュールからのメッセージに関連する状態図である。
【図１３】ＡＳＣＩＩインタフェースに関連する状態図である。
【付録】
ＳＥＣＳインタフェースの通信制御
通信制御モジュールはＩＭＭ活動の指令中枢である。その一般目的は、材料ＩＤ要求を遮断したり、それに作用を加えたりしながら、ホストとロボットとの間でメッセージをやり取りすることである。このモジュールは、材料ＩＤ要求を認識してＩＤシステムからの読み取りを起動することができなければならず、また、ホストとロボットとが通信に従事しているとき、それを認識してそれらの対話の最中に材料ＩＤ要求に対する返答を送信することのないようにしなければならない。
実現態様
上記状態機械の説明にあたり、コードは非常に簡単であり、むしろ冗長なほどである。状態の全リストは以下のとおりである。
UNKNOWN
リンク状態は判定されない。説明を参照。
IDLE
対話が進行していないと判定された状態。
ENQ_robot
ＥＮＱをホストから受信し、ロボットに転送したのち、ロボットからＥＯＴを待つ状態。
EOT_host
ＥＯＴをロボットから受信し、ホストに転送したのち、ホストからＬＥＮバイトを待つ状態。
MSG_robot
あるメッセージ文字をホストから受信し、ロボットに転送したのち、次のメッセージ文字を待つ状態。
CHECK_robot
最後のチェックサム文字をホストから受信し、ロボットに転送したのち、ＡＣＫ／ＮＡＫを待つ状態。
BADCHECK_robot
ＩＤ要求メッセージの最後のチェックサム文字をホストから受信し、不良なチェックサムをロボットに送信したのち、ＮＡＫを待つ状態。
ENQ_host
ＥＮＱをロボットから受信し、ホストに転送したのち、ホストからＥＯＴを待つ状態。
EOT_robot
ＥＯＴをホストから受信し、ロボットに転送したのち、ロボットからＬＥＮバイトを待つ状態。
MSG_host
あるメッセージ文字をロボットから受信し、ホストに転送したのち、次のメッセージ文字を待つ状態。
CHECK_host
最後のチェックサム文字をロボットから受信し、ホストに転送したのち、ＡＣＫ／ＮＡＫを待つ状態。
IDENQ_host
メッセージＩＤ返答を送信し、ENQをホストに送信したのち、ＥＯＴを待つ状態。
IDMSG_host
ＥＯＴを受信し、メッセージ文字をホストに送信したのち、メッセージが終了したならば、ＡＣＫ／ＮＡＫを待つ状態。
一般に、各状態は、次の３種の手続きと対応する。
・XXX_enter  状態に入ったときに実行される手続き
・XXX_proc  その状態にある間にイベントを処理するための手続き
・XXX_timeout  その状態にある間にタイムアウトを扱うための手続き
たとえば、EOT robot enter、EOT robot procおよびEOT robot timeoutがある。イベントを引き渡すために割り込みサービスルーチンによって使用される、状態によって索引付けされるイベント処理手続きのテーブルがある。
通信チャネルが空き状態であるときにメッセージをホストに送信するための、外から見えるサービスSECS sendMsgToHostが一つだけある。これは、メッセージＩＤ要求に対して返答するためにＳ３Ｆ１処理モジュールによって使用される。これは、送信すべきメッセージを指すポインタを記憶し、リンクが現在IDLEであるならば、IDENQ host enterを呼び出してメッセージの送信を開始する。通信リンクがビジーであるならば、次にIDLE enterが呼び出されたとき、送信すべきメッセージがあるかどうかをチェックし、あるならば、IDENQ_host_enterを呼び出してその送信を開始する
ウォッチドッグタイマ
ＡＳＣＩＩインタフェース通信制御装置の場合と同様、ＳＥＣＳ通信制御装置には、ロックアップを回避するのに役立つ安全ネットが内蔵されている。これは、ウォッチドッグタイマをバックグラウンドで稼動させ、モジュールがサイクルを完了し、IDLE状態に再び入るたびにタイマをクリアすることによって実施される。しばらくの間メッセージが到着していないというだけでウォッチドックが作動してしまうことは望ましくないため、ミリ秒タイマ機能を使用してタイムアウトルーチンを周期的に実行し、このルーチンが、現在IDLEであるならば、ウォッチドッグをクリアする。
【表１】
0004698833.tif 000002
【表２】
0004698833.tif 000003
【表３】
0004698833.tif 000004
【表４】
0004698833.tif 000005
【表５】
0004698833.tif 000006
【表６】
0004698833.tif 000007
【表７】
0004698833.tif 000008
【表８】
0004698833.tif 000009
【表９】
0004698833.tif 000010
【表１０】
0004698833.tif 000011
【表１１】
0004698833.tif 000012
【表１２】
0004698833.tif 000013
Ｓ３Ｆ１メッセージ処理
Ｓ３Ｆ１メッセージの処理は、要求を妥当性検査し、ＳＥＣＳメッセージがロボットに送信されるのをアボートし、到着するＳＥＣＳ要求からの情報を保存し、ＩＤシステム読み取りを起動し、読み取りが完了したところでＳＥＣＳ返答をフォーマットすることからなる。これを実行する３種のルーチンは順に以下のものである。
S3F1 proc
要求を妥当性検査し（主にチェックサムをチェックする）、それが妥当ならば、SECS abortMsgToRobotを呼び出すことにより、ＳＥＣＳメッセージがロボットに送信されるのをアボートし、到着するメッセージから装置ＩＤおよびシステムバイトを記憶する。これらは、返答メッセージバッファに記憶され、そこで返答の際に使用される。メッセージは、第二のチェックサムバイトがロボットに送信される前にチェックされ、アボートされなければならないことに注意すること。ＳＥＣＳ通信制御における説明を参照。
S3F1 complete
このルーチンは、ＩＤシステム読み取りを起動する。S3F1 procではなく、このルーチンで実施される。理由は、ロボットが返答しないならば、ＮＡＫをホストに伝達し、読み取りを起動しないことが望ましいからである。ここでそれを開始すると、起こっていることを追跡しやすくなる。
callback
このルーチンは、ＩＤシステムからの返答をフォーマットする。返答メッセージバッファは、大体が事前にフォーマットされている。理由は、データそのものを除き、読み取り間で変化しないからである。読み取りエラーは、ゼロ長の材料リストを戻すことによって示される。読み取り装置の障害は、Ｓ３Ｆ０（アボート）返答を生じさせる。
【表１３】
0004698833.tif 000014
【表１４】
0004698833.tif 000015
【表１５】
0004698833.tif 000016
ＡＳＣＩＩインタフェースの通信制御
このモジュールは、ＡＳＣＩＩメッセージプロトコル機器構成の外部装置―ホスト、ロボット、ＩＤシステム―とのすべての通信を統合する責任を負う。
【表１６】
0004698833.tif 000017
【表１７】
0004698833.tif 000018
【表１８】
0004698833.tif 000019
【表１９】
0004698833.tif 000020
ＲＦ  ＩＤインタフェース
このモジュールは、ＲＦシステムオペレーションを起動して、現在ロボットに配置されているＳＭＩＦポッド中のトランスポンダを読み取り、また、それが読み取るデータをコールバック（callback）ルーチンに引き渡す。それがＩＭＭの残りの部分に輸出する唯一のサービスはID readであり、ID_readが要する唯一のパラメータはcallbackルーチンである。コールの状態、データの長さおよび読み取られたデータを指すポインタがcallbackにパスされる。読み取りが何らかの理由（トランスポンダがない、トランスポンダが多数ある、メッセージが不当である、など）で失敗するならば、ＴＩＲＩＳシステムは、エラーメッセージで応答し、そのため、状態は、読み取り試行の失敗（エラーメッセージ）と読み取り装置障害（応答なし）とで区別がつく。８個のデータバイトが、まず最下位バイトから、callbackルーチンに送信される。
内部的には、モジュールは、非常に簡単な状態のシーケンスを通過する。すなわち、まずIDLEであり、ID_readコールがそれをSENDING_COMMANDでビジーにし、送信を完了したのち、RECEIVING_REPLYの間待ち、返答を受信し（または、読み取り装置が故障するならば時間切れ）、データをcallbackルーチンに送信したのち、再びIDLEになる。読み取りコマンドは、プレロードされてreadCmdに記憶された５バイト列の文字である。応答はreadReplyに記憶される。受信ルーチンが、応答における長さ、状態およびＢＣＣ（水平冗長検査バイト、メッセージ中の、開始マークを除く全バイトのＸｏｒ）をチェックする。ＴＩＲＩＳメッセージのフォーマットは、Texas  Instruments社から入手できるＴＩＲＩＳマイクロリーダ参照マニュアルに掲載されている。
【表２０】
0004698833.tif 000021
【表２１】
0004698833.tif 000022
【表２２】
0004698833.tif 000023
【表２３】
0004698833.tif 000024
ＩＤポートハンドラ
ＩＤポートハンドラは、外部ＤＵＡＲＴ接続の稼働が内部シリアルポートの稼働といくぶん異なることを除き、シリアルポートハンドラと非常に類似した構成である。ＩＤポートハンドラは、外部ＤＵＡＲＴからの割り込みを処理し、必要ならばcallbackルーチンを呼び出し、文字をＤＵＡＲＴに送信する。割り込みを使用可能／使用禁止にする能力なしで、サービスは同じである。
ID init
ＤＵＡＲＴに接続されているＥＸＴ４からの割り込みを処理するＩＤポートハンドラを初期化する。ＤＵＡＲＴは、それ自体の水晶を有するため、内部タイマは使用されない。そのレジスタが外部データ中の記憶場所にマッピングされる。
ID put
ＩＤポートへの文字の送信を起動するが、完了を待たない。ポートが現在、文字の送信でビジーであるならば、送信が完了するのをスピン待機する。ただし、これは現在のシステムで普通は起こらない。
ID setSendHandler、ID setReceiveHandler
ＩＤポートSENDおよびRECEIVEイベント割り込みハンドラをセットする。
【表２４】
0004698833.tif 000025
【表２５】
0004698833.tif 000026
【表２６】
0004698833.tif 000027
シリアルポートハンドラ
シリアルポート割り込みハンドラは二つの基本機能を実行する。内蔵シリアルポート割り込みをセットアップし、処理し、必要ならばアプリケーションcallbackルーチンを呼び出す。また、文字をシリアルポートから送出する。システムの残りの部分に提供されるサービスは以下を含む。
SER init
シリアルポートハンドラと、ボーレートを生成するのに使用されるtimer1とを初期化する。timer1は、モード２、すなわち８ビット自動再ロードモードにおいて９６００ボーで作動するようにセットされる（３３MHz機械の場合）。送信および受信割り込みは、PORT0およびPORT1の両方に対して使用可能にされ、出力チャネルがアイドル状態とマークされ、SENDおよびRECEIVEの両イベントに関してダミーコールバックが登録される。
SER put
指定のポートでの文字の送信を起動するが、完了を待たない。ポートが現在、文字の送信でビジーであるならば、送信が完了するのをスピン待機する。SER_putは、そのチャネルのoutBusyフラグを検査することにより、出力が現在進行中であると判断する。このフラグは、SER_putによってセットされ、割り込みサービスルーチンによってクリアされる。
バッファリングまたは待ち行列サービスは、SER_putによっては提供されない。これは、割り込みサービスルーチンから呼び出されるならば、１ミリ秒の長さ（９６００ボーで１文字）を要するコールの間に割り込みが処理されないことを意味する。これは、現在のＩＭＭシステムではいくつかの意義を有する。一つには、ロボットとホストインタフェースとが同じボーレートで作動すべきであることを意味する。理由は、そうでなければ、速度を適合させるバッファリングがないとき、一方が他方をオーバランするおそれがあるからである。もう一つには、ルーチンが、送信すべき２個以上の文字を有するならば、ルーチンは、それ自体の出力割り込みサービスルーチンを供給しなければならないか（ＩＤシステムのように）、他の割り込みのミスを容認することができるような状況で使用されなければならない（ＳＥＣＳ通信制御装置がＩＭＭメッセージをホストに送信する場合に当てはまる）ことを意味する。
SER setHandler
callbackルーチンを特定のポートおよびイベント（SENDまたはRECEIVE）と対応させる。callbackルーチンがNULLであるならば、空のダミーcallbackルーチンが登録される。
SER enableInterrupt、SER disableInterrupt
指示されたポートにおける割り込みを使用可能／使用禁止にする。これらのルーチンは、ＩＭＭ−ホストの対話の間にロボットとの通信を遮断および復元するためにＳＥＣＳ通信制御によって使用される。
実際の割り込みハンドラhandle port0およびhandle port1は、ポートに対応するハードウェアおよびソフトウェアフラグをリセットし、登録されたcallbackルーチンを呼び出す以上のことはほとんどしない。port1ハンドラに対する特殊なインタフェースに注意すること。これは、port1割り込みのFranklin  DS80C320シミュレータ処理に関する問題に対処した結果である。詳細に関しては、主execルーチンの対処法の説明を参照。
【表２７】
0004698833.tif 000028
【表２８】
0004698833.tif 000029
【表２９】
0004698833.tif 000030
【表３０】
0004698833.tif 000031
【表３１】
0004698833.tif 000032
ミリ秒タイマハンドラ
このモジュールは、汎用ミリ秒レベルタイマ機能をソフトウェア中で実現し、このタイマ機能が、クライアントが将来、指定のミリ秒数だけ実行されるルーチンを登録することを可能にする。これは、通信プロトコルでタイマを実現するために使用され、また、ＲＦ  ＩＤシステムが応答不能になった場合に安全ネットを提供するために使用される。内蔵されたtimer0を使用する。
タイマは、MST createを呼び出し、それをミリ秒単位の遅延にパスし、ポインタをcallbackルーチンにパスすることによって生成される。戻り値は、MST cancelにパスしてタイマをキャンセルすることができる値であるtimerIDである。callbackルーチンは一つの引数、すなわち、それが呼び出されたtimerIDをとり、値を返すべきではない（第二の引数、たとえばユーザ定義データのバイトを取ることも考慮したが、ＩＭＭアプリケーションにはその用途がなく、タイマデータ構造のサイズを増すだけであっただろう）。
タイマルーチンが使用する基本データ構造は単に、タイマが切れるまでに残された刻時回数であるticksRemainおよびcallbackルーチンアドレスを含む。timerIDは、静的に割り当てられたこれらの構造のアレイを指す索引である。timer0の割り込みハンドラに入るたび、各タイマストラクト中に残る刻時回数がチェックされ、ゼロになると、callbackルーチンが呼び出される。MST createは、未使用のエントリのアレイをサーチするだけであり（ticksRemainがゼロであるならば、タイマは使用されていない）、MST cancelは、ticksRemainをゼロにセットするだけである。初期化ルーチンMST initがアレイをクリアし、timer0を始動させる。
ミリ秒タイマの使用に対する一つの制限は、現在の実現形態がNUM TIMERSタイマデータ構造の静的アレイをチップ上のデータ区域に維持するため、同時に利用可能なタイマの数に上限があるという事実から生じる。NUM_TIMERSは現在４にセットされている。
もう一つの制限は、タイマデータ構造中、時間切れまでに残された刻時の回数が２バイト整数として維持されるという事実から生じる。１０ms刻みを使用する場合（３３．００MHz水晶の２７５００サイクル、１２サイクルごとにカウント）、これは、１０msの分解度で６５５．３６秒（約１０分）の最大期間を可能にする。
妥当に長い刻みを得るために、timer0をモード１、すなわち１６ビットモードで使用し、その結果、カウントを手動で割り込みハンドラに再ロードしなければならないことに注意すること。この挙動は、シリアルポートを計時するために自動再ロードモードでtimer1を使用する方法とはいくぶん異なる。
【表３２】
0004698833.tif 000033
【表３３】
0004698833.tif 000034
【表３４】
0004698833.tif 000035
【表３５】
0004698833.tif 000036
ウォッチドッグタイマハンドラ
このハンドラは、DS80C320のハードウェア能力に基づく簡単なウォッチドッグタイマを実現する。その目的は、マイクロコントローラが何らかの理由で機能停止した場合にそれをリセットすることである。「機能停止」は、変化が期待されるときに変化が起こらないことから推論される。タイマは、初期化の際にexecutiveによって初期化され、外部イベントがそれらを状態遷移の連続の中で動かすとき、通信制御有限状態機械によって周期的にリセットされる。タイマは、MAX TICKS刻時を蓄積したのち、ＣＰＵをリセットする。現在値MAX_TICKS＝１２８および２＾２６クロック（１回あたり３３MHzで）は、ウォッチドッグが作動する前に、進行なしで４〜５分を経過させることができる。
ウォッチドッグタイマに対応する保護されたレジスタをセットするためには、TIMED ACCESSマクロの使用を参照すること。
【表３６】
0004698833.tif 000037
【表３７】
0004698833.tif 000038
実行ルーチン
プログラム中の主ルーチンは、種々のモジュールを初期化し、割り込みを使用可能にし、空のアイドルループに入るためだけに作用する（ただし、条件付きでコンパイルされる問題対処法を参照）。
パニックルーチンは、ＩＭＭを停止させる愚かな方法である。割り込みを使用不能にし、始まりの外部データメモリでエラーコードをセットし、スピンする。もっとましなこと（エラーコードを保持するために表示装置をボードに加える？）があるかもしれないが、何も思いつかない。われわれの試験のいずれの段階でもこのルーチンが呼び出されるのを見たことがない。エラーコードは、exec.h.で定義される。
実行ルーチンでは、１対の条件付きコンパイルパラメータが定義されている。これらの二つ、ＡＳＣＩＩおよびＳＥＣＳは、ＡＳＣＩＩまたはＳＥＣＳインタフェースのためのコードが初期化中に実行されるかどうかを制御する。他方のＳＩＭは、Franklinソフトウェアがシリアルポート１割り込みをシミュレートすることができないことに対処するためのコードの包含を制御する。
【表３８】
0004698833.tif 000039
【表３９】
0004698833.tif 000040
【表４０】
0004698833.tif 000041
【図１】
0004698833.tif 000042
【図２】
0004698833.tif 000043
【図３】
0004698833.tif 000044
【図４】
0004698833.tif 000045
【図５】
0004698833.tif 000046
【図６】
0004698833.tif 000047
【図７】
0004698833.tif 000048
【図８】
0004698833.tif 000049
【図９】
0004698833.tif 000050
【図１０】
0004698833.tif 000051
【図１１】
0004698833.tif 000052
【図１２】
0004698833.tif 000053
【図１３】
0004698833.tif 000054