(57)【要約】【課題】モデム２と複数の端末装置Ａ０〜Ａ３とを接続するモデム用分配装置１で、複数の端末装置Ａ０〜Ａ３の切り替えを効果的に行う。【解決手段】モデム接続手段Ｃ４がモデム２と接続し、複数端末装置接続手段Ｂ０〜Ｂ３が複数の端末装置Ａ０〜Ａ３と接続する。そして、端末装置切替手段１１、１４が、所定の周期毎に起動されて端末装置Ａ０〜Ａ３の切り替えに関する処理を行う機能を用いて、複数端末装置接続手段Ｂ０〜Ｂ３により接続される複数の端末装置Ａ０〜Ａ３の中からモデム接続手段Ｃ４により接続されるモデム２との通信を可能とする端末装置（端末装置Ａ０〜Ａ３のいずれか）を切り替える。【選択図】      図１
2005072690.tif 000002
【特許請求の範囲】
【請求項１】
モデムと複数の端末装置とを接続するモデム用分配装置であって、
モデムと接続するモデム接続手段と、
複数の端末装置と接続する複数端末装置接続手段と、
所定の周期毎に起動されて端末装置の切り替えに関する処理を行う機能を用いて、複数端末装置接続手段により接続される複数の端末装置の中からモデム接続手段により接続されるモデムとの通信を可能とする端末装置を切り替える端末装置切替手段と、
を備えたことを特徴とするモデム用分配装置。
【請求項２】
請求項１に記載のモデム用分配装置において、
端末装置切替手段は、モデム接続手段により接続されるモデムとの通信が可能に切り替えられている端末装置が通信中である場合には、他の端末装置への切り替えを非実行とする、
ことを特徴とするモデム用分配装置。
【請求項３】
請求項１又は請求項２に記載のモデム用分配装置において、
それぞれの端末装置毎に、端末装置からモデムへ通信されるデータを格納する受信バッファと、
受信バッファに格納されているデータの格納量に関する情報を記憶する受信バッファデータ格納量情報記憶手段と、を備え、
端末装置切替手段は、受信バッファデータ格納量情報記憶手段により記憶される情報に基づいて、受信バッファに格納されているデータの格納量が所定の閾値以上である或いは所定の閾値を超えている端末装置を除外して、端末装置を切り替える、
ことを特徴とするモデム用分配装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、モデムと複数の端末装置とを接続するモデム用分配装置に関し、特に、複数の端末装置の切り替えを効果的に行うモデム用分配装置に関する。
【０００２】
【従来の技術】
従来のモデムでは、例えば、端末側のポートが１個であり、回線側のポートが１個であり、つまり、端末と回線とは１対１（１：１）であった。
しかしながら、１つの回線を複数の端末により共有して使いたいという要求や、回線にかかるコストを抑えたいという要求があり、このため、Ｎを複数として、端末と回線とをＮ対１（Ｎ：１）にしたいという要求があった。
【０００３】
従来技術の一例として、従来では、モデム装置において、発呼に際しては複数の端末の中で最も先に発呼要求をした端末を優先させて変復調器と接続させ、被呼に際しては予め設定されたチャネル側の端末を優先させて変復調器と接続させることが行われ、これにより、複数の端末で１つのモデムを共用することが図られている（例えば、特許文献１参照。）。
【０００４】
【特許文献１】
特開平５−１３０１６８号公報
【０００５】
【発明が解決しようとする課題】
しかしながら、従来のモデムでは、複数の端末を切り替える処理に関して、更なる開発が要求されており、更に効果的な処理の開発が期待されていた。
本発明は、このような従来の事情に鑑み為されたもので、モデムと複数の端末装置とを接続する構成において、複数の端末装置の切り替えを効果的に行うことができるモデム用分配装置を提供することを目的とする。
【０００６】
【課題を解決するための手段】
上記目的を達成するため、本発明に係るモデム用分配装置では、次のような構成により、モデムと複数の端末装置とを接続する。
すなわち、モデム接続手段がモデムと接続し、複数端末装置接続手段が複数の端末装置と接続する。そして、端末装置切替手段が、所定の周期毎に起動されて端末装置の切り替えに関する処理を行う機能を用いて、複数端末装置接続手段により接続される複数の端末装置の中から、モデム接続手段により接続されるモデムとの通信を可能とする端末装置を切り替える。
【０００７】
従って、所定の周期毎に端末装置の切り替えに関する処理が行われて、例えば必要な場合には、複数の端末装置の中からモデムとの通信を可能とする端末装置が切り替えられるため、複数の端末装置の切り替えを効果的に行うことができる。例えば、所定の周期毎に行われる端末装置の切り替えに関する処理により、複数の端末装置を順次切り替えて、複数の端末装置の全体として切り替えの効率化を図ることができる。
【０００８】
ここで、モデムとしては、種々なものが用いられてもよく、例えば、従来と同様なものを用いることも可能である。
また、端末装置としては、種々なものが用いられてもよく、例えば、データを通信する種々なデバイス装置を用いることが可能である。
また、複数の端末装置の数としては、種々な数が用いられてもよい。
また、モデム接続手段や、複数端末装置接続手段としては、それぞれ、例えば、ポートを用いて構成することができる。
【０００９】
また、端末装置の切り替えに関する処理としては、種々な処理が用いられてもよく、例えば、端末装置の切り替えを行うか否かを判断して、端末装置の切り替えを行うと判断した場合には端末装置の切り替えを行うような処理を用いることができる。
また、端末装置の切り替えに関する処理を起動させる所定の周期としては、種々な時間の長さが用いられてもよい。また、当該所定の周期としては、例えば、毎回において一定の周期が用いられてもよく、或いは、各回において異なる周期が用いられるような態様が用いられてもよい。
【００１０】
また、端末装置切替手段によりモデムとの通信を可能とする端末装置を切り替える態様としては、種々な態様が用いられてもよい。
また、端末装置とモデムとの通信としては、例えば、端末装置からモデムへの通信が用いられてもよく、或いは、モデムから端末装置への通信が用いられてもよく、或いは、これら両方向の通信が用いられてもよい。
【００１１】
本発明に係るモデム用分配装置では、一構成例として、次のような構成とした。
すなわち、端末装置切替手段は、モデム接続手段により接続されるモデムとの通信が可能に切り替えられている端末装置が通信中である場合には、他の端末装置への切り替えを非実行とする（つまり、実行しない）。
【００１２】
従って、例えば、他の端末装置へ切り替えるか否かが判断されるタイミングとなっても、モデムとの通信が可能に切り替えられている端末装置が通信中である場合には、当該端末装置の切替状態が維持されて、当該端末装置から他の端末装置への切り替えが実行されないため、当該端末装置の通信中の状態を妨害することなく、当該通信中の処理を続行させることができる。
【００１３】
本発明に係るモデム用分配装置では、一構成例として、次のような構成とした。
すなわち、それぞれの端末装置毎に、受信バッファが端末装置からモデムへ通信されるデータを例えば一時的に格納し、受信バッファデータ格納量情報記憶手段が受信バッファに格納されているデータの格納量に関する情報を記憶する。そして、端末装置切替手段は、受信バッファデータ格納量情報記憶手段により記憶される情報に基づいて、受信バッファに格納されているデータの格納量が所定の閾値以上である或いは所定の閾値を超えている端末装置を除外して、端末装置を切り替える。
【００１４】
従って、端末装置毎の受信バッファに格納されているデータの格納量が比較的に大きい端末装置については切り替えの対象から除外して、端末装置の切り替えが行われるため、受信バッファに十分な空きがある端末装置のみを切り替え対象とすることができ、受信バッファに十分な空きが無い端末装置へ無駄に切り替えを行ってしまうようなことを防止することができる。
【００１５】
ここで、端末装置とモデムとの間で通信するデータとしては、種々なものが用いられてもよい。
また、受信バッファとしては、種々なものが用いられてもよい。
また、受信バッファに格納されているデータの格納量に関する情報としては、種々な情報が用いられてもよく、例えば、データの格納量の情報などを用いることができる。
また、受信バッファデータ格納量情報記憶手段としては、例えば、情報を記憶するメモリを用いて構成することができる。
【００１６】
また、受信バッファに格納されているデータの格納量に関する所定の閾値としては、種々な値が用いられてもよく、例えば、受信バッファに十分な空きがあるか否かを判断するための境界（しきい）となるデータ格納量の値が用いられる。
また、受信バッファに格納されているデータの格納量が所定の閾値以上である或いは所定の閾値を超えている端末装置としては、例えば、受信バッファに格納されているデータの格納量が所定の閾値以上である端末装置が用いられてもよく、或いは、受信バッファに格納されているデータの格納量が所定の閾値を超えている端末装置が用いられてもよい。
【００１７】
以下で、更に、本発明に係る構成例を示す。
本発明に係るモデム用分配装置では、一構成例として、複数端末装置接続手段は、それぞれ１個の端末装置と接続する複数の端末装置接続手段を用いて構成される。
ここで、端末装置接続手段としては、例えば、ポートを用いて構成することができる。
【００１８】
本発明に係るモデム用分配装置では、一構成例として、端末装置切替手段は、それぞれの端末装置接続手段により接続される端末装置とモデム接続手段により接続されるモデムとの通信の可否を制御する端末装置接続手段毎の制御信号を用いて、モデム接続手段により接続されるモデムとの通信を可能とする端末装置を切り替える。
ここで、制御信号としては、種々な信号が用いられてもよく、例えば、ＣＳ（Ｃｌｅａｒ  ｔｏ  Ｓｅｎｄ）信号を用いることができる。
【００１９】
本発明に係るモデム用分配装置では、一構成例として、それぞれの端末装置毎に、モデムから端末装置へ通信されるデータを格納する送信バッファを備えた。
ここで、送信バッファとしては、種々なものが用いられてもよい。
一例として、受信バッファや、送信バッファは、それぞれの端末装置接続手段毎に備えられる。
【００２０】
本発明では、例えば、モデム用分配装置の機能とモデムの機能とを一体化して有するモデム装置を提供することも可能である。
一構成例として、本発明に係るモデム装置は、モデム機能と複数の端末装置とを接続するものであり、モデム機能と、複数の端末装置と接続する複数端末装置接続手段と、所定の周期毎に起動されて端末装置の切り替えに関する処理を行う機能を用いて複数端末装置接続手段により接続される複数の端末装置の中からモデム機能との通信を可能とする端末装置を切り替える端末装置切替手段と、を備えた。
ここで、モデム機能は、例えば、外部の回線と接続される。これにより、それぞれの端末装置は、モデム機能を介して、外部の回線と接続されて通信する。
【００２１】
【発明の実施の形態】
本発明に係る一実施例を図面を参照して説明する。
図１には、本発明を適用した通信分配器（モデム用分配装置）１の構成例を示してあり、また、回線と接続されて回線を制御するモデム部２と、複数の端末装置（端末装置０、１、２、３）Ａ０、Ａ１、Ａ２、Ａ３を示してある。
なお、本例では、通信分配器１とモデム部２とが分離した構成を示すが、例えば、通信分配器１とモデム部２とが一体化されたモデム装置などとして実施することも可能である。
【００２２】
本例の通信分配器１は、モデム部２とシリアル通信を行う１個のポート（ポート４）Ｃ４と、端末装置Ａ０〜Ａ３とシリアル回線で接続するための複数のポート（ポート０、１、２、３）Ｂ０、Ｂ１、Ｂ２、Ｂ３と、ポートＣ４側のＵＡＲＴ（ＵＡＲＴ０）１５及びポートＢ０〜Ｂ３側のＵＡＲＴ（ＵＡＲＴ１）１６を有していて本装置（通信分配器１）を制御する例えば１６ビットのＣＰＵ１１と、プログラムの変数などの記憶領域として使用される例えば１２８ｋＢのＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１２と、ＣＰＵ１１上で動作する制御プログラムを格納する例えば２５６ｋＢのフラッシュメモリ１３と、ポートＢ０〜Ｂ３とＵＡＲＴ１６とのシリアル通信回線を切り替えるセレクタ（ＳＥＬＥＣＴＯＲ）１４などから構成されている。
【００２３】
ここで、ＵＡＲＴ（Ｕｎｉｖｅｒｓａｌ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｒｅｃｅｉｖｅｒ  ａｎｄ  Ｔｒａｎｓｍｉｔｔｅｒ）は、一般に、シリアルインタフェースのデータ伝送を制御するものである。
また、モデム部２の機能としては、例えば、従来と同様なモデムの機能が用いられている。
また、セレクタ１４としては、ソフトウエアから制御することが可能な切替スイッチが用いられている。
【００２４】
また、本例の通信分配器１では、１つの回線（１つのモデム部２）に対して４つの端末装置Ａ０〜Ａ３をサービスすることができる構成を示すが、このような端末装置の数としては種々な数が用いられてもよい。
【００２５】
また、本例の通信分配器１では、端末装置Ａ０〜Ａ３側のそれぞれのポートＢ０〜Ｂ３毎に、受信バッファＧ０〜Ｇ３や、送信バッファＨ０〜Ｈ３や、受信レジスタや、送信レジスタが備えられている。
本例では、受信バッファや、送信バッファは、ＳＲＡＭ１２に備えられている。
また、本例では、受信レジスタや、送信レジスタは、セレクタ１４側のＵＡＲＴ１６に備えられている。
【００２６】
図２には、本例の通信分配器１により使用されるプログラムの構造の一例を示してある。
本例のプログラムは、一般的なＯＳ（タスクスケジューラ）２３上に、上位タスク２１と周期ハンドルタスク２２との２つのタスクを動作させる。
上位タスク２１は、ＵＡＲＴ１６から受信したデータの解析及びＵＡＲＴ１５を介したモデム部２との通信制御を行う。
周期ハンドルタスク２２は、例えば１０ｍ秒毎に起動されて、ＵＡＲＴ１６につながっている４個のポートＢ０〜Ｂ３の切り替えを行い、すなわち、これら４個のポートＢ０〜Ｂ３のサービススケジューリングを行う。
【００２７】
また、ＯＳ２３のドライバとして、ＵＡＲＴ０受信割り込み処理３１、ＵＡＲＴ０送信割り込み処理３２、ＵＡＲＴ１受信割り込み処理３３、ＵＡＲＴ１送信割り込み処理３４、タイマ割り込み処理３５がある。
ＵＡＲＴ０受信割り込み処理３１は受信に関して、ＵＡＲＴ０送信割り込み処理３２は送信に関して、ＵＡＲＴ（ＵＡＲＴ０）１５を介してモデム部２とのデータ送受信を行う。
ＵＡＲＴ１受信割り込み処理３３は受信に関して、ＵＡＲＴ１送信割り込み処理３４は送信に関して、ポートＢ０、Ｂ１、Ｂ２、Ｂ３とのデータ送受信を行う。
タイマ割り込み処理３５は、周期的に起動されて、タイマカウンタの更新処理を行う。
【００２８】
図３には、本例の通信分配器１におけるデータと制御の流れの一例を示してある。
ここで、本例で定義されるプログラム変数について説明する。
カレントポート番号４２は、現在サービスしている端末装置Ａ０〜Ａ３に対応したポート番号を示す。本例では、カレントポート番号４２は、基本的には０、１、２、３、０、１、２、３、０、１・・・といった順序で変更され、状況に応じて特定のポート番号がスキップされて変更されるなどする。カレントポート番号４２は、周期ハンドルタスク２２が更新し、また、ＵＡＲＴ１受信割り込み処理３３及びＵＡＲＴ１送信割り込み処理３４で参照する。
【００２９】
タイマカウンタ４１は、現在の時刻をカウント値として表示する。タイマカウンタ４１は、定期的に起動されるタイマ割り込み処理３５により更新する。
タイムスタンプ４３は、最後にデータ送信又はデータ受信した時刻を示す。タイムスタンプ４３は、例えば、ＵＡＲＴ１受信割り込み処理３３で必ずセットし、ＵＡＲＴ１送信割り込み処理３４でも必ずセットする。タイムスタンプ４３のセットの仕方としては、タイマ割り込み処理３５で更新しているタイマカウンタ４１のカウント値を読み出してタイムスタンプ４３にセットする。
【００３０】
タイムスタンプ４３は、周期ハンドルタスク２２で参照されて、現在のタイマカウンタ４１のカウント値と比較される。この比較により、最後に送受信した時刻からどれくらい時間が経過したかを算出することができる。すなわち、送受信していない時間が一定時間経過したかどうかを知ることができる。
【００３１】
受信バッファフロー制御情報Ｆ０〜Ｆ３は、ポートＢ０〜Ｂ３毎に定義している変数であり、該当するポートＢ０〜Ｂ３の受信バッファＧ０〜Ｇ３に十分な空きがあるかどうかを示す。受信バッファフロー制御情報Ｆ０〜Ｆ３は、ＵＡＲＴ１受信割り込み処理３３で“１”をセットし、上位タスクで“０”をセットしてクリアする。ここで、受信バッファフロー制御情報Ｆ０〜Ｆ３は、“１”であるときには受信バッファＧ０〜Ｇ３に十分な空きがなくＣＳ信号がオフ（ＯＦＦ）中となり、“０”であるときには受信バッファＧ０〜Ｇ３に十分な空きがありＣＳ信号がオン（ＯＮ）中となる。
【００３２】
受信バッファＧ０〜Ｇ３は、ポートＢ０〜Ｂ３毎に定義している変数（例えば、リングバッファ構造）であり、ＵＡＲＴ１受信割り込み処理３１で受信したデータをセットする。また、上位タスク２１の処理がデータを取り出す。
送信バッファＨ０〜Ｈ３は、ポートＢ０〜Ｂ３毎に定義している変数（例えば、リングバッファ構造）であり、上位タスク２１の処理が端末装置Ａ０〜Ａ３へ送信したいデータをセットする。また、ＵＡＲＴ１送信割り込み処理３４でデータを取り出してシリアルコントローラヘ出力する。
【００３３】
また、カレントポート番号４２、タイムスタンプ４３、及び受信バッファフロー制御信号Ｆ０〜Ｆ３の情報は、それぞれ、ＳＲＡＭ１２に格納されている。
また、ＣＳ（Ｃｌｅａｒ  ｔｏ  Ｓｅｎｄ）信号は、モデム部２と端末装置Ａ０〜Ａ３との間でやり取りする制御信号の名称（ＪＩＳ規格）であり、例えば、日本語では「送信可」に相当する。
【００３４】
図３を参照して、データや制御の流れの一例を示す。
周期ハンドルタスク２２は、セレクタ１４を切り替えながら通信するポート（ポートＢ０、Ｂ１、Ｂ２、Ｂ３のいずれか）を決定し、カレントポート番号４２に現在サービスしているポート番号をセットする。また、周期ハンドルタスク２２は、セレクタ１４を切り替えるときに、今まで通信をしていたポートのＣＳ信号をオフにして接続している端末装置（端末装置Ａ０、Ａ１、Ａ２、Ａ３のいずれか）に対してデータ送信が不可であることを知らせ、これから通信するポートのＣＳ信号をオンにして接続している端末装置（端末装置Ａ０、Ａ１、Ａ２、Ａ３のいずれか）に対してデータ送信が可能であることを知らせる。
【００３５】
ＵＡＲＴ１受信割り込み処理３３では、ＵＡＲＴ（ＵＡＲＴ１）１６から受信したデータをカレントポート番号４２で示されるポート（ポートＢ０、Ｂ１、Ｂ２、Ｂ３のいずれか）に対応した受信バッファ（受信バッファＧ０、Ｇ１、Ｇ２、Ｇ３のいずれか）に格納する。
ＵＡＲＴ１送信割り込み処理３４では、カレントポート番号４２で示されるポート（ポートＢ０、Ｂ１、Ｂ２、Ｂ３のいずれか）に対応した送信バッファ（送信バッファＨ０、Ｈ１、Ｈ２、Ｈ３のいずれか）からデータを取り出してＵＡＲＴ（ＵＡＲＴ１）１６へ出力する。
このような動作により、４つの端末装置Ａ０〜Ａ３によるデータ送受信を、１つの装置（１つの通信分配器１や、１つのモデム部２や、１つの回線）で実現している。
【００３６】
また、ＵＡＲＴ１受信割り込み処理３３や、ＵＡＲＴ１送信割り込み処理３４は、それぞれ起動されるたびに、タイムスタンプ４３をセットする。具体的には、この処理では、一定周期で起動するタイマ割り込み処理３５で更新しているタイマカウンタ４１から値をとりだし、タイムスタンプ４３にセットすることが行われる。
【００３７】
タイムスタンプ４３は、最後にデータ送信又はデータ受信した時刻を示している。周期ハンドルタスク２２は、タイムスタンプ４３の値を読み出して、タイマカウンタ４１の値（つまり、現在の時刻）と比較することで、現在サービスしているポートにおいてどれくらいの時間データ送受信が行われていないかを検出する。
【００３８】
そして、本例では、周期ハンドルタスク２２の処理において、現在サービスしているポート（つまり、現在、セレクタ１４により切り替えられているポート）においてデータ送受信が行われていない時間が例えば１００ｍ秒などといった一定の時間に達していた場合には、当該現在サービスしているポートに接続されている端末装置に関しては、既に一連のデータ送受信が終了したものとみなして、次のポートをサービスするように切り替える。本例では、このような切り替えの条件をセレクタ１４による切り替えの条件としている。
【００３９】
本例では、このような端末装置Ａ０〜Ａ３の切り替えの動作により、複数の端末装置Ａ０〜Ａ３によるシリアルポート送受信をサービスするに際して、データ送受信中のポートに関してはサービスを打ち切ることなく継続することを実現している。
【００４０】
また、ＵＡＲＴ１受信割り込み処理３３では、ＵＡＲＴ（ＵＡＲＴ１）１６からデータを受信してカレントポート番号４２で示される受信バッファ（受信バッファＧ０、Ｇ１、Ｇ２、Ｇ３のいずれか）ヘデータを格納する際に、当該受信バッファの残り空き容量を判定して、一定容量以上の空きがなければフロー制御を実施する。本例では、フロー制御としては一般的なものが用いられており、具体的には、該当する受信バッファフロー制御情報Ｆ０〜Ｆ３に“１”をセットして実際のポートのＣＳ信号をオフ（ＯＦＦ）にすることが行われる。
【００４１】
一方、周期ハンドルタスク２２でサービスするポートを切り替える際に、これからサービスするポートのＣＳ信号をオン（ＯＮ）にすることが行われるが、この場合の条件として、本例では、これからサービスしようとするポートに対応する受信バッファフロー制御情報に“１”がセットされているときには、当該ポートの受信バッファに十分な空きが無いとみなして、ＣＳ信号をオンにせずに、当該ポートに関してはこのときにはサービスしないようにする。
この理由は、受信バッファに十分な空きが無い状態であるポートについてはＣＳ信号がオフである状態を継続することが好ましいためである。このときには、周期ハンドルタスク２２は、その次のポートのサービスへ移る。
【００４２】
また、各ポートＢ０〜Ｂ３の受信バッファフロー制御情報Ｆ０〜Ｆ３については、上位タスク２１が、各ポートＢ０〜Ｂ３の受信バッファＧ０〜Ｇ３からデータを取り出して、当該各ポートＢ０〜Ｂ３の受信バッファＧ０〜Ｇ３に一定容量の空きができたときに“０”にクリアする。
本例では、このような動作により、分配装置（通信分配器１）内の該当ポートの受信バッファのフル（ＦＵＬＬ）によるフロー制御の情報を損なうことなく、ＣＳ信号の制御を行うことを実現している。
【００４３】
図４を参照して、周期ハンドルタスク２２により行われる処理の手順の一例を示す。
まず、現在において切り替えられているカレントポート番号４２のポートについて、タイムスタンプ４３の値とタイマカウンタ４１の値とを比較して、最後にデータ送受信した時から所定の時間（例えば、１００ｍ秒）が経過したか否かを判定する（ステップＳ１）。
【００４４】
この結果、最後にデータ送受信した時から所定の時間が経過していないと判定した場合には、ＯＳ２３上で動作していることからＯＳ２３に一旦制御を移して、プロセスのディスパッチ（スケジューリング）を行うためのシステムコールを行って（ステップＳ１０）、再び同様な判定を行う（ステップＳ１）。
【００４５】
一方、最後にデータ送受信した時から所定の時間が経過したと判定した場合には、カレントポート番号４２のポートのＣＳ信号をオフにして（ステップＳ２）、ＯＳ２３上で動作していることからＯＳ２３に一旦制御を移して、プロセスのディスパッチ（スケジューリング）を行うためのシステムコールを行う（ステップＳ３）。
【００４６】
次に、例えば「ポートＢ０、ポートＢ１、ポートＢ２、ポートＢ３、ポートＢ０、ポートＢ１、・・・」といった所定の順序でセレクタ１４によりポートを切り替え（ステップＳ４）、カレントポート番号４２を当該切り替えたポートの番号（例えば、０、１、２、３のいずれか）へ更新する（ステップＳ５）。
【００４７】
次に、新たに切り替えたポートの受信バッファフロー制御情報（受信バッファフロー制御情報Ｆ０、Ｆ１、Ｆ２、Ｆ３のいずれか）の値を判定し（ステップＳ６）、当該値が“１”である場合には受信バッファに十分な空きが無いためセレクタ１４により次のポートへ切り替え（ステップＳ４）、一方、当該値が“０”である場合には受信バッファに十分な空きがあるためタイムスタンプ設定処理へ移行する（ステップＳ７）。
【００４８】
タイムスタンプ設定処理では、タイマカウンタ４１から値を読み出して、読み出した値をタイムスタンプ４３に設定する（ステップＳ７）。このように、本例では、ポートの切り替えを行うときには初期的にタイムスタンプ４３をセットする。
その後、端末装置Ａ０〜Ａ３側のＵＡＲＴ（ＵＡＲＴ１）１６を初期化して（ステップＳ７）、新たに切り替えたポートのＣＳ信号をオンにする（ステップＳ８）。そして、ＯＳ２３上で動作していることからＯＳ２３に一旦制御を移して、プロセスのディスパッチ（スケジューリング）を行うためのシステムコールを行う（ステップＳ１０）。
【００４９】
ここで、ポートＢ０〜Ｂ３の切り替えについて、具体例を示す。
本例では、各ポートＢ０〜Ｂ３毎に受信バッファフロー制御情報Ｆ０〜Ｆ３に対応した“Ｆ”という名称のフラグが設けられており、ＳＲＡＭ１２に定義されている。
【００５０】
Ｆ＝１は、対応するポートのＣＳ信号をオフにしているという状態を示している。すなわち、そのポートに接続している端末装置に対して「送信可」がオフである状態つまり送信可能ではなくデータを送信してはいけない状態を示している。
Ｆ＝０は、対応するポートのＣＳ信号をオンにしてもよいという状態を示している。すなわち、そのポートに接続している端末装置に対して「送信可」がオンにされてもよい状態つまり送信可能でありデータを送信してもよい状態を示している。
【００５１】
また、本例では、ＣＳ信号をオフにする条件として、２つの条件を用いている。
１つ目の条件は、受信バッファの空きが不十分となりフルになったとみなされるときであり、受信バッファがフルであるためデータをこれ以上受信できないのでこれ以上の送信を望まないときであり、受信バッファがフルになったポートのＣＳ信号をオフにする。
２つ目の条件は、サービスしているポートを切り替えて別のポートをサービスするときであり、このときには今までサービスしていたポートのＣＳ信号をオフにする。この理由は、今までサービスしていたポートとＵＡＲＴ１６との接続をセレクタ１４により切り離してしまうため、もはやデータを送信してはいけないということを当該ポートに通知するためである。
【００５２】
一例として、次の（１）〜（５）のような順序で切り替えが行われる。
（１）セレクタ１４によりポートＢ０に切り替えられていて当該ポートＢ０のサービス中に、当該ポートＢ０の受信バッファＧ０がフルとなった条件により、当該ポートＢ０のＣＳ信号をオフにする。
（２）そこで、セレクタ１４によりポートＢ１へ切り替えて、サービスをポートＢ１へ切り替える。
（３）その後、セレクタ１４によりポートＢ２へ切り替えて、サービスをポートＢ２へ切り替える。
（４）その後、セレクタ１４によりポートＢ３へ切り替えて、サービスをポートＢ３へ切り替える。
【００５３】
（５）その後、セレクタ１４によりポートＢ０へ切り替えて、サービスをポートＢ０へ切り替える。このとき、当該ポートＢ０のＣＳ信号をオンにするか否かは、上記（１）において受信バッファＧ０がフルになった後に当該受信バッファＧ０に十分な空きができたか否かにより判定し、この判定の処理は上位タスク２１により行われる。具体的には、前回のサービスにおいてＣＳ信号をオフにしたポートＢ０に今回のサービスの順番が回ってきたときに、受信バッファフロー制御情報Ｆ０〜Ｆ３に対応したフラグの情報を読み出して、当該フラグの値が“０”にクリアされていれば、ＣＳ信号をオンにしてもよいと判断して、実際にＣＳ信号をオンにする。
【００５４】
図５を参照して、ＵＡＲＴ（ＵＡＲＴ１）１６により行われる受信割り込み処理３３の手順の一例を示す。
まず、ＵＡＲＴ１６の受信レジスタから受信データを取得し（ステップＳ１１）、カレントポート番号４２を判定する（ステップＳ１２）。
この結果、カレントポート番号４２がポートＢ０の番号である場合には、当該ポートＢ０の受信バッファＧ０へ取得した受信データを格納して（ステップＳ１３）、当該受信バッファＧ０のデータ格納状態に基づいてフロー制御の処理を行う（ステップＳ１４）。
【００５５】
また、同様に、カレントポート番号４２がポートＢ１の番号である場合（ステップＳ１５、ステップＳ１６）、カレントポート番号４２がポートＢ２の番号である場合（ステップＳ１７、ステップＳ１８）、カレントポート番号４２がポートＢ３の番号である場合（ステップＳ１９、ステップＳ２０）、についても、取得した受信データを対応する受信バッファへ格納してフロー制御の処理を行う。
そして、このようなフロー制御の処理の後に、タイムスタンプ４３を設定する処理を行う（ステップＳ２１）。
【００５６】
図６を参照して、ＵＡＲＴ（ＵＡＲＴ１）１６により行われる送信割り込み処理３４の手順の一例を示す。
まず、カレントポート番号４２を判定する（ステップＳ３１）。
この結果、カレントポート番号４２がポートＢ０の番号である場合には、当該ポートＢ０の送信バッファＨ０からデータを取得する（ステップＳ３２）。
【００５７】
また、同様に、カレントポート番号４２がポートＢ１の番号である場合（ステップＳ３３）、カレントポート番号４２がポートＢ２の番号である場合（ステップＳ３４）、カレントポート番号４２がポートＢ３の番号である場合（ステップＳ３５）、についても、対応する送信バッファからデータを取得する。
そして、このようにしてデータを取得した後に、取得したデータをＵＡＲＴ１６の送信レジスタへ出力し（ステップＳ３６）、タイムスタンプ４３を設定する処理を行う（ステップＳ３７）。
【００５８】
図７を参照して、上位タスク２１により行われる処理の手順の一例を示す。
まず、いずれかのポートＢ０〜Ｂ３の受信バッファＧ０〜Ｇ３から格納されている受信データを取得して（ステップＳ４１）、当該受信バッファＧ０〜Ｇ３のデータ格納状態に基づいて当該受信バッファＧ０〜Ｇ３の受信バッファフロー制御情報Ｆ０〜Ｆ３（フラグＦ）を“０”にクリアすることなどを行う（ステップＳ４２）。
【００５９】
そして、受信データの解析処理などを行い（ステップＳ４３）、その後、ＯＳ２３上で動作していることからＯＳ２３に一旦制御を移して、プロセスのディスパッチ（スケジューリング）を行うためのシステムコールを行う（ステップＳ４４）。
【００６０】
図８を参照して、タイマ割り込み処理３５の手順の一例を示す。
すなわち、例えば一定の周期毎に、タイマカウント更新処理を起動して、タイマカウンタ４１の値を更新する（ステップＳ５１）。
【００６１】
以上のように、本例の通信分配器１では、ＣＰＵ１１から成るマイクロコンピュータや、ＳＲＡＭ１２やフラッシュメモリ１３から成るメモリや、ＵＡＲＴ（ＵＡＲＴ１）１６から成るシリアルコントローラや、ポートＢ０、Ｂ１、Ｂ２、Ｂ３から成る複数のシリアルポート接続コネクタ部で構成され、１個のシリアルコントローラで複数の端末装置Ａ０〜Ａ３によるシリアルポート送受信をサービスする。これにより、マルチポートのモデムを実現することができる。
【００６２】
また、本例の通信分配器１では、１個のシリアルコントローラで複数の端末装置Ａ０〜Ａ３によるシリアルポート送受信をサービスするために、標準的なモデム信号であるＣＳ信号を制御する。
また、本例の通信分配器１では、１個のシリアルコントローラで複数の端末装置Ａ０〜Ａ３によるシリアルポート送受信をサービスするために、マイクロコンピュータ上で周期的に起動される周期ハンドルタスク２２による処理でサービススケジューリングする。
【００６３】
また、本例の通信分配器１では、１個のシリアルコントローラで複数の端末装置Ａ０〜Ａ３によるシリアルポート送受信をサービスする際に、データ送受信中のポートに関しては、サービスを打ち切ることなく継続する。
また、本例の通信分配器１では、１個のシリアルコントローラで複数の端末装置Ａ０〜Ａ３によるシリアルポート送受信をサービスする際に、分配装置（通信分配器１）内の該当ポートの受信バッファのフルによるフロー制御の情報を損なうことなく、ＣＳ信号の制御を行う。
【００６４】
具体的には、本例の通信分配器１では、周期ハンドルタスク２２が、周期的に、カレントポート番号４２のタイムスタンプ４３の値とタイマカウンタ４１の値（現在の時刻）とを比較し、一定時間が経過している場合にはサービス対象となるポートを切り替える。また、ポートの切り替えに際して、次の切り替え先のポートの受信バッファフロー制御情報Ｆ０〜Ｆ３が“１”である場合には、つまり受信バッファに一定容量以上の空きが無い場合には、当該次の切り替え先のポートへは切り替えずに、更にその次の切り替え先のポートへ切り替える。また、現在においてサービス中であるポートが通信中である場合には、他のポートへの切り替えを行わないようにする。
【００６５】
従って、本例の通信分配器１では、１つの回線で複数の端末装置Ａ０〜Ａ３に対するサービスを効果的に行うことができる。
本例の通信分配器１では、例えば、モデムとして、公衆回線用モデムや、パケット通信用モジュールや、ＰＨＳ（Ｐｅｒｓｏｎａｌ  Ｈａｎｄｙ  ｐｈｏｎｅ  Ｓｙｓｔｅｍ）モデム等を装着することにより、電話回線用のシステムや、パケット通信回線用のシステムや、自営ＰＨＳ回線用のシステムや、公衆ＰＨＳ回線用のシステム等に、幅広く応用することが可能である。
【００６６】
なお、本例の通信分配器（モデム用分配装置）１では、モデム部２と接続されるポート（ポート４）Ｃ４の機能によりモデム接続手段が構成されており、それぞれの端末装置Ａ０〜Ａ３と接続されるそれぞれのポート（ポート０〜３）Ｂ０〜Ｂ３の機能により端末装置接続手段が構成されている。また、これら複数の端末装置接続手段の機能により複数端末装置接続手段が構成されている。
【００６７】
また、本例の通信分配器（モデム用分配装置）１では、ＣＰＵ１１による制御によって周期ハンドルタスク２２を用いてセレクタ１４によりＵＡＲＴ（ＵＡＲＴ１）１６と接続される端末装置Ａ０〜Ａ３（ポートＢ０〜Ｂ３）を切り替えてモデム部２の側と通信可能なサービス対象となる端末装置Ａ０〜Ａ３（ポートＢ０〜Ｂ３）を切り替える機能により端末装置切替手段が構成されており、それぞれの端末装置Ａ０〜Ａ３（それぞれのポートＢ０〜Ｂ３）毎に受信バッファフロー制御情報Ｆ０〜Ｆ１をＳＲＡＭ１２に記憶する機能により受信バッファデータ格納量情報記憶手段が構成されている。
【００６８】
ここで、本発明に係るモデム用分配装置やモデム装置などの構成としては、必ずしも以上に示したものに限られず、種々な構成が用いられてもよい。また、本発明は、例えば、本発明に係る処理を実行する方法或いは方式や、このような方法や方式を実現するためのプログラムや当該プログラムを記録する記録媒体などとして提供することも可能であり、また、種々な装置やシステムとして提供することも可能である。
また、本発明の適用分野としては、必ずしも以上に示したものに限られず、本発明は、種々な分野に適用することが可能なものである。本発明は、例えば、様々なモデムや、様々な回線などに適用することが可能なものである。
【００６９】
また、本発明に係るモデム用分配装置やモデム装置などにおいて行われる各種の処理としては、例えばプロセッサやメモリ等を備えたハードウエア資源においてプロセッサがＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）に格納された制御プログラムを実行することにより制御される構成が用いられてもよく、また、例えば当該処理を実行するための各機能手段が独立したハードウエア回路として構成されてもよい。
また、本発明は上記の制御プログラムを格納したフロッピー（登録商標）ディスクやＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）−ＲＯＭ等のコンピュータにより読み取り可能な記録媒体や当該プログラム（自体）として把握することもでき、当該制御プログラムを当該記録媒体からコンピュータに入力してプロセッサに実行させることにより、本発明に係る処理を遂行させることができる。
【００７０】
【発明の効果】
以上説明したように、本発明に係るモデム用分配装置によると、モデムと複数の端末装置とを接続するに際して、所定の周期毎に起動されて端末装置の切り替えに関する処理を行う機能を用いて、例えば端末装置の切り替えに関する所定の条件に従って、複数の端末装置の中からモデムとの通信を可能とする端末装置を切り替えるようにしたため、複数の端末装置の切り替えを効果的に行うことができる。
【図面の簡単な説明】
【図１】本発明の一実施例に係る通信分配器（モデム用分配装置）の構成例を示す図である。
【図２】プログラムの構造の一例を示す図である。
【図３】データと制御の流れの一例を示す図である。
【図４】周期ハンドルタスクの処理フローの一例を示す図である。
【図５】ＵＡＲＴ１の受信割り込みの処理フローの一例を示す図である。
【図６】ＵＡＲＴ１の送信割り込みの処理フローの一例を示す図である。
【図７】上位タスクの処理フローの一例を示す図である。
【図８】タイマ割り込みの処理フローの一例を示す図である。
【符号の説明】
１・・通信分配器、  ２・・モデム部、  １１・・ＣＰＵ、
１２・・ＳＲＡＭ、  １３・・フラッシュメモリ、  １４・・セレクタ、
１５、１６・・ＵＡＲＴ、  ２１・・上位タスク、
２２・・周期ハンドルタスク、  ２３・・ＯＳ（タスクスケジューラ）、
３１・・ＵＡＲＴ０受信割り込み処理、
３２・・ＵＡＲＴ０送信割り込み処理、
３３・・ＵＡＲＴ１受信割り込み処理、
３４・・ＵＡＲＴ１送信割り込み処理、  ３５・・タイマ割り込み処理、
４１・・タイマカウンタ、  ４２・・カレントポート番号、
４３・・タイムスタンプ、  Ａ０〜Ａ３・・端末、
Ｂ０〜Ｂ３、Ｃ４・・ポート、  Ｆ０〜Ｆ３・・受信バッファフロー制御情報、
Ｇ０〜Ｇ３・・受信バッファ、  Ｈ０〜Ｈ３・・送信バッファ、
【図１】
2005072690.tif 000003
【図２】
2005072690.tif 000004
【図３】
2005072690.tif 000005
【図４】
2005072690.tif 000006
【図５】
2005072690.tif 000007
【図６】
2005072690.tif 000008
【図７】
2005072690.tif 000009
【図８】
2005072690.tif 000010