(57)【要約】【課題】  周辺機器制御アプリケーションにおいて動的に制御スクリプトを作成することにより、（１）新規機種対応時のソフトウェア開発の工数削減（２）機能拡張時の工数削減（３）機能組み合わせバリエーションの拡大といった効果を奏する。【解決手段】  周辺機器制御方法や手順を機能毎に管理する機能データベースと接続し、制御シーケンスを動的に生成する。【選択図】  図１
2006259999.tif 000002
【特許請求の範囲】
【請求項１】
周辺機器制御方法や手順を機能毎に管理する機能データベースと、
コマンドによって制御される周辺機器と、
前記データベースと前記周辺機器に接続し、前記周辺機器を制御する周辺機器制御システムであって、
前記周辺機器制御システムは、
前記機能データベースから機能実現方法を示すシナリオを取得するシナリオ取得手段、
取得したシナリオを保持、管理するシナリオ保持手段、
前記シナリオ保持手段に格納されているシナリオを用いて、周辺機器を制御するためのシーケンスを生成するシーケンス生成手段、
前記シーケンス生成手段が作成したシーケンスを周辺機器制御コマンドに変換し、前記周辺機器へコマンド送信するシーケンス実行手段から構成され、周辺機器の機能と対応したシーケンスを動的に作成することを特徴とする周辺機器制御システム。
【請求項２】
前記機能データベースは、単一機能毎の機能実現方法の保持とともに、他機能との関係情報を保持しており、機能間の継承関係や集約関係を示す。また、機能データベースに保持される機能は、それぞれ識別子をもち、機能を実現するためのコマンド、コマンドの実行順番と関連しているシナリオが定義される。
継承関係が成り立つ場合、継承先のシナリオは継承元の識別子、追加分の機能に対応するコマンド、追加分のコマンドの挿入を含む。継承元のシナリオには、コマンド挿入可能な位置が定義される。
集約関係が成り立つ場合、複数機能から構成されるシナリオは、集約の部品となる識別子を保持する。
これらシナリオの解析をシーケンス生成手段で行うことを特徴とする請求項１に記載の周辺機器制御システム。
【請求項３】
前記シーケンス生成手段は、単一機能を実現するシナリオを複数組み合わせてシーケンスを作成するものであって、シナリオの構成要素を解析するシナリオ解析手段、
機能間の関連情報をシーケンス生成に反映する機能関連情報反映手段、
複数シナリオをマージしてひとつのシーケンスを作成するシナリオ統合手段から構成され、
シーケンス生成手段は、実行すべき機能をシナリオに対応させるステップ、機能間の関連情報を取得し、機能の統合方法を抽出するステップと複数のシナリオをマージするステップを有することを特徴とする請求項１に記載の周辺機器制御システム。
【請求項４】
前記シーケンス実行手段は、生成されたシーケンスを解析するシーケンス解析手段、
シーケンスを構成するコマンドを周辺機器へ送信可能なパケット形式やAPIコールの形式に変換するコマンド変換手段、周辺機器に接続し、コマンドを送信またはAPIコールするコマンド実行手段からから構成される。
シーケンスからコマンドを抽出するステップ、コマンドを周辺機器へ通信可能な形式に変換するステップ、周辺機器と通信してシーケンスを実行するステップを有することを特徴とする請求項１に記載の周辺機器制御システム。
【請求項５】
前記データベースは、ネットワーク上の所定のサーバに格納されていることを特徴とする請求項１に記載の周辺機器制御システム。
【請求項６】
前記制御装置は、前記周辺機器外に配置され、前記周辺機器をリモートから制御することを特徴とする請求項１から請求項３に記載の周辺機器制御システム。
【請求項７】
前記制御装置は、前記周辺機器内に配置され、前記周辺機器をローカルで制御することを特徴とする請求項１から請求項３に記載の周辺機器制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、周辺機器装置の制御システムに関し、特に、周辺機器の仕様に適合した制御を行うための制御装置、および、制御方法に関する。
【背景技術】
【０００２】
従来、プリンタやコピー機などの周辺機器制御システムにおいて、機器仕様に適合した制御を行うための方法として、以下のような方法が考案されている。
【０００３】
特開２０００−１３７５９３号公報では、周辺機器から取得した機器仕様情報に応じて、周辺機器を制御するための制御プログラムのユーザーインターフェースを自動構成するという方法が記載されている。
【０００４】
周辺機器を制御する制御プログラムの一例として、プリンタを制御するプリンタドライバに上述の方法を適用した場合、プリンタが有している機能に応じて、プリンタドライバのユーザーインターフェース上で選択できる機能を切り替えることができるので、プリンタドライバをプリンタの仕様に応じた構成にすることができる。
【０００５】
その他の方法として特開平９−７３３０３号では、指定された機能シンボルによって順次シーケンス図を作成し、これをもとに制御装置が実行可能なプログラムを自動生成する方法が記載されている。上記の方法をプリンタドライバに適用した場合、プリンタ制御シーケンス図から自動的にプリンタ制御プログラムを生成することができる。
【特許文献１】特開２０００−１３７５９３号公報
【特許文献２】特開平９−７３３０３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来の方法では、周辺機器を制御するための一連の制御手順自体は同じで、制御手順に含まれる制御コマンドのパラメータのみが機器や機器構成によって異なる場合は有効であるが、機器や機器の構成によって一連の制御手順（制御スクリプト）自体が大きく異なる場合は、これだけでは解決できない問題が生じていた。
【０００７】
例えば、制御手順（制御スクリプト）が大きく異なる複数のプリンタに対応したプリンタドライバを作成するような場合、一つのプリンタドライバの中に、対応する機種分の制御手順（制御スクリプト）を盛り込まなければならず、プリンタドライバのプログラムが膨大になってしまうという問題が生じていた。
【０００８】
また、プリンタ側の制御手順が変更された場合、プリンタドライバもこれに追従して更新しなければならなかった。即ち、周辺機器の制御方法変更に伴い、ドライバのソフトウェアの変更が必ず生じていた。
【０００９】
そして第２の従来方法は、静的にプログラムを生成するものである。そのため、制御手順の変更に対しては、再度プログラム生成やユーザへの配布形態に生成しなおす必要があり、プログラムを再配布しなければならなかった。
【００１０】
本発明は上述の問題点を解決するためになされたもので、本発明の第1の目的は、周辺機器の機器仕様に適合した制御スクリプトを動的に生成することが可能な周辺機器制御システムを提供することである。
【００１１】
また、本発明の第２の目的は、制御手順の異なる複数の周辺機器を一つの制御装置で制御する際、制御装置側の処理や資源の軽減を可能にすることである。
【課題を解決するための手段】
【００１２】
上記課題を解決するため、制御シーケンスの動的的な生成を達成する。
【００１３】
本発明は、機能データベースで保持されるシナリオで定義された制御方法を元に、周辺機器を制御するためのシーケンスを自動生成することを特徴とする。機能データベースから動的に機能実現情報を収集してデバイスを制御するため、機能拡張や機能追加によるプログラムの変更が生じず、機能拡張や機能追加にフレキシブルに対応できる。更に、制御方法が異なる複数の機器を一つの制御装置で対応可能である。
【００１４】
請求項１に記載の周辺機器制御装置は以下の構成を備える。
【００１５】
本発明の原理図（図１）で示す。
【００１６】
２は本制御装置の制御対象の周辺機器であり、１は周辺機器制御方法や手順を機能毎に管理する機能データベースを示している。
【００１７】
本発明は、機能データベースとデータベースで保持されている制御方法によって制御される周辺機器と接続し、周辺機器を制御する周辺機器制御システムである。
【００１８】
周辺機器制御装置は、機能データベースから機能実現方法を取得するシナリオ取得部３、取得したシナリオを保持、管理するシナリオ保持部４、シナリオ保持部に格納されているシナリオを用いて、周辺機器を制御するためのシーケンスを生成するシーケンス生成部５、シーケンス生成部が作成したシーケンスを周辺機器制御コマンドに変換し、前記周辺機器へコマンド送信するシーケンス実行部６から構成されている。
【発明の効果】
【００１９】
従来のソフトウェアの構成では、周辺機器の機能に応じて周辺機器の制御方法を変更する場合、ソフトウェアを新たに作成する必要があり、ソフトウェアの変更なしに制御方法をアップグレードすることができなかった。
【００２０】
本発明では、機能データベースに機能毎の制御方法を格納しておき、それを制御装置が利用することによって、ソフトウェアの変更なしに、周辺機器の機器仕様に適合した制御スクリプトの動的生成を可能とした。更に、制御手順の異なる複数の周辺機器を一つの制御装置で制御する際、制御装置側の処理や資源の軽減が可能である。
【発明を実施するための最良の形態】
【００２１】
（第１の実施形態）
以下、本発明による周辺機器制御装置を適応した実施の形態について説明する。
【００２２】
図２は実施形態における内部構造を示す。
【００２３】
図２においてＣＰＵ（２１）はシステムバス（２２）を介して、ＲＯＭ（２３）、ＲＡＭ（２４），入力インターフェース（２５）、外部記憶インターフェース（２７）に接続され、各部との間でデータを授受する。また、入力インターフェース（２５）を介してキーボードなどの入力デバイス（２６）の入力情報を受信する。外部記憶インターフェース（２７）を介してＨＤなどの外部記憶デバイス（２８）のデータを読み書きする。
【００２４】
ＲＯＭ（２３）はＣＰＵ（２１）によって実行される制御プログラム、装置の初期化における初期データ、プロトコル仕様テーブルなどを記憶している。ＲＡＭ（２４）は、ＣＰＵ（２１）のワークエリアであり、各種レジスタ、データ領域が用意されている。
【００２５】
図３は実施形態におけるシステムの構成である。本周辺機器制御装置（３１）は制御対象の周辺機器A（３２）及び周辺機器B（３３）とネットワークで接続されており、ＴＣＰ／ＩＰやＵＤＰ／ＩＰなどのトランスポートレイヤの上位に規定されたアプリケーション層の所定プロトコルによりコマンドを授受する。該プロトコルは機器の機能制御コマンドを有しており、印刷や画像スキャン、ファイル蓄積などの機能を実行させることができる。
【００２６】
周辺機器を制御する際、制御装置（３１）は、機能データベース（３４）に接続し、該制御コマンドによる機能実現方法を取得して周辺機器制御シーケンスを作成、実行する。
【００２７】
図４は実施形態における周辺機器制御装置のモジュール構成を示す。
【００２８】
本周辺機器制御装置（４０）は、シナリオ取得部（４３）、シナリオ保持部（４４）、シーケンス生成部（４５）、シーケンス実行部（４６）から構成される。
【００２９】
シナリオ取得部（４３）は、機能データベース（４１）から機能の実現方法を記載したシナリオを取得し、シナリオ保持部（４４）はシナリオを保持する。
【００３０】
シーケンス生成部（４５）はシナリオの内容を解析するシナリオ解析部（４５１）、機能間の関連を考慮してシーケンス生成方法を決定する機能関連情報反映部（４５２）、複数シナリオを統合するシナリオ統合部（４５３）から構成される。
【００３１】
シーケンス実行部（４６）は、シーケンス生成部（４５）が生成したシーケンスを解釈するシーケンス解釈部（４６１）、解析によって抽出されたコマンドを実行形態に変換するコマンド変換部（４６２）、周辺機器（４２）へ接続してコマンドをパケット送信するコマンド実行部（４６３）から構成される。
【００３２】
機能選択ユーザインターフェース（４７）は、ユーザの機能選択画面で、制御対象の周辺機器の機能を指定するものである。
【００３３】
図５は実施形態における機能データベースのデータ構造図である。
【００３４】
機能データベースは、機能を識別する「ID」、「機能名」、機能を実現するために使用されるコマンドを示す「使用コマンド」、コマンド中に指定される属性を示す「使用属性」、機能間の関連を示す「継承機能」及び「集約機能」、具体的なコマンド発行順番を記述したシナリオファイルを示す「シナリオへのリンク」を保持している。
【００３５】
機能間の関連を示す「継承機能」を図６で説明する。
【００３６】
“部数を指定して印刷する”という機能（UC002）は、単純に“印刷する”機能（UC001）に部数指定という付加機能を加えたものである。
【００３７】
“部数を指定して印刷する”機能（UC002）を実現する場合、使用するコマンドはCreateJob,CreatePage,SetAttributeの3つである。一方、“印刷する”機能（UC001）はCreateJob,CreatePageの２つを使用する。“部数を指定して印刷する”機能（UC002）はUC001を継承し、更にSetAttributeコマンドでコピー部数を指定している。
【００３８】
UC003,UC004も同様にUC001を継承し、UC001にSetAttributeによる属性設定を加えた機能と言える。
【００３９】
ところで、“部数指定し且つ両面印刷を行い、ステイプルを行うジョブを投入する”機能は、UC002,UC003,UC004の組み合わせと捉えることができ、継承元のUC001に対してそれぞれの機能を追加していると言える。
【００４０】
図７は「集約機能」の例である。
【００４１】
“機器内のジョブの状態を取得する”機能（UC210）は、“ジョブハンドルを取得する”機能（UC200）と“ジョブの状態を取得する”機能（UC100）の２機能から構成されている。“機器内のジョブの状態を取得する”機能（UC210）を実現するためには、UC200とUC100と順番に実行すればよい。
【００４２】
図５のデータ構造の「継承機能」は、機能を継承している元の機能IDを示し、「集約機能」は、機能を構成する部品の機能IDを示している。
【００４３】
図５のデータ構造の“シナリオへのリンク”は、シナリオをXML記述したファイルへのパスである。このXMLファイルには、機能を実現するためのコマンドの発行順序、機能間の関連情報等が示されている。シナリオのスキーマを図８で示す。
【００４４】
図の四角はXMLのElementを表現しており、上段の四角はXMLの要素名を下段の四角はXMLの要素属性名を示す。
【００４５】
図8の各要素は次の意味を持つ。
【００４６】
・Function：機能を示す。機能IDと機能名称を要素属性として保持する。Function要素下には、一つ以上のRelationFunctionまたはCommand、Insertion要素が存在する。
【００４７】
・RelationalFunction：関連する機能を示す。関連する機能ID（複数指定可）とその関連の種類（継承または集約）を要素属性として保持する。RelationFunction要素下には、Command要素が存在する場合がある。
【００４８】
・Command：機能を構成するコマンドを示す。コマンド名称を要素属性として持つ。RelationFunction要素下に配置され、且つ継承関係が成り立つ場合のみCommandの挿入位置属性が有効になる。Command要素下には、Parameter要素が存在する。
【００４９】
・Parameter：コマンドのパラメータを示す。パラメータ名称とパラメータの型を要素属性として持つ。Parameter要素下には、パラメータに代入すべき数値またはパラメータ値域内の値いずれかが代入されることを示す予約語（PARAM_ANY）が記載される。
【００５０】
・Insertion：コマンドの挿入可能位置を示す。Insertion要素の識別のため、ラベル要素属性が定義される。
【００５１】
機能の具体的なシナリオの記述例を図９、図１０、図１１に示す。
【００５２】
図９は継承元のシナリオ例である。“印刷する”機能を示すFunction要素にコマンド挿入可能位置を定義するInsertion要素とコマンドの実行を示すCommand要素が定義されている。本例では、３つのInsertion要素が定義されているが、それぞれCommand要素の“CreateJob”の前と後、“CreatePage”の後にコマンド挿入可能であることを示している。
【００５３】
図１０は、継承先のシナリオ例である。RelationFunction要素を用いて継承元の機能を指定し、更に、コマンドの追加をCommand要素によって示している。Command要素には継承元の挿入位置を示すPosition要素属性が設けられ、どのInsertion要素の位置にコマンドを追加すべきかを示している。
【００５４】
図１１は、集約のシナリオ例である。RelationFunction要素を用いて、集約の部品となる機能シナリオを列挙している。本例の場合、UC210はUC200とUC100から構成され、UC200,  UC100の順番でコマンドが構成されることを示している。
【００５５】
図１２は実施形態におけるプリント機能のユーザインターフェースと設定データの例である。
【００５６】
周辺機器制御装置のUI画面１（１２１）では、ネットワークに接続されている周辺機器を列挙する。この画面で制御対象の周辺機器を選択し、OKボタンを押下することによりUI画面２（１２２）が表示される。UI画面２ではプリンタの複数機能を表示しており、ユーザはこの中から所望の機能を指定してドキュメントの印刷を行うことができる。
【００５７】
UI画面２でOKボタンを押下することにより、設定データが確定する。同図１２の設定データ（１２３）は、3部の部数印刷機能と両面印刷機能を選択した場合に内部的に保持するデータを示す。
【００５８】
図１３は実施形態におけるシステム全体のフローチャートである。
【００５９】
図４の機能選択ユーザインターフェース（４７）で設定された複数の機能とそのパラメータを取得し（S１３１）、シナリオ取得部（４３）が選択された機能の機能IDを指定して対応するシナリオを機能データベース（４１）から取得する（S１３２）。
【００６０】
取得した全シナリオをマージしてシーケンスを生成するために、シーケンス生成部（４５）は次の処理を行う。シナリオ内に抽象パラメータ（PARAM_ANYで示される予約語）が存在する場合は（S１３４）、抽象パラメータへユーザインターフェースで指定されたパラメータを代入する（S１３５）。
【００６１】
シナリオ内に他機能との関係を示すRelationFunction要素を検出し（S１３６）、関連が継承関係だった場合は継承関係処理（S１３８）を、集約関係だった場合は集約関係処理（S１３９）、関連がなかった場合は、単一機能処理（S１３７）を行う。
【００６２】
全てのシナリオについてS１３４〜S１３９の処理を行い（S１３３）指定機能のシナリオを統合した後、コマンド実行に不要なRelationFunctionやInsertion要素を削除する（S１３１０）。このようにして作成した複数機能のシナリオを統合したシーケンスをファイルの形式で格納する（S１３１１）。
【００６３】
図１４は、複数のシナリオを統合してシーケンスを作成した例である。“部数を指定して印刷する”機能（UC002）のシナリオと“両面印刷する”機能（UC00３）のシナリオを統合して、“部数指定して両面印刷する”機能のシーケンスを生成している。シーケンスには、コマンド実行時に必要な、コマンド種別やパラメータ内容が記載されている。
【００６４】
図１５、図１９、図２０は、シーケンス生成処理のフローチャートである。シーケンス生成部（４５）のシナリオ解析部（４５１）がシナリオを解析し、機能関連情報反映部（４５２）が機能間の関連を検出し、継承関係のあるシナリオ、集約関係のあるシナリオ、他の機能とは関連をもたず単一機能で構成されるシナリオの3種類を識別する。
【００６５】
シナリオ統合部（４５３）は、単一機能のシナリオ、継承関係を持つシナリオ、集約関係を持つシナリオのそれぞれに対応する処理を行い、複数シナリオを統合し、シーケンスファイルを生成する。
【００６６】
図１５に示すように、単一機能のシナリオの場合、シナリオ統合部の保持するテンポラリ領域にシナリオを展開する（S１５１）。
【００６７】
図１９に示すように、継承関係を持つシナリオの場合、継承している機能IDをシナリオから検出し（S１５２）、シナリオ取得部（４３）を用いて継承している機能のシナリオを取得する（S１５３）。テンポラリ領域にシナリオが展開されていない場合は（S１５４）、継承しているシナリオをテンポラリ領域に展開する（S１５５）。シナリオからCommand要素を検出し、継承している機能のシナリオへCommanｄ要素を追加する。Command要素の挿入位置属性を取得し（S１５７）、指定位置にCommand要素を挿入する（S１５８）。全てのCommand要素についてS１５７〜S１５８を行う（S１５６）。
【００６８】
図２０に示すように、集約関係を持つシナリオの場合、集約している機能のシナリオを抽出し（S１５１０）、シナリオ取得部（４３）を用いて機能の部品として包含している機能のシナリオを取得する（S１５１２）。取得したシナリオをテンポラリ領域の終端に展開する（S１５１３）。全てのシナリオについてS１５１２〜S１５１３を行う（S１５１１）。このようにして、集約している機能の出現順序に従って処理を行い、機能の部品となるシナリオを統合する。
【００６９】
上記の手順で作成したシーケンスをシーケンス実行部（４６）で実行する。図１６はシーケンス実行処理のフローチャートである。シーケンス実行部（４６）は、シーケンス作成部（４５）で作成したシーケンスを取得し（S１６１）、対象機器へネットワーク接続する（S１６２）。取得したシーケンスからCommand要素を抽出し（S１６３）、抽出したすべてのCommand要素に対し（S１６４）、Command要素やその要素下にあるParameter要素をパケットに変換して（S１６５）パケットを送信する（S１６６）。全てのCommand要素をパケット送信した後、機器の接続を切り（S１６７）機能依頼のためのコマンド投入を完了する。
【００７０】
（第２の実施形態）
実施例１の構成では、機器制御装置がネットワークを介して周辺機器を制御していた。
【００７１】
実施例２では、機器制御装置が周辺機器と同一のシステム内に配置され、周辺機器をローカルで制御する例を示す。
【００７２】
図１７は実施例２のシステム構成図である。周辺機器（１７２）内に制御装置（１７３）が配され、制御装置が周辺機器を制御する際は、ネットワークで接続された機能データベース（１７１）より機能を実現するための方法が記載されたシナリオを取得する。
【００７３】
制御装置が周辺機器を制御する際、規定のI/F（API）を用いる。制御装置は周辺機器の持つユーザインターフェースによって機能実行指示を受け、周辺機器に対して図４のシーケンス実行部（４６）でAPIコールを行う。
【００７４】
図１８はシーケンス実行処理のフローチャートである。シーケンス実行部（４６）は、シーケンス作成部（４５）で作成したシーケンスを取得する（S１８１）。取得したシーケンスからCommand要素を抽出し（S１８2）、抽出したすべてのCommand要素に対し（S１８3）、Command要素やその要素下にあるParameter要素をAPIに変換して（S１８4）APIコールする（S１８5）。全てのCommand要素を実行した後、機能依頼のためのコマンド投入を完了する。
【図面の簡単な説明】
【００７５】
【図１】本発明の周辺機器制御装置の原理図である。
【図２】本実施形態の周辺機器制御装置の動作構成図である。
【図３】本実施形態１のシステム構成図である。
【図４】本実施形態のモジュール構成図である。
【図５】本実施形態の機能データベースのデータ構造図である。
【図６】本実施形態の機能の継承関係例である。
【図７】本実施形態の機能の集約関係例である。
【図８】本実施形態の機能シナリオスキーマである。
【図９】本実施形態の機能シナリオのXML記述例１である。
【図１０】本実施形態の機能シナリオのXML記述例２である。
【図１１】本実施形態の機能シナリオのXML記述例３である。
【図１２】本実施形態のユーザインターフェースと設定データである。
【図１３】本実施形態のシステムのフローチャートである。
【図１４】本実施形態のシーケンス生成例である。
【図１５】本実施形態のシーケンス生成処理のフローチャートである。
【図１６】本実施形態１のシーケンス実行処理のフローチャートである。
【図１７】本実施形態２のシステム構成図である。
【図１８】本実施形態２のシーケンス実行処理のフローチャートである。
【図１９】シーケンス生成フローチャート。
【図２０】シーケンス生成フローチャート。
【図１】
2006259999.tif 000003
【図２】
2006259999.tif 000004
【図３】
2006259999.tif 000005
【図４】
2006259999.tif 000006
【図５】
2006259999.tif 000007
【図６】
2006259999.tif 000008
【図７】
2006259999.tif 000009
【図８】
2006259999.tif 000010
【図９】
2006259999.tif 000011
【図１０】
2006259999.tif 000012
【図１１】
2006259999.tif 000013
【図１２】
2006259999.tif 000014
【図１３】
2006259999.tif 000015
【図１４】
2006259999.tif 000016
【図１５】
2006259999.tif 000017
【図１６】
2006259999.tif 000018
【図１７】
2006259999.tif 000019
【図１８】
2006259999.tif 000020
【図１９】
2006259999.tif 000021
【図２０】
2006259999.tif 000022