(57)【要約】【課題】  優先順位のレベル数の増加にも容易に対応でき、必ず優先順位に沿った処理ができる方法を提供する。【解決手段】  複数の優先順位が存在する指令データを一本のリスト構造の待ち行列キューで管理する。待ち行列キューのキューの並びは優先順位の高いもの順、また優先順位が同一レベルの場合は接続要求が発生した順とする。この並びを実現するために優先順位別最終キューアドレスを格納したテーブルを持ち、接続時は指定優先順位の最終キューとなるようにエンキューする。デキュー時は待ち行列キューの先頭キューからデキューし送信処理を施す。【選択図】図４
2005309661.tif 000002
【特許請求の範囲】
【請求項１】
ＦＡシステム制御装置内のモータ制御装置へ複数の優先順位のついた指令データを送信する送信キュー管理方法において、
タスクが指令情報を生成して待ち行列キューに接続するエンキュー処理の場合は、
前記指令情報に前記優先順位をもたせ、
優先順位別に最終キューアドレスを格納したテーブルを生成し、
複数の優先順位を持つ指令情報を一本の待ち行列キューに優先順位が高いものから順に接続し、
同じ優先順位内では接続要求が発生した順に接続し、
タスクが指令情報を待ち行列キューから取り外し送信処理をするデキュー処理の場合は、
待ち行列キューの先頭キューから順に処理を実施することを特徴とする送信キュー管理方法。
【請求項２】
前記エンキュー処理は、
データコア内の優先順位から同一優先順位の最終キューアドレス情報をテーブルから取得し同一優先順位の最終キューアドレスを取得するステップと、
取得した内容がＮＵＬＬか否かチェックするステップと、
前記内容がＮＵＬＬの場合には、より上位の優先順位の最終キューアドレス情報をテーブルから再度取得するステップと、
指定優先順位から最大優先順位までインデックスを１つずつカウントアップさせてＮＵＬＬでない登録インデックスを検索するステップと、
登録インデックスがありの場合は待ち行列の先頭として追加登録するステップと、
前記内容がＮＵＬＬで無い場合、および登録インデックスありの場合は最終キューに次キューとして追加登録するステップとからなることを特徴とする請求項１記載の送信キュー管理方法。
【請求項３】
前記デキュー処理は、
送信可能状態で、待ち行列キューにキューがあるかどうか判断するステップと、
キューがあれば先頭キューを取り外してし送信処理を実施するステップと
取り外したキューのアドレスが、指定優先順位の最終キューアドレスと同じであればその内容をＮＵＬＬとするステップとからなることを特徴とする請求項１記載の送信キュー管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーボやインバータなどＦＡシステム制御装置のエンジニアリングツールにおける送信キュー管理方法に関する。
【背景技術】
【０００２】
従来のサーボやインバータなどのエンジニアリングツールでは、サーボやインバータへ指令データを送信するために、一旦待ち行列キューに情報を保持する。待ち行列キューは、パイプ形式で生成されており、優先順位高と優先順位低の２段階の優先順位を持つ。通常、定周期でモニタリングするモニタデータや診断データなど急を要さない指令データは優先順位低の待ち行列を、それ以外は全て優先順位高の待ち行列を使用する。
各タスクは指令データを「データコア」と呼ばれるデータのかたまりで定義し、その指令内容により優先順位高か優先順位低かいずれかの待ち行列キューの最後尾に接続する。この待ち行列キューに接続する動作を「エンキュー」と呼ぶ。
指令データの送信順番は、優先順位高の待ち行列キューの先頭キューから順に処理され、優先順位低の待ち行列キューの処理は、優先順位高の待ち行列キューが空になった場合のみ処理される。
図６、図７に、従来の送信キュー管理方法の概念図を示す。各タスクは指令データを送信するためデータコアを作成し、その内容に従い優先順位高か優先順位低かいずれかの待ち行列キューの最後尾にエンキューする（図６）。図７において、キュー管理タスクは、送信可能な状態であれば、まず優先順位高の待ち行列キューにキューが存在しないかチェックする（Ｓ７０１）。処理Ｓ７０１でキューが存在すれば先頭のキューを待ち行列キューから取り外し、送信処理を実施する（Ｓ７０２）。このキュー取り外し処理を「デキュー」と呼ぶ。処理Ｓ７０１で優先順位高の待ち行列キューにキューが存在しなければ優先順位低の待ち行列キューを調べ（Ｓ７０３）、キューが存在すれば先頭のキューをデキューし、送信処理を実施する（Ｓ７０４）。再び送信可能状態になれば、優先順位高のキューからチェックする、という手順がとられていた。
また、サーボやインバータではないが、公開された従来例には特許文献１がある。
図８は特許文献１の従来例のブロック図である。図８において１０１はファクシミリ蓄積装置、１０２はファクシミリ端末、１０３は回線網、１０４は回線制御部、１０５は送信制御部、１０６は電文取出部、１０７は電文蓄積部、１０８は実行キュー監視部、１０９は実行キュー格納部、１１０は送信キュー管理部、１１１は送信待ちキュー格納部、１１２はタイマー待ちキュー格納部、１１３は主制御部、１１４は無停電電源装置である。図９は送信キュー管理部１１０の動作を示すフローチャートで、至急電文を送るときのフローを示している。図９においてステップＳＴ１は優先度普通で送信中のポートがあるかどうかを判断し、もしなければステップＳＴ２に進む。あればステップＳＴ４に進む。ステップＳＴ２では優先度「優先」で送信中のポートがあるかどうかを判断する。もしなければ至急の送信待ちキューの最後にリンクする。もしあればステップＳＴ４に進む。ステップＳＴ４では、最も最近送信を開始したポートで送信待ちの電文を全てキャンセルする。つまり、待ち行列キューを至急と優先と普通の３段階用意しておき、至急の電文を送るときには、普通と優先のポートを調べ送信中であれば送信をキャンセルして至急の電文を送信するというものである。
【特許文献１】特開平８−８４２４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
従来のキュー管理方法では、優先順位は高と低の２段階しかない。また待ち行列キューは先頭から処理するため、非常停止など緊急を要する指令データは最優先で送信しなければならないにも関わらず、優先順位高の待ち行列キューにエンキューしても、その前に多くの別のキューが存在する場合には、緊急を要するキューの処理まで時間がかなりかかってしまい、非常停止の意味がなくなる。さらに優先順位のレベルを増やすためには、現状のプログラムコードをかなり修正することでしか対応ができない。
またファクシミリの例では、優先の送信をキャンセルしても再送信することで問題は解決するがインバータやサーボでは動作データが含まれるので安全上キャンセルすることは不可能である。
本発明はこのような問題点に鑑みてなされたものであり、優先順位のレベル数の増加にも容易に対応でき、必ず優先順位に沿った処理ができる方法を提供することを目的とする。
【課題を解決するための手段】
【０００４】
請求項１に記載の本発明は、複数の優先順位のついた指令データを送信する送信キュー管理方法において、タスクが指令情報を生成して待ち行列キューに接続する場合は、指令情報に前記優先順位をもたせ、優先順位別に最終キューアドレスを格納したテーブルを生成し、複数の優先順位を持つ指令情報を一本の待ち行列キューに優先順位が高いものから順に接続し、同じ優先順位内では接続要求が発生した順に接続し、タスクが指令情報を待ち行列キューから取り外し送信処理をする場合は、待ち行列キューの先頭キューから順に処理を実施するようにしたものである。
請求項２記載の本発明は、請求項１記載の送信キュー管理方法において、エンキュー処理は、データコア内の優先順位から同一優先順位の最終キューアドレス情報をテーブルから取得し同一優先順位の最終キューアドレスを取得するステップと、取得した内容がＮＵＬＬか否かチェックするステップと内容がＮＵＬＬの場合には、より上位の優先順位の最終キューアドレス情報をテーブルから再度取得するステップと、指定優先順位から最大優先順位までインデックスを１つずつカウントアップさせてＮＵＬＬでない登録インデックスを検索するステップと、登録インデックスがありの場合は待ち行列の先頭として追加登録するステップと内容がＮＵＬＬで無い場合、および登録インデックスありの場合は最終キューに次キューとして追加登録するステップとからなるようにしたものである。
請求項３記載の本発明は、請求項１記載の送信キュー管理方法において、デキュー処理は、  送信可能状態で、待ち行列キューにキューがあるかどうか判断するステップと、キューがあれば先頭キューを取り外してし送信処理を実施するステップと取り外したキューのアドレスが、指定優先順位の最終キューアドレスと同じであればその内容をＮＵＬＬとするステップとからなるようにしたものである。
【発明の効果】
【０００５】
請求項１に記載の発明によると、優先順位のレベル数の増加にも容易に対応でき、必ず優先順位に沿った処理ができる。
【発明を実施するための最良の形態】
【０００６】
以下、本発明の方法の具体的実施例について、図に基づいて説明する。
【実施例１】
【０００７】
図１０は多軸のモーションコントローラを示すシステムブロック図である。図１０において、５０はモーションコントローラ、５１はエンジニアリングツール、５２〜５５はサーボアンプ、５６〜５９はモータ、６０はモーションコントローラとサーボアンプ、エンジニアリングツールのデータ伝送をするネットワークである。モーションコントローラ５０は通信周期ごとに軸番号データと指令データが含まれるデータと同期信号を送信する。サーボアンプはあらかじめ決められた自分の軸番号のデータを認識すると、そのデータを読み込み、同期信号と同時に実行する。さらにサーボアンプは現在位置、速度、トルク、などのモニタ信号やアラームやウオーニングなどの状態信号をデータ認識後にコントローラに送信する。エンジニアリングツール５１はコントローラやサーボアンプと同様の動作をすることができる。エンジニアリングツールのデータは送信キュー管理によって管理される。
図１は待ち行列キューのリスト構造を示す。１１は優先順位の高いキュー、１２は優先順位の低いキューである。各タスクからのエンキュー要求によりキュー管理タスクが待ち行列キューにエンキューするが、エンキューする時点で優先順位別に整列した状態で登録する。なお、当待ち行列キューに同一の優先順位を持つキューが既に接続されている場合には、同一レベルの最終部にエンキューする。
【０００８】
図２はキューの構成図を示す一例である。キューの内容は、データコア部と次キューアドレスの２つから構成される。データコア部は、送信先軸番号、優先順位、送信データなど送信に必要な情報を持つ。優先順位は１からＮまでの任意の値とし、数値が大きくなる程優先順位は高くなる。次データアドレスは、次に接続されているキューバッファのポインタを格納する。次キューアドレスがＮＵＬＬである場合は、待ち行列キューの最後尾であることを意味する。
【０００９】
図３は、優先順位別最終キューアドレスが格納されているテーブルである。優先順位のレベル数分インデックスを準備し、初期値はＮＵＬＬとしておく。これによりインデックス内容がＮＵＬＬである場合は、その優先順位に対して接続されているキューは存在しないということがわかる。
キュー管理タスクはエンキュー時、指定されたキューをその優先順位の最終キューに接続すると同時に、該当するテーブルのインデックス内容をエンキューしたキューアドレスに変更する。またデキュー時には、対象のキューが本テーブルに記載されたキューアドレスと同一の場合には、その優先順位の最後まで送信処理を実施したこととなるので、該当するテーブルのインデックス内容をＮＵＬＬに更新する。
【００１０】
図４はキュー管理タスクのエンキュー処理手順を示すフローチャートである。各タスクからのエンキューにより、データコア内の優先順位から同一優先順位の最終キューアドレス情報を該当するテーブルから取得し（Ｓ４０１）、その内容がＮＵＬＬか否かチェックする(Ｓ４０２)。処理Ｓ４０２でＮＵＬＬの場合には、より上位の優先順位の最終キューアドレス情報を該当するテーブルから再度取得する（Ｓ４０３）。このとき指定優先順位から最大優先順位までインデックスを１つずつカウントアップさせてＮＵＬＬでないインデックスを検索する。ＮＵＬＬでないインデックスが見つかればその時点で検索を停止する。処理Ｓ４０４でより上位の優先順位のデータが１つも登録されていない場合は、待ち行列キューの先頭にキューを追加し（Ｓ４０５）、該当するテーブルの内容を更新する（Ｓ４０７）。処理Ｓ４０２のチェックでＮＵＬＬ以外の場合および処理Ｓ４０４でより上位の優先順位にキューの登録がある場合には、その最終キューの次データとして待ち行列キューに追加し、処理Ｓ４０７に移行する。
【００１１】
図５はキュー管理タスクのデキュー処理手順を示すフローチャートである。送信可能状態で、待ち行列キューにキューがあれば（Ｓ５０１）、先頭キューをデキューし送信処理を実施する（Ｓ５０２）。このときデキューしたキューアドレスが、図３の指定優先順位の最終キューアドレスと同じであればその内容をＮＵＬＬに更新する。
【産業上の利用可能性】
【００１２】
本発明は、優先順位のレベル数の増加にも容易に対応でき、必ず優先順位に沿った処理ができる送信キュー管理方法を提供できるので、インバータやサーボが使用される工作機械、ロボット、一般産業分野などに幅広く利用できる。
【図面の簡単な説明】
【００１３】
【図１】本発明の待ち行列キューのリスト構造を示す図
【図２】本発明のキュー構造を示す一例
【図３】本発明の優先順位別最終キューアドレス格納テーブル
【図４】本発明のエンキュー処理手順を示すフローチャート
【図５】本発明のデキュー処理手順を示すフローチャート
【図６】従来の方法の待ち行列キューを示す図
【図７】従来の方法のデキュー処理手順を示すフローチャート
【図８】従来例のブロック図
【図９】従来例のフローチャート
【図１０】本発明を適用するモーションコントローラのブロック図
【符号の説明】
【００１４】
１１  優先順位の高いキュー
１２  優先順位の低いキュー
５０  モーションコントローラ
５１  エンジニアリングツール
５２〜５５  サーボアンプ
５６〜５９  モータ
６１  優先順位の高いグループの先頭キュー
６２  優先順位の高いグループの最終キュー
６３  優先順位の低いグループの先頭キュー
６４  優先順位の低いグループの最終キュー
【図１】
2005309661.tif 000003
【図２】
2005309661.tif 000004
【図３】
2005309661.tif 000005
【図４】
2005309661.tif 000006
【図５】
2005309661.tif 000007
【図６】
2005309661.tif 000008
【図７】
2005309661.tif 000009
【図８】
2005309661.tif 000010
【図９】
2005309661.tif 000011
【図１０】
2005309661.tif 000012