以下、この発明の実施形態である駅務システムについて説明する。
図1は、この例にかかる駅務システムを示す概略図である。この駅務システムは、統括サーバ4と、複数の精算判定サーバ1と、複数の駅務機器とを備えている。ここで言う駅務機器は、駅務で使用される自動改札機2、精算機3、券売機(不図示)、係員端末(不図示)等の各種機器の総称である。この駅務システムでは、駅務機器が端末であり、精算判定サーバ1がエッジサーバとして機能し、統括サーバ4がセンタサーバとして機能する。統括サーバ4は、鉄道会社のセンタに設置される。精算判定サーバ1は、駅等に設置される。統括サーバ4には、複数の精算判定サーバ1(1A、1B、1C)がネットワークを介してデータ通信可能に接続される。また、精算判定サーバ1には、比較的近い位置にある駅務機器(例えば、同じ駅や、隣接する駅等に設置されている駅務機器)がネットワークを介してデータ通信可能に接続されている。精算判定サーバ1は、ネットワークを介して複数の駅務機器とデータ通信可能であり、また各駅務機器もネットワークを介して複数の精算判定サーバ1とデータ通信可能である。
図1では、3つの精算判定サーバ1(1A、1B、1C)を図示したが、精算判定サーバ1の台数は3つに限らない。以下の説明では、特に区別しない場合、精算判定サーバ1と表記し、区別する場合に精算判定サーバ1A、1B、1Cと表記する。
なお、この駅務システムは、運賃の金額の算出をともなう駅務処理を行う駅務機器(例えば自動改札機2、精算機3)を精算判定サーバ1にデータ通信可能に接続し、運賃の金額の算出をともなう駅務処理を行わない駅務機器(例えば、券売機)を精算判定サーバ1にデータ通信可能に接続しない構成にしてもよい。このように構成すれば、精算判定サーバ1は、運賃の金額の算出をともなう駅務処理を行わない駅務機器とデータ通信を行わないので、精算判定サーバ1のデータ通信にかかる処理負荷を低減できる。
また、この駅務システムは、運賃の金額の算出をともなう駅務処理を行う駅務機器であっても、駅務機器の性質上、迅速な処理が要求される自動改札機2を精算判定サーバ1にデータ通信可能に接続し、迅速な処理が要求されない精算機3については精算判定サーバ1にデータ通信可能に接続しない構成にしてもよい。このように構成すれば、精算判定サーバ1のデータ通信にかかる処理負荷を一層低減できる。精算判定サーバ1にデータ通信可能に接続しない駅務機器は、ネットワークを介して統括サーバ4に直接接続してもよいし、精算判定サーバ1以外のエッジサーバ(不図示)であって、ネットワークを介して統括サーバ4に接続したエッジサーバに接続してもよい。すなわち、精算判定サーバ1にデータ通信可能に接続しない駅務機器については、実行した駅務処理のログデータを統括サーバ4にアップロードできる構成であれば、どのような構成であってもよい。精算判定サーバ1にデータ通信可能に接続しない駅務機器については、必要に応じて運賃を算出する構成を自機に備えてもよいし、統括サーバ4に備えてもよい。
統括サーバ4は、各駅務機器において処理された駅務処理の処理結果(ログ)を集計し、管理する。統括サーバ4は、精算判定サーバ1にデータ通信可能に接続されている駅務機器において処理された駅務処理の処理結果を精算判定サーバ1から取得する。また、統括サーバ4は、精算判定サーバ1に接続されていない駅務機器において処理された駅務処理の処理結果を、その駅務機器から直接、またはその駅務機器が接続されているエッジサーバ(精算判定サーバ1以外のエッジサーバ)から取得する。
精算判定サーバ1は、駅務機器から送信されてきた運賃の金額の算出にかかる指示を受信すると、列車の利用にかかる運賃(乗車駅から降車駅までの運賃)の金額を算出する。また、精算判定サーバ1は、運賃の精算が適正に行えるかどうかを判定する。精算判定サーバ1は、運賃の精算が適正に行えると判定した場合、運賃の精算が適正に行えること、および算出した運賃の金額を駅務機器に返信する。また、精算判定サーバ1は、運賃の精算が適正に行えないと判定した場合、運賃の精算が適正に行えないことを駅務機器に返信する。精算判定サーバ1は、運賃の精算が適正に行えない場合、算出した運賃の金額を駅務機器に通知してもよいし、通知しなくてもよい。精算判定サーバ1と駅務機器とをデータ通信可能に接続するネットワークのトラフィックの増大を抑える観点から、運賃の精算が適正に行えない場合、精算判定サーバ1は算出した運賃の金額を駅務機器に通知しない構成にするのが好ましい。
また、精算判定サーバ1は、データ通信可能に接続されている駅務機器で処理された駅務処理のログを蓄積的に記憶するとともに、適当なタイミングで記憶している駅務処理のログを統括サーバ4にアップロードする。
自動改札機2は、駅の改札口に設置され、改札通路における利用者の通行を制限する。また、精算機3は、駅の改札口の駅構内側に設置され、利用者が所持するキップ等の乗車券を受け付け、利用者に対して運賃の精算を行う。
なお、券売機は、利用者に対するキップ等の乗車券の発券を行う。係員端末は、駅係員による入力操作に応じた駅務処理を行う。駅係員は、係員端末において、利用者の要求に応じた駅務処理の実行にかかる入力操作を行う。自動改札機2、精算機3、および係員端末が、運賃の金額の算出をともなう駅務処理を行う。券売機は、運賃の金額の算出をともなう駅務処理を行わない。すなわち、この例では、自動改札機2、精算機3、および係員端末が、この発明で言う駅務機器に属し、券売機がこの発明で言う駅務機器に属さない。
図2は、精算判定サーバの主要部の構成を示すブロック図である。精算判定サーバ1は、制御ユニット10と、通信ユニット12と、ログデータ記憶DB13とを備えている。
制御ユニット10は、精算判定サーバ1本体の動作を制御する。また、制御ユニット10は、乗車駅から降車駅までの運賃を算出する運賃算出部11を有している。運賃算出部11は、第1の運賃算出機能11aと、第2の運賃算出機能11bと、判定機能11cとを有している。
第1の運賃算出機能11aは、乗車駅から降車駅までの運賃の金額を第1のロジックでプログラムされた第1のプログラムで算出する。第2の運賃算出機能11bは、乗車駅から降車駅までの運賃の金額を第1のロジックとは異なる第2のロジックでプログラミングされた第2のプログラムで算出する。判定機能11cは、第1の運賃算出機能11aが算出した乗車駅から降車駅までの運賃の金額と、第2の運賃算出機能11bが算出した乗車駅から降車駅までの運賃の金額とを比較し、運賃の精算が適正に行えるかどうかを判定する。
通信ユニット12は、ネットワークを介してデータ通信可能に接続されている駅務機器や統括サーバ4との間におけるデータ通信を制御する。
ログデータ記憶DB13は、データ通信可能に接続されている駅務機器で行われた駅務処理のログを記憶する。精算判定サーバ1は、適当なタイミングで、ログデータ記憶DB13に記憶している駅務処理のログデータを統括サーバ4にアップロードする。この適当なタイミングは、例えば1日の列車の運行が完了してから、翌日の列車の運行が開始されるまでの期間(列車の運行時を避けたタイミング)に設定し、精算判定サーバ1の処理負荷を分散するのが好ましい。
図3は、自動改札機の主要部の構成を示すブロック図である。自動改札機2は、制御部20と、接続先テーブル記憶部21と、ICカード読取部22と、磁気券読取部23と、利用者検知部24と、表示部25と、扉開閉部26と、通信部27と、を備えている。
制御部20は、自動改札機2本体各部の動作を制御する。接続先テーブル記憶部21は、図4に示す接続先テーブル21aを記憶する。図4に示すように、接続先テーブル21aは、時間帯毎に、いずれかの精算判定サーバ1を対応づけたものである。図4に示す接続先テーブル21aは、1分間隔で区切った時間帯毎に、いずれかの精算判定サーバ1を対応付けたものである。
なお、接続先テーブル21aにおける、時間帯の区切りの長さは、例示した1分間隔に限るものではなく、2分や5分や10分等の間隔であってもよい。また、この時間帯の区切りの長さは、一定の時間間隔でなくてもよい。
接続先テーブル21aは、自動改札機2(駅務機器)毎に生成される。したがって、記憶している接続先テーブル21aの内容が同じである自動改札機2の組合せもあれば、接続先テーブル21aの内容が同じでない(異なっている)自動改札機2の組合せもある。接続先テーブル21aは、各精算判定サーバ1のスペックが同じである場合、時間帯毎に、単位時間当たりにおける運賃の金額の算出要求数が精算判定サーバ1間で略等しくなるように設定したものである。すなわち、接続先テーブル21aは、時間帯毎に、精算判定サーバ1の処理負荷が略等しくなるように(精算判定サーバ1における運賃の金額の算出にかかる処理時間が略等しくなるように)生成したものである。運賃の金額の算出要求とは、自動改札機2等の駅務機器が、精算判定サーバ1に送信する列車の利用にかかる運賃の金額の算出要求である。
なお、接続先テーブル21aは、各精算判定サーバ1のスペックが同じでない場合、スペックの違いを考慮し、精算判定サーバ1における運賃の金額の算出にかかる処理時間が略等しくなるように、生成すればよい。
ICカード読取部22は、無線通信機能を有する非接触式ICカードが記憶する乗車券情報の読み取りや、この非接触式ICカードに対する乗車券情報の書き込みを行う。ICカード読取部22は、無線通信エリアがアンテナから数cmの範囲であり、利用者が無線通信エリア内に翳した非接触式ICカードとの無線通信により、乗車券情報の読み取りや、乗車券情報の書き込みを行う。自動改札機2は、無線通信エリアが改札通路の入口付近になるようにアンテナを設けている。乗車券として使用できる非接触式ICカードには、プリペイドカードや、定期券等がある。乗車券として使用できる非接触式ICカードについては、公知であるので、ここでは詳細な説明を省略する。
磁気券読取部23は、磁気券投入口に投入されたキップ等の磁気券が記憶する乗車券情報の読み取りや、この磁気券に対する乗車券情報の書き込みを行う。自動改札機2は、磁気券投入口を改札通路の入口付近に設けている。
利用者検知部24は、改札通路における利用者の通行方向に沿って並べた複数のセンサにより、改札通路を通行している利用者の位置を検知する。
表示部25は、改札通路に進入した利用者に対するメッセージを出力する。
扉開閉部26は、利用者に対して改札通路の通行を許可しない場合、当該利用者の出口側に位置する扉を閉する。扉開閉部26は、利用者に対して改札通路の通行を許可する場合、当該利用者の出口側に位置する扉を開する。
通信部27は、ネットワークを介してデータ通信可能に接続されている精算判定サーバ1との間におけるデータ通信を制御する。上述したように、各自動改札機2は、複数の精算判定サーバ1とデータ通信可能に接続されている。
なお、自動改札機2は、上述したICカード読取部22、磁気券読取部23、利用者検知部24、表示部25、および扉開閉部26の一部の構成を備えていないものであってもよい。例えば、自動改札機2は、磁気券読取部23を備えていない構成であってもよいし、扉開閉部26を備えていない構成であってもよい。
また、図3に示すように、制御部20は、運賃算出要求機能部20aと、精算処理機能部20bと、サーバ選択機能部20cを有している。この制御部20が、この発明にかかる精算処理方法を実行する。
運賃算出要求機能部20aは、列車の利用にかかる運賃の金額の算出を精算判定サーバ1に要求する。運賃算出要求機能部20aは、通信部27を制御し、運賃の金額の算出要求を精算判定サーバ1に送信する。
精算処理機能部20bは、精算判定サーバ1において算出された運賃の金額を用いて、運賃を精算する処理を制御する。
サーバ選択機能部20cは、運賃算出要求機能部20aに運賃の金額の算出要求を送信させる精算判定サーバ1を選択する。具体的には、サーバ選択機能部20cは、接続先テーブル21aを参照し、現在時刻が属する時間帯に対応付けられている精算判定サーバ1を、運賃算出要求機能部20aが運賃の金額の算出要求を送信する精算判定サーバ1として選択する。
なお、この例にかかる自動改札機2は、乗車駅から降車駅までの運賃の金額を算出する構成を備えていなくてもよい。すなわち、この例にかかる自動改札機2は、乗車駅から降車駅までの運賃の金額を算出する構成を備えないことで、コストダウンを図ることができる。乗車駅から降車駅までの運賃の金額を用いて駅務処理を行う自動改札機2以外の駅務機器(精算機3や係員端末等)も、同様に、乗車駅から降車駅までの運賃の金額を算出する構成を備えないことで、コストダウンを図ることができる。
また、この駅務システムは、乗車駅から降車駅までの運賃の金額を用いて駅務処理を行う複数の駅務機器を精算判定サーバ1に接続するので、乗車駅から降車駅までの運賃の金額を算出する構成の総数を実質的に減少させることができる。
次に、この駅務システムの精算判定サーバ1、および自動改札機2の動作について説明する。この例では、この発明にかかる駅務機器が自動改札機2である。ここでは、プリペイド式の乗車券を使用して駅構内から出場する利用者に対する自動改札機2の改札処理を例にする。プリペイド式の乗車券は、非接触式ICカードであってもよいし、磁気券であってもよい。図5は、精算判定サーバの動作を示すフローチャートである。図6は、駅構内から出場する利用者に対する自動改札機の動作を示すフローチャートである。
自動改札機2は、利用者が所持している乗車券(ここでは、プリペイド式の乗車券)を受け付けると、その乗車券に記録されている乗車券情報を読み取る(s21、s22)。自動改札機2は、利用者がICカード読取部22の無線通信エリア内に翳した非接触式ICカードや、利用者が磁気券投入口に投入した磁気券をs21で乗車券として受け付ける。また、自動改札機2は、受け付けた乗車券の乗車券情報として、乗車券の識別番号、前回の利用種別(入場、または出場)、前回の利用駅、金額残高等を読み取る。ICカード読取部22、または磁気券読取部23が、s22における乗車券情報の読み取りを行う。
自動改札機2は、制御部20において、s22で乗車券情報として読み取った前回の利用種別が入場であるか、出場であるかを判定する(s23)。制御部20は、前回の利用種別が出場であれば(入場でなければ)、サイクルエラーが生じていると判定し、今回乗車券情報を読み取った乗車券を所持している利用者に対して改札通路の通行を許可しないと判定し(s24)、s21に戻る。自動改札機2は、扉開閉部26が改札通路の通行を許可しないと判定した利用者にとって改札通路出口側に位置する扉を閉するとともに、警告音による報知等を行う。
なお、s23では、s22で乗車券情報が適正に読み取れたかどうかについても判定している。自動改札機2は、乗車券情報が適正に読み取れていなければ、乗車券が適正でないと判定し、s24で改札通路の通行を許可しないと判定する。
自動改札機2は、s23で前回の利用種別が入場であると判定すると、今回運賃の金額の算出要求を送信する精算判定サーバ1を選択する(s25)。s25では、サーバ選択機能部20cが、接続先テーブル21aを参照し、現在時刻が属する時間帯に対応付けられている精算判定サーバ1を、運賃算出要求機能部20aが運賃の金額の算出要求を送信する精算判定サーバ1として選択する。自動改札機2は、運賃算出要求機能部20aが通信部27を制御して、運賃の金額の算出要求を、s24で選択した精算判定サーバ1に送信する(s26)。この運賃の金額の算出要求には、少なくともs22で乗車券情報として読み取った前回の利用駅(すなわち、今回の乗車駅)が含まれている。
精算判定サーバ1は、ネットワークを介してデータ通信可能に接続されているいずれかの駅務機器(ここでは、自動改札機2)から運賃の金額の算出要求を通信ユニット12で受信すると(s1)、第1の運賃算出処理、および第2の運賃算出処理を行う(s2、s3)。精算判定サーバ1は、第1の運賃算出処理を第1の運賃算出機能11aで行い、第2の運賃算出処理を第2の運賃算出機能11bで行う。上述したように、第1の運賃算出機能11aは、乗車駅から降車駅までの運賃の金額を第1のプログラムで算出する。また、第2の運賃算出機能11bは、乗車駅から降車駅までの運賃の金額を第2のプログラムで算出する。s4、およびs5で用いる降車駅は、今回通信ユニット12で受信した運賃の金額の算出指示を送信してきた自動改札機2の設置駅である。自動改札機2は、s26で送信した運賃の金額の算出要求に、自機が設置されている駅(設置駅)を示す情報を含ませる構成であってもよいし、精算判定サーバ1が今回受信した運賃の金額の算出要求を送信してきた自動改札機2の識別番号等から、この自動改札機2の設置駅を判断する構成であってもよい。
精算判定サーバ1は、自動改札機2における改札処理の速度低下を抑えるため、s2、s3にかかる処理を同時並行で行うのが好ましい。
第1の運賃算出機能11aは、第1のプログラムにおいて今回の運賃の金額を算出するプロセスにバグがあると適正な金額を算出できない。同様に、第2の運賃算出機能11bは、第2のプログラムにおいて今回の運賃の金額を算出するプロセスにバグがあると適正な金額を算出できない。したがって、第1の運賃算出機能11aが算出した運賃の金額と、第2の運賃算出機能が算出した運賃の金額とが一致しない場合、第1のプログラム、または第2のプログラムの少なくとも一方は、今回の運賃の金額を算出するプロセスにバグがある。
なお、今回の運賃の金額を算出するプロセスにバグがあるプログラムが、第1のプログラム、および第2のプログラムの両方である場合、第1の運賃算出機能11aが算出した運賃の金額と、第2の運賃算出機能11bが算出した運賃の金額とが一致する可能性は極めて小さい。言い換えれば、今回の運賃の金額を算出するプロセスにバグがあるプログラムが、第1のプログラム、および第2のプログラムの両方であると、殆どの場合、第1の運賃算出機能11aが算出した運賃の金額と、第2の運賃算出機能11bが算出した運賃の金額とは一致しない。
精算判定サーバ1は、判定機能11cにおいて、第1の運賃算出処理で算出した運賃の金額と、第2の運賃算出処理で算出した運賃の金額とが一致しているかどうかを判定する(s4)。判定機能11cは、第1の運賃算出処理で算出した運賃の金額と、第2の運賃算出処理で算出した運賃の金額とが一致していなければ、運賃の精算が適正に行えないと判定し(s5)、通信ユニット12において運賃の金額の算出要求を送信してきた自動改札機2に対して運賃の精算禁止を送信する(s6)。
また、判定機能11cは、第1の運賃算出処理で算出した運賃の金額と、第2の運賃算出処理で算出した運賃の金額とが一致していると、運賃の精算が適正に行えると判定し(s7)、通信ユニット12において運賃の精算要求を送信してきた自動改札機2に対して運賃の精算許可を送信する(s8)。この精算許可には、第1の運賃算出処理で算出した運賃の金額(第2の運賃算出処理で算出した運賃の金額であってもよい。)が含まれている。精算判定サーバ1は、s8で自動改札機2に精算許可を送信すると、この自動改札機2から駅務処理のログ(今回運賃を算出した利用者に対する改札処理のログ)を受信するのを待つ(s9)。
図6に戻って、自動改札機2は、通信部27において、s26で運賃の金額の算出要求を精算判定サーバ1に送信すると、この精算判定サーバ1から精算許可、または精算禁止の判定結果を通信部27で受信するのを待っている(s27)。自動改札機2は、精算判定サーバ1からの判定結果を通信部27で受信すると、精算処理機能部20bが精算許可であるか、精算禁止であるかを判定する(s28)。自動改札機2は、精算処理機能部20bがs28で精算禁止であると判定すると、s24で今回乗車券情報を読み取った乗車券を所持している利用者に対して改札通路の通行を許可しないと判定し、s21に戻る。
また、自動改札機2は、精算処理機能部20bがs28で精算許可であると判定すると、精算可能であるかどうかを判定する(s29)。s29では、精算処理機能部20bが、s22で乗車券から読み取った乗車券情報に含まれている金額残高が、今回精算判定サーバ1から受信した判定結果に含まれている運賃の金額以上であるかどうかを判定する。自動改札機2は、s22で乗車券から読み取った乗車券情報に含まれている金額残高が、今回精算判定サーバ1から受信した判定結果に含まれている運賃の金額以上であれば精算可能と判定する。一方、自動改札機2は、s22で乗車券から読み取った乗車券情報に含まれている金額残高が、今回精算判定サーバ1から受信した判定結果に含まれている運賃の金額未満であれば精算不可と判定する。
自動改札機2は、s29で精算不可であると判定すると、s24で今回乗車券情報を読み取った乗車券を所持している利用者に対して改札通路の通行を許可しないと判定し、s21に戻る。
精算処理機能部20bは、精算可能であると判定すると、s21で受け付けた乗車券に対して精算処理を行う(s30)。s30では、乗車券に対して、出場時刻(現在時刻)、出場駅(自機が設置されている駅)、今回の列車の利用にかかる運賃の金額(s27で受信した判定結果に含まれている運賃の金額)、金額残高(s2で読み取った金額残高から、今回算出された運賃の金額を差し引いた金額)等を対応付けた出場データを乗車券情報として書き込む。また、自動改札機2は、今回乗車券情報を読み取った乗車券を所持している利用者に対して改札通路の通行を許可すると判定する(s31)。自動改札機2は、改札通路の通行を許可すると判定した利用者に対して、この利用者にとっての改札通路出口側に位置する扉を開する。さらに、自動改札機2は、今回の駅務処理のログ(今回改札通路の通行を許可した利用者に対する改札処理のログ)を精算判定サーバ1に送信し(s32)、s21に戻る。
精算判定サーバ1は、精算許可を送信した自動改札機2から駅務処理のログ(今回運賃を算出した利用者に対する改札処理のログ)を通信ユニット12で受信すると、受信した駅務処理のログをログデータ記憶DB13に記憶し(s10)、s1に戻る。
このように、この例では、自動改札機2は、運賃の金額の算出要求を送信する精算判定サーバ1を、接続先テーブル21aに基づいて選択する。また、接続先テーブル21aは、上述したように、時間帯毎に、精算判定サーバ1の処理負荷が略等しくなるように(精算判定サーバ1における運賃の金額の算出にかかる処理時間が略等しくなるように)生成したものである。すなわち、自動改札機2等の駅務機器からの運賃の金額の算出要求を複数の精算判定サーバ1に分散させるように生成したものである。したがって、自動改札機2等の駅務機器からの運賃の金額の算出要求が、特定の精算判定サーバ1に集中し、この精算判定サーバ1の処理負荷が大きくなりすぎて、駅務処理の処理効率を低下させるという事態をまねくのを防止できる。
図7(A)、(B)および図8(A)、(B)は、駅務機器における運賃の金額の算出要求の送信先である精算判定サーバを示す図である。図7(A)、(B)および図8(A)、(B)においては、2つの精算判定サーバ1A、1Bを示すとともに、3つの駅(X駅、Y駅、およびZ駅)に設置されている駅務機器(自動改札機2、精算機3)を図示している。通常、各駅の駅務機器は、設置駅に列車が停車してしばらくすると、運賃の金額を用いる駅務処理の頻度が一時的に増加し、その後低下する。この現象は、停車した列車から降り、駅構内から出場する利用者によって引き起こされる。また、運賃の金額を用いる駅務処理の頻度は、駅構内から出場する利用者が多いほど高くなる。したがって、駅毎に、時間経過にともなう、運賃の金額を用いる駅務処理の頻度の変化が異なる。
例えば、X駅に設置されている駅務機器、Y駅に設置されている駅務機器、およびZ駅に設置されている駅務機器において、運賃の金額を用いる駅務処理の頻度が比較的小さい時間帯には、X駅に設置されている駅務機器が精算判定サーバ1Aに対して運賃の金額の算出要求を送信し、Y駅に設置されている駅務機器、およびZ駅に設置されている駅務機器が精算判定サーバ1Bに対して運賃の金額の算出要求を送信するように、接続先テーブル21aを生成している(図7(A)参照)。
また、X駅に設置されている駅務機器において、運賃の金額を用いる駅務処理の頻度が比較的小さく、且つY駅に設置されている駅務機器、およびZ駅に設置されている駅務機器において、運賃の金額を用いる駅務処理の頻度が比較的大きい時間帯には、X駅に設置されている駅務機器およびY駅に設置されている駅務機器が精算判定サーバ1Aに対して運賃の金額の算出要求を送信し、Z駅に設置されている駅務機器が精算判定サーバ1Bに対して運賃の金額の算出要求を送信するように、接続先テーブル21aを生成している(図7(B)参照)。
また、Y駅に設置されている駅務機器において、運賃の金額を用いる駅務処理の頻度が比較的小さく、且つX駅に設置されている駅務機器、およびZ駅に設置されている駅務機器において、運賃の金額を用いる駅務処理の頻度が大きい時間帯には、X駅に設置されている駅務機器およびY駅に設置されている駅務機器の一部が精算判定サーバ1Aに対して運賃の金額の算出要求を送信し、Y駅に設置されている残りの駅務機器(精算判定サーバ1Aに対して運賃の金額の算出要求を送信しない駅務機器、)、およびZ駅に設置されている駅務機器が精算判定サーバ1Bに対して運賃の金額の算出要求を送信するように、接続先テーブル21aを生成している(図8(A)参照)。
また、X駅に設置されている駅務機器において、運賃の金額を用いる駅務処理の頻度が極めて大きく、且つY駅に設置されている駅務機器、およびZ駅に設置されている駅務機器において、運賃の金額を用いる駅務処理の頻度が比較的小さい時間帯には、X駅に設置されている駅務機器の一部が精算判定サーバ1Aに対して運賃の金額の算出要求を送信し、X駅に設置されている残りの駅務機器(精算判定サーバ1Aに対して運賃の金額の算出要求を送信しない駅務機器、)、Y駅に設置されている駅務機器、およびZ駅に設置されている駅務機器が精算判定サーバ1Bに対して運賃の金額の算出要求を送信するように、接続先テーブル21aを生成している(図8(B)参照)。
なお、接続先テーブル21aは、列車の運行ダイヤの変更時に更新すればよい。また、接続先テーブル21aは、定期的に更新するようにしてもよい。また、いずれかの精算判定サーバ1をメンテナンス等で停止させる期間が生じる場合には、メンテナンス前に、この精算判定サーバ1が運賃の金額の算出要求の送信先として選択されない接続先テーブル21aに更新し、メンテナンス後に、この精算判定サーバ1も運賃の金額の算出要求の送信先として選択される接続先テーブル21aに更新すればよい(更新前の接続先テーブル21aに戻せばよい。)。
接続先テーブル21aは、統括サーバ4が精算判定サーバ1を介する等して、各駅務機器にダウンロードすることによって更新すればよい。
また、精算判定サーバ1は、乗車駅から降車駅までの運賃の金額を、第1の運賃算出機能11a、および第2の運賃算出機能11bのそれぞれで算出し、算出した2つの運賃が一致していなければ、運賃の精算が適正に行えないと判定し、運賃の精算を禁止する。したがって、運賃の誤収受を防止し、利用者の信頼低下や、損害リスクを抑制することができる。
なお、精算判定サーバ1は、図5に示した処理を、多数並行して実行できるスペックである。
また、自動改札機2は、s23でサイクルエラーが発生していると判定すると、精算判定サーバ1に対して運賃の精算要求を送信しないので、精算判定サーバ1と自動改札機2とのデータ通信のトラフィックを抑えることができる。
また、上記の例では、精算判定サーバ1は、自動改札機2からの運賃の精算要求に対して、異なるロジックでプログラミングされた2つのプログラム(第1のプログラム、および第2のプログラム)で運賃の金額を算出するとしたが、それぞれが異なるロジックでプログラミングされた3つ以上のプログラムで運賃の金額を算出する構成にしてもよい。この場合、各プログラムで算出した運賃の金額が全て一致した場合に運賃の精算が適正に行えると判定し、それ以外の場合に(算出した運賃の金額が一致しないプログラムがあった場合に、)、運賃の精算が適正に行えないと判定すればよい。
また、精算判定サーバ1は、自動改札機2からの運賃の精算要求に対して、単一のプログラムで運賃の金額を算出する構成であってもよい(図2に示す、第2の運賃算出機能を備えていない構成であってもよい。)。この場合、図5に示すs3〜s6にかかる処理については、不要にすればよい。
また、精算判定サーバ1は、自動改札機2以外の駅務機器(例えば、精算機3や係員端末等)から運賃の金額の算出依頼や、運賃の金額の算出指示を受信した場合も、図5に示した処理を実行する。精算機3は、精算判定サーバ1において運賃の精算が適正に行えないと判定された場合、精算券の発券を中止する。また、精算機3は、精算判定サーバ1において運賃の精算が適正に行えると判定された場合、運賃の精算を行うとともに、精算券を発券する処理を行う。
なお、精算機3や、係員端末等の駅務機器において、利用者が鉄道を利用した区間(乗車駅、降車駅)を検出する処理は公知であるので、ここでは詳細な説明を省略する。
また、上記の例では、自動改札機2は、利用者の出場処理にかかるログデータを精算判定サーバ1に送信し、精算判定サーバ1がログデータ記憶DB13に記憶する構成であるので、自動改札機2側で利用者の出場処理にかかるログデータを記憶しなくてもよい。これにより、自動改札機2は、駅務処理にかかるログデータを記憶する記憶容量を抑制できる。また、自動改札機2以外の駅務機器(精算機3等)も、精算判定サーバ1に対して、上述した自動改札機2と同様の処理を行うことで、運賃の精算にかかる駅務処理のログデータを記憶しなくてもよい。
また、自動改札機2は、出場処理だけでなく、入場処理にかかるログデータを精算判定サーバ1に送信し、精算判定サーバ1がログデータ記憶DB13に記憶する構成にしてもよい。このように構成すれば、自動改札機2は、駅務処理にかかるログデータを記憶するための記憶部を不要にできる。また、自動改札機2以外の駅務機器も、駅務処理を行う毎に、その駅務処理にかかるログデータを、ネットワークを介して接続されている精算判定サーバ1や、統括サーバ4に送信する構成にしてもよい。
なお、精算判定サーバ1は、ログデータ記憶DB13に記憶している駅務処理にかかるログデータを、適当なタイミングで統括サーバ4にアップロードする。したがって、統括サーバ4は、各駅務機器で処理された駅務処理を一括して管理することができる。
また、上記の例では、精算判定サーバ1が運賃の精算が適正に行えるかどうかを判定し、自動改札機2が改札通路における利用者の通行を許可するかどうかを判定するとしたが、以下に示すようにしてもよい。
この例は、精算判定サーバ1が運賃の精算が適正に行えるかどうか、および改札通路における利用者の通行を許可するかどうかを判定し、自動改札機2が精算判定サーバ1の判定結果に基づき、改札通路における利用者の通行を制限する構成である。具体的には、精算判定サーバ1は図9に示す処理を実行し、自動改札機2は図10に示す処理を実行する。この例にかかる、精算判定サーバ1、および自動改札機2の動作について説明する。
自動改札機2は、利用者が所持している乗車券(ここでは、プリペイド式の乗車券)を受け付けると、その乗車券に記録されている乗車券情報を読み取る(s61、s62)。このs61、およびs62にかかる処理は、上述した例のs21、およびs22と同じである。自動改札機2は、s22で乗車券情報として読み取った前回の利用種別が入場であるか、出場であるかを判定する(s63)。このs63にかかる処理は、上述した例のs23と同じである。自動改札機2は、前回の利用種別が出場であれば、サイクルエラーが生じていると判定し、今回乗車券情報を読み取った乗車券を所持している利用者に対して改札通路の通行を許可しないと判定し(s64)、s61に戻る。このs64にかかる処理は、上述した例のs24と同じである。
自動改札機2は、s23で前回の利用種別が入場であると判定すると、今回運賃の金額の算出要求を送信する精算判定サーバ1を選択し(s65)、ここで選択した精算判定サーバ1に対して運賃の金額の算出要求を送信する(s66)。この運賃の金額の算出要求には、s62で受け付けた乗車券から読み取った、乗車券の識別番号、前回の利用種別(入場、または出場)、前回の利用駅、金額残高等を含む乗車券情報が含まれている。s65にかかる処理は、上述した例のs25と同じである。
精算判定サーバ1は、ネットワークを介してデータ通信可能に接続されているいずれかの駅務機器(ここでは、自動改札機2)から運賃の金額の算出要求を通信ユニット12で受信すると(s41)、第1の運賃算出処理、および第2の運賃算出処理を行う(s42、s43)。このs41〜s43にかかる処理は、上述した例のs1〜s3にかかる処理と同じである。
精算判定サーバ1は、判定機能11cにおいて、第1の運賃算出処理で算出した運賃の金額と、第2の運賃算出処理で算出した運賃の金額とが一致しているかどうかを判定する(s44)。このs44にかかる処理は、上述した例のs4と同じである。判定機能11cは、第1の運賃算出処理で算出した運賃の金額と、第2の運賃算出処理で算出した運賃の金額とが一致していなければ、運賃の精算が適正に行えないと判定し(s45)、通信ユニット12において運賃の精算要求を送信してきた自動改札機2に、改札通路における利用者の通行禁止を送信する(s46)。このs45にかかる処理は、上述した例のs5にかかる処理と同じである。
また、判定機能11cは、第1の運賃算出処理で算出した運賃の金額と、第2の運賃算出処理で算出した運賃の金額とが一致していると、運賃の精算が適正に行えると判定し(s47)、精算可能であるかどうかを判定する(s48)。このs47にかかる処理は、上述した例のs7と同じである。また、s48では、判定機能11cは、s41で自動改札機2から受信した運賃の金額の算出指示に含まれている乗車券情報の1つである金額残高が、第1の運賃算出処理で算出した運賃の金額(第2の運賃算出処理で算出した運賃の金額であってもよい。)以上であるかどうかを判定する。判定機能11cは、s41で自動改札機2から受信した運賃の金額の算出指示に含まれている乗車券情報の1つである金額残高が、第1の運賃算出処理で算出した運賃の金額以上であれば精算可能と判定し、反対にs41で自動改札機2から受信した運賃の金額の算出指示に含まれている乗車券情報の1つである金額残高が、第1の運賃算出処理で算出した運賃の金額未満であれば精算不可と判定する。精算判定サーバ1は、s48で精算不可と判定すると、s46で通信ユニット12において運賃の金額の算出指示を送信してきた自動改札機2に対して改札通路における利用者の通行禁止を送信する。
また、判定機能11cは、s41で自動改札機2から受信した運賃の金額の算出指示に含まれている乗車券情報の1つである金額残高が、第1の運賃算出処理で算出した運賃の金額以上であれば、精算データを生成する(s49)。s49では、出場時刻(現在時刻)、出場駅(s42で受信した運賃の金額の算出指示を送信してきた自動改札機2が設置されている駅)、今回の列車の利用にかかる運賃の金額(第1の運賃算出処理で算出した運賃の金額)、金額残高(s42で自動改札機2から受信した運賃の精算要求に含まれている乗車券情報の1つである金額残高から、今回の列車の利用にかかる運賃の金額を差し引いた金額)等を対応付けた精算データを生成する。
精算判定サーバ1は、通信ユニット12において運賃の金額の算出指示を送信してきた自動改札機2に対して改札通路における利用者の通行許可を送信する(s50)。s50で送信する通行許可には、s49で生成した精算データが含まれている。精算判定サーバ1は、s49で生成した精算データを、今回の駅務処理にかかるログデータとしてログデータ記憶DB13に記憶し(s51)、s41に戻る。
s50とs51の処理は、その順番が逆であってもよいが、自動改札機2における利用者の改札処理に要する処理時間の増加を抑えるため、上述したようにs50、s51の順番で行うのがよい。
図10に戻って、自動改札機2は、通信部27において、s66で運賃の金額の算出要求を精算判定サーバ1に送信すると、精算判定サーバ1からの改札通路における利用者の通行許可、または通行禁止の判定結果を通信部27で受信するのを待っている(s67)。自動改札機2は、精算判定サーバ1から判定結果を受信すると、この判定結果が通行許可であるか、通行禁止であるかを判定する(s68)。自動改札機2は、s68で通行禁止であると判定すると、s64で今回乗車券情報を読み取った乗車券を所持している利用者に対して改札通路の通行を許可しないと判定し、s61に戻る。
また、自動改札機2は、s68で通行許可であると判定すると、s67で受信した判定結果に含まれている精算データを出場データとして乗車券に書き込む精算処理を行う(s69)。そして、自動改札機2は、今回乗車券情報を読み取った乗車券を所持している利用者に対して改札通路の通行を許可すると判定し(s70)、s61に戻る。このs69、およびs70にかかる処理は、上述した例のs30、およびs31にかかる処理と同じである。
この図9、および図10に示す処理であっても、上記の例と同様の効果を奏する。また、この例では、自動改札機2は、精算判定サーバ1に対して、改札通路の通行を許可した利用者に対する改札処理(出場処理)のログを送信しないので、自動改札機2と精算判定サーバ1との間における通信のトラフィックが一層抑えられる。
また、上記の説明では、サイクルエラーが生じているかどうかを、自動改札機2側で判定するとしたが、この判定も精算判定サーバ1に行わせてもよい。この場合、s63では、s62で乗車券情報が適正に読み取れたかどうかについて判定すればよい。
また、この発明にかかる駅務システムの別の例について説明する。この例にかかる駅務システムも、図1に示した構成である。図11は、この例にかかる精算判定サーバの主要部の構成を示すブロック図である。図12は、この例にかかる自動改札機の主要部の構成である。図11では、図2に示した構成と同じ構成については、同じ符号を付している。また、図12では、図3に示した構成と同じ構成については、同じ符号を付している。ここでは、上記の例にかかる駅務システムとの相違点を説明する。
この例にかかる精算判定サーバ1は、制御ユニット10が負荷状態判定機能30を有している点で、上記の例と相違する。この負荷状態判定機能30は、精算判定サーバ1における運賃の金額の算出にかかる処理の負荷の大きさを推定する。また、負荷状態判定機能30は、推定した運賃の金額の算出にかかる処理の負荷の大きさが、予め設定されている第1の大きさαを超えると、運賃の金額の算出にかかる処理が過負荷状態であると判定する。また、負荷状態判定機能30は、推定した運賃の金額の算出にかかる負荷の大きさが、予め設定されている第2の大きさβを下回ると、運賃の金額の算出にかかる処理が定常負荷状態であると判定する。第2の大きさβは、第1の大きさαよりも小さい(α>β)。運賃の金額の算出にかかる負荷の大きさは、単位時間あたりにおける、運賃の金額の算出要求数に基づいて推定できる。
また、この例にかかる自動改札機2は、許容テーブル記憶部40を備えている点で、上記の例と相違する。この許容テーブル記憶部40は、運賃の金額の算出にかかる処理が過負荷状態である精算判定サーバ1を識別するサーバコードを登録した許容テーブルを記憶する。具体的には、自動改札機2は、過負荷状態である旨の通知を受信した精算判定サーバ1のサーバコードを許容テーブルに登録し、定常負荷状態である旨の通知を受信した精算判定サーバ1のサーバコードが許容テーブルに登録されていれば、この精算判定サーバ1のサーバコードを許容テーブルから削除する。
なお、精算判定サーバ1に対して運賃の金額の算出を要求する自動改札機2以外の駅務機器(例えば、精算機3)も、この許容テーブル記憶部40を備える。
この例にかかる駅務システムの精算判定サーバ1は、図5(、または図9)に示した処理を行うとともに、図13に示す負荷状態判定処理を並行して実行する。また、自動改札機2は、図6(、または図10)に示す処理を行うとともに、図14に示す負荷状態登録処理を並行して実行する。
図13を参照して、精算判定サーバ1における負荷状態判定処理を説明する。精算判定サーバ1は、予め定めた負荷状態判定タイミングになる毎に、図13に示す負荷状態判定処理を実行する。この負荷状態判定タイミングは、例えば数十秒〜数分間隔(10秒〜3分程度の間隔)で周期的に到来する。
精算判定サーバ1は、負荷状態判定機能30が直近の数十秒〜数分の期間における、単位時間当たりの運賃の金額の算出要求数に基づき、運賃の金額の算出処理にかかる負荷の大きさを推定する(s81)。s81で推定する負荷の大きさは、単位時間当たりの運賃の金額の算出要求数であってもよいし、単位時間当たりの運賃の金額の算出要求数を変数とする関数(例えば、一次関数や二次関数)によって算出される値であってもよい。
負荷状態判定機能30は、s81で推定した負荷の大きさが、第1の大きさαを超えているかどうかを判定する(s82)。負荷状態判定機能30は、s81で推定した負荷の大きさが、第1の大きさαを超えていれば、現在の負荷状態が定常負荷状態であるか、過負荷状態であるかを判定する(s84)。負荷状態判定機能30は、現在の負荷状態を図示していないメモリに記憶している。
負荷状態判定機能30は、現在の負荷状態が過負荷状態であれば、後述するs86に進む。一方、負荷状態判定機能30は、現在の負荷状態が定常負荷状態であると、メモリに記憶している負荷状態を定常負荷状態から、過負荷状態に更新する(s85)。また、負荷状態判定機能30は、過負荷状態である旨を通知する自動改札機2等の駅務機器を抽出する(s86)。負荷状態判定機能30は、直近の一定時間の間に、運賃の金額の算出要求を送信してきた駅務機器の中から、一部の駅務機器を抽出する。負荷状態判定機能30は、通信ユニット12を制御し、s86で抽出した各駅務機器に対して過負荷状態である旨を通知し(s87)、本処理を終了する。
また、負荷状態判定機能30は、s81で推定した負荷の大きさが第1の大きさαを超えていなければ、s81で推定した負荷の大きさが第2の大きさβを下回っているかどうかを判定する(s83)。負荷状態判定機能30は、s81で推定した負荷の大きさが第2の大きさβを下回っていなければ、本処理を終了する。また、負荷状態判定機能30は、s81で推定した負荷の大きさが第2の大きさβを下回っていれば、現在の負荷状態が定常負荷状態であるか、過負荷状態であるかを判定する(s88)。負荷状態判定機能30は、現在の負荷状態が定常負荷状態であれば、本処理を終了する。
負荷状態判定機能30は、現在の負荷状態が過負荷状態であると、メモリに記憶している負荷状態を過負荷状態から、定常負荷状態に更新する(s89)。さらに、負荷状態判定機能30は、通信ユニット12を制御し、各駅務機器に対して過負荷状態が解消した旨を通知し(s90)、本処理を終了する。
また、自動改札機2等の駅務機器は、図14に示すように、いずれかの精算判定サーバ1から過負荷状態である旨の通知があると、この精算判定サーバ1を許容テーブルに登録する(s91、s93)。許容テーブルには、精算判定サーバ1を識別するサーバコードを登録する。
また、自動改札機2等の駅務機器は、いずれかの精算判定サーバ1から過負荷状態が解消した旨の通知があると(s92)、この精算判定サーバ1が許容テーブルに登録されているかどうかを判定する(s94)。上述したように、精算判定サーバ1が過負荷状態である旨を通知した自動改札機2等の駅務機器は、その精算判定サーバ1を許容テーブルに登録しているが、精算判定サーバ1が過負荷状態である旨を通知していない自動改札機2等の駅務機器は、その精算判定サーバ1を許容テーブルに登録していない。自動改札機2等の駅務機器は、過負荷状態の解消通知があった精算判定サーバ1を許容テーブルに登録していると、この精算判定サーバ1のサーバコードを許容テーブルから削除する(s95)。
このように、この例の精算判定サーバ1は、運賃の金額の算出にかかる処理が過負荷状態になると、一部の自動改札機2等の駅務機器に対して、過負荷状態であることを通知する。また、自動改札機2等の駅務機器は、精算判定サーバ1から過負荷状態である旨の通知があると、その精算判定サーバ1のサーバコードを許容テーブルに登録する。
また、上記の例では、精算判定サーバ1が運賃の金額の算出にかかる処理が過負荷状態であると判定する負荷の大きさ(第1の大きさα)と、精算判定サーバ1が運賃の金額の算出にかかる処理が定常状態であると判定する負荷の大きさ(第2の大きさβ)と、にヒステリシスを持たせているので、判定結果が過負荷状態と定常負荷状態との間で頻繁に変化することがない。これにより、自動改札機2等の駅務機器が、許容テーブルに対する精算判定サーバ1のサーバコードの登録、削除が頻繁に繰り返すのを防止できる。
また、この例にかかる自動改札機2等の駅務機器が、上述したs25(図6参照)、およびs65(図10参照)で実行する精算判定サーバ選択処理について説明する。図15は、精算判定サーバ選択処理を示すフローチャートである。自動改札機2は、サーバ選択機能部20cが、接続先テーブル21aを参照し、現在時刻が属する時間帯に対応付けられている精算判定サーバ1を、運賃算出要求機能部20aによって運賃の金額の算出要求を送信する精算判定サーバ1として仮選択する(s101)。このs101は、上記したs25やs65と同様であるが、精算判定サーバ1を仮選択している点で相違する。
サーバ選択機能部20cは、s101で仮選択した精算判定サーバ1のサーバコードが許容テーブルに登録されているかどうかを判定する(s102)。サーバ選択機能部20cは、s101で仮選択した精算判定サーバ1のサーバコードが許容テーブルに登録されていなければ、s101で仮選択した精算判定サーバ1を、運賃の金額の算出要求を送信する精算判定サーバ1として選択する(s103)。一方、サーバ選択機能部20cは、s101で仮選択した精算判定サーバ1のサーバコードが許容テーブルに登録されていれば、許容テーブルに登録されていないいずれかの精算判定サーバ1を、運賃の金額の算出要求を送信する精算判定サーバ1として選択する(s104)。
このように、自動改札機2等の駅務機器は、運賃の金額の算出にかかる処理が過負荷状態である精算判定サーバ1を避けて、運賃の金額の算出要求を精算判定サーバ1に送信することができる。したがって、自動改札機2等の駅務機器は、運賃の金額を用いて行う駅務処理の処理効率が低下するのを一層抑えられる。
また、精算判定サーバ1は、上述したように、過負荷状態であると判定したとき、全ての自動改札機2等の駅務機器に対して、過負荷状態であることを通知するのではなく、一部の自動改札機2等の駅務機器に対して過負荷状態であることを通知する構成である。したがって、運賃の金額の算出にかかる処理が過負荷状態である精算判定サーバ1であっても、この精算判定サーバ1が過負荷状態である旨を通知していない自動改札機2等の駅務機器から、運賃の金額の算出要求が送信されてくる。これにより、ある精算判定サーバ1が、運賃の金額の算出にかかる処理が過負荷状態になったことによって、他の精算判定サーバ1が、運賃の金額の算出にかかる処理が過負荷状態になるのを抑制できる。