(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-25
(45)【発行日】2024-12-03
(54)【発明の名称】制御装置、制御方法および制御プログラム
(51)【国際特許分類】
G05B 19/042 20060101AFI20241126BHJP
G05B 19/05 20060101ALI20241126BHJP
【FI】
G05B19/042
G05B19/05 A
(21)【出願番号】P 2021015577
(22)【出願日】2021-02-03
【審査請求日】2023-12-12
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】仲野 征彦
(72)【発明者】
【氏名】若年 哲司
【審査官】大古 健一
(56)【参考文献】
【文献】特開2005-321954(JP,A)
【文献】特開2004-259010(JP,A)
【文献】特開2003-177806(JP,A)
【文献】国際公開第2017/098564(WO,A1)
【文献】米国特許出願公開第2018/0341241(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/04 -19/05
(57)【特許請求の範囲】
【請求項1】
制御対象を制御するための制御装置であって、
シーケンス命令を含む第1ユーザプログラムを所定周期毎に実行する第1プログラム実行部と、
所定のプログラミング言語で記述された第2ユーザプログラムを逐次解釈して実行する第2プログラム実行部と
を備え、各所定周期において、前記第1ユーザプログラムが実行されていない期間において、前記第2ユーザプログラムが実行され、
複数のステートを有するステートマシーンの遷移に応じて、前記第1ユーザプログラムとして規定された第1ユーザ定義処理、および、前記第2ユーザプログラムとして規定された第2ユーザ定義処理、の実行を管理する実行管理部とを備え、
前記実行管理部は、
予め定められた1または複数のイベントの発生に応じて、前記ステートマシーンを遷移させ、
前記ステートマシーンに遷移が生じると、当該遷移に対応付けられた実行すべきユーザ定義処理を決定する、制御装置。
【請求項2】
前記ステートマシーンに生じ得る遷移の各々に対応付けて、任意のユーザ定義処理が設定可能になっている、請求項1に記載の制御装置。
【請求項3】
前記ステートマシーンに生じ得る遷移の各々に対応付けられるユーザ定義処理は、ユーザインターフェイス画面を介して設定される、請求項2に記載の制御装置。
【請求項4】
前記実行管理部は、予め定められた実行形態に従ってユーザ定義処理を実行させる、請求項1~3のいずれか1項に記載の制御装置。
【請求項5】
前記実行形態は、対応するステートに遷移するときに一度だけ実行される第1実行形態と、対応するステートに存在する期間において実行され続ける第2実行形態と、対応するステートから別のステートに遷移するときに一度だけ実行される第3実行形態とのうち少なくとも1つを含む候補から選択される、請求項4に記載の制御装置。
【請求項6】
前記実行管理部は、前記ステートマシーンを遷移させる条件が成立した場合であっても、対応するユーザ定義処理の実行完了を待って遷移させる、請求項1~5のいずれか1項に記載の制御装置。
【請求項7】
前記ステートマシーンは、前記制御対象に対する制御権の獲得および解放に応じて遷移するステートを含む、請求項1~6のいずれか1項に記載の制御装置。
【請求項8】
前記ステートマシーンは、前記制御対象の動作状態に対応するステートマシーンに関連付けて規定される、請求項1~7のいずれか1項に記載の制御装置。
【請求項9】
制御対象を制御するための制御装置で実行される制御方法であって、
複数のステートを有するステートマシーンを管理するステップと、
前記ステートマシーンの遷移に応じて、シーケンス命令を含む第1ユーザプログラムとして規定された第1ユーザ定義処理、および、所定のプログラミング言語で記述された第2ユーザプログラムとして規定された第2ユーザ定義処理、の実行を管理するステップと、
前記第1ユーザ定義処理を所定周期毎に実行するステップと、
前記第2ユーザ定義処理を逐次解釈して実行するステップとを備え
、各所定周期において、前記第1ユーザプログラムが実行されていない期間において、前記第2ユーザプログラムが実行され、
前記ステートマシーンを管理するステップは、予め定められた1または複数のイベントの発生に応じて、前記ステートマシーンを遷移させるステップを含み、
前記実行を管理するステップは、前記ステートマシーンに遷移が生じると、当該遷移に対応付けられた実行すべきユーザ定義処理を決定するステップを含む、制御方法。
【請求項10】
制御プログラムであって、制御対象を制御するための制御装置に、
複数のステートを有するステートマシーンを管理するステップと、
前記ステートマシーンの遷移に応じて、シーケンス命令を含む第1ユーザプログラムとして規定された第1ユーザ定義処理、および、所定のプログラミング言語で記述された第2ユーザプログラムとして規定された第2ユーザ定義処理、の実行を管理するステップと、
前記第1ユーザ定義処理を所定周期毎に実行するステップと、
前記第2ユーザ定義処理を逐次解釈して実行するステップとを実行させ
、各所定周期において、前記第1ユーザプログラムが実行されていない期間において、前記第2ユーザプログラムが実行され、
前記ステートマシーンを管理するステップは、予め定められた1または複数のイベントの発生に応じて、前記ステートマシーンを遷移させるステップを含み、
前記実行を管理するステップは、前記ステートマシーンに遷移が生じると、当該遷移に対応付けられた実行すべきユーザ定義処理を決定するステップを含む、制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御装置、制御方法および制御プログラムに関する。
【背景技術】
【0002】
様々な生産現場において、PLC(プログラマブルコントローラ)などの制御装置を用いたFA(Factory Automation)技術が広く普及している。近年のICT(Information and Communication Technology)の進歩に伴って、制御装置は、従来のシーケンス制御だけではなく、ロボットや工作機械などを制御することも可能になっている。
【0003】
例えば、特開2019-036043号公報(特許文献1)は、実行形式の異なる複数種類のプログラムに従う制御演算を単一の制御装置で実現する構成を開示する。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
上述したような実行形式の異なる複数種類のプログラムを共通の制御対象に対して実行する場合には、プログラム間で実行する処理内容を適宜分担できるように設計する必要がある。このような実行形式の異なる複数種類のプログラムのプログラミングを容易化する技術を提供することを一つの目的としている。
【課題を解決するための手段】
【0006】
本発明のある局面に従えば、制御対象を制御するための制御装置が提供される。制御装置は、シーケンス命令を含む第1ユーザプログラムを所定周期毎に実行する第1プログラム実行部と、所定のプログラミング言語で記述された第2ユーザプログラムを逐次解釈して実行する第2プログラム実行部と、複数のステートを有するステートマシーンの遷移に応じて、第1ユーザプログラムとして規定された第1ユーザ定義処理、および、第2ユーザプログラムとして規定された第2ユーザ定義処理、の実行を管理する実行管理部とを含む。実行管理部は、予め定められた1または複数のイベントの発生に応じて、ステートマシーンを遷移させ、ステートマシーンに遷移が生じると、当該遷移に対応付けられた実行すべきユーザ定義処理を決定する。
【0007】
この構成によれば、実行管理部が第1プログラム実行部および第2プログラム実行部においてそれぞれ実行されるユーザ定義処理を決定するので、第1ユーザプログラムおよび第2ユーザプログラム自体にインターロックなどの複雑な処理を記述する手間を低減できる。これによって、実行形式の異なる複数種類のプログラムのプログラミングを容易化できる。
【0008】
ステートマシーンに生じ得る遷移の各々に対応付けて、任意のユーザ定義処理が設定可能になっていてもよい。この構成によれば、制御対象に応じた任意の処理を、プログラムを変更等しなくても容易に設定できる。
【0009】
ステートマシーンに生じ得る遷移の各々に対応付けられるユーザ定義処理は、ユーザインターフェイス画面を介して設定されてもよい。この構成によれば、遷移に対応付けられるユーザ定義処理を容易に設定できる。
【0010】
実行管理部は、予め定められた実行形態に従ってユーザ定義処理を実行させてもよい。実行形態は、対応するステートに遷移するときに一度だけ実行される第1実行形態と、対応するステートに存在する期間において実行され続ける第2実行形態と、対応するステートから別のステートに遷移するときに一度だけ実行される第3実行形態とのうち少なくとも1つを含む候補から選択されてもよい。この構成によれば、制御対象に応じたユーザ定義処理の実行形態を設定できる。
【0011】
実行管理部は、ステートマシーンを遷移させる条件が成立した場合であっても、対応するユーザ定義処理の実行完了を待って遷移させてもよい。この構成によれば、所定周期に亘って実行されるユーザ定義処理が存在しても、当該ユーザ定義処理の影響を新たなステートに与える可能性を低減できる。
【0012】
ステートマシーンは、制御対象に対する制御権の獲得および解放に応じて遷移するステートを含んでいてもよい。この構成によれば、制御対象に対する制御権の獲得および解放に関するプログラミングの手間を削減できる。
【0013】
ステートマシーンは、制御対象の動作状態に対応するステートマシーンに関連付けて規定されてもよい。この構成によれば、制御対象の動作状態に応じて、必要なユーザ定義処理を設定できる。
【0014】
本発明の別の局面に従えば、制御対象を制御するための制御装置で実行される制御方法が提供される。制御方法は、複数のステートを有するステートマシーンを管理するステップと、ステートマシーンの遷移に応じて、シーケンス命令を含む第1ユーザプログラムとして規定された第1ユーザ定義処理、および、所定のプログラミング言語で記述された第2ユーザプログラムとして規定された第2ユーザ定義処理、の実行を管理するステップと、第1ユーザ定義処理を所定周期毎に実行するステップと、第2ユーザ定義処理を逐次解釈して実行するステップとを含む。ステートマシーンを管理するステップは、予め定められた1または複数のイベントの発生に応じて、ステートマシーンを遷移させるステップを含む。実行を管理するステップは、ステートマシーンに遷移が生じると、当該遷移に対応付けられた実行すべきユーザ定義処理を決定するステップを含む。
【0015】
本発明のさらに別の局面に従う制御プログラムは、制御対象を制御するための制御装置に、複数のステートを有するステートマシーンを管理するステップと、ステートマシーンの遷移に応じて、シーケンス命令を含む第1ユーザプログラムとして規定された第1ユーザ定義処理、および、所定のプログラミング言語で記述された第2ユーザプログラムとして規定された第2ユーザ定義処理、の実行を管理するステップと、第1ユーザ定義処理を所定周期毎に実行するステップと、第2ユーザ定義処理を逐次解釈して実行するステップとを実行させる。ステートマシーンを管理するステップは、予め定められた1または複数のイベントの発生に応じて、ステートマシーンを遷移させるステップを含む。実行を管理するステップは、ステートマシーンに遷移が生じると、当該遷移に対応付けられた実行すべきユーザ定義処理を決定するステップを含む。
【発明の効果】
【0016】
本発明によれば、実行形式の異なる複数種類のプログラムのプログラミングを容易化できる。
【図面の簡単な説明】
【0017】
【
図1】本実施の形態に係る制御システムのシステム構成例を示す模式図である。
【
図2】本実施の形態に係る制御装置の適用例を示す図である。
【
図3】本実施の形態に係る制御システムを構成する制御装置のハードウェア構成例を示す模式図である。
【
図4】本実施の形態に係る制御システムを構成するサポート装置のハードウェア構成例を示す模式図である。
【
図5】本実施の形態に係る制御装置におけるプログラム実行環境に関する構成を示す模式図である。
【
図6】本実施の形態に係る制御装置において共通処理をIECプログラムに実装した場合の処理手順の一例を説明するための図である。
【
図7】本実施の形態に係る制御装置におけるユーザプログラムの実行管理の概要を説明するための図である。
【
図8】本実施の形態に係る制御装置におけるユーザプログラムの実行管理を行うためのステートマシーンの一例を示す模式図である。
【
図9】本実施の形態に係る制御装置におけるユーザ定義処理設定を定義するユーザインターフェイス画面の一例を示す模式図である。
【
図10】本実施の形態に係る制御装置におけるユーザプログラムの実行管理に係る処理手順を示すフローチャートである。
【
図11】本実施の形態に係る制御装置におけるユーザプログラムの実行に係る処理順序の一例を示すタイムチャートである。
【
図12】本実施の形態に係る制御装置におけるユーザプログラムの実行に係る処理順序の一例を示すタイムチャートである。
【発明を実施するための形態】
【0018】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【0019】
<A.適用例>
まず、本実施の形態に係る制御システム1のシステム構成例について説明する。
【0020】
図1は、本実施の形態に係る制御システム1のシステム構成例を示す模式図である。
図1を参照して、制御システム1は、制御対象を制御するための制御装置100と、フィールドネットワーク10を介して制御装置100とネットワーク接続された、ロボットコントローラ250と、サーボコントローラ350とを含む。
【0021】
制御装置100は、フィールドネットワーク10に接続されたデバイスとの間で周期的にデータをやり取りして、後述するような処理を実行する。制御装置100は、典型的には、PLC(プログラマブルロジックコントローラ)により実現されてもよい。
【0022】
制御装置100には、ティーチングペンダント400が接続される。ティーチングペンダント400は、オペレータがロボット200の位置を手動で操作して、ティーチングするために用いられる。
【0023】
ロボットコントローラ250は、ロボット200の制御を担当する。より具体的には、ロボットコントローラ250は、ロボット200との間のインターフェイスとして機能し、制御装置100からの指令に従って、ロボット200を駆動するための指令を出力するとともに、ロボット200の状態情報を取得して制御装置100へ出力する。
【0024】
ロボット200は、例えば、垂直多関節ロボット、水平多関節(スカラ)ロボット、パラレルリンクロボット、直交ロボットなどの任意のロボットを採用できる。
【0025】
サーボコントローラ350は、サーボモータ300の制御を担当する。より具体的には、サーボコントローラ350は、制御装置100からの指令に従って、サーボモータ300を回転駆動させるとともに、サーボモータ300の状態情報を取得して制御装置100へ出力する。
【0026】
サーボモータ300は、任意の機構あるいはロボットと機械的に結合されており、回転により機構あるいはロボットを駆動する。サーボモータ300は、サーボモータとの名称に限定されず、誘導型モータ、同期型モータ、永久磁石型モータ、リラクタンスモータのいずれを採用してもよいし、回転型だけではなく、リニアモータを採用してもよい。
【0027】
フィールドネットワーク10には、産業用ネットワーク用のプロトコルである、EtherCAT(登録商標)やEtherNet/IPなどを用いることができる。プロトコルとしてEtherCATを採用した場合には、制御装置100とフィールドネットワーク10に接続されたデバイスとの間で、例えば、数百μ秒~数m秒の定周期でデータを更新できる。
【0028】
制御装置100は、上位ネットワーク20を介して、表示装置600およびサーバ装置700に接続されてもよい。上位ネットワーク20には、産業用ネットワーク用のプロトコルであるやEtherNet/IPなどを用いることができる。
【0029】
制御装置100には、制御装置100で実行されるユーザプログラム(後述する、IECプログラム150およびアプリケーションプログラム160)のインストールや各種設定を行うためのサポート装置500が接続されてもよい。
【0030】
図2は、本実施の形態に係る制御装置100の適用例を示す図である。
図2を参照して、制御装置100は、IECプログラム150を所定周期毎に実行するIECプログラム実行部130と、アプリケーションプログラム160を逐次解釈して実行するアプリケーションプログラム実行部134とを含む。
【0031】
IECプログラム150は、1または複数のユーザ定義処理152を含む。また、アプリケーションプログラム160についても、1または複数のユーザ定義処理162を含む。
【0032】
制御装置100は、IECプログラム150(ユーザ定義処理152)およびアプリケーションプログラム160(ユーザ定義処理162)を選択して、IECプログラム実行部130およびアプリケーションプログラム実行部134で実行させる実行管理部132を含む。
【0033】
実行管理部132は、複数のステートを含むステートマシーン180を有している。実行管理部132は、予め定められた1または複数のイベントの発生に応じて、ステートマシーン180を遷移させるとともに、ステートマシーン180遷移が生じると、当該遷移に対応付けられた実行すべきユーザ定義処理152,162を決定する。
【0034】
このように、実行管理部132がIECプログラム実行部130およびアプリケーションプログラム実行部134においてそれぞれ実行されるユーザ定義処理(プログラム)を選択するので、IECプログラム150およびアプリケーションプログラム160自体にインターロックなどの複雑な処理を記述する手間を低減できる。これによって、実行形式の異なる複数種類のプログラムのプログラミングを容易化できる。
【0035】
<B.ハードウェア構成例>
次に、
図1に示す制御システム1を構成する主要装置のハードウェア構成例について説明する。
【0036】
(b1:制御装置100)
図3は、本実施の形態に係る制御システム1を構成する制御装置100のハードウェア構成例を示す模式図である。
図3を参照して、制御装置100は、プロセッサ102と、メインメモリ104と、ストレージ110と、メモリカードインターフェイス112と、上位ネットワークコントローラ106と、フィールドネットワークコントローラ108と、ローカルバスコントローラ116と、USB(Universal Serial Bus)インターフェイスを提供するUSBコントローラ120とを含む。これらのコンポーネントは、プロセッサバス118を介して接続されている。
【0037】
プロセッサ102は、制御演算を実行する演算処理部に相当し、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)などで構成される。具体的には、プロセッサ102は、ストレージ110に格納されたプログラムを読み出して、メインメモリ104に展開して実行することで、制御対象に対する制御演算を実現する。
【0038】
メインメモリ104は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置などで構成される。ストレージ110は、例えば、SSD(Solid State Drive)やHDD(Hard Disk Drive)などの不揮発性記憶装置などで構成される。
【0039】
ストレージ110には、基本的な機能を実現するためのシステムプログラム111、および、制御対象に応じて作成されたユーザプログラム(IECプログラム150およびアプリケーションプログラム160)などが格納される。
【0040】
IECプログラム150は、制御システム1におけるロボット200の制御以外の主たる制御を実現するための命令を含む。IECプログラム150は、典型的には、シーケンス命令およびモーション命令を含み得る。IECプログラム150は、国際電気標準会議(IEC:International Electrotechnical Commission)が定めるIEC61131-3で規定されるいずれかの言語で記述されてもよい。但し、IECプログラム150は、IEC61131-3で規定される言語以外のメーカ独自言語で記述されるプログラムを含んでいてもよい。
【0041】
アプリケーションプログラム160は、ロボット200の動作を制御するための命令を含む。アプリケーションプログラム160は、所定のプログラミング言語(例えば、V+言語などのロボット制御用プログラミング言語やGコードなどのNC制御に係るプログラミング言語)で記述された命令を含んでいてもよい。なお、アプリケーションプログラム160は、ロボット200の動作を制御する用途に限られず、例えば、NC制御される工作機械や任意の機構を制御する用途にも用いることができる。説明の便宜上、以下では、主として、アプリケーションプログラム160がロボット200を制御する場合について例示する。
【0042】
メモリカードインターフェイス112は、着脱可能な記憶媒体の一例であるメモリカード114を受け付ける。メモリカードインターフェイス112は、メモリカード114に対して任意のデータの読み書きが可能になっている。
【0043】
上位ネットワークコントローラ106は、上位ネットワーク20を介して、任意の情報処理装置(
図1に示される表示装置600およびサーバ装置700など)との間でデータをやり取りする。
【0044】
フィールドネットワークコントローラ108は、フィールドネットワーク10を介して、それぞれのデバイスとの間でデータをやり取りする。
図1に示すシステム構成例において、フィールドネットワークコントローラ108は、フィールドネットワーク10の通信マスタとして機能してもよい。
【0045】
ローカルバスコントローラ116は、ローカルバス122を介して、制御装置100に含まれる任意の機能ユニット124との間でデータをやり取りする。機能ユニット124は、例えば、アナログ信号の入力および/または出力を担当するアナログI/Oユニット、デジタル信号の入力および/または出力を担当するデジタルI/Oユニット、エンコーダなどからのパルスを受け付けるカウンタユニットなどからなる。
【0046】
USBコントローラ120は、USB接続を介して、任意の情報処理装置(サポート装置500など)との間でデータをやり取りする。
【0047】
(b2:ロボットコントローラ250)
ロボットコントローラ250は、主たるコンポーネントとして、制御装置100との間でデータをやり取りするネットワークコントローラと、ロボット200を駆動するために必要な演算処理を実行する処理回路と、ロボット200との間でデータをやり取りするインターフェイス回路とを含む。
【0048】
(b3:サーボコントローラ350)
サーボコントローラ350は、主たるコンポーネントとして、制御装置100との間でデータをやり取りするネットワークコントローラと、サーボモータ300を駆動するために必要な演算処理を実行する処理回路と、サーボモータ300へ供給する電力を生成するためのドライブ回路とを含む。
【0049】
(b4:ティーチングペンダント400)
ティーチングペンダント400主たるコンポーネントとして、制御装置100との間でデータをやり取りするインターフェイスと、ロボット200に対する操作を受け付ける入力部と、各種情報を表示する表示部とを含む。
【0050】
(b5:サポート装置500)
本実施の形態に係る制御システム1を構成するサポート装置500は、一例として、汎用パソコンを用いて実現されてもよい。
【0051】
図4は、本実施の形態に係る制御システム1を構成するサポート装置500のハードウェア構成例を示す模式図である。
図4を参照して、サポート装置500は、CPUやMPUなどのプロセッサ502と、メインメモリ504と、入力部506と、表示部508と、ストレージ510と、ネットワークコントローラ516と、USBコントローラ518と、光学ドライブ520とを含む。これらのコンポーネントはバス524を介して接続される。
【0052】
プロセッサ502は、ストレージ510に格納された各種プログラムを読み出して、メインメモリ504に展開して実行することで、制御装置100で実行されるユーザプログラム(IECプログラム150およびアプリケーションプログラム160)の開発などの処理を提供する。
【0053】
ストレージ510は、例えば、SSDやHDDなどの不揮発性記憶装置などで構成される。ストレージ510には、典型的には、OS512と、制御装置100において実行されるユーザプログラムの作成、作成したユーザプログラムのデバッグ、システム構成の定義、各種パラメータの設定などを行うための開発プログラム514とが格納される。ストレージ510には、
図4に示すプログラム以外の必要なプログラムが格納されてもよい。
【0054】
入力部506は、キーボードやマウスなどで構成され、ユーザ操作を受け付ける。表示部508は、ディスプレイ、各種インジケータ、プリンタなどで構成され、プロセッサ502からの処理結果などを出力する。
【0055】
ネットワークコントローラ516は、任意のネットワークを介した他の装置との間のデータのやり取りを制御する。USBコントローラ518は、USB接続を介して制御装置100との間のデータのやり取りを制御する。
【0056】
サポート装置500は、光学ドライブ520を有しており、コンピュータ読取可能なプログラムを非一過的に格納する記録媒体522(例えば、DVD(Digital Versatile Disc)などの光学記録媒体)から、その中に格納されたプログラムが読取られてストレージ510などにインストールされる。
【0057】
サポート装置500で実行される各種プログラムは、コンピュータ読取可能な記録媒体522を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に係るサポート装置500が提供する機能は、OS512が提供するモジュールの一部を利用する形で実現される場合もある。
【0058】
(b6:表示装置600)
本実施の形態に係る制御システム1を構成する表示装置600は、一例として、汎用パソコンを用いて実現されてもよい。表示装置600の基本的なハードウェア構成例は、周知であるので、ここでは詳細な説明は行わない。
【0059】
(b7:サーバ装置700)
本実施の形態に係る制御システム1を構成するサーバ装置700は、一例として汎用パソコンを用いて実現されてもよい。サーバ装置700の基本的なハードウェア構成例は、周知であるので、ここでは詳細な説明は行わない。
【0060】
(b8:その他の形態)
図3および
図4には、1または複数のプロセッサがプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。
【0061】
<C.IECプログラムおよびアプリケーションプログラムの実行>
次に、本実施の形態に係る制御装置100におけるユーザプログラム(IECプログラム150およびアプリケーションプログラム160)の実行について説明する。
【0062】
図5は、本実施の形態に係る制御装置100におけるプログラム実行環境に関する構成を示す模式図である。
図5を参照して、制御装置100は、IECプログラム実行部130と、アプリケーションプログラム実行部134と、データ管理部142と、実行管理部132とを含む。
【0063】
IECプログラム実行部130は、シーケンス命令を含むユーザプログラムであるIECプログラム150を所定周期毎に実行する。なお、IECプログラム150は、シーケンス命令に加えて、モーション命令を含む。
【0064】
アプリケーションプログラム実行部134は、所定のプログラミング言語で記述されたユーザプログラムであるアプリケーションプログラム160を逐次解釈して実行する。アプリケーションプログラム160は、典型的には、ロボット200を制御するための命令を含む。アプリケーションプログラム実行部134は、インタプリタ136と、キャッシュ138と、コマンド生成部140とを含む。
【0065】
インタプリタ136は、アプリケーションプログラム160を逐次解釈して中間コードを生成する。生成された中間コードは、キャッシュ138にキューイング(エンキュー)される。コマンド生成部140は、キャッシュ138にキューイングされた中間コードを都度参照して指令を対象のロボット200に送信する。
【0066】
データ管理部142は、プログラム実行に必要なデータを保持する。データ管理部142が保持するデータは、予め定められた周期でリフレッシュ(更新)される。データ管理部142は、入出力データを保持するためのIOデータ領域144と、制御装置100の内部で使用されるワーキングデータを保持するための内部データ領域146および共有領域148とを含む。共有領域148には、IECプログラム実行部130およびアプリケーションプログラム実行部134が共通に参照可能なデータが格納される。データ管理部142は、データを変数の形で管理するようにしてもよい。
【0067】
実行管理部132は、IECプログラム実行部130およびアプリケーションプログラム実行部134におけるユーザプログラムの実行を管理する。実行管理部132の詳細については、後述する。
【0068】
<D.課題>
次に、
図5に示すユーザプログラムの実行において生じ得る課題について説明する。
【0069】
本実施の形態に係る制御装置100は、IECプログラム150およびアプリケーションプログラム160を並列的に実行することができる。それぞれのユーザプログラムは、例えば、以下のように役割を分担させることができる。
【0070】
すなわち、アプリケーションプログラム160は、ロボット200に組立や加工などの予め定められた動作を実現するようにプログラミングし、IECプログラム150には、ロボット200の動作に関連する周辺装置、センサおよびアクチュエータなどと連動させた動作を実現するようにプログラミングしてもよい。
【0071】
一方で、IECプログラム150およびアプリケーションプログラム160は、実行形式が異なるため、異常発生時の振る舞い(例えば、停止動作や退避動作など)、タスク完了時の振る舞い(例えば、待機位置への移動など)、信号検出時の振る舞いといった、システムやロボットとしての共通処理についても、実行形式に応じてそれぞれプログラミングする必要がある。
【0072】
そこで、共通処理を一方のプログラムにまとめて実装することで、それぞれのプログラムに共通処理を記述しなければならないという手間を削減できるが、プログラム自体が複雑化するという別の課題が生じ得る。
【0073】
図6は、本実施の形態に係る制御装置100において共通処理をIECプログラム150に実装した場合の処理手順の一例を説明するための図である。
【0074】
図6を参照して、共通処理を実行すべきイベントが発生すると、アプリケーションプログラム160では、対象のロボット200に対する制御権を解放する処理が実行される(ステップS1)。
【0075】
続いて、制御権を解放したことがIECプログラム150に通知される(ステップS2)。アプリケーションプログラム160では、IECプログラム150での処理の完了待ちとなる(ステップS3)。
【0076】
IECプログラム150では、アプリケーションプログラム160からの通知に応答して、制御権を獲得する処理が実行される(ステップS4)。そして、IECプログラム150では、共通処理が実行される(ステップS5)。共通処理の実行後、制御権が解放され(ステップS6)、制御権を解放したことがアプリケーションプログラム160に通知される(ステップS7)。
【0077】
すると、アプリケーションプログラム160では、制御権を獲得する処理が実行され(ステップS8)、処理が再開される(ステップS9)。
【0078】
図6に示すように、共通処理を一方のプログラムにまとめて実装すると、制御対象のロボット200に対する制御権の獲得および解放、プログラム間のインターロック、タイミング調整などが必要となり、プログラム自体が複雑化し、再利用性も低下する。
【0079】
<E.解決手段>
次に、上述したような課題を解決するための構成について説明する。
【0080】
図7は、本実施の形態に係る制御装置100におけるユーザプログラムの実行管理の概要を説明するための図である。
図7を参照して、実行管理部132は、ステートマシーン180を有しており、ステートマシーン180の遷移に応じて、IECプログラム150として規定されたユーザ定義処理152、および、アプリケーションプログラム160として規定されたユーザ定義処理162の実行を管理する。実行管理部132には、ステートマシーン180の遷移と、実行されるユーザ定義処理との対応関係を規定したユーザ定義処理設定133が与えられる。
【0081】
ユーザ定義処理152は、IECプログラム150に含まれる複数のプログラムの一つとして規定されてもよいし、IECプログラム150に含まれるプログラムの一部として規定されてもよい。同様に、ユーザ定義処理162は、アプリケーションプログラム160に含まれる複数のプログラムの一つとして規定されてもよいし、アプリケーションプログラム160に含まれるプログラムの一部として規定されてもよい。
【0082】
<F.ステートマシーン180>
次に、ユーザプログラムの実行管理を行うためのステートマシーン180の一例について説明する。
【0083】
図8は、本実施の形態に係る制御装置100におけるユーザプログラムの実行管理を行うためのステートマシーン180の一例を示す模式図である。
【0084】
図8に示すステートマシーン180は、動作管理ステートとプログラム実行管理ステートとを含む。動作管理ステートは、制御対象(例えば、ロボット200を含むシステム全体)の動作状態に対応するステートマシーンに相当する。
【0085】
より具体的には、動作管理ステートは、動作中ステート182と、減速停止中ステート183と、停止中ステート184と、無効ステート185と、エラー減速停止中ステート186と、ティーチングペンダント制御中ステート187とを含む。
【0086】
動作中ステート182、減速停止中ステート183および停止中ステート184は、制御装置100が制御権を獲得した状態(制御権獲得済ステート181)で生じる。
【0087】
ここで、制御対象(例えば、ロボット200)に対する制御権とは、制御対象に対してコマンドを送信する権利を意味する。制御システム1においては、制御装置100およびティーチングペンダント400のいずれもからロボット200を制御できる。すなわち、ユーザがティーチングペンダント400を操作してロボット200を制御する場合には、ユーザ操作に応じた指令値あるいはコマンドが優先される。また、制御装置100においても、IECプログラム150およびアプリケーションプログラム160のいずれもからロボット200を制御できる。そのため、ロボット200を制御する単一の主体を排他的に決定するために、制御権を用いた管理が行われる。
【0088】
動作中ステート182は、ロボット200が動作している状態を意味し、減速停止中ステート183は、ロボット200が停止状態に向けて減速している状態を意味し、停止中ステート184は、ロボット200が停止している状態を意味する。アプリケーションプログラム160に記述された命令によって、ロボット200が制御されることで、これらのいずれかの状態となる。
【0089】
無効ステート185は、制御権をやり取りする過程を意味し、制御装置100が制御権を獲得あるいは解放する過程、ならびに、ティーチングペンダント400が制御権を獲得あるいは解放する過程において生じる。また、電源投入直後などの初期状態も無効ステート185に相当する。
【0090】
エラー減速停止中ステート186は、何らかの異常が発生し、ロボット200が停止状態に向けて減速している状態を意味する。
【0091】
ティーチングペンダント制御中ステート187は、ユーザがティーチングペンダント400を操作し、ロボット200を制御している状態を意味する。
【0092】
このような動作管理ステートに関連付けて、以下のようなプログラム実行管理ステートが規定される。
【0093】
より具体的には、ステートマシーン180は、プログラム実行管理ステートとして、制御権獲得ステート191と、制御権解放ステート192と、制御権獲得(TP)ステート193と、制御権解放(TP)ステート194と、異常解除ステート195とを含む。なお、「TP」は、ティーチングペンダントを意味する。
【0094】
制御装置100の実行管理部132は、予め定められた1または複数のイベントの発生に応じて、ステートマシーン180のプログラム実行管理ステートを遷移させる。
【0095】
制御権獲得ステート191および制御権獲得(TP)ステート193は、無効ステート185に含まれ、制御装置100およびティーチングペンダント400がそれぞれ制御権を獲得する過程で生じる。より具体的には、IECプログラム150またはアプリケーションプログラム160に含まれる制御権を獲得するための命令の実行が完了することで、制御権獲得ステート191へ遷移する。また、ユーザがティーチングペンダント400のモードを「Auto」から「Manual」に変更することで、制御権獲得(TP)ステート193へ遷移する。
【0096】
制御権獲得ステート191において、予め設定されたユーザ定義処理の実行が完了すると、停止中ステート184へ遷移する。また、制御権獲得(TP)ステート193において、予め設定されたユーザ定義処理の実行が完了すると、ティーチングペンダント制御中ステート187へ遷移する。
【0097】
制御権解放ステート192は、停止中ステート184に含まれ、制御装置100が制御権を解放する過程で生じる。より具体的には、IECプログラム150またはアプリケーションプログラム160に含まれる制御権を解放するための命令の実行が完了することで、制御権解放ステート192へ遷移する。制御権解放ステート192において、予め設定されたユーザ定義処理の実行が完了すると、無効ステート185へ遷移する。
【0098】
制御権解放(TP)ステート194は、ティーチングペンダント制御中ステート187に含まれ、ティーチングペンダント400が制御権を解放する過程で生じる。より具体的には、ユーザがティーチングペンダント400のモードを「Manual」から「Auto」に変更することで、制御権解放(TP)ステート194へ遷移する。制御権解放(TP)ステート194において、予め設定されたユーザ定義処理の実行が完了すると、無効ステート185へ遷移する。
【0099】
このように、ステートマシーン180は、プログラム実行管理ステートとして、制御対象に対する制御権の獲得および解放に応じて遷移するステートを含む。
【0100】
異常解除ステート195は、エラー減速停止中ステート186に含まれ、発生した異常が解除される過程で生じる。より具体的には、発生した異常の解除が完了することで、異常解除ステート195へ遷移する。異常解除ステート195において、予め設定されたユーザ定義処理の実行が完了すると、無効ステート185へ遷移する。
【0101】
図8に示すように、プログラム実行管理ステート(制御権獲得ステート191、制御権解放ステート192、制御権獲得(TP)ステート193、制御権解放(TP)ステート194、異常解除ステート195)については、ステートマシーン180を遷移させる条件が成立した場合であっても、対応するユーザ定義処理の実行完了後を待って遷移させる。
【0102】
動作管理ステートとしては、
図8に示すステートに限られず、さらに別のステートを追加してもよいし、一部のステートを省略してもよい。また、プログラム実行管理ステートについても、
図8に示されるステートに限られず、任意のステートを定義できる。また、遷移を生じる条件についても、
図8に示す条件に限られず、任意の条件を追加ないし設定することができる。なお、遷移の条件とされるユーザ定義処理が設定されていなければ、ユーザ定義処理の実行の完了を待つことなく、遷移が生じるようにしてもよい。
【0103】
制御装置100においては、ステートマシーン180に生じ得る遷移(プログラム実行管理ステートの遷移)の各々に対応付けて、任意のユーザ定義処理が設定可能になっている。ユーザ定義処理は、IECプログラム150およびアプリケーションプログラム160のいずれをも含めることができる。なお、ユーザ定義処理の設定内容は、ユーザ定義処理設定133に定義される。
【0104】
制御装置100の実行管理部132は、ユーザ定義処理設定133を参照して、ステートマシーン180に遷移が生じると、当該遷移に対応付けられた実行すべきユーザ定義処理を決定する。
【0105】
また、制御装置100の実行管理部132は、予め定められた実行形態に従ってユーザ定義処理を実行させる。ユーザ定義処理の実行形態としては、例えば、(1)entry、(2)do、(3)exitの3種類の候補から選択できるようになっていてもよい。より具体的には、(1)entryは、対応するステートに遷移するときに一度だけ実行される実行形態である。(2)doは、対応するステートに存在する期間において実行され続ける実行形態である。(3)exitは、対応するステートから別のステートに遷移するときに一度だけ実行される実行形態である。
【0106】
なお、ユーザ定義処理の実行形態の候補としては、上述の(1)~(3)の少なくとも1つを含むようにすればよい。すなわち、上述の(1)~(3)のすべてをユーザ定義処理の実行形態の候補に含める必要はない。
【0107】
このように、本実施の形態に係る制御装置100は、制御権の獲得および解放、ならびに、異常発生などのイベント発生時に、任意のユーザ定義処理を実行することができる。
【0108】
図9は、本実施の形態に係る制御装置100におけるユーザ定義処理設定133を定義するユーザインターフェイス画面550の一例を示す模式図である。
図9に示すユーザインターフェイス画面550は、典型的には、サポート装置500のプロセッサ502が開発プログラム514を実行することで、サポート装置500の表示部508などに出力される。
【0109】
図9を参照して、ユーザインターフェイス画面550は、プログラム実行設定テーブル560を含む。
【0110】
プログラム実行設定テーブル560は、ステート列571と、実行形態列572と、IECプログラム列573と、アプリケーションプログラム列574とを含む。
【0111】
ステート列571は、制御権獲得ステート191、制御権解放ステート192、制御権獲得(TP)ステート193、制御権解放(TP)ステート194、および、異常解除ステート195にそれぞれ対応する制御権獲得行561、制御権解放行562、制御権獲得(TP)行563、制御権解放(TP)行564、および、異常解除行565を含む。
【0112】
実行形態列572は、各ステートに対応付けて、entry行566、do行567、exit行568の3種類の実行形態が定義されている。
【0113】
ユーザは、所望のステートおよび実行形態に対応付けて、IECプログラム列573および/またはアプリケーションプログラム列574にユーザ定義処理を実現するためのプログラムを設定する。
【0114】
図9に示す例では、制御権獲得行561のentry行566に対応付けて、IECプログラム150として「program1」、および、アプリケーションプログラム160として「program100」がそれぞれ設定されている。また、制御権獲得行561のdo行567に対応付けて、IECプログラム150として「program2」が設定されている。
【0115】
上述の設定例においては、制御権獲得ステート191への遷移が生じると、「program1」および「program100」が一度だけ実行されるとともに、制御権獲得ステート191に存在する期間において、「program2」が毎周期実行されることになる。
【0116】
図9のプログラム実行設定テーブル560に対する設定内容がユーザ定義処理設定133として格納される。このように、ステートマシーン180に生じ得る遷移の各々に対応付けられるユーザ定義処理は、ユーザインターフェイス画面550を介して設定される。
【0117】
なお、
図9には、ステートマシーン180の遷移に応じて実行されるユーザ定義処理を例示したが、通常、ステートマシーン180の遷移に依存することなく、定常的あるいは予め定められた条件が成立したときに実行される任意のユーザプログラム(IECプログラム150およびアプリケーションプログラム160)も存在する。すなわち、
図9に示されるユーザ定義処理は、通常のユーザプログラムの実行処理に加えて、実行されることが想定されている。
【0118】
<G.処理手順>
次に、本実施の形態に係る制御装置100におけるユーザプログラムの実行管理に係る処理手順について説明する。
【0119】
図10は、本実施の形態に係る制御装置100におけるユーザプログラムの実行管理に係る処理手順を示すフローチャートである。
図10に示す各ステップは、典型的には、制御装置100のプロセッサ102がシステムプログラム111を実行することで実現される。
【0120】
図10を参照して、新たな制御周期が到来すると(ステップS100においてYES)、制御装置100は、前回の制御周期において計算された指令値を出力し(ステップS102)、今回の制御周期において用いる入力値を取得する(ステップS104)。
【0121】
制御装置100は、ステートマシーン180の遷移を生じ得るイベントが発生したか否かを判断する(ステップS106)。
【0122】
ステートマシーン180の遷移を生じ得るイベントが発生すると(ステップS106においてYES)、制御装置100は、現在のステートの「exit」に対応付けて、アプリケーションプログラム160のユーザ定義処理が設定されているか否かを判断する(ステップS108)。
【0123】
現在のステートの「exit」に対応付けて、アプリケーションプログラム160のユーザ定義処理が設定されていれば(ステップS108においてYES)、制御装置100は、設定されているユーザ定義処理(アプリケーションプログラム160)を起動する(ステップS110)。
【0124】
現在のステートの「exit」に対応付けて、アプリケーションプログラム160のユーザ定義処理が設定されていなければ(ステップS108においてNO)、ステップS110の処理はスキップされる。
【0125】
続いて、制御装置100は、現在のステートの「exit」に対応付けて、IECプログラム150のユーザ定義処理が設定されているか否かを判断する(ステップS112)。
【0126】
現在のステートの「exit」に対応付けて、IECプログラム150のユーザ定義処理が設定されていれば(ステップS112においてYES)、制御装置100は、設定されているユーザ定義処理(IECプログラム150)を実行する(ステップS114)。
【0127】
現在のステートの「exit」に対応付けて、IECプログラム150のユーザ定義処理が設定されていなければ(ステップS112においてNO)、ステップS114の処理はスキップされる。
【0128】
一方、ステートマシーン180の遷移を生じ得るイベントが発生していなければ(ステップS106においてNO)、あるいは、ステップS114の後、制御装置100は、「exit」に対応付けられたユーザ定義処理が実行中であるか否かを判断する(ステップS116)。「exit」に対応付けられたユーザ定義処理が実行中であれば(ステップS116においてYES)、制御装置100は、「exit」に対応付けられたユーザ定義処理が実行完了したか否かを判断する(ステップS118)。「exit」に対応付けられたユーザ定義処理が実行完了していなければ(ステップS118においてNO)、制御装置100は、次の制御周期の到来を待つ。
【0129】
「exit」に対応付けられたユーザ定義処理が実行完了していれば(ステップS118においてYES)、制御装置100は、ステートマシーン180を新たなステートへ遷移させる(ステップS120)。なお、「exit」に対応付けられたユーザ定義処理が存在しない場合においても、ステップS120の処理は実行される。このように、制御装置100は、複数のステートを有するステートマシーン180を管理する処理を実行する。
【0130】
一方、「exit」に対応付けられたユーザ定義処理が実行中でなければ(ステップS116においてNO)、ステップS118およびS120の処理はスキップされる。
【0131】
続いて、制御装置100は、ステートマシーン180に新たなステートへの遷移が生じたか否かを判断する(ステップS122)。
【0132】
ステートマシーン180に新たなステートへの遷移が生じていれば(ステップS122においてYES)、制御装置100は、新たなステートの「entry」に対応付けて、アプリケーションプログラム160のユーザ定義処理が設定されているか否かを判断する(ステップS124)。
【0133】
新たなステートの「entry」に対応付けて、アプリケーションプログラム160のユーザ定義処理が設定されていれば(ステップS124においてYES)、制御装置100は、設定されているユーザ定義処理(アプリケーションプログラム160)を起動する(ステップS126)。
【0134】
新たなステートの「entry」に対応付けて、アプリケーションプログラム160のユーザ定義処理が設定されていなければ(ステップS124においてNO)、ステップS126の処理はスキップされる。
【0135】
続いて、制御装置100は、新たなステートの「entry」に対応付けて、IECプログラム150のユーザ定義処理が設定されているか否かを判断する(ステップS128)。
【0136】
新たなステートの「entry」に対応付けて、IECプログラム150のユーザ定義処理が設定されていれば(ステップS128においてYES)、制御装置100は、設定されているユーザ定義処理(IECプログラム150)を実行する(ステップS130)。
【0137】
新たなステートの「entry」に対応付けて、IECプログラム150のユーザ定義処理が設定されていなければ(ステップS128においてNO)、ステップS130の処理はスキップされる。
【0138】
そして、制御装置100は、次の制御周期の到来を待つ。
一方、ステートマシーン180に新たなステートへの遷移が生じていなければ(ステップS122においてNO)、制御装置100は、現在のステートの「do」に対応付けて、アプリケーションプログラム160のユーザ定義処理が設定されているか否かを判断する(ステップS132)。
【0139】
現在のステートの「do」に対応付けて、アプリケーションプログラム160のユーザ定義処理が設定されていれば(ステップS132においてYES)、制御装置100は、設定されているユーザ定義処理(アプリケーションプログラム160)を起動する(ステップS134)。
【0140】
現在のステートの「do」に対応付けて、アプリケーションプログラム160のユーザ定義処理が設定されていなければ(ステップS132においてNO)、ステップS134の処理はスキップされる。
【0141】
続いて、制御装置100は、現在のステートの「do」に対応付けて、IECプログラム150のユーザ定義処理が設定されているか否かを判断する(ステップS136)。
【0142】
現在のステートの「do」に対応付けて、IECプログラム150のユーザ定義処理が設定されていれば(ステップS136においてYES)、制御装置100は、設定されているユーザ定義処理(IECプログラム150)を実行する(ステップS138)。
【0143】
現在のステートの「do」に対応付けて、IECプログラム150のユーザ定義処理が設定されていなければ(ステップS136においてNO)、ステップS138の処理はスキップされる。
【0144】
そして、制御装置100は、次の制御周期の到来を待つ。
以上のような処理手順によって、ステートに応じた任意のユーザ定義処理の実行管理を実現できる。すなわち、制御装置100は、ステートマシーン180の遷移に応じて、IECプログラム150として規定されたユーザ定義処理、および、アプリケーションプログラム160として規定されたユーザ定義処理、の実行を管理する(ステップS106,S108,S112,S116,S124,S128,S132,S136)。
【0145】
そして、制御装置100は、IECプログラム150として規定されたユーザ定義処理を所定周期毎に実行する(S114,S130,S138)とともに、アプリケーションプログラム160として規定されたユーザ定義処理を逐次解釈して実行する(S110,S126,S134)。
【0146】
次に、上述したようなユーザ定義処理の実行に係る処理順序などについて説明する。
図11および
図12は、本実施の形態に係る制御装置100におけるユーザプログラムの実行に係る処理順序の一例を示すタイムチャートである。
図11には、「entry」に対応付けてユーザ定義処理を実行する例を示し、
図12には、「do」に対応付けてユーザ定義処理を実行する例を示す。
【0147】
図11を参照して、制御装置100は、定周期実行タスク170が制御周期T1毎に繰り返し実行される。定周期実行タスク170は、高優先タスクとして設定されている。定周期実行タスク170は、入出力リフレッシュ処理171と、アプリケーション入力処理172と、遷移監視処理173と、IECプログラム実行処理174と、アプリケーション出力処理175とを含む。
【0148】
入出力リフレッシュ処理171は、前回の制御周期において計算された指令値を出力する処理、および、今回の制御周期において用いる入力値を取得する処理を含む。
【0149】
アプリケーション入力処理172は、アプリケーションプログラム160の実行に必要な入力値を取得する処理を含む。
【0150】
遷移監視処理173は、ステートマシーン180に含まれるいずれかの遷移を生じさせるイベントの発生有無を監視する。
【0151】
IECプログラム実行処理174は、IECプログラム150を実行する処理を含む。
アプリケーション出力処理175は、アプリケーションプログラム160の実行によって指令値を計算する処理を含む。なお、アプリケーション出力処理175は、主として、アプリケーションプログラム160を逐次解釈して生成される中間コードに従う演算処理を含む。
【0152】
定周期実行タスク170と並列的に、アプリケーションプログラム160が実行される。アプリケーションプログラム160は、制御周期T1より長い時間をかけて、逐次実行される。そのため、アプリケーションプログラム160の実行処理は、定周期実行タスク170の実行中などに一次的に中断されることもある。
【0153】
アプリケーションプログラム160は、1または複数のプログラムが並列的に実行されてもよい。例えば、ロボット200に基本動作を実行させるためのアプリケーションプログラム177と、異常発生時の振る舞いを規定するアプリケーションプログラム178とを想定する。
【0154】
図11に示す例において、時刻t2から始まる制御周期T1において、遷移監視処理173で遷移を生じさせるイベントが検出されると、「entry」に対応付けられたユーザ定義処理176(IECプログラム150)が実行される。この場合、ユーザ定義処理176の実行時間だけ、IECプログラム実行処理174に要する時間が伸びることになる。
【0155】
また、「entry」に対応付けられたアプリケーションプログラム178が起動される。なお、起動されたアプリケーションプログラム178の実行完了までに、複数の制御周期T1の時間を要することがある。この場合には、アプリケーションプログラム178の実行が完了したことをもって、新たなステートへ遷移される。
【0156】
図12に示す例において、時刻t2から始まる制御周期T1において、遷移監視処理173で遷移を生じさせるイベントが検出されると、新たなステートへの遷移が生じ得る。
【0157】
すると、「do」に対応付けられたユーザ定義処理176(IECプログラム150)が制御周期T1毎に繰り返し実行される。この場合、ユーザ定義処理176の実行時間だけ、IECプログラム実行処理174に要する時間が伸びることになる。
【0158】
また、「do」に対応付けられたアプリケーションプログラム178が起動される。起動されたアプリケーションプログラム178の実行完了までに、複数の制御周期T1の時間を要することがあるが、条件が満たされる限り、実行完了後に再度起動されるようにしてもよい。
【0159】
<H.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
【0160】
[構成1]
制御対象を制御するための制御装置(100)であって、
シーケンス命令を含む第1ユーザプログラム(150)を所定周期毎に実行する第1プログラム実行部(130)と、
所定のプログラミング言語で記述された第2ユーザプログラム(160)を逐次解釈して実行する第2プログラム実行部(134)と、
複数のステートを有するステートマシーン(180)の遷移に応じて、前記第1ユーザプログラムとして規定された第1ユーザ定義処理(152)、および、前記第2ユーザプログラムとして規定された第2ユーザ定義処理(162)、の実行を管理する実行管理部(132)とを備え、
前記実行管理部は、
予め定められた1または複数のイベントの発生に応じて、前記ステートマシーンを遷移させ、
前記ステートマシーンに遷移が生じると、当該遷移に対応付けられた実行すべきユーザ定義処理を決定する、制御装置。
【0161】
[構成2]
前記ステートマシーンに生じ得る遷移の各々に対応付けて、任意のユーザ定義処理が設定可能になっている(133)、構成1に記載の制御装置。
【0162】
[構成3]
前記ステートマシーンに生じ得る遷移の各々に対応付けられるユーザ定義処理は、ユーザインターフェイス画面(550)を介して設定される、構成2に記載の制御装置。
【0163】
[構成4]
前記実行管理部は、予め定められた実行形態に従ってユーザ定義処理を実行させる、構成1~3のいずれか1項に記載の制御装置。
【0164】
[構成5]
前記実行形態は、対応するステートに遷移するときに一度だけ実行される第1実行形態と、対応するステートに存在する期間において実行され続ける第2実行形態と、対応するステートから別のステートに遷移するときに一度だけ実行される第3実行形態とのうち少なくとも1つを含む候補から選択される、構成4に記載の制御装置。
【0165】
[構成6]
前記実行管理部は、前記ステートマシーンを遷移させる条件が成立した場合であっても、対応するユーザ定義処理の実行完了を待って遷移させる、構成1~5のいずれか1項に記載の制御装置。
【0166】
[構成7]
前記ステートマシーンは、前記制御対象に対する制御権の獲得および解放に応じて遷移するステート(191,192,193,194)を含む、構成1~6のいずれか1項に記載の制御装置。
【0167】
[構成8]
前記ステートマシーンは、前記制御対象の動作状態に対応するステートマシーン(182,183,184,185,186,187)に関連付けて規定される、構成1~7のいずれか1項に記載の制御装置。
【0168】
[構成9]
制御対象を制御するための制御装置(100)で実行される制御方法であって、
複数のステートを有するステートマシーンを管理するステップ(S120)と、
前記ステートマシーンの遷移に応じて、シーケンス命令を含む第1ユーザプログラムとして規定された第1ユーザ定義処理、および、所定のプログラミング言語で記述された第2ユーザプログラムとして規定された第2ユーザ定義処理、の実行を管理するステップ(S106,S108,S112,S116,S124,S128,S132,S136)と、
前記第1ユーザ定義処理を所定周期毎に実行するステップ(S114,S130,S138)と、
前記第2ユーザ定義処理を逐次解釈して実行するステップ(S110,S126,S134)とを備え、
前記ステートマシーンを管理するステップは、予め定められた1または複数のイベントの発生に応じて、前記ステートマシーンを遷移させるステップを含み、
前記実行を管理するステップは、前記ステートマシーンに遷移が生じると、当該遷移に対応付けられた実行すべきユーザ定義処理を決定するステップを含む、制御方法。
【0169】
[構成10]
制御プログラム(111)であって、制御対象を制御するための制御装置(100)に、
複数のステートを有するステートマシーンを管理するステップ(S120)と、
前記ステートマシーンの遷移に応じて、シーケンス命令を含む第1ユーザプログラムとして規定された第1ユーザ定義処理、および、所定のプログラミング言語で記述された第2ユーザプログラムとして規定された第2ユーザ定義処理、の実行を管理するステップ(S106,S108,S112,S116,S124,S128,S132,S136)と、
前記第1ユーザ定義処理を所定周期毎に実行するステップ(S114,S130,S138)と、
前記第2ユーザ定義処理を逐次解釈して実行するステップ(S110,S126,S134)とを実行させ、
前記ステートマシーンを管理するステップは、予め定められた1または複数のイベントの発生に応じて、前記ステートマシーンを遷移させるステップを含み、
前記実行を管理するステップは、前記ステートマシーンに遷移が生じると、当該遷移に対応付けられた実行すべきユーザ定義処理を決定するステップを含む、制御プログラム。
【0170】
<I.利点>
本実施の形態に係る制御システム1において、ステートマシーンを用いて制御装置100の状態を管理するとともに、ステートマシーンに何らかの遷移が生じると、当該遷移に対応付けられた任意のユーザ定義処理を実行できるので、プログラム間のインターロックなどの処理を実装する必要性を低減でき、これによって、プログラミングを容易化できる。
【0171】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0172】
1 制御システム、10 フィールドネットワーク、20 上位ネットワーク、100 制御装置、102,502 プロセッサ、104,504 メインメモリ、106 上位ネットワークコントローラ、108 フィールドネットワークコントローラ、110,510 ストレージ、111 システムプログラム、112 メモリカードインターフェイス、114 メモリカード、116 ローカルバスコントローラ、118 プロセッサバス、120,518 USBコントローラ、122 ローカルバス、124 機能ユニット、130 IECプログラム実行部、132 実行管理部、133 ユーザ定義処理設定、134 アプリケーションプログラム実行部、136 インタプリタ、138 キャッシュ、140 コマンド生成部、142 データ管理部、144 データ領域、146 内部データ領域、148 共有領域、150 IECプログラム、152,162,176 ユーザ定義処理、160,177,178 アプリケーションプログラム、170 定周期実行タスク、171 入出力リフレッシュ処理、172 アプリケーション入力処理、173 遷移監視処理、174 IECプログラム実行処理、175 アプリケーション出力処理、180 ステートマシーン、181 制御権獲得済ステート、182 動作中ステート、183 減速停止中ステート、184 停止中ステート、185 無効ステート、186 エラー減速停止中ステート、187 ティーチングペンダント制御中ステート、191 制御権獲得ステート、192 制御権解放ステート、193 制御権獲得(TP)ステート、194 制御権解放(TP)ステート、195 異常解除ステート、200 ロボット、250 ロボットコントローラ、300 サーボモータ、350 サーボコントローラ、400 ティーチングペンダント、500 サポート装置、506 入力部、508 表示部、512 OS、514 開発プログラム、516 ネットワークコントローラ、520 光学ドライブ、522 記録媒体、524 バス、550 ユーザインターフェイス画面、560 プログラム実行設定テーブル、561 制御権獲得行、562 制御権解放行、563 制御権獲得(TP)行、564 制御権解放(TP)行、565 異常解除行、566 entry行、567 do行、568 exit行、571 ステート列、572 実行形態列、573 IECプログラム列、574 アプリケーションプログラム列、600 表示装置、700 サーバ装置、T1 制御周期。