(57)【要約】【課題】シリアル通信処理における割込み回数を低減してＣＰＵの処理負荷を軽減して、高機能の自動販売機を提供する。【解決手段】ＣＰＵ１１，２１，３１，４１と、通信部１３，２３，３３，３４の間に、データ送信時には、ＣＰＵ１１，２１，３１，４１から設定された送信バッファに保持されている送信データに対応するコマンドを選択して通信部１３，２３，３３，４３に出力するとともに、送信データをシリアルのデータに変換して通信部１３，２３，３３，４３に出力させ、送信バッファに保持されている送信データを全て通信部１３，２３，３３，４２に出力した後に送信完了を示す割込み要求をＣＰＵ１１，２１，３１，４１に出力し、データ受信時には、通信部１３，２３，３３，４３が受信したデータを全て受信バッファに保持した後に受信完了を示す割込み要求をＣＰＵ１１，２１，３１，４１に出力するシリアルコントローラを配置する。【選択図】        図１
2006184964.tif 000002
【特許請求の範囲】
【請求項１】
複数の従制御装置と、該複数の従制御装置とシリアルバスによって接続される主制御装置とを備え、主制御装置がシルアル通信を用いて複数の従制御装置を制御する自動販売機において、
前記主制御装置および前記複数の従制御装置は、
シリアル通信処理を含む処理を実行するＣＰＵと、
前記シリアルバスにコマンドおよびデータを含むデータフレームを送信するとともに、前記シリアルバスから受信したデータフレーム内のデータを保持する通信部と、
前記ＣＰＵと通信部との間に介在するシリアルコントローラとを夫々備え、
前記シリアルコントローラは、
前記ＣＰＵから出力されるバイト単位の送信データを保持する送信バッファと、
前記通信部からの受信データを保持する受信バッファと、
前記送信バッファに保持されている送信データをシリアルの送信データに変換するとともに、前記通信部からのシリアルの受信データをバイト単位のデータに変換して前記受信バッファに出力するシリアル・パラレル変換部と、
データ送信時には、前記送信バッファに保持されている送信データに対応するコマンドを選択して前記通信部に出力するとともに、前記シリアル・パラレル変換部によって変換されたシリアルのデータを前記通信部に出力させ、前記送信バッファに保持している送信データを全て前記通信部に出力した後に送信完了を示す割込み要求を前記ＣＰＵに出力し、データ受信時には、前記通信部が受信したデータを全て受信バッファに保持した後に受信完了を示す割込み要求を前記ＣＰＵに出力する送受信制御部と、
を夫々備えることを特徴とする自動販売機。
【請求項２】
前記シリアルコントローラは、
前記送信バッファを前記コマンドに対応付けて複数個備えておき、前記ＣＰＵからの送信データを保持した送信バッファを識別して前記コマンドを選択することを特徴とする請求項１に記載の自動販売機。
【請求項３】
前記送受信制御部は、
前記ＣＰＵから出力される送信データのバイト数をカウントするライト回数カウンタを備え、
前記ライト回数カウンタのカウント値に基づいて前記通信部に全ての送信データを出力したか否かを判定することを特徴とする請求項１または２に記載の自動販売機。
【請求項４】
前記ＣＰＵは、
前記通信部が受信する受信データのバイト数を前記送受信制御部に通知し、
前記送受信制御部は、
前記ＣＰＵから通知されたバイト数に基づいて前記通信部から全てのデータを受信したか否かを判定することを特徴とする請求項１〜３の何れか一つに記載の自動販売機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、主制御部が複数の従制御部を制御する分散制御構成の自動販売機に関するものであり、特に主制御部が複数の従制御部をシリアルバスを介した通信によって制御する自動販売機に関するものである。
【背景技術】
【０００２】
近年、顧客からの要望の多様化によって高機能の自動販売機が要求されている。従来の高機能の自動販売機は、たとえば、商品の金額を表示する金額表示機の機能や商品を選択するための押釦の機能、ルートマンやサービスマンが自動販売機のメンテナンスに用いるリモコンの機能などの各機能を実現するために、各機能に対応して複数の端末コントローラ（従制御部）を設けて制御を行い、これら複数の従制御部をマスターコントローラ（主制御部）からのシリアル通信により制御するようにしている（たとえば、特許文献１参照）。
【０００３】
【特許文献１】特開平３−３５３９３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記特許文献１に記載の従来の自動販売機のように、主制御部がシリアル通信によって複数の従制御部を統括的に制御する場合、主制御部および各従制御部は、各機能をソフトウエアによって実現するＣＰＵとシリアル通信を行なうシリアルバスの通信インタフェース機能を有する通信部とで構成されるのが一般的である。
【０００５】
主制御部および各従制御部のＣＰＵが実行する処理は異なるが、シリアル通信に関する処理は全て同じである。また、主制御部および各従制御部の通信部の機能も全て同じであるので、ここでは主制御部を例に挙げて説明する。
【０００６】
図１０に、従来の自動販売機の主制御部の構成を示すブロック図である。主制御部は、ＣＰＵ１０００と、通信部２０００とを備えている。ＣＰＵ１０００は、図示していない記憶部に記憶されるソフトウエアによって各従制御部をシリアル通信によって統括的に制御する。
【０００７】
ＣＰＵ１０００は、シリアル通信に関する構成部分として、シリアル通信部１１００と、割込みコントローラ１２００とを備えている。
【０００８】
シリアル通信部１１００は、ＣＰＵ１０００によって各従制御部に送信すべきデータが設定される送信レジスタ１１１０、シリアルバスを介して通信部２０００が受信したデータが設定される受信レジスタ１１２０、および送信レジスタ１１１０に設定されたパラレルのデータをシリアルのデータに変換して通信部２０００に出力するとともに、通信部２０００からのシリアルのデータをパラレルのデータに変換して受信レジスタ１１２０に設定するシリアル・パラレル変換部１１３０を備えている。割込みコントローラ１２００は、シリアル通信部１１００、通信部２０００、および図示していないタイマなどのＣＰＵの周辺回路からの割込み要求を制御する機能を備えている。
【０００９】
通信部２０００は、シリアル・パラレル変換部１１３０によって設定されたシリアルのデータを保持するとともに、シリアルバスＩ／Ｆ部２２００によって設定されたシリアルのデータを保持するデータバッファ２１００と、データバッファ２１００に保持されているデータからデータフレームを生成してシリアルバスに送信するとともに、シリアルバスからのデータフレームを受信してデータフレーム内のデータをデータバッファ２１００に設定するシリアルバス・インターフェース部（以下、シリアルバスＩ／Ｆ部とする）２２００とを備えている。
【００１０】
データバッファ２１００は、シリアル通信におけるコマンドに対応するｎ（０＜ｎ，ｎは自然数）個の受信レジスタ２１３０−１〜２１３０−ｎと、ｎ個の送信レジスタ２１４０−１〜２１４０−ｎと、シリアル・パラレル変換部１１３０から出力されたコマンドに基づいてデータを設定する受信レジスタ２１３０−１〜２１３０−ｎを選択するとともに、選択した受信レジスタ２１３０−１〜２１３０−ｎをシリアルバスＩ／Ｆ部２２００に通知する受信レジスタ選択部２１１０と、シリアル・パラレル変換部１１３０から出力されたコマンドに基づいて送信レジスタ２１４０−１〜２１４０−ｎを選択し、選択した送信レジスタ２１４０−１〜２１４０−ｎに設定されているデータを出力する送信レジスタ選択部２１２０とを備えている。
【００１１】
シリアルバスＩ／Ｆ部２２００は、受信レジスタ選択部２１１０によって通知された受信レジスタ２１３０−１〜２１３０−ｎに設定されているデータにコマンドを付加したデータフレームを生成し、生成したデータフレームをシリアルバスに送信する送信部２２１０と、シリアルバスからのデータフレームを受信してコマンドを識別し、識別したコマンドに対応する送信レジスタ２１４０−１〜２１４０−ｎにデータフレーム内のデータを設定する受信部２２２０と、ＣＰＵ１０００への割込み要求を生成する割込み制御部２２３０とを備えている。
【００１２】
つぎに、図１１〜１４のシーケンス図を参照して、従来の主制御部のシリアル通信処理の動作を説明する。まず、図１１のシーケンス図を参照して、主制御部が１バイトのデータをシリアルバスに送信する１バイト送信処理の動作を説明する。
【００１３】
送信すべきデータが発生すると、ＣＰＵ１０００は、送信すべきデータに応じたコマンドをシリアル通信部１１００の送信レジスタ１１１０に設定（コマンドライト）する。送信レジスタ１１１０にコマンドを設定した後、ＣＰＵ１０００は、１バイト送信処理とは異なる処理を実行することが可能であり、必要に応じて処理を実行する。
【００１４】
シリアル通信部１１００は、送信レジスタ１１１０に設定されたコマンドをシリアル・パラレル変換部１１３０によってシリアルのコマンドに変換し、変換したコマンドを通信部２０００に出力（コマンドをシリアル送信）する。
【００１５】
通信部２０００の受信レジスタ選択部２１１０は、シリアル通信部１１００のシリアル・パラレル変換部１１３０から出力されたコマンドを識別して、コマンドに対応する受信レジスタ２１３０−１〜２１３０−ｎを選択する。また、受信レジスタ選択部２１１０は、選択した受信レジスタ２１３０−１〜２１３０−ｎを送信部２２１０に通知する。
【００１６】
一方、シリアル通信部１１００は、シリアル・パラレル変換部１１３０によって送信レジスタ１１１０に設定されたコマンドの出力が終了すると、コマンドの出力が終了したことを示す送信完了の割込み要求をＣＰＵ１０００の割込みコントローラ１２００に出力（データをシリアル送信）する。
【００１７】
割込みコントローラ１２００は、シリアル通信部１１００からの割込み要求を検出してＣＰＵ１０００に通知する。ＣＰＵ１０００は、現在実行している１バイト送信処理とは異なる処理を中断して１バイト送信処理を行なうための割込み処理を実行する。ＣＰＵ１０００は、送信すべきデータをシリアル通信部１１００の送信レジスタ１１１０に設定（データライト）する。ＣＰＵ１０００は、割込み要求によって中断した処理に戻って処理を実行する。
【００１８】
シリアル通信部１１００は、送信レジスタ１１１０に設定されたデータをシリアル・パラレル変換部１１３０によってシリアルのデータに変換し、変換したデータを通信部２０００に出力する。
【００１９】
通信部２０００の受信レジスタ選択部２１１０は、シリアル通信部１１００のシリアル・パラレル変換部１１３０から出力されたデータを先のコマンドによって選択した受信レジスタ２１３０−１〜２１３０−ｎに設定する。受信レジスタ２１３０−１〜２１３０−ｎはコマンドに対応している。送信部２２１０は、受信レジスタ選択部２１１０からの通知によって送信すべきデータが設定された受信レジスタ２１３０−１〜２１３０−ｎを認識し、データが設定された受信レジスタ２１３０ーｎ〜２１３０−ｎが何バイトのデータであるかを認識する。データが設定された受信レジスタ２１３０−１〜２１３０−ｎが１バイトのデータからなるコマンドに対応する場合、送信部２２１０は、シリアル通信部１１００によってデータが設定された受信レジスタ２１３０−１〜２１３０−ｎに対応するコマンドと、受信レジスタ２１３０−１〜２１３０−ｎに設定されているデータとに基づいてデータフレームを生成し、生成したデータフレームをシリアルバスに出力する。
【００２０】
一方、シリアル通信部１１００は、シリアル・パラレル変換部１１３０によって送信レジスタ１１１０に設定されたデータの出力が終了すると、データの出力が終了したことを示す送信完了の割込み要求をＣＰＵ１０００の割込みコントローラ１２００に出力する。
【００２１】
割込みコントローラ１２００は、シリアル通信部１１００からの割込み要求を検出してＣＰＵ１０００に通知する。ＣＰＵ１０００は、現在実行している１バイト送信処理とは異なる処理を中断して１バイト送信処理を行なうための割込み処理を実行する。ＣＰＵ１０００は、１バイト送信処理によってデータを送信した後処理を行なった後に、中断した処理に戻って処理を継続する。
【００２２】
つぎに、図１２のシーケンス図を参照して、主制御部が複数バイトのデータをシリアルバスに送信する複数バイト送信処理の動作を説明する。なお、複数バイト送信処理の動作は、上述した１バイト送信処理の動作を複数回繰り返すものであるので、ＣＰＵ１０００のシリアル通信部１１００と、通信部２０００のデータバッファ２１００およびシリアルバスＩ／Ｆ部２２００の詳細な動作の説明は省略する。
【００２３】
送信すべきデータが発生すると、ＣＰＵ１０００は、送信すべきデータに応じたコマンドをシリアル通信部１１００に設定（コマンドライト）する。シリアル通信部１１００は、設定されたコマンドをシリアルのコマンドに変換して通信部２０００に出力（コマンドをシリアル送信）する。通信部２０００は、通信部２０００から出力されたコマンドを識別して、コマンドに対応する受信レジスタ２１３０−１〜２１３０−ｎを選択する。一方、シリアル通信部１１００は、コマンドの出力が終了すると、送信完了の割込み要求をＣＰＵ１０００に出力する。
【００２４】
シリアル通信部１１００からの割込み要求を受けると、ＣＰＵ１０００は、現在実行している１バイト送信処理とは異なる処理を中断して１バイト送信処理を行なうための割込み処理を実行する。
【００２５】
ＣＰＵ１０００は、送信すべきデータが存在するか否か、すなわちデータの転送が終了したか否かを判定する。ＣＰＵ１０００は、送信すべきデータがなくなるまで、シリアル通信部１１００にコマンドを設定し、送信完了の割込み要求を受けた後に、シリアル通信部１１００にデータを設定する動作を繰り返す。
【００２６】
一方、選択された受信レジスタ２１３０−１〜２１３０−ｎがフルになると（選択された受信レジスタ２１３０−１〜２１３０−ｎに送信すべきデータがすべて設定されると）、送信部２２１０は、シリアル通信部１１００によってデータが設定された受信レジスタ２１３０−１〜２１３０−ｎに対応するコマンドと、受信レジスタ２１３０−１〜２１３０−ｎに設定されているデータとに基づいてデータフレームを生成し、生成したデータフレームをシリアルバスに送信する。
【００２７】
つぎに、図１３のシーケンス図を参照して、主制御部が１バイトのデータをシリアルバスから受信する１バイト受信処理の動作を説明する。通信部２０００の受信部２２２０は、シリアルバスからのデータフレームを受信すると、受信したデータフレーム内のコマンドを識別し、識別したコマンドに対応する送信レジスタ２１４０−１〜２１４０−ｎにデータフレーム内のデータを設定する。受信したデータフレーム内のデータが送信レジスタ２１４０−１〜２１４０−ｎに設定されると、割込み制御部２２３０は、処理すべき受信データがあることを示す割込み要求をＣＰＵ１０００の割込みコントローラ１２００に出力する。
【００２８】
ＣＰＵ１０００の割込みコントローラ１２００は、通信部２０００からの割込み要求を検出してＣＰＵ１０００に通知する。ＣＰＵ１０００は、現在実行している１バイト受信処理とは異なる処理を中断して１バイト受信処理を行なうための割込み処理を実行する。
【００２９】
ＣＰＵ１０００は、受信すべきデータが設定されている送信レジスタ２１４０−１〜２１４０−ｎを選択するためのコマンドをシリアル通信部１１００の送信レジスタ１１１０に設定（コマンドライト）する。送信レジスタ１１１０にコマンドを設定した後、ＣＰＵ１０００は、中断した処理に戻って処理を実行する。
【００３０】
シリアル通信部１１００は、送信レジスタ１１１０に設定されたデータをシリアル・パラレル変換部１１３０によってシリアルのデータに変換し、変換したデータを通信部２０００に出力（コマンドをシリアル送信）する。
【００３１】
シリアル通信部１１００は、シリアル・パラレル変換部１１３０によって送信レジスタ１１１０に設定されたコマンドの出力が終了すると、コマンドの出力が終了したことを示す送信完了の割込み要求をＣＰＵ１０００の割込みコントローラ１２００に出力する。
【００３２】
割込みコントローラ１２００は、シリアル通信部１１００からの割込み要求を検出してＣＰＵ１０００に通知する。ＣＰＵ１０００は、現在実行している１バイト受信処理とは異なる処理を中断して１バイト受信処理を行なうための割込み処理を実行する。
【００３３】
ＣＰＵ１０００は、シリアル通信部１１００の受信レジスタ１１２０に設定されているデータをリードする。このデータリードは、シリアル通信部１１００に通信部２０００からのデータを読み出させるためのものであるので、ＣＰＵ１０００はリードしたデータを読み捨てる。
【００３４】
シリアル通信部１１００のシリアル・パラレル変換部１１３０は、通信部２０００の送信レジスタ選択部２１２０が出力しているデータをパラレルのデータに変換して受信レジスタ１１２０に設定（データをシリアル受信）する。シリアル通信部１１００は、受信レジスタ１１２０にデータを設定した後に、受信完了を示す割込み要求を割込みコントローラ１２００に出力する。
【００３５】
割込みコントローラ１２００は、シリアル通信部１１００からの割込み要求を検出してＣＰＵ１０００に通知する。ＣＰＵ１０００は、現在実行している処理を中断して１バイト受信処理を行なうための割込み処理を実行する。ＣＰＵ１０００は、シリアル通信部１１００の受信レジスタ１１２０に設定されているデータをリードする。このデータは、受信すべきデータ、すなわち有効なデータである。
【００３６】
シリアル通信部１１００のシリアル・パラレル変換部１１３０は、ＣＰＵ１０００によって受信レジスタ１１２０に設定されているデータが読み出されたことにより、通信部２０００の送信レジスタ選択部２１２０が出力しているデータをパラレルのデータに変換して受信レジスタ１１２０に設定（データをシリアル受信）する。シリアル通信部１１００は、受信レジスタ１１２０にデータを設定した後に、受信完了を示す割込み要求を割込みコントローラ１２００に出力する。
【００３７】
割込みコントローラ１２００は、シリアル通信部１１００からの割込み要求を検出してＣＰＵ１０００に通知する。ＣＰＵ１０００は、現在実行している１バイト受信処理とは異なる処理を中断して１バイト受信処理を行なうための割込み処理を実行した後、１バイト受信処理によってデータを受信した後処理を行なう。ＣＰＵ１０００は、中断した処理に戻って処理を継続する。
【００３８】
つぎに、図１４のシーケンス図を参照して、主制御部が複数バイトのデータをシリアルバスから受信する複数バイト受信処理の動作を説明する。なお、複数バイト受信処理の動作は、上述した１バイト受信処理の動作を複数回繰り返すものであるので、ＣＰＵ１０００のシリアル通信部１１００と、通信部２０００のデータバッファ２１００およびシリアルバスＩ／Ｆ部２２００の詳細な動作の説明は省略する。
【００３９】
通信部２０００は、シリアルバスからのデータフレームを受信すると、受信したデータフレーム内のコマンドに対応する送信レジスタ２１４０−１〜２１４０−ｎにデータフレーム内のデータを設定する。通信部２０００は、処理すべき受信データがあることを示す割込み要求をＣＰＵ１０００に出力する。
【００４０】
通信部２０００からの割込み要求を受けると、ＣＰＵ１０００は、現在実行している複数バイト受信処理とは異なる処理を中断して複数バイト受信処理を行なうための割込み処理を実行する。ＣＰＵ１０００は、受信すべきデータが設定されている送信レジスタ２１４０−１〜２１４０を選択するためのコマンドをシリアル通信部１１００に設定（コマンドライト）する。ＣＰＵ１０００は、中断した処理に戻って処理を実行する。
【００４１】
シリアル通信部１１００は、設定されたコマンドをシリアルのコマンドに変換して通信部２０００に出力（コマンドをシリアル送信）し、通信部２０００はシリアル通信部１１００から出力されたコマンドを識別して、コマンドに対応する送信レジスタ２１４０−１〜２１４０−ｎを選択する。一方、シリアル通信部１１００は、コマンドの出力が終了すると、送信完了の割込み要求をＣＰＵ１０００に出力する。
【００４２】
シリアル通信部１１００からの割込み要求を受けると、ＣＰＵ１０００は、現在実行している処理を中断して複数バイト受信処理を行なうための割込み処理を実行する。ＣＰＵ１０００は、シリアル通信部１１００からデータをリードして、シリアル通信部１１００に新たなデータ（コマンドによって選択した送信レジスタ２１４０−１〜２１４０−ｎに設定されているデータ）を設定させる。通信部２０００からのデータの設定（データのシリアル受信）が終了すると、シリアル通信部１１００は、受信完了を示す割込み要求をＣＰＵ１０００に出力する。
【００４３】
シリアル通信部１１００からの割込み要求を受けると、ＣＰＵ１０００は、現在実行している処理を中断して複数バイト受信処理を行なうための割込み処理を実行する。ＣＰＵ１０００は、シリアル通信部１１００からデータをリードする。このデータは有効なデータである。
【００４４】
シリアル通信部１１００は、ＣＰＵ１０００がデータをリードしたことにより、通信部２０００から新たなデータが設定され、データの設定が終了すると受信完了の割込み要求をＣＰＵ１０００に出力する。
【００４５】
シリアル通信部１１００からの割込み要求を受けると、ＣＰＵ１０００は、現在実行している処理を中断して複数バイト受信処理を行なうための割込み処理を実行する。ＣＰＵ１０００は、受信すべきデータが存在するか否か、すなわち、データの受信が終了したか否かを判定する。ＣＰＵ１０００は、データをすべて受信するまで、シリアル通信部１１００にコマンドを設定し、送信完了を示す割込要求を受けた後に、シリアル通信部１１００からデータをリードし、受信完了を示す割込み要求を受けた後に、シリアル通信部１１００から有効なデータをリードする動作を繰り返す。
【００４６】
このように従来の自動販売機の主制御部および各従制御部のＣＰＵ１０００は、通信部２０００を用いてデータフレームを生成してシリアルバスにデータフレームを送信するために、通信部２０００にデータを１バイト単位で設定しなければならず、さらに１バイトのデータを通信部２０００に設定するためにコマンドを出力しなければならない。また、シリアルバスからのデータフレーム内のデータを１バイト受信するために、コマンドの出力、２回のデータのリードを行なわなければならない。そのため、シリアル通信処理に関するＣＰＵ１０００の処理負荷が大きくなるという問題があった。
【００４７】
また、コマンドの設定、データの設定またはデータのリードの度に、シリアル通信部１１００は割込み要求を出力するので、１バイトのデータを送信する場合には２回の割込みが発生し、１バイトのデータを受信する場合には３回の割込みが発生することになる。すなわち、ｍ（０＜ｍ，ｍは自然数）バイトのデータを送信する場合「２×ｍ」回の割込みが発生し、ｍバイトのデータを受信する場合「３×ｍ」回の割込みが発生する。割込みが発生する度に、ＣＰＵ１０００は、現在実行している処理を中断してシリアル通信処理（１バイト送信処理、複数バイト送信処理、１バイト受信処理、または複数バイト受信処理）を行なうための割込み処理を行なわなければならないため、シリアル通信処理およびシリアル通信処理によって中断される他の処理の処理時間が長くなるという問題があった。シリアル通信処理の処理時間が長くなることは主制御部が各従制御部を制御する時間が長くなることを意味する。すなわち、金額表示や押釦によって選択された商品を識別する時間が長くなり、自動販売機の利用者が購入金額の紙幣またはコインを投入してから商品を出力するまでの時間が長くなってしまうという問題が生じる。
【００４８】
本発明は、上記実情に鑑みて、シリアル通信処理における割込み回数を低減してＣＰＵの処理負荷を軽減して、高機能の自動販売機を提供することを目的とする。
【課題を解決するための手段】
【００４９】
上記の目的を達成するために、本発明の請求項１にかかる自動販売機は、複数の従制御装置と、該複数の従制御装置とシリアルバスによって接続される主制御装置とを備え、主制御装置がシルアル通信を用いて複数の従制御装置を制御する自動販売機において、前記主制御装置および前記複数の従制御装置は、シリアル通信処理を含む処理を実行するＣＰＵと、前記シリアルバスにコマンドおよびデータを含むデータフレームを送信するとともに、前記シリアルバスから受信したデータフレーム内のデータを保持する通信部と、前記ＣＰＵと通信部との間に介在するシリアルコントローラとを夫々備え、前記シリアルコントローラは、前記ＣＰＵから出力されるバイト単位の送信データを保持する送信バッファと、前記通信部からの受信データを保持する受信バッファと、前記送信バッファに保持されている送信データをシリアルの送信データに変換するとともに、前記通信部からのシリアルの受信データをバイト単位のデータに変換して前記受信バッファに出力するシリアル・パラレル変換部と、データ送信時には、前記送信バッファに保持されている送信データに対応するコマンドを選択して前記通信部に出力するとともに、前記シリアル・パラレル変換部によって変換されたシリアルのデータを前記通信部に出力させ、前記送信バッファに保持している送信データを全て前記通信部に出力した後に送信完了を示す割込み要求を前記ＣＰＵに出力し、データ受信時には、前記通信部が受信したデータを全て受信バッファに保持した後に受信完了を示す割込み要求を前記ＣＰＵに出力する送受信制御部と、を夫々備えることを特徴とする。
【００５０】
また、本発明の請求項２にかかる自動販売機は、上記請求項１において、前記シリアルコントローラは、前記送信バッファを前記コマンドに対応付けて複数個備えておき、前記ＣＰＵからの送信データを保持した送信バッファを識別して前記コマンドを選択することを特徴とする。
【００５１】
また、本発明の請求項３にかかる自動販売機は、上記請求項１または２において、前記送受信制御部は、前記ＣＰＵから出力される送信データのバイト数をカウントするライト回数カウンタを備え、前記ライト回数カウンタのカウント値に基づいて前記通信部に全ての送信データを出力したか否かを判定することを特徴とする。
【００５２】
また、本発明の請求項４にかかる自動販売機は、上記請求項１〜３のいずれか一つにおいて、前記ＣＰＵは、前記通信部が受信する受信データのバイト数を前記送受信制御部に通知し、前記送受信制御部は、前記ＣＰＵから通知されたバイト数に基づいて前記通信部から全てのデータを受信したか否かを判定することを特徴とする。
【発明の効果】
【００５３】
本発明にかかる自動販売機は、主制御装置および複数の従制御装置の夫々のＣＰＵと通信部との間に、データ送信時には、ＣＰＵから設定された送信バッファに保持されている送信データに対応するコマンドを選択して通信部に出力するとともに、送信データをシリアルのデータに変換して通信部に出力させ、送信バッファに保持されている送信データを全て通信部に出力した後に送信完了を示す割込み要求をＣＰＵに出力し、データ受信時には、通信部が受信したデータを全て受信バッファに保持した後に受信完了を示す割込み要求をＣＰＵに出力するシリアルコントローラを配置したので、シリアル通信の送受信時に発生するＣＰＵへの割込み要求の回数を低減してＣＰＵの処理負荷を軽減し、シリアル通信とは異なる処理の処理時間を短縮することができる自動販売機を得ることができるという効果を奏する。
【発明を実施するための最良の形態】
【００５４】
以下に添付図面を参照して、本発明に係る自動販売機の好適な実施例を詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００５５】
図１は、この発明にかかる自動販売機の本実施例の構成を示すブロック図である。図１に示した自動販売機は、自動販売機内の各構成部分を統括的に制御する主制御部１（特許請求の範囲でいうところの主制御装置）と、ルートマンやサービスマンが自動販売機のメンテナンスに用いるリモコン２と、商品の金額を表示する金額表示機３と、商品を選択するための押釦４とが、シリアルバス５に接続されている。なお、リモコン２、金額表示機３、および押釦４が特許請求の範囲でいうところの従制御装置である。
【００５６】
主制御部１は、ＣＰＵ１１と、シリアルコントローラ１２と、通信部１３とを備えている。ＣＰＵ１１とシリアルコントローラ１２とはバス接続され、シリアルコントローラ１２と通信部１３とはシリアルに接続されている。
【００５７】
ＣＰＵ１１は、割込みコントローラ１１１を有し、図示していない記憶部に記憶されているソフトウエアによって各種処理を実行して、シリアルコントローラ１２および通信部１３を介して、リモコン２、金額表示機３、および押釦４をシリアル通信によって制御する。割込みコントローラ１１１は、シリアルコントローラ１２、通信部１３、および図示していないタイマなどからの割込み要求を検出して、ＣＰＵ１１が実行するソフトウエアの各種処理を制御する。
【００５８】
シリアルコントローラ１２は、ＣＰＵ１１がシリアルバス５を介してリモコン２、金額表示機３、および押釦４とシリアル通信を行なう際のデータを通信部１３に転送するとともに、通信部１３が受信したデータをＣＰＵ１１に転送する。
【００５９】
通信部１３は、シリアルコントローラ１２からのデータにコマンドを付加したデータフレームを生成してシリアルバス５に送信するとともに、シリアルバス５からデータフレームを受信し、受信したデータフレーム内のデータをシリアルコントローラ１２に送信する。
【００６０】
リモコン２は、ＣＰＵ２１と、シリアルコントローラ２２と、通信部２３とを備えている。ＣＰＵ２１とシリアルコントローラ２２とはバス接続され、シリアルコントローラ２２と通信部２３とはシリアルに接続されている。
【００６１】
ＣＰＵ２１は、割込みコントローラ２１１を有し、図示していない記憶部に記憶されているソフトウエアによって、図示していない入力部を介して入力された指示や主制御部１からの指示による処理を実行する。ＣＰＵ２１が実行する処理は、たとえば、入力部から入力された指示をシリアルコントローラ２２および通信部２３を介して主制御部１に通知するとともに、図示していない表示部に入力部から入力されたデータや主制御部１から指示されたデータを表示するなどである。
【００６２】
割込みコントローラ２１１は、シリアルコントローラ２２、通信部２３、および図示していないタイマなどからの割込み要求を検出して、ＣＰＵ２１が実行するソフトウエアの各種処理を制御する。
【００６３】
シリアルコントローラ２２は、ＣＰＵ２１がシリアルバス５を介して主制御部１とシリアル通信を行なう際のデータを通信部２３に転送するとともに、通信部２３が受信したデータをＣＰＵ２１に転送する。
【００６４】
通信部２３は、シリアルコントローラ２２からのデータにコマンドを付加したデータフレームを生成してシリアルバス５に送信するとともに、シリアルバス５からデータフレームを受信し、受信したデータフレーム内のデータをシリアルコントローラ２２に送信する。
【００６５】
金額表示機３は、ＣＰＵ３１と、シリアルコントローラ３２と、通信部３３とを備えている。ＣＰＵ３１とシリアルコントローラ３２とはバス接続され、シリアルコントローラ３２と通信部３３とはシリアルに接続されている。
【００６６】
ＣＰＵ３１は、割込みコントローラ３１１を有し、図示していない記憶部に記憶されているソフトウエアによって、自動販売機の金額表示に関する処理を実行する。ＣＰＵ３１が実行する処理は、主制御部１からの指示によって図示していない表示部に自動販売機に投入された金額を表示するなどである。
【００６７】
割込みコントローラ３１１は、シリアルコントローラ３２、通信部３３、および図示していないタイマなどからの割込み要求を検出して、ＣＰＵ３１が実行するソフトウエアの各種処理を制御する。
【００６８】
シリアルコントローラ３２は、ＣＰＵ３２がシリアルバス５を介して主制御部１とシリアル通信を行なう際のデータを通信部３３に転送するとともに、通信部３３が受信したデータをＣＰＵ３１に転送する。
【００６９】
通信部３３は、シリアルコントローラ３２からのデータにコマンドを付加したデータフレームを生成してシリアルバス５に送信するとともに、シリアルバス５からデータフレームを受信し、受信したデータフレーム内のデータをシリアルコントローラ３２に送信する。
【００７０】
押釦４は、ＣＰＵ４１と、シリアルコントローラ４２と、通信部４３と、スイッチ（以下、ＳＷとする）４４と、ＬＥＤ（Light Emitting Diode）４５とを備えている。ＣＰＵ４１とシリアルコントローラ４２とはバス接続され、シリアルコントローラ４２と通信部３３とはシリアルに接続されている。
【００７１】
ＣＰＵ４１は、割込みコントローラ４１１を有し、図示していない記憶部に記憶されているソフトウエアによって、押釦４に関する処理を実行する。ＣＰＵ４１が実行する処理は、たとえば、主制御部１からの指示によってＬＥＤ４５を発光させたり、ＳＷ４４の状態を監視して主制御部に通知するなどの処理である。
【００７２】
割込みコントローラ４１１は、シリアルコントローラ４２、通信部４３、ＳＷ４４、および図示していないタイマなどからの割込み要求を検出して、ＣＰＵ４１が実行するソフトウエアの各種処理を制御する。たとえば、ＳＷ４４が、押釦４が押された場合にオンになり、押釦４が押されていない場合にはオフになるとする。割込みコントローラ４１１は、ＳＷ４４がオンになると割込要求が発生したとして、ＣＰＵ４１にＳＷ４４からの割込みが発生したことを通知する。この通知により、ＣＰＵ４１は、押釦４が押されたことを主制御部１に通知するデータの転送処理を実行する。
【００７３】
シリアルコントローラ４２は、ＣＰＵ４１がシリアルバス５を介して主制御部１とシリアル通信を行なう際のデータを通信部４３に転送するとともに、通信部４３が受信したデータをＣＰＵ４１に転送する。
【００７４】
通信部４３は、シリアルコントローラ４２からのデータにコマンドを付加したデータフレームを生成してシリアルバス５に送信するとともに、シリアルバス５からデータフレームを受信し、受信したデータフレーム内のデータをシリアルコントローラ４２に送信する。
【００７５】
シリアルコントローラ１２，２２，３２，４２は、すべて同じ機能を備えている。図２に示したシリアルコントローラ１２の構成を示すブロック図を参照して、シリアルコントローラの機能を説明する。
【００７６】
シリアルコントローラ１２は、シリアル通信におけるコマンドの数ｎ（０＜ｎ，ｎは自然数）に対応する送信バッファ１２１−１〜１２１−ｎおよび受信バッファ１２２−１〜１２２−ｎと、シリアル・パラレル変換部１２３と、送信レジスタ１２４と、コマンド群レジスタ１２５と、セレクタ１２６と、受信レジスタ１２７と、送受信制御部１２８とを備えている。
【００７７】
送信バッファ１２１−１〜１２１−ｎは、ＣＰＵ１１からのデータを保持する。シリアル・パラレル変換部１２３は、送受信制御部１２８からの選択指示に基づいて送信バッファ１２１−１〜１２１−ｎを選択し、選択した送信バッファ１２１−１〜１２１−ｎに保持されているデータをシリアルのデータに変換して送信レジスタ１２４に出力する。また、シリアル・パラレル変換部１２３は、受信レジスタ１２７に保持されているデータをパラレルのデータに変換し、変換したデータを送受信制御部１２８からの選択指示に基づいて選択した受信バッファ１２２−１〜１２２−ｎに出力する。
【００７８】
送信レジスタ１２４は、シリアル・パラレル変換部１２３から出力されたデータを保持し、セレクタ１２６に出力する。コマンド群レジスタ１２５は、シリアル通信におけるコマンドを記憶しており、送受信制御部１２８からコマンド選択指示に基づいて記憶しているコマンドをセレクタ１２６に出力する。
【００７９】
セレクタ１２６は、送受信制御部１２８からの選択指示に基づいて送信レジスタ１２４の出力、またはコマンド群レジスタ１２５の出力を選択して通信部１３に出力する。
【００８０】
受信レジスタ１２７は、通信部１３からのデータを保持する。受信バッファ１２２−１〜１２２−ｎは、シリアル・パラレル変換部１２３から出力されたデータを保持するとともに、ＣＰＵ１１からの要求によって保持しているデータをＣＰＵ１１に出力する。
【００８１】
送受信制御部１２８は、送信タイミング生成部１２８２、ライト回数カウンタ１２８１、コマンド切替部１２８５、受信タイミング生成部１２８３、受信回数カウンタ１２８４、および割込み生成部１２８６を備えている。
【００８２】
送信タイミング生成部１２８２は、送信バッファ１２１−１〜１２１−ｎに保持されているデータを通信部１３に送信する際のタイミングを生成する。ライト回数カウンタ１２８１は、ＣＰＵ１１から送信バッファ１２１−１〜１２１−ｎに設定されたデータのバイト数をカウントする。コマンド切替部１２８５は、送信バッファ１２１−１〜１２１−ｎに対応するコマンドを選択するコマンド選択指示をコマンド群レジスタ１２５に出力する。
【００８３】
受信タイミング生成部１２８３は、通信部１３からのデータを受信バッファ１２２−１〜１２２−ｎに保持させる受信時のタイミングを生成する。受信回数カウンタ１２８４は、通信部１３から受信したデータ、すなわち受信バッファ１２２−１〜１２２−ｎが保持したデータのバイト数をカウントする。
【００８４】
割込み生成部１２８６は、送信バッファ１２１−１〜１２１−ｎに保持されたデータを通信部１３に送信した場合、または通信部１３からのデータを受信バッファ１２２−１〜１２２−ｎに保持した場合、すなわち、通信部１３とのデータ転送が完了した際に、処理完了を示す割込み要求を生成してＣＰＵ１１の割込みコントローラ１１１に出力する。
【００８５】
通信部１３，２３、３３，４３は、すべて同じ機能を備えている。図３に示した通信部１３の構成を示すブロック図を参照して、通信部の機能を説明する。
【００８６】
通信部１３は、シリアルコントローラ１２から出力されたシリアルのデータを保持するとともに、シリアルバス５から受信したシリアルのデータを保持するデータバッファ１３０と、データバッファ１３０に保持されているデータからデータフレームを生成してシリアルバス５に送信するとともに、シリアルバス５からのデータフレームを受信してデータフレーム内のデータをデータバッファ１３０に保持させるシリアルバス・インターフェース部（以下、シリアルバスＩ／Ｆ部とする）１３１とを備えている。
【００８７】
データバッファ１３０は、シリアル通信におけるコマンドの数ｎ（０＜ｎ，ｎは自然数）に対応した受信レジスタ１３０３−１〜１３０３−ｎと、送信レジスタ１３０４−１〜１３０４−ｎと、シリアルコントローラ１２から出力されたコマンドに基づいてデータを保持する受信レジスタ１３０３−１〜１３０３−ｎを選択するとともに、選択した受信レジスタ１３０３−１〜１３０３−ｎをシリアルバスＩ／Ｆ部１３１に通知する受信レジスタ選択部１３０１と、シリアルコントローラ１２から出力されたコマンドに基づいて選択した送信レジスタ１３０４−１〜１３０４−ｎが保持しているデータを出力する送信レジスタ選択部１３０２とを備えている。
【００８８】
シリアルバスＩ／Ｆ部１３１は、受信レジスタ選択部１３０１によって通知された受信レジスタ１３０３−１〜１３０３−ｎに保持されているデータに対応するコマンドを付加したデータフレームを生成し、生成したデータフレームをシリアルバス５に送信する送信部１３１１と、シリアルバス５からのデータフレームを受信してコマンドを識別し、識別したコマンドに対応する送信レジスタ１３０４−１〜１３０４−ｎにデータフレーム内のデータを保持させるとともに、識別したコマンドに対応する送信レジスタ１３０４−１〜１３０４−ｎの情報を含む選択通知を送信レジスタ選択部１３０２に出力する受信部１３１２と、ＣＰＵ１１への処理を要求する割込み要求を生成する割込み制御部１３１３とを備えている。
【００８９】
つぎに、図４および図５のフローチャートを参照して、シリアル通信の動作を説明する。なお、主制御部１のＣＰＵ１１、リモコン２のＣＰＵ２１、金額表示機３のＣＰＵ３１、および押釦４のＣＰＵ４１が実行する処理は異なるが、シリアル通信に関する処理はすべて同じであるので、ここでは、主制御部１を例に挙げてシリアル通信の動作を説明する。
【００９０】
まず、図４のフローチャートを参照して、シリアルバス５にデータフレームを送信する送信処理の動作を説明する。送信すべきデータが発生すると、ＣＰＵ１１は、送信データをシリアルコントローラ１２の送信バッファ１２１−１〜１２１−ｎに設定する（ステップＳ１００，Ｓ１０１）。具体的には、ＣＰＵ１１とシリアルコントローラ１２の送信バッファ１２１−１〜１２１−ｎとは、バス接続されており、ＣＰＵ１１は送信バッファ１２１−１〜１２１−ｎをメモリとして認識している。ＣＰＵ１１は、一般的なメモリへのデータライトと同様に、チップセレクトによって送信バッファ１２１−１〜１２１−ｎを選択し、送信バッファ１２１−１〜１２１−ｎのアドレスをアドレスバスに出力し、送信バッファ１２１−１〜１２１−ｎに設定する送信データをデータバスに出力して、送信データに付加するコマンドに対応する送信バッファ１２１−１〜１２１−ｎに送信データを設定する。
【００９１】
送受信制御部１２８は、ＣＰＵ１１からのチップセレクトによってＣＰＵ１１が送信データを設定した送信バッファ１２１−１〜１２１−ｎを識別する。送信データが設定された送信バッファ１２１−１〜１２１−ｎが１バイトのデータからなるコマンドに対応するものであるのか、複数バイトのデータからなるコマンドに対応するものなのかを判定する。送信データが設定された送信バッファ１２１−１〜１２１−ｎが複数バイトのデータからなるコマンドに対応する場合、送受信制御部１２８は、ライト回数カウンタ１２８１の値をカウントアップする（ステップＳ１０２）。
【００９２】
ＣＰＵ１１は、全ての送信データを送信バッファ１２１−１〜１２１−ｎに設定するまで、１バイト単位で送信バッファ１２１−１〜１２１−ｎに設定し、送受信制御部１２８は、送信データが設定された送信バッファ１２１−１〜１２１−ｎが複数バイトのデータからなるコマンドに対応する場合にはライト回数カウンタ１２８１の値をカウントアップする動作を繰り返す（ステップＳ１０１〜Ｓ１０３）。
【００９３】
ＣＰＵ１１は、全ての送信データを送信バッファ１２１−１〜１２１−ｎに設定すると、送信を許可すること示す送信許可通知をシリアルコントローラ１２の送受信制御部１２８に出力する（ステップＳ１０４）。
【００９４】
送信許可通知を受けると、送受信制御部１２８は、送信タイミング生成部１２８２を起動して送信データが設定された送信バッファ１２１−１〜１２１−ｎからシリアル・パラレル変換部１２３への送信データ出力や、シリアル・パラレル変換部１２３のデータ変換、送信レジスタ１２４へのデータ設定など、送信バッファ１２１−１〜１２１−ｎに設定されているデータを通信部に送信する際のタイミングを生成させて、通信部１３へのデータ転送を開始する。
【００９５】
コマンド切替部１２８５は、コマンド群レジスタ１２５からコマンドを選択して通信部１３に出力する（ステップＳ１０５）。具体的には、送受信制御部１２８は、送信データが設定された送信バッファ１２１−１〜１２１−ｎを認識している。送受信制御部１２８は、コマンド切替部１２８５に送信データが設定された送信バッファ１２１−１〜１２１−ｎを通知する。送信バッファ１２１−１〜１２１−ｎはコマンドに対応しているので、コマンド切替部１２８５は、送信データが設定された送信バッファ１２１−１〜１２１−ｎによってコマンドを選択し、選択したコマンドの出力するコマンド選択指示をコマンド群レジスタ１２５とセレクタ１２６とに出力する。コマンド群レジスタ１２５は、コマンド選択指示に基づいてコマンド切替部１２８５によって選択されたコマンドをセレクタ１２６に出力する。送信タイミング生成部１２８２は、コマンドを通信部１３に出力する間、コマンド群レジスタ１２５からの出力を選択する選択指示をセレクタ１２６に出力している。したがって、セレクタ１２６は、コマンド群レジスタ１２５から出力されたコマンドを選択して通信部１３に出力する。
【００９６】
通信部１３の受信レジスタ選択部１３０１は、シリアルコントローラ１２から入力されたコマンドを識別して、コマンドに対応する受信レジスタ１３０３−１〜１３０３−ｎを選択する（ステップＳ１０６）。また、受信レジスタ選択部１３０１は、選択した受信レジスタ１３０３−１〜１３０３−ｎを送信部１３１１に通知する。
【００９７】
シリアルコントローラ１２の送信タイミング生成部１２８２は、送信バッファ１２１−１〜１２１−ｎ、シリアル・パラレル変換部１２３、および送信レジスタ１２４を制御して、送信バッファ１２１−１〜１２１−ｎに設定されているデータを送信レジスタ１２４に設定する（ステップＳ１０７）。具体的には、コマンドを通信部１３に出力した後、送信タイミング生成部１２８２は、送信データが設定された送信バッファ１２１−１〜１２１−ｎに設定されたデータを出力させる。シリアル・パラレル変換部１２３は、送信バッファ１２１−１〜１２１−ｎから出力された送信データをシリアルのデータに変換して送信レジスタ１２４に設定する。
【００９８】
送信タイミング生成部１２８２は、送信レジスタ１２４およびセレクタ１２６を制御して送信レジスタ１２４に設定されたデータを通信部１３に出力する（ステップＳ１０８）。具体的には、送信タイミング生成部１２８２は、送信レジスタ１２４に設定されたデータを出力させる。また、送信タイミング生成部１２８２は、送信レジスタ１２４の出力を選択する選択指示をセレクタ１２６に出力する。これにより、セレクタ１２６は、送信レジスタ１２４から出力されたデータを選択して、送信レジスタ１２４に設定されたデータを通信部１３に出力する。
【００９９】
通信部１３の受信レジスタ選択部１３０１は、シリアルコントローラ１２から受信したデータを先のコマンドによって選択した受信レジスタ１３０３−１〜１３０３−ｎに設定する（ステップＳ１０９）。
【０１００】
シリアルコントローラ１２の送信タイミング生成部１２８２は、ＣＰＵ１１から送信バッファ１２１−１〜１２１−ｎに設定されたデータを全て通信部１３に出力するまで、送信バッファ１２１−１〜１２１−ｎ、シリアル・パラレル変換部１２３、送信レジスタ１２４、およびセレクタ１２６を制御して、送信バッファ１２１−１〜１２１−ｎに設定されたデータをシリアルのデータに変換して送信レジスタ１２４に設定し、セレクタ１２６を介して送信レジスタ１２４に設定されたデータを通信部１３に出力し、通信部１３の受信レジスタ選択部１３０１は、コマンドによって選択した受信レジスタ１３０３−１〜１３０３−ｎにシリアルコントローラ１２からのデータを設定する動作を繰り返す（ステップＳ１０７〜Ｓ１１０）。送信タイミング生成部１２８２は、クロックをカウントするなどして通信部１３に出力したデータのバイト数を認識して、ライト回数カウンタ１２８１のカウント値と比較することで、ＣＰＵ１１から送信バッファ１２１−１〜１２１−ｎに設定されたデータをすべて通信部１３に出力したか否かを判定すればよい。
【０１０１】
ＣＰＵ１１から送信バッファ１２１−１〜１２１−ｎに設定されたデータを全て通信部１３に出力すると、送信タイミング生成部１２８２は、データ転送が終了したことを割込み生成部１２８６に通知する。割込み生成部１２８６は、送信完了を示す割込み要求を生成してＣＰＵ１１の割込みコントローラ１１１に出力する（ステップＳ１１１）。
【０１０２】
一方、選択された受信レジスタ１３０３−１〜１３０３−ｎがフルになると（選択された受信レジスタ１３０３−１〜１３０３−ｎに送信すべきデータが設定されると）、送信部１３１１は、選択された受信レジスタ１３０３−１〜１３０３−ｎに対応するコマンドと受信レジスタ１３０３−１〜１３０３−ｎに設定されているデータとに基づいてデータフレームを生成し、生成したデータフレームをシリアルバス５に出力する（ステップＳ１１２）。
【０１０３】
なお、ＣＰＵ１１は、全ての送信データを送信バッファ１２１−１〜１２１−ｎに設定すると、送信を許可すること示す送信許可通知をシリアルコントローラ１２の送受信制御部１２８に出力するステップＳ１０４は、送信すべきデータが１バイトの場合には、省略してもよい。この場合、シリアルコントローラ１２の送受信制御部１２８は、ＣＰＵ１１によって選択された受信バッファ１２２−１〜１２２−ｎに対応するコマンドが、１バイトのデータによるコマンドの場合には、受信バッファ１２２−１〜１２２−ｎにデータが設定されたことを確認した後に、通信部１３への転送処理を実行するようにすればよい。
【０１０４】
つぎに、図５のフローチャートを参照して、シリアルバス５からデータフレームを受信する受信処理の動作を説明する。通信部１３の受信部１３１２は、シリアルバス５からのデータフレームを受信すると、受信したデータフレーム内のコマンドを識別し、識別したコマンドに対応する送信レジスタ１３０４−１〜１３０４−ｎにデータフレーム内のデータを保持させる。受信したデータフレーム内のデータが送信レジスタ１３０４−１〜１３０４−ｎに保持されると、割込み制御部１３１３は、処理すべきデータがあることを示す割込み要求をＣＰＵ１１の割込みコントローラ１１１に出力する。
【０１０５】
ＣＰＵ１１の割込みコントローラ１１１は、割込み要求を検出してＣＰＵ１１に通知する。割込みコントローラ１１から通信部１３からの割込み要求を受けると、ＣＰＵ１１は、受信すべきデータが設定されている通信部１３の送信レジスタ１３０４−１〜１３０４−ｎを選択するためのコマンドをシリアルコントローラ１２の送信バッファ１２１−１〜１２１−ｎに設定する（ステップＳ２００，Ｓ２０１）。ＣＰＵ１１は、受信すべきデータのバイト数をシリアルコントローラ１２の受信回数カウンタ１２８４に設定する（ステップＳ２０２）。
【０１０６】
シリアルコントローラ１２の送受信制御部１２８は、送信タイミング生成部１２８２を起動して送信データが設定された送信バッファ１２１−１〜１２１−ｎからシリアル・パラレル変換部１２３への送信データ出力や、シリアル・パラレル変換部１２３のデータ変換、送信レジスタ１２４へのデータ設定など、送信バッファ１２１−１〜１２１−ｎに設定されているデータを通信部に送信する際のタイミングを生成させる。
【０１０７】
コマンド切替部１２８５は、コマンド群レジスタ１２５からコマンドを選択して通信部１３に出力する（ステップＳ２０３）。具体的には、送受信制御部１２８は、送信データが設定された送信バッファ１２１−１〜１２１−ｎを認識している。送受信制御部１２８は、コマンド切替部１２８５に送信データが設定された送信バッファ１２１−１〜１２１−ｎを通知する。送信バッファ１２１−１〜１２１−ｎはコマンドに対応しているので、コマンド切替部１２８５は、送信データが設定された送信バッファ１２１−１〜１２１−ｎによってコマンドを選択し、選択したコマンドの出力するコマンド選択指示をコマンド群レジスタ１２５とセレクタ１２６とに出力する。コマンド群レジスタ１２５は、コマンド選択指示に基づいてコマンド切替部１２８５によって選択されたコマンドをセレクタ１２６に出力する。送信タイミング生成部１２８２は、コマンドを通信部１３に出力する間、コマンド群レジスタ１２５からの出力を選択する選択指示をセレクタ１２６に出力している。したがって、セレクタ１２６は、コマンド群レジスタ１２５から出力されたコマンドを選択して通信部１３に出力する。
【０１０８】
通信部１３の送信レジスタ１２４は、シリアルコントローラ１２から入力されたコマンドを識別して、コマンドに対応する送信レジスタ１３０４−１〜１３０４−ｎを選択する（ステップＳ２０４）。これにより、通信部１３は選択された送信レジスタ１３０４−１〜１３０４−ｎに設定されているデータの出力を開始して、出力したデータをシリアルコントローラ１２の受信レジスタ１２７に設定する（ステップＳ２０５）。
【０１０９】
シリアルコントローラ１２の送受信制御部１２８は、送信タイミング生成部１２８２を停止して、受信タイミング生成部１２８３を起動して、通信部１３から出力されるデータを受信レジスタ１２７に設定させたり、シリアル・パラレル変換部１２３のデータ変換、ＣＰＵ１１からのコマンドライトによって選択された受信バッファ１２２−１〜１２２−ｎにシリアル・パラレル変換部１２３によって変換されたデータを設定するなどのタイミングを生成させて、通信部１３からのデータの受信を開始する。
【０１１０】
受信タイミング生成部１２８３は、受信レジスタ１２７、シリアル・パラレル変換部１２３および送信バッファ１２１−１〜１２１−ｎを制御して、受信レジスタ１２７に設定されたデータをパラレルのデータに変換して選択されている送信バッファ１２１−１〜１２１−ｎに設定する（ステップＳ２０６）。
【０１１１】
シリアルコントローラ１２の受信タイミング生成部１２８３は、受信回数カウンタ１２８４に設定されているバイト数のデータを選択された送信バッファ１２１−１〜１２１−ｎに設定するまで、受信レジスタ１２７に設定されているデータを変換して選択された送信バッファ１２１−１〜１２１−ｎに設定する動作を繰り返す（ステップＳ２０５〜Ｓ２０７）。送信タイミング生成部１２８２は、クロックをカウントするなどして選択された送信バッファ１２１−１〜１２１−ｎに設定したデータのバイト数を認識して、受信回数カウンタ１２８４の値と比較することで、通信部１３から全てのデータを受信したか否かを判定すればよい。
【０１１２】
通信部１３から受信回数カウンタ１２８４に設定されたバイト数のデータを受信すると、受信タイミング生成部１２８３は、データ受信が完了したことを割込み生成部１２８６に通知する。割込み生成部１２８６は、受信完了を示す割込み要求を生成してＣＰＵ１１の割込みコントローラ１１１に出力する（ステップＳ２０８）。
【０１１３】
ＣＰＵ１１の割込みコントローラ１１１は、シリアルコントローラ１２からの割込み要求を検出してＣＰＵ１１に通知する。ＣＰＵ１１は、受信バッファ１２２−１〜１２２−ｎに設定されているデータをリードする（ステップＳ２０９）。具体的には、ＣＰＵ１１とシリアルコントローラ１２の受信バッファ１２２−１〜１２２−ｎとは、バス接続されており、ＣＰＵ１１は受信バッファ１２２−１〜１２２−ｎをメモリとして認識している。ＣＰＵ１１は、一般的なメモリからのデータリードと同様に、チップセレクトによって受信バッファ１２２−１〜１２２−ｎを選択し、受信バッファ１２２−１〜１２２−ｎのアドレスをアドレスバスに出力して受信バッファ１２２−１〜１２２−ｎからデータを出力させてデータをリードする。
【０１１４】
なお、ＣＰＵ１１がシリアルコントローラ１２の受信回数カウンタ１２８４に受信するデータのバイト数を設定するステップＳ２０２は、受信すべきデータが１バイトの場合には省略してもよい。この場合、シリアルコントローラ１２の送受信制御部１２８は、ＣＰＵ１１のコマンドライトによって選択された送信バッファ１２１−１〜１２１−ｎに対応するコマンドが、１バイトのデータによるコマンドか否かを判定し、１バイトのデータによるコマンドの場合には１バイトのデータを受信した後に、割込み生成部１２８６に受信が完了したことを通知するようにすればよい。
【０１１５】
また、ＣＰＵ１１がコマンドをシリアルコントローラ１２の送信バッファ１２１−１〜１２１−ｎに設定するステップＳ２０１は、受信すべきデータが複数バイトの場合には省略してもよい。この場合、ＣＰＵ１１は、受信すべきデータのバイト数をシリアルコントローラ１２の受信回数カウンタ１２８４に設定するＳ２０３において、選択すべき送信レジスタ１３０４−１〜１３０４−ｎに対応する送信バッファ１２１−１〜１２１−ｎに受信すべきデータのバイト数を設定する。シリアルコントローラ１２の送受信制御部１２８は、データが設定された送信バッファ１２１−１〜１２１−ｎが１バイトのコマンドではない場合、設定されたデータが受信すべきデータのバイト数であると判断して、受信回数カウンタ１２８４に設定する。これにより、複数バイト受信において、ＣＰＵ１１がコマンドを出力する動作を省略することができる。
【０１１６】
つぎに、図６〜図９のシーケンス図を参照して、ＣＰＵ１１、シリアルコントローラ１２、および通信部１３におけるデータの流れを説明する。まず、図６のシーケンス図を参照して１バイト送信処理のデータの流れを説明する。ＣＰＵ１１は、送信すべきデータをシリアルコントローラ１２に設定（データライト）する。ＣＰＵ１１は、１バイト送信処理とは異なる処理を実行することが可能であり、必要に応じて処理を実行する。
【０１１７】
シリアルコントローラ１２は、ＣＰＵ１１によってデータが設定された送信バッファ１２１−１〜１２１−ｎに対応したコマンドをシリアルのコマンドに変換して通信部１３に出力（コマンドをシリアル送信）する。シリアルコントローラ１２は、ＣＰＵ１１によってデータが設定された送信バッファ１２１−１〜１２１−ｎのデータをシリアルのデータに変換して通信部１３に出力（データをシリアル送信）する。
【０１１８】
通信部１３は、シリアルコントローラ１２から出力されたコマンドに対応する受信レジスタ１３０３−１〜１３０３−ｎのデータにコマンドを付加したデータフレームを生成してシリアルバス５に出力する。
【０１１９】
一方、シリアルコントローラ１２は、ＣＰＵ１１によってデータが設定された送信バッファ１２１−１〜１２１−ｎのデータを通信部１３に出力した後に、送信完了の割込み要求をＣＰＵ１１に出力する。ＣＰＵ１１は、送信完了の割込み要求によって、現在実行している処理から１バイト送信処理を実行するための割込み処理を実行する。
【０１２０】
このようにこの発明にかかる自動販売機のシリアル通信における１バイト送信処理では、シリアルコントローラ１２にコマンドに対応した送信バッファ１２１−１〜１２１−ｎを設けて、ＣＰＵ１１がデータを設定した送信バッファ１２１−１〜１２１−ｎに基づいてコマンドを選択して通信部１３に出力するようにしているので、ＣＰＵ１１がコマンドを出力する必要がなくなり、割込み回数が１回となっている。すなわち、図１１のシーケンス図を参照して説明した従来の自動販売機のシリアル通信における１バイト送信処理と比較して割込み回数を半分にしている。
【０１２１】
つぎに、図７のシーケンス図を参照して複数バイト送信処理のデータの流れを説明する。ＣＰＵ１１は、送信すべきデータを１バイト単位でシリアルコントローラ１２に設定（データライト）する。送信すべきデータがｍ（０＜ｍ，ｍは自然数）バイトの場合、ＣＰＵ１１は、データライトをｍ回繰り返す。全てのデータをシリアルコントローラ１２に設定した後、ＣＰＵ１１は、送信を許可することを示す送信許可通知をシリアルコントローラ１２に出力する。ＣＰＵ１１は、複数バイト送信処理とは異なる処理を実行することが可能であり、必要に応じて処理を実行する。
【０１２２】
送信許可通知を受けると、シリアルコントローラ１２は、ＣＰＵ１１によってデータが設定された送信バッファ１２１−１〜１２１−ｎに対応したコマンドをシリアルのコマンドに変換して通信部１３に出力（コマンドをシリアル送信）する。シリアルコントローラ１２は、ＣＰＵ１１によってデータが設定された送信バッファ１２１−１〜１２１−ｎのデータをシリアルのデータに変換して通信部１３に出力（データをシリアル送信）する。
【０１２３】
通信部１３は、シリアルコントローラ１２から出力されたコマンドに対応する受信レジスタ１３０３−１〜１３０３−ｎのデータにコマンドを付加したデータフレームを生成してシリアルバス５に出力する。
【０１２４】
一方、シリアルコントローラ１２は、ＣＰＵ１１によってデータが設定された送信バッファ１２１−１〜１２１−ｎのデータを通信部１３に出力した後に、送信完了の割込み要求をＣＰＵ１１に出力する。ＣＰＵ１１は、送信完了の割込み要求によって、現在実行している処理から複数バイト送信処理を実行するための割込み処理を実行する。
【０１２５】
このようにこの発明にかかる自動販売機のシリアル通信における複数バイト送信処理では、シリアルコントローラ１２にコマンドに対応した送信バッファ１２１−１〜１２１−ｎを設けて、ＣＰＵ１１がデータを設定した送信バッファ１２１−１〜１２１−ｎに基づいてコマンドを選択して通信部１３に出力するようにしているので、ＣＰＵ１１がコマンドを出力する必要がなくなる。
【０１２６】
また、ＣＰＵ１１は、送信すべきｍバイトのデータを全てシリアルコントローラ１２に設定した後に、送信許可通知を出力してシリアルコントローラ１２に通信部１３へのデータ転送を開始させている。
【０１２７】
これにより、複数バイトのデータを有するデータフレームをシリアルバス５に送信する場合でも、割込み回数が１回となっている。すなわち、図１２のシーケンス図を参照して説明した従来の自動販売機のシリアル通信における複数バイト送信処理では、ｍバイトのデータを有するデータフレームをシリアルバスに送信する場合には「２×ｍ」回の割り込みが発生するのに対して、この発明にかかる自動販売機のシリアル通信における複数バイト送信処理では１回の割込みとなっており、大幅に割込み回数を削減している。
【０１２８】
つぎに、図８のシーケンス図を参照して１バイト受信処理のデータの流れを説明する。通信部１３から処理すべきデータがあることを示す割込み要求を受けると、ＣＰＵ１１は、現在実行している処理を中断して１バイト受信処理を実行するための割込み処理を実行する。ＣＰＵ１１は、受信すべきデータが設定されている通信部１３の送信レジスタ１３０４−１〜１３０４−ｎを選択するためのコマンドをシリアルコントローラ１２に設定（コマンドライト）する。ＣＰＵ１１は、中断した処理に戻って処理を継続する。
【０１２９】
シリアルコントローラ１２は、データを読み出す送信レジスタ１３０４−１〜１３０４−ｎを選択するためのコマンドをシリアルのコマンドに変換して通信部１３に出力（コマンドをシリアル送信）する。通信部１３は、シリアルコントローラ１２から出力されたコマンドに対応する送信レジスタ１３０４−１〜１３０４−ｎに設定されているデータをシリアルコントローラ１２に出力する。
【０１３０】
シリアルコントローラ１２は、通信部１３から出力されたデータをパラレルのデータに変換して、ＣＰＵ１１から出力されたコマンドに対応する受信バッファ１２２−１〜１２２−ｎに設定（データをシリアル受信）する。シリアルコントローラ１２は、受信バッファ１２２−１〜１２２−ｎにデータを設定した後に、受信完了の割込み要求をＣＰＵ１１に出力する。ＣＰＵ１１は、受信完了の割込み要求によって、現在実行している処理から１バイト受信処理を実行するための割込み処理を実行する。
【０１３１】
このようにこの発明にかかる自動販売機のシリアル通信における１バイト受信処理では、シリアルコントローラ１２が通信部１３の送信レジスタ１３０４−１〜１３０４−ｎに設定されているデータをパラレルのデータに変換して受信バッファ１２２−１〜１２２−ｎに設定するようにしているので、割込み回数が１回となっている。すなわち、図１１のシーケンス図を参照して説明した従来の自動販売機のシリアル通信における１バイト受信処理では、通信部１３からのデータをリードするために３回の割り込みが発生するのに対して、割込み回数を１／３にしている。
【０１３２】
つぎに、図９のシーケンス図を参照して複数バイト受信処理のデータの流れを説明する。通信部１３から処理すべきデータがあることを示す割込み要求を受けると、ＣＰＵ１１は、現在実行している処理を中断して複数バイト受信処理を実行するための割込み処理を実行する。ＣＰＵ１１は、受信すべきデータが設定されている通信部１３の送信レジスタ１３０４−１〜１３０４−ｎを選択するためのコマンドに対応するシリアルコントローラ１２の送信バッファ１２１−１〜１２１−ｎに、受信すべきデータのバイト数を設定（受信バイト数ライト）する。
【０１３３】
シリアルコントローラ１２は、データを読み出す送信レジスタ１３０４−１〜１３０４−ｎを選択するためのコマンドをシリアルのコマンドに変換して通信部１３に出力（コマンドをシリアル送信）する。通信部１３は、シリアルコントローラ１２から出力されたコマンドに対応する送信レジスタ１３０４−１〜１３０４−ｎに設定されているデータをシリアルコントローラ１２に出力する。
【０１３４】
シリアルコントローラ１２は、通信部１３から出力されたデータをパラレルのデータに変換して、ＣＰＵ１１から出力されたコマンドに対応する受信バッファ１２２−１〜１２２−ｎに設定（データをシリアル受信）する。ＣＰＵ１１から設定された受信すべきバイト数のデータを受信バッファ１２２−１〜１２２−ｎに設定した後に、シリアルコントローラ１２は、受信完了の割込み要求をＣＰＵ１１に出力する。ＣＰＵ１１は、受信完了の割込み要求によって、現在実行している処理から複数バイト数受信処理を実行するための割込み処理を実行する。
【０１３５】
このようにこの発明にかかる自動販売機のシリアル通信における複数バイト受信処理では、シリアルコントローラ１２にコマンドに対応した送信バッファ１２１−１〜１２１−ｎを設けて、ＣＰＵ１１が受信すべきデータのバイト数を設定した送信バッファ１２１−１〜１２１−ｎに基づいてコマンドを選択して通信部１３に出力するようにしているので、ＣＰＵ１１がコマンドを出力する必要がなくなる。
【０１３６】
また、シリアルコントローラ１２が、ＣＰＵ１１から設定された受信すべきバイト数のデータを通信部１３から読み出してコマンドに対応する受信バッファ１２２−１〜１２２−ｎに設定するようにしている。
【０１３７】
これにより、複数バイトのデータを有するデータフレームをシリアルバス５から受信した場合でも、割込み回数が１回となっている。すなわち、図１４のシーケンス図を参照して説明した従来の自動販売機のシリアル通信における複数バイト受信処理では、ｍバイトのデータを受信する場合には「３×ｍ」回の割り込みが発生するのに対して、この発明にかかる自動販売機のシリアル通信における複数バイト送信処理では１回の割込みとなっており、大幅に割込み回数を削減している。
【０１３８】
以上説明したように、本実施例の自動販売機は、主制御装置および複数の従制御装置であるリモコン、金額表示機、および押釦の夫々のＣＰＵと通信部との間に、データ送信時には、ＣＰＵから設定された送信バッファに保持されている送信データに対応するコマンドを選択して通信部に出力するとともに、送信データをシリアルのデータに変換して通信部に出力させ、送信バッファに保持されている送信データを全て通信部に出力した後に送信完了を示す割込み要求をＣＰＵに出力し、データ受信時には、通信部が受信したデータを全て受信バッファに保持した後に受信完了を示す割込み要求をＣＰＵに出力するシリアルコントローラを配置したので、シリアル通信の送受信時に発生するＣＰＵへの割込み要求の回数を低減してＣＰＵの処理負荷を軽減し、シリアル通信とは異なる処理の処理時間を短縮することができる。
【０１３９】
また、シリアルコントローラに、コマンドに対応付けて複数の送信バッファを備えておき、ＣＰＵがコマンドに対応する送信バッファに送信データを設定し、シリアルコントローラは、送信データが設定された送信バッファを識別してコマンドを選択して通信部に出力するようにしているので、ＣＰＵがコマンドを出力する必要が無くなり、ＣＰＵのシリアル通信における処理負荷を軽減することができる。
【図面の簡単な説明】
【０１４０】
【図１】本発明の自動販売機の構成を示すブロック図である。
【図２】図１に示したシリアルコントローラの構成を示すブロック図である。
【図３】図１に示した通信部の構成を示すブロック図である。
【図４】本発明の自動販売機の主制御部の送信処理の動作を説明するためのフローチャートである。
【図５】本発明の自動販売機の主制御部の受信処理の動作を説明するためのフローチャートである。
【図６】本発明の自動販売機の主制御部の１バイト送信処理の動作を説明するためのシーケンス図である。
【図７】本発明の自動販売機の主制御部の複数バイト送信処理の動作を説明するためのシーケンス図である。
【図８】本発明の自動販売機の主制御部の１バイト受信処理の動作を説明するためのシーケンス図である。
【図９】本発明の自動販売機の主制御部の複数バイト受信処理の動作を説明するためのシーケンス図である。
【図１０】従来の自動販売機の主制御部の構成を示すブロック図である。
【図１１】従来の自動販売機の主制御部の１バイト送信処理の動作を説明するためのシーケンス図である。
【図１２】従来の自動販売機の主制御部の複数バイト送信処理の動作を説明するためのシーケンス図である。
【図１３】従来の自動販売機の主制御部の１バイト受信処理の動作を説明するためのシーケンス図である。
【図１４】従来の自動販売機の主制御部の複数バイト受信処理の動作を説明するためのシーケンス図である。
【符号の説明】
【０１４１】
１    主制御部
２    リモコン
３    金額表示機
４    押釦
５    シリアルバス
１１，２１，３１，４１  ＣＰＵ
１２，２２，３２，４２  シリアルコントローラ
１３，２３，３３，４３  通信部
１１１，２１１，３１１，４１１  割込みコントローラ
１２１−１，１２１−２，１２１ーｎ  送信バッファ
１２２−１，１２２−２，１２２ーｎ  受信バッファ
１２３  シリアル・パラレル変換部
１２４  送信レジスタ
１２５  コマンド群レジスタ
１２６  セレクタ
１２７  受信レジスタ
１２８  送受信制御部
１３０  データバッファ
１３１  シリアルバスＩ／Ｆ部
１２８１  ライト回数カウンタ
１２８２  送信タイミング生成部
１２８３  受信タイミング生成部
１２８４  受信回数カウンタ
１２８５  コマンド切替部
１２８６  割込み生成部
１３０１  受信レジスタ選択部
１３０２  送信レジスタ選択部
１３０３−１，１３０３−２，１３０３−ｎ  受信レジスタ
１３０４−１，１３０４−２，１３０４−ｎ  送信レジスタ
１３１１  送信部
１３１２  受信部
１３１３  割込み制御部
【図１】
2006184964.tif 000003
【図２】
2006184964.tif 000004
【図３】
2006184964.tif 000005
【図４】
2006184964.tif 000006
【図５】
2006184964.tif 000007
【図６】
2006184964.tif 000008
【図７】
2006184964.tif 000009
【図８】
2006184964.tif 000010
【図９】
2006184964.tif 000011
【図１０】
2006184964.tif 000012
【図１１】
2006184964.tif 000013
【図１２】
2006184964.tif 000014
【図１３】
2006184964.tif 000015
【図１４】
2006184964.tif 000016