IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オムロン株式会社の特許一覧

特開2023-151731制御システム、制御方法、および制御プログラム
<>
  • 特開-制御システム、制御方法、および制御プログラム 図1
  • 特開-制御システム、制御方法、および制御プログラム 図2
  • 特開-制御システム、制御方法、および制御プログラム 図3
  • 特開-制御システム、制御方法、および制御プログラム 図4
  • 特開-制御システム、制御方法、および制御プログラム 図5
  • 特開-制御システム、制御方法、および制御プログラム 図6
  • 特開-制御システム、制御方法、および制御プログラム 図7
  • 特開-制御システム、制御方法、および制御プログラム 図8
  • 特開-制御システム、制御方法、および制御プログラム 図9
  • 特開-制御システム、制御方法、および制御プログラム 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023151731
(43)【公開日】2023-10-16
(54)【発明の名称】制御システム、制御方法、および制御プログラム
(51)【国際特許分類】
   G05B 19/05 20060101AFI20231005BHJP
【FI】
G05B19/05 F
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022061504
(22)【出願日】2022-04-01
(71)【出願人】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】佐々木 宏史
【テーマコード(参考)】
5H220
【Fターム(参考)】
5H220BB12
5H220CC06
5H220CX01
5H220DD04
5H220JJ12
5H220JJ16
5H220JJ26
5H220JJ41
5H220JJ57
(57)【要約】
【課題】非周期実行型の制御プログラムによって制御される移動機構を含む複数の制御対象を周期実行型の制御プログラムによって制御する構成に要する設計コストを低減する。
【解決手段】周期実行型の第1制御プログラムPg1の各制御周期において、制御手段110は、非周期実行型の第2制御プログラムの実行対象命令が中断条件を満たす場合、実行対象命令を実行せずに第2制御プログラムPg2の処理を中断して第2制御プログラムPg2から第1制御プログラムPg1に制御を返し、当該制御周期の次の制御周期において実行対象命令の次の命令から第2制御プログラムPg2の処理を再開する。
【選択図】図1
【特許請求の範囲】
【請求項1】
移動機構を含む複数の制御対象を制御する制御システムであって、
前記複数の制御対象を制御するための周期実行型の第1制御プログラム、および前記移動機構を制御するための非周期実行型の第2制御プログラムが保存された、記憶手段と、
予め定められた制御周期で前記第1制御プログラムを繰り返し実行して前記複数の制御対象を制御する制御手段とを備え、
前記制御手段は、前記第1制御プログラムから前記第2制御プログラムを呼び出すことによって前記移動機構を制御し、
前記第2制御プログラムは、複数の命令を含み、
前記第1制御プログラムの各制御周期において、前記制御手段は、前記複数の命令のうちの実行対象命令が中断条件を満たす場合、前記実行対象命令を実行せずに前記第2制御プログラムの処理を中断して前記第2制御プログラムから前記第1制御プログラムに制御を返し、当該制御周期の次の制御周期において前記実行対象命令の次の命令から前記第2制御プログラムの処理を再開する、制御システム。
【請求項2】
前記中断条件は、前記実行対象命令が前記移動機構を動作させる命令であって前記移動機構が動作している可能性があるという第1条件、または前記実行対象命令が特定条件の成立まで待機処理を行う命令という第2条件が成立する場合に成立する、請求項1に記載の制御システム。
【請求項3】
前記複数の命令のうち前記中断条件が成立する命令に中断命令を付加するプログラム解析手段をさらに備え、
前記制御手段は、前記第2制御プログラムの実行時に前記実行対象命令に前記中断命令が付加されている場合、前記中断条件が成立していると判定する、請求項1または2に記載の制御システム。
【請求項4】
前記第1条件は、前記実行対象命令が前記移動機構を動作させる命令であって前記移動機構が動作しているという条件である、請求項2に記載の制御システム。
【請求項5】
前記制御手段は、前記第1制御プログラムを実行する第1実行エンジンと、前記第2制御プログラムを実行する、コルーチンとして形成された第2実行エンジンとを含み、
前記第1制御プログラムは、シーケンスプログラムであり、前記第2制御プログラムをファンクションブロックとして含み、
前記制御手段は、前記第1実行エンジンを介して前記第1制御プログラムを実行し、
前記第1実行エンジンは、前記ファンクションブロックを介して前記第2実行エンジンを実行する、請求項1または2に記載の制御システム。
【請求項6】
前記制御手段は、共有メモリを介して互いにデータ交換を行う第1スレッドおよび第2スレッドを起動し、前記第1スレッドは前記第1制御プログラムから前記共有メモリへのアクセスを制御し、前記第2スレッドは前記第2制御プログラムから前記共有メモリへのアクセスを制御する、請求項1または2に記載の制御システム。
【請求項7】
移動機構を含む複数の制御対象を制御する方法であって、
予め定められた制御周期で、前記複数の制御対象を制御するための周期実行型の第1制御プログラムを繰り返し実行して前記複数の制御対象を制御するステップと、
前記第1制御プログラムから、前記移動機構を制御するための非同期実行型の第2制御プログラムを呼び出すことによって前記移動機構を制御するステップと、
前記第1制御プログラムの各制御周期において、前記第2制御プログラムに含まれる複数の命令のうちの実行対象命令が中断条件を満たす場合、前記実行対象命令を実行せずに前記第2制御プログラムの処理を中断して前記第2制御プログラムから前記第1制御プログラムに制御を返すステップと、
当該制御周期の次の制御周期において前記実行対象命令の次の命令から前記第2制御プログラムの処理を再開するステップとを含む、方法。
【請求項8】
移動機構を含む複数の制御対象を制御するプログラムであって、
前記プログラムは、プロセッサによって実行されることによって、
予め定められた制御周期で、前記複数の制御対象を制御するための周期実行型の第1制御プログラムを繰り返し実行して前記複数の制御対象を制御し、
前記第1制御プログラムから、前記移動機構を制御するための非同期実行型の第2制御プログラムを呼び出すことによって前記移動機構を制御し、
前記第1制御プログラムの各制御周期において、前記第2制御プログラムに含まれる複数の命令のうちの実行対象命令が中断条件を満たす場合、前記実行対象命令を実行せずに前記第2制御プログラムの処理を中断して前記第2制御プログラムから前記第1制御プログラムに制御を返し、
当該制御周期の次の制御周期において前記実行対象命令の次の命令から前記第2制御プログラムの処理を再開する、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、周期実行型のプログラムから非周期実行型のプログラムを呼び出すための技術に関する。
【背景技術】
【0002】
従来、周期実行型のプログラムから非周期実行型のプログラムを呼び出すための技術が知られている。たとえば、特開2019-139365号公報(特許文献1)には、一定のタスク周期毎に周期実行されるタスクに含まれるアプリケーションプログラムを予め定められたタスク周期内に収まるように実行させるための環境を提供する方法が開示されている。当該方法は、アプリケーションプログラムのソースコードに、当該アプリケーションプログラムをタスク周期内において予め設定された時間だけ実行させた後に中断させ、次のタスク周期において当該アプリケーションプログラムの実行を再開するための命令を付加することによって、アプリケーションプログラムの実行モジュールを生成する。当該方法によれば、予め定められたタスク周期内に実行が完了しないアプリケーションプログラムを周期実行されるタスクとして登録した場合であっても、各タスク周期内では、予め設定された時間だけ実行させた後に中断させつつ、複数のタスク周期に亘って1回実行するような実行形態を提供することができる。アプリケーションプログラムのソースを手作業で変更する必要がなく、このような複数のタスク周期に亘る実行を実現できるため、任意のアプリケーションプログラムを制御装置上で実行させることができ、制御装置をより高機能化させることができる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2019-139365号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
様々な製造現場において、PLC(Programmable Logic Controller)などのコントローラが導入されている。当該コントローラは、一種のコンピュータであり、製造装置または製造設備等の複数の制御対象に応じて設計された制御プログラムを実行して当該複数の制御対象を制御する。コントローラの制御プログラムは、周期実行型のプログラミング言語で記述される場合が多い。
【0005】
一方、製造現場において使用されるロボットあるいはサーボ等の移動機構の動作は、当該動作以外の外部環境と協調して動作する必要がある。外部環境の変化に要する時間を予め決定することはできないため、当該移動機構を制御するためのプログラミング言語は、非周期実行型である場合が多い。
【0006】
周期実行型の制御プログラムおよび非周期実行型の制御プログラムを用いて複数の制御対象を制御する構成を両者の並列処理として設計すると、多くの複雑な処理を実装する必要が生じ、再現性の低い不具合が生じ易くなる。その結果、当該構成の設計に要するコストが増加し易い。
【0007】
また、コントローラの制御プログラムから移動機構の制御プログラムを呼び出す構成において、移動機構の制御プログラムにおける中断ポイントを判定するには外部環境の変化に要する時間を考慮する必要がある。しかし、特許文献1に開示された方法においては、外部環境との協調のために移動機構の制御プログラムにおいて行われる処理について考慮されていない。
【0008】
本開示は上記のような課題を解決するためになされたものであり、その目的は、非周期実行型の制御プログラムによって制御される移動機構を含む複数の制御対象を周期実行型の制御プログラムによって制御する構成に要する設計コストを低減することである。
【課題を解決するための手段】
【0009】
本開示の一局面に係る制御システムは、移動機構を含む複数の制御対象を制御する。制御システムは、記憶手段と、制御手段とを備える。記憶手段には、複数の制御対象を制御するための周期実行型の第1制御プログラム、および移動機構を制御するための非周期実行型の第2制御プログラムが保存されている。制御手段は、予め定められた制御周期で第1制御プログラムを繰り返し実行して複数の制御対象を制御する。制御手段は、第1制御プログラムから第2制御プログラムを呼び出すことによって移動機構を制御する。第2制御プログラムは、複数の命令を含む。第1制御プログラムの各制御周期において、制御手段は、複数の命令のうちの実行対象命令が中断条件を満たす場合、実行対象命令を実行せずに第2制御プログラムの処理を中断して第2制御プログラムから第1制御プログラムに制御を返し、当該制御周期の次の制御周期において実行対象命令の次の命令から第2制御プログラムの処理を再開する。
【0010】
この開示においては、第1制御プログラムを介して第2制御プログラムが自動的に実行されるとともに、周期実行型の第1制御プログラムの実行に適合するように、非周期実行型の第2制御プログラムの中断ポイントが自動的に判定される。この開示によれば、並列処理の実現に必要な複雑な処理を実装する必要がないため、再現性の低い不具合が生じ難い。その結果、移動機構を含む複数の制御対象を制御する制御システムの設計コストを低減することができる。
【0011】
上記の開示において、中断条件は、実行対象命令が移動機構を動作させる命令であって移動機構が動作している可能性があるという第1条件、または実行対象命令が特定条件の成立まで待機処理を行う命令という第2条件が成立する場合に成立してもよい。
【0012】
この開示によれば、中断の必要性が高いタイミングにおいて適切に第2制御プログラムの実行を中断することができる。
【0013】
上記の開示において、制御システムは、複数の命令のうち中断条件が成立する命令に中断命令を付加するプログラム解析手段をさらに備えてもよい。制御手段は、第2制御プログラムの実行時に実行対象命令に中断命令が付加されている場合、中断条件が成立していると判定してもよい。
【0014】
この開示によれば、第2制御プログラムの実行を中断させるか否かの判定を実行対象の命令に中断命令が付加されているか否かによって行うことができるため、既存の並列処理実装フレームワークをそのまま使用することができる。
【0015】
上記の開示において、第1条件は、実行対象命令が移動機構を動作させる命令であって移動機構が動作しているという条件であってもよい。
【0016】
この開示によれば、中断条件の成否が動的に判定されるため、移動機構の動作に不要な中断が生じない。その結果、移動機構の動作が滑らかに行われやすくなるため、移動機構の動作を効率的に行うことができる。
【0017】
上記の開示において、制御手段は、第1実行エンジンと、第2実行エンジンとを含んでもよい。第1実行エンジンは、第1制御プログラムを実行してもよい。第2実行エンジンは、第2制御プログラムを実行する、コルーチンとして形成されてもよい。第1制御プログラムは、シーケンスプログラムであり、第2制御プログラムをファンクションブロックとして含んでもよい。制御手段は、第1実行エンジンを介して第1制御プログラムを実行してもよい。第1実行エンジンは、ファンクションブロックを介して第2実行エンジンを実行してもよい。
【0018】
この開示によれば、第2制御プログラムを第1実行エンジンから呼出可能なファンクションブロックとして形成するとともに、第2実行エンジンから第2制御プログラムをコルーチンとして呼び出すことによって、ユーザは、制御システムの第1制御プログラムおよび第2制御プログラムを用いた複数の制御対象200の制御を、既存の実装フレームワークの知見に基づいて直感的に実装することができる。その結果、制御システムの設計コストをさらに低減することができる。
【0019】
上記の開示において、制御手段は、共有メモリを介して互いにデータ交換を行う第1スレッドおよび第2スレッドを起動してもよい。第1スレッドは、第1制御プログラムから共有メモリへのアクセスを制御してもよい。第2スレッドは、第2制御プログラムから共有メモリへのアクセスを制御してもよい。
【0020】
この開示によれば、共有メモリを介する第1実行エンジンと第2実行エンジンとの間でのデータ交換を行うスレッドと、移動機構の実質的な制御を行うスレッドが分離されているため、第2制御プログラムの実行時間が第1制御プログラムの制御周期を超過するというサイクルタイムオーバーを防止することができる。
【0021】
本開示の他の局面に係る方法は、移動機構を含む複数の制御対象を制御する。当該方法は、予め定められた制御周期で、複数の制御対象を制御するための周期実行型の第1制御プログラムを繰り返し実行して複数の制御対象を制御するステップと、第1制御プログラムから、移動機構を制御するための非同期実行型の第2制御プログラムを呼び出すことによって移動機構を制御するステップと、第1制御プログラムの各制御周期において、第2制御プログラムに含まれる複数の命令のうちの実行対象命令が中断条件を満たす場合、実行対象命令を実行せずに第2制御プログラムの処理を中断して第2制御プログラムから第1制御プログラムに制御を返すステップと、当該制御周期の次の制御周期において実行対象命令の次の命令から第2制御プログラムの処理を再開するステップとを含む。
【0022】
この開示においては、第1制御プログラムを介して第2制御プログラムが自動的に実行されるとともに、周期実行型の第1制御プログラムの実行に適合するように、非周期実行型の第2制御プログラムの中断ポイントが自動的に判定される。この開示によれば、並列処理の実現に必要な複雑な処理を実装する必要がないため、再現性の低い不具合が生じ難い。その結果、移動機構を含む複数の制御対象を制御する方法の設計コストを低減することができる。
【0023】
本開示の他の局面に係るプログラムは、移動機構を含む複数の制御対象を制御する。当該プログラムは、プロセッサによって実行されることによって、予め定められた制御周期で、複数の制御対象を制御するための周期実行型の第1制御プログラムを繰り返し実行して複数の制御対象を制御し、第1制御プログラムから、移動機構を制御するための非同期実行型の第2制御プログラムを呼び出すことによって移動機構を制御し、第1制御プログラムの各制御周期において、第2制御プログラムに含まれる複数の命令のうちの実行対象命令が中断条件を満たす場合、実行対象命令を実行せずに第2制御プログラムの処理を中断して第2制御プログラムから第1制御プログラムに制御を返し、当該制御周期の次の制御周期において実行対象命令の次の命令から第2制御プログラムの処理を再開する。
【0024】
この開示においては、第1制御プログラムを介して第2制御プログラムが自動的に実行されるとともに、周期実行型の第1制御プログラムの実行に適合するように、非周期実行型の第2制御プログラムの中断ポイントが自動的に判定される。この開示によれば、並列処理の実現に必要な複雑な処理を実装する必要がないため、再現性の低い不具合が生じ難い。その結果、移動機構を含む複数の制御対象を制御するプログラムの設計コストを低減することができる。
【発明の効果】
【0025】
本開示に係る制御システム、方法、およびプログラムによれば、非周期実行型の制御プログラムによって制御される移動機構を含む複数の制御対象を周期実行型の制御プログラムによって制御する構成に要する設計コストを低減することができる。
【図面の簡単な説明】
【0026】
図1】実施の形態1に係る制御システムの機能構成を示すブロック図である。
図2図1の第1制御プログラムおよび第2制御プログラムの各々の一例を示す図である。
図3図2の第1制御プログラムを実行する第1実行エンジンがファンクションブロックとして形成された第2制御プログラムを実行する場合の処理の流れを示すフローチャートである。
図4】実施の形態2に係る制御システムの機能構成を示すブロック図である。
図5図4のプログラム解析手段によって中断命令が付加された第2制御プログラムの一例を示す図である。
図6】実施の形態3に係る制御システムの機能構成を示すブロック図である。
図7図6の第1制御プログラムPgを実行する第1実行エンジンがファンクションブロックとして形成された第2制御プログラムを実行する場合の処理の流れを示すフローチャートである。
図8】実施の形態4に係る制御システムのネットワーク構成例を示す模式図である。
図9図8の制御装置のハードウェア構成例を示すブロック図である。
図10図8のサポート装置のハードウェア構成例を示す模式図である。
【発明を実施するための形態】
【0027】
以下、実施の形態について図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付してその説明は原則として繰り返さない。
【0028】
[実施の形態1]
<適用例>
図1は、実施の形態1に係る制御システム1の機能構成を示すブロック図である。図1に示されるように、制御システム1は、制御手段110と、記憶手段120と、複数の制御対象200とを備える。複数の制御対象200は、制御対象210と、移動機構220とを含む。制御システム1は、複数の制御対象200を制御する。制御システム1は、たとえばPLCを含む。
【0029】
記憶手段120には、複数の制御対象200を制御するための周期実行型の第1制御プログラムPg1、および移動機構220を制御するための非周期実行型の第2制御プログラムPg2が保存されている。なお、周期実行型とは、制御プログラムの先頭行から最終行までが予め定められた周期ごとに繰り返し実行される実行形態をいう。すなわち、周期実行型の制御プログラムにおいては、プログラムの実行周期が保証されている。非周期実行型とは、プログラムの各行が逐次的に実行される実行形態をいう。非周期実行型の制御プログラムにおいては、実行を開始してから終了するまでの時間が保証されない。
【0030】
制御手段110は、予め定められた制御周期で第1制御プログラムPg1を繰り返し実行して複数の制御対象200を制御する。制御手段110は、第1実行エンジンEg1と、第2実行エンジンEg2とを含む。第1実行エンジンEg1は、第1制御プログラムPg1を実行する。第2実行エンジンEg2は、第2制御プログラムPg2を実行する。制御手段110は、第1制御プログラムPg1から第2制御プログラムPg2を呼び出すことによって移動機構220を制御する。具体的には、制御手段110は、第1実行エンジンEg1を介して第1制御プログラムPg1を実行する。第1実行エンジンEg1は、第2実行エンジンを介して第2制御プログラムPg2を実行する。
【0031】
制御システム1は、周期実行型の第1制御プログラムPg1および非周期実行型の第2制御プログラムPg2を用いて複数の制御対象200を制御する。制御システム1による複数の制御対象200の制御を両者の並列処理として設計すると、多くの複雑な処理を実装する必要が生じ、再現性の低い不具合が生じ易くなる。その結果、当該制御の設計(実装およびテストを含む)に要するコスト(設計コスト)が増加し易い。そこで、制御システム1においては、第1制御プログラムPg1の各制御周期において、制御手段110は、第2制御プログラムPg2に含まれる複数の命令のうちの実行対象命令が中断条件を満たすか否かを自動的に判定する。実行対象命令が中断条件を満たす場合、制御手段110は、当該実行対象命令を実行せずに第2制御プログラムPg2の処理を中断して第2制御プログラムPg2から第1制御プログラムPg1に制御を返し、当該制御周期の次の制御周期において当該実行対象命令の次の命令から第2制御プログラムPg2の処理を再開する。制御システム1によれば、第1制御プログラムPg1を介して第2制御プログラムPg2が自動的に実行されるとともに、周期実行型の第1制御プログラムPg1の実行に適合するように、非周期実行型の第2制御プログラムPg2の中断ポイントが自動的に判定される。制御システム1によれば、並列処理の実現に必要な複雑な処理を実装する必要がないため、再現性の低い不具合が生じ難い。その結果、制御システム1の設計コストを低減することができる。
【0032】
図2は、図1の第1制御プログラムPg1および第2制御プログラムPg2の各々の一例を示す図である。図2に示されるように、第1制御プログラムPg1は、複数のシーケンス命令群52と、第2制御プログラムPg2を実行するためのファンクションブロック54とを含む。ファンクションブロック54は、第2実行エンジンEg2に第2制御プログラムPg2を実行させるための、第1実行エンジンEg1から実行可能なラッパー関数として形成されている。第1制御プログラムPg1は、典型的には、国際電気標準会議(International Electrotechnical Commission:IEC)によって規定された国際規格IEC61131-3に従って記述された1または複数の命令を含むシーケンスプログラムである。第1制御プログラムPg1は、予め定められた制御周期毎に繰返し周実行される。すなわち、ある制御周期において、第1制御プログラムPg1の先頭から最終までが順次実行され、次の制御周期においても、第1制御プログラムPg1の先頭から最終までが順次実行される。このような第1制御プログラムPg1の先頭から最終までの順次実行が予め定められた制御周期毎に繰返されることを「周期実行」と称す。なお、制御周期は、制御手段110において周期実行できる最小の周期の整数倍として規定されてもよい。
【0033】
第2制御プログラムPg2は、複数の命令Cm1,Cm2,Cm3,Cm4,Cm5,Cm6,Cm7,Cm8を含む。複数の命令Cm1~Cm8は、この順に逐次実行される。第2制御プログラムPg2は、たとえば、ロボットを制御するためのロボットプログラム、あるいはサーボを制御するためのモーションプログラムである。第2制御プログラムPg2は、所定のプログラミング言語(たとえば、V+言語などのロボット制御用プログラミング言語、あるいはGコードなどのNC(Numerical Control)制御に係るプログラミング言語)で記述されてもよい。
【0034】
第2制御プログラムPg2の開始後、命令Cm1が実行される前に、変数DoneにFALSEが代入される。命令Cm1は、ATTACH命令であり、移動機構220が第2制御プログラムPg2によって利用可能になるという条件(特定条件)が成立するまで待機する待機命令である。命令Cm2,Cm3の各々は、変数への代入命令である。命令Cm4は、MOVE命令であり、引数に指定された位置まで移動機構220を移動させる動作命令である。命令Cm5は、APPRO命令であり、ピック動作を行う位置の上まで移動機構220を移動させる動作命令である。命令Cm6は、WAIT命令であり、引数に与えられたフラグが真になるという条件(特定条件)が成立するまで待機する待機命令である。命令Cm7は、MOVES命令であり、移動機構220を引数に指定された位置まで下降させる動作命令である。命令Cm8は、BREAK命令であり、移動機構220が停止するという条件(特定条件)が成立するまで待機するという待機命令である。命令Cm8が実行された後、変数DoneにTRUEが代人される。
【0035】
図3は、図2の第1制御プログラムPg1を実行する第1実行エンジンEg1がファンクションブロック54として形成された第2制御プログラムPg2を実行する場合の処理の流れを示すフローチャートである。図3に示されるように、第1実行エンジンEg1は、S101においてファンクションブロック54を実行して第2実行エンジンEg2を呼び出す。第2実行エンジンEg2は、シングルスレッドを起動して処理を行う。第2実行エンジンEg2は、S201において第2制御プログラムPg2の実行状態を、初期状態または中断条件の成立に応じて退避された状態に復元して、処理をS202に進める。第2実行エンジンEg2は、S202において実行対象命令が中断条件を満たすか否かを判定する。中断条件は、たとえば、実行対象命令が移動機構220の動作させる動作命令であって移動機構220が動作しているという第1条件、または実行対象命令が特定条件の成立まで待機処理を行う待機命令であるという第2条件が成立する場合に成立する。中断条件をこのように構成することにより、中断の必要性が高いタイミングにおいて適切に第2制御プログラムの実行を中断することができる。なお、中断条件は、実行対象命令が算術演算命令あるいは分岐命令である場合には成立しない。
【0036】
図2も合わせて参照して、待機命令である命令Cm1,Cm6,Cm8の各々は待機命令であるため、当該命令が実行可能命令である場合、S202の中断条件は成立する。命令Cm2,Cm3の各々は、算術演算命令であるためS202の中断条件は成立しない。命令Cm4,Cm5,Cm7の各々は動作命令であるため、当該命令が実行対象命令である場合、移動機構220が動作しているときS202の中断条件は成立し、移動機構220が停止しているときS202の中断条件は成立しない。
【0037】
中断条件が成立しない場合(S202においてNO)、第2実行エンジンEg2は、S203において実行対象命令を実行して処理をS204に進める。第2実行エンジンEg2は、S204において、実行済みの命令の次の命令を実行対象に設定して処理をS202に戻す。中断条件が成立する場合(S202においてYES)、第2実行エンジンEg2は、第2制御プログラムPg2の実行を中断し、S205において実行状態を退避して、制御を第1実行エンジンEg1に返す。
【0038】
第2実行エンジンEg2から制御を取得した第1実行エンジンEg1は、S102においてファンクションブロック54の実行を完了する。
【0039】
制御システム1においては、S202の中断条件の成否が動的に判定されるため、移動機構220の動作に不要な中断が生じない。その結果、移動機構220の動作が滑らかに行われやすくなるため、移動機構220の動作を効率的に行うことができる。
【0040】
S201において行われる自動的な実行状態の復元、およびS205において行われる自動的な実行状態の自動的な退避は、たとえば、第2実行エンジンEg2が第2制御プログラムPg2をコルーチンとして呼び出すことによって実現することができる。コルーチンの実現方法としては、たとえば、スタックを使わないようコンパイルするスタックレスな方法、または実行時にスタック切り替えを行うスタックフルな方法を挙げることができる。
【0041】
第2制御プログラムPg2を第1実行エンジンEg1から呼出可能なファンクションブロックとして形成するとともに、第2実行エンジンEg2から第2制御プログラムPg2をコルーチンとして呼び出すことによって、ユーザは、制御システム1の第1制御プログラムPg1および第2制御プログラムPg2を用いた複数の制御対象200の制御を、既存の実装フレームワークの知見に基づいて直感的に実装することができる。その結果、制御システム1の設計コストをさらに低減することができる。
【0042】
以上、実施の形態1に係る制御システム、方法、およびプログラムによれば、非周期実行型の制御プログラムによって制御される移動機構を含む複数の制御対象を周期実行型の制御プログラムによって制御する構成に要する設計コストを低減することができる。
【0043】
[実施の形態2]
実施の形態1においては、第2制御プログラムの中断条件の成否が動的に判定される構成について説明した。実施の形態2においては、当該中断条件が第2制御プログラムの実行前に静的に判定される構成について説明する。
【0044】
図4は、実施の形態2に係る制御システム2の機能構成を示すブロック図である。制御システム2の構成は、図1の制御システム1にプログラム解析手段130が追加されているとともに、第2実行エンジンEg2がEg2Aに置き換えられた構成である。これら以外は制御システム1と同様の構成であるため、同様の構成についての説明を繰り返さない。
【0045】
図4に示されるように、プログラム解析手段130は、第2制御プログラムPg2に含まれる複数の命令のうち中断条件が成立する命令に中断命令を付加する。第2実行エンジンEg2Aは、プログラム解析手段130によって中断命令が付加された第2制御プログラムPg2を実行する。第2実行エンジンEg2Aは、実行対象命令に中断命令が付加されている場合、図3のS202において当該実行対象命令が中断条件を満たすと判定する。なお、制御システム2における中断条件は、たとえば、実施の形態1の第1条件が、実行対象命令が移動機構220を動作させる動作命令であって移動機構220が動作している可能性があるという条件に置き換えられた条件である。
【0046】
図5は、図4のプログラム解析手段130によって中断命令Cmsが付加された第2制御プログラムPg2の一例を示す図である。図5に示されるように、中断命令Cmsの一例であるYield命令が命令Cm1,Cm5~Cm8に付されている。待機命令であるCm1,Cm6,Cm8の各々は中断条件を満たす。ATTACH命令である命令Cm1の実行完了直後は、移動機構220の停止が保証されているため、動作命令Cm4が実行対象となる場合、移動機構220が動作している可能性はない。一方、動作命令Cm5の直前の命令Cm4は動作命令であるため、動作命令Cm5が実行対象となる場合、移動機構220は動作している可能性がある。また、動作命令Cm5の直後の待機命令Cm6の完了後も動作命令Cm5に対応する移動機構220の動作が継続している可能性があるため、動作命令Cm7が実行対象となる場合、移動機構220は動作している可能性がある。このように動作命令Cm5,Cm7の各々が実行対象となる場合、移動機構220が動作している可能性があるため、中断条件が成立する。なお、BREAK命令である命令Cm8の直後もATTACH命令と同様に移動機構220の停止が保証されているため、BREAK命令の次に実行される命令に関して中断条件は成立しない。
【0047】
実施の形態1と2とを比較すると、実施の形態2においては、待機命令Cm6の直後の動作命令Cm7に中断命令が付加されるため、第2制御プログラムPg2の実行は動作命令Cm7において必ず中断される。しかし、第2制御プログラムPg2の実行を中断させるか否かの判定を実行対象の命令に中断命令が付加されているか否かによって行うことができるため、既存の並列処理実装フレームワークをそのまま使用することができる。一方、実施の形態1においては、動作命令Cm7において第2制御プログラムPg2の実行が中断されるか否かは、第2制御プログラムPg2の実行時における待機命令Cm6の実行時間の長さに依存する。待機命令Cm6の実行時間の長さが比較的短い場合、待機命令Cm6の前後の動作命令Cm5,Cm7による移動機構220の経路(軌道)を連続にして加減速時間を短縮することができる。ユーザは、制御システムに必要とされる要件、仕様、およびコストに応じて、実施の形態1,2のいずれかを適宜選択することができる。
【0048】
以上、実施の形態2に係る制御システム、方法、およびプログラムによれば、非周期実行型の制御プログラムによって制御される移動機構を含む複数の制御対象を周期実行型の制御プログラムによって制御する構成に要する設計コストを低減することができる。
【0049】
[実施の形態3]
実施の形態1,2においては、非周期実行型の第2制御プログラム用の第2エンジンの実行がシングルスレッドによって行われる構成について説明した。実施の形態3においては、第2実行エンジンの実行がマルチスレッドによって行われる構成について説明する。
【0050】
図6は、実施の形態3に係る制御システム3の機能構成を示すブロック図である。制御システム3の構成は、図1の第1実行エンジンEg1,第2実行エンジンEg2,第2制御プログラムPg2が第1実行エンジンEg1B,第2実行エンジンEg2B,第2制御プログラムPg2Bにそれぞれ置き換えられた構成である。これら以外は制御システム1と同様の構成であるため、同様の構成についての説明を繰り返さない。
【0051】
図6に示されるように、第2実行エンジンEg2Bは、共有メモリMsh(たとえばグローバル変数)を介して互いにデータ交換を行う第1スレッドThr1および第2スレッドThr2を起動する。第1スレッドThr1は、第1制御プログラムPg1から共有メモリMsh(たとえばグローバル変数)へのアクセスを制御する。第2スレッドThr2は、第2制御プログラムPg2から共有メモリMshへのアクセスを制御する。
【0052】
図7は、図6の第1制御プログラムPg1を実行する第1実行エンジンEg1Bがファンクションブロックとして形成された第2制御プログラムPg2Bを実行する場合の処理の流れを示すフローチャートである。図7に示されるフローチャートは、図3に示されるフローチャートからS201,S205が除かれているとともに、S231,S235,S236が追加されたフローチャートである。これら以外の処理は図3の処理と同様であるため、同様の処理についての説明を繰り返さない。
【0053】
図7に示されるように、第1実行エンジンEg1は、S101を実行して第2実行エンジンEg2Bを呼び出す。第2実行エンジンEg2Bは、フロントエンド処理を行う第1スレッドThr1と、バックエンド処理を行う第2スレッドThr2とを起動して処理を行う。第1スレッドThr1は、第1実行エンジンEg1と第2実行エンジンEg2Bとの間のインターフェイスとして機能する。第2スレッドThr2は、第2制御プログラムPg2Bを実行して、移動機構220に対する実質的な制御を行なう。
【0054】
第1スレッドThr1は、S231において、共有メモリMshを介したデータ交換(通信)が必要か否かを判定する。データ交換とは、共有メモリMshのデータの更新あるいは当該データの参照である。データ交換が必要である場合(S231においてYES)、第2実行エンジンEg2は、S231において共有メモリMshおいて指定されたデータの変更あるいは読み出しを行って、制御を第1実行エンジンEg1に返す。データ交換が不要である場合(S231においてNO)、第2実行エンジンEg2は、制御を第1実行エンジンEg1に返す。なお、S236においては、第1スレッドThr1と第2スレッドThr2との間で共有メモリMshへのアクセスが競合することを防止するため、排他制御が行われる。すなわち、両スレッドの一方が共有メモリMshへアクセスしている間は、他方のスレッドの共有メモリMshへのアクセスは禁止される。
【0055】
第2スレッドThr2は、実施の形態1と同様にS202~S203を行う。第2スレッドThr2は、S235においてデータ交換が必要であるか否かを判定する。データ交換が必要ではない場合(S235においてNO)、第2スレッドThr2は、処理をS202に戻す。データ交換が必要である場合(S235においてYES)、第2スレッドThr2は、S236においてデータ交換を行って処理をS202に戻す。
【0056】
制御システム3によれば、共有メモリMshを介する第1実行エンジンEg1と第2実行エンジンEg2との間でのデータ交換を行うスレッドと、移動機構220の実質的な制御を行うスレッドが分離されているため、第2制御プログラムPg2の実行時間が第1制御プログラムPg1の制御周期を超過するというサイクルタイムオーバーを防止することができる。
【0057】
以上、実施の形態3に係る制御システム、方法、およびプログラムによれば、非周期実行型の制御プログラムによって制御される移動機構を含む複数の制御対象を周期実行型の制御プログラムによって制御する構成に要する設計コストを低減することができる。
【0058】
[実施の形態4]
図8は、実施の形態4に係る制御システム4のネットワーク構成例を示す模式図である。図8に示されるように、制御システム4は、複数のデバイスが互いに通信可能に構成されたデバイス群を含む。典型的には、デバイスは、ユーザプログラムを実行する処理主体である制御装置100と、制御装置100に接続される周辺装置とを含み得る。
【0059】
制御装置100は、各種の設備または装置などの制御対象を制御する産業用コントローラに相当する。制御装置100は、制御演算を実行する一種のコンピュータであり、典型的には、PLC(Programmable Logic Controller)を含む。制御装置100は、フィールドネットワーク20を介してフィールドデバイス200D(複数の制御対象)に接続されている。制御装置100は、フィールドネットワーク20を介して、少なくとも1つのフィールドデバイス200Dとの間でデータを遣り取りする。
【0060】
制御装置100において実行される制御演算は、フィールドデバイス200Dにおいて収集または生成されたデータを収集する処理、フィールドデバイス200Dに対する指令値などのデータを生成する処理、および生成した出力データを対象のフィールドデバイス200Dへ送信する処理などを含む。
【0061】
フィールドネットワーク20は、定周期通信を行うバスまたはネットワークを採用することが好ましい。このような定周期通信を行うバスまたはネットワークとしては、EtherCAT(登録商標)、EtherNet/IP(登録商標)、DeviceNet(登録商標)、またはCompoNet(登録商標)などが知られている。データの到達時間が保証される点において、EtherCAT(登録商標)が好ましい。
【0062】
フィールドネットワーク20には、任意のフィールドデバイス200Dを接続することができる。フィールドデバイス200Dは、フィールド側にあるロボットまたはコンベアなどに対して何らかの物理的な作用を与えるアクチュエータ、および、フィールドとの間で情報を遣り取りする入出力装置などを含む。
【0063】
制御システム4においてフィールドデバイス200Dは、ロボットコントローラ222_1,サーボドライバ222_2と、ロボットコントローラ222_1,サーボドライバ222_2にそれぞれ接続されたアームロボット220_1(移動機構),サーボモータ220_2(移動機構)とを含む。
【0064】
ロボットコントローラ222_1,サーボドライバ222_2は、制御装置100からの指令値に従って、アームロボット220_1,サーボモータ220_2をそれぞれ制御する。
【0065】
制御装置100は、上位ネットワーク12を介して、他の装置にも接続されている。上位ネットワーク12は、ゲートウェイ700を介して、外部ネットワークであるインターネット900に接続されている。上位ネットワーク12には、一般的なネットワークプロトコルであるイーサネット(登録商標)、あるいはEtherNet/IP(登録商標)が採用されてもよい。より具体的には、上位ネットワーク12には、少なくとも1つのサーバ装置600および少なくとも1つの表示装置500が接続されてもよい。
【0066】
サーバ装置600としては、データベースシステム、または製造実行システム(MES:Manufacturing Execution System)などが想定される。製造実行システムは、制御対象の製造装置または設備からの情報を取得して、生産全体を監視および管理するものであり、オーダ情報、品質情報、あるいは出荷情報などを扱うこともできる。これらに限らず、情報系サービスを提供する装置を上位ネットワーク12に接続するようにしてもよい。情報系サービスとしては、制御対象の製造装置または設備からの情報を取得して、マクロ的またはミクロ的な分析などを行う処理が想定される。たとえば、情報系サービスとしては、制御対象の製造装置または設備からの情報に含まれる何らかの特徴的な傾向を抽出するデータマイニング、あるいは制御対象の設備または機械からの情報に基づく機械学習を行うための機械学習ツールなどが想定される。
【0067】
表示装置500は、ユーザからの操作を受けて、制御装置100に対してユーザ操作に応じたコマンドなどを出力するとともに、制御装置100での演算結果などをグラフィカルに表示する。
【0068】
制御装置100には、サポート装置400が接続可能になっている。サポート装置400は、上位ネットワーク12またはインターネット900を介して制御装置100に接続されてもよい。サポート装置400は、制御装置100が制御対象を制御するために必要な準備を支援する装置である。具体的には、サポート装置400は、制御装置100で実行されるプログラムの開発環境(プログラム作成編集ツール、パーサ、およびコンパイラなど)、制御装置100および制御装置100に接続される各種デバイスの構成情報(コンフィギュレーション)を設定するための設定環境、生成したプログラムを制御装置100へ出力する機能、および制御装置100上で実行されるプログラムなどをオンラインで修正および変更を行う機能などを提供する。
【0069】
制御システム4においては、制御装置100、サポート装置400、および表示装置500がそれぞれ別体として構成されているが、これらの機能の全部または一部を単一の装置に集約するような構成が採用されてもよい。
【0070】
制御装置100は、一の生産現場のみで使用される場合に限らず、他の生産現場においても使用される。また、一の生産現場内においても複数の異なるラインで使用される場合もある。
【0071】
図9は、図8の制御装置100のハードウェア構成例を示すブロック図である。図9に示されるように、制御装置100は、プロセッサ110Dと、メインメモリ104と、ストレージ120Dと、メモリカードインターフェイス112と、上位ネットワークコントローラ106と、フィールドネットワークコントローラ108と、ローカルバスコントローラ116と、USB(Universal Serial Bus)インターフェイスを提供するUSBコントローラ170とを含む。これらのコンポーネントは、プロセッサバス118を介して接続されている。
【0072】
プロセッサ110Dは、制御演算を実行する演算処理部に相当し、CPU(Central Processing Unit)および/またはGPU(Graphics Processing Unit)などで構成される。具体的には、プロセッサ110Dは、ストレージ120D(記憶手段)に格納されたプログラムを読み出して、メインメモリ104に展開して実行することで、制御対象に対する制御演算を実現する。プロセッサ110Dは、デュアルコアであり、マルチタスク処理により複数のタスクを並行して実行する。当該マルチタスク処理においては、予め設定された制御周期(たとえば、1ms)の制御サイクルが処理全体の共通サイクルとして採用されている。すなわち、プロセッサ110Dは、複数のタスクの各々を周期的に実行する。なお、プロセッサ110Dは、シングルコアであり、時分割により複数のタスクを並行して実行してもよい。また、プロセッサ110Dのコア数は、3以上であってもよい。
【0073】
メインメモリ104は、DRAM(Dynamic Random Access Memory)および/またはSRAM(Static Random Access Memory)などの揮発性記憶装置などで構成される。ストレージ120Dは、たとえば、SSD(Solid State Drive)および/またはHDD(Hard Disk Drive)などの不揮発性記憶装置などで構成される。
【0074】
ストレージ120Dには、システムプログラムPscと、ユーザプログラムPu1,Pu2,Pu3とが保存されている。「ユーザプログラム」は、「システムプログラム」と区別する意味で用いられる用語である。「ユーザプログラム」は、制御対象に応じて任意に作成される命令の組合せであり、制御装置の設計者が任意に作成および修正可能である。これに対して、「システムプログラム」は、「ユーザプログラム」を実行するための実行環境、あるいは制御装置に含まれるハードウェアの制御を実現するためのプログラムである。基本的には、「システムプログラム」は予め制御装置にインストールされている。
【0075】
システムプログラムPscは、制御装置100を統合的に制御して、制御装置100の各機能を実現するためのプログラムを含む。ユーザプログラムPu1(第1制御プログラム)は、たとえばラダー言語等のシーケンスプログラム言語)で記述されている。ユーザプログラムPu2(第2制御プログラム)は、たとえばロボット言語で記述されている。ユーザプログラムPu3(第2制御プログラム)は、たとえばモーション言語で記述されている。プロセッサ110D(制御手段)は、ユーザプログラムPu1を介してユーザプログラムPu2,Pu3を呼び出す。
【0076】
メモリカードインターフェイス112は、着脱可能な記憶媒体の一例であるメモリカード114を受け付ける。メモリカードインターフェイス112は、メモリカード114に対して任意のデータの読み書きが可能になっている。
【0077】
上位ネットワークコントローラ106は、上位ネットワーク12(たとえばローカルエリアネットワーク)を介して、上位ネットワーク12に接続された任意の情報処理装置との間でデータを遣り取りする。
【0078】
フィールドネットワークコントローラ108は、フィールドネットワーク20を介して、アームロボット220_1,サーボモータ220_2等の任意のデバイスとの間でデータを遣り取りする。
【0079】
ローカルバスコントローラ116は、ローカルバス122を介して、制御装置100を構成する任意の機能ユニット180との間でデータを遣り取りする。機能ユニット180は、たとえば、アナログ信号の入力および/または出力を担当するアナログI/Oユニット、デジタル信号の入力および/または出力を担当するデジタルI/Oユニット、ならびにエンコーダなどからのパルスを受け付けるカウンタユニットなどからなる。
【0080】
USBコントローラ170は、USB接続を介して、任意の情報処理装置との間でデータを遣り取りする。USBコントローラ170には、たとえばサポート装置400が接続される。
【0081】
図10は、図8のサポート装置400のハードウェア構成例を示す模式図である。サポート装置400は、一例として、汎用的なアーキテクチャに従うコンピュータがプログラムを実行することで実現される。
【0082】
図10に示されるように、サポート装置400は、プロセッサ430と、揮発性メモリ404と、不揮発性メモリ406と、ストレージ(Hard Disk Drive)408と、ディスプレイ450と、キーボード410と、マウス412と、メモリカードインターフェイス414と、外部装置インターフェイス418とを備える。これらのコンポーネントは、プロセッサバス420を介して相互に通信可能に接続されている。
【0083】
プロセッサ430は、CPUおよびGPUなどで構成され、不揮発性メモリ406およびストレージ408に格納されたプログラム(一例として、サポートプログラムPsp)を読み出して、揮発性メモリ404に展開して実行することで、各種処理を実現する。すなわち、サポートプログラムPspを実行するプロセッサ430(プログラム解析手段)は、ユーザプログラムPu2,Pu3の各々を解析して、当該プログラムに中断命令を付加してもよい。ストレージ408は、たとえば、SSDおよび/またはHDDなどの不揮発性記憶装置などで構成される。
【0084】
サポート装置400においては、プロセッサ430が所定のプログラムを実行することで、サポート装置400として必要な機能が提供される。当該機能の一部または全部が、専用のハードウェア回路(たとえば、ASICまたはFPGAなど)を用いて実装されてもよい。
【0085】
揮発性メモリ404は、DRAMおよびSRAMなど、各種の揮発性記憶装置によって構成される。不揮発性メモリ406は、SSDなど、各種の不揮発性記憶装置によって構成される。
【0086】
不揮発性メモリ406およびストレージ408には、基本的な機能を実現するためのOS(Operating System)に加えて、サポート装置400としての機能を提供するためのサポートプログラムPspが格納されている。なお、サポート装置400においては、ストレージ408にサポートプログラムPspが格納されている。サポートプログラムPspには、コンピュータをサポート装置400として機能させるための命令が規定されている。
【0087】
ディスプレイ450は、プロセッサ430からの処理結果などを出力する。キーボード410およびマウス412は、ユーザプログラムなどの各種のプログラムを作成したり、制御対象に応じた設定値などをユーザが入力したりするときに、ユーザ操作を受け付ける。
【0088】
メモリカードインターフェイス414は、メモリカード115が着脱可能に構成されており、メモリカード115に対して各種データ(ユーザプログラムなど)を書き込み、メモリカード115から各種データを読み出すことが可能になっている。
【0089】
外部装置インターフェイス418は、ネットワークを介して、制御装置100などの任意の外部装置などとの間でデータを遣り取りする。
【0090】
なお、図示は省略するが、サポート装置400は、光学ドライブを備えていてもよく、コンピュータが読み取り可能なプログラムを非一過的に格納するDVD(Digital Versatile Disc)などの光学記録媒体から、その中に格納されたプログラム(サポートプログラムなど)が読み取られて不揮発性メモリ406またはストレージ408などにインストールされる。
【0091】
サポート装置400において実行されるサポートプログラムPspなどは、コンピュータ読取可能なDVDを介してインストールされてもよいが、ネットワーク上のサーバ装置600などからダウンロードする形でインストールされるようにしてもよい。また、サポート装置400が提供する機能は、OSが提供するモジュールの一部を利用する形で実現される場合もある。
【0092】
以上、実施の形態4に係る制御システム、方法、およびプログラムによれば、非周期実行型の制御プログラムによって制御される移動機構を含む複数の制御対象を周期実行型の制御プログラムによって制御する構成に要する設計コストを低減することができる。
【0093】
<付記>
上記したような本実施の形態は、以下のような技術思想を含む。
【0094】
[構成1]
移動機構(220)を含む複数の制御対象(200)を制御する制御システム(1~4)であって、
前記複数の制御対象(200)を制御するための周期実行型の第1制御プログラム(Pg1)、および前記移動機構(220)を制御するための非周期実行型の第2制御プログラム(Pg2)が保存された、記憶手段(120)と、
予め定められた制御周期で前記第1制御プログラム(Pg1)を繰り返し実行して前記複数の制御対象(200)を制御する制御手段(110)とを備え、
前記制御手段(110)は、前記第1制御プログラム(Pg1)から前記第2制御プログラム(Pg2)を呼び出すことによって前記移動機構(220)を制御し、
前記第2制御プログラム(Pg2)は、複数の命令(Cm1~Cm8)を含み、
前記第1制御プログラム(Pg1)の各制御周期において、前記制御手段(110)は、前記複数の命令(Cm1~Cm8)のうちの実行対象命令が中断条件を満たす場合、前記実行対象命令を実行せずに前記第2制御プログラム(Pg2)の処理を中断して前記第2制御プログラム(Pg2)から前記第1制御プログラム(Pg1)に制御を返し、当該制御周期の次の制御周期において前記実行対象命令の次の命令から前記第2制御プログラム(Pg2)の処理を再開する、制御システム(1~4)。
【0095】
[構成2]
前記中断条件は、前記実行対象命令が前記移動機構(220)を動作させる命令であって前記移動機構(220)が動作している可能性があるという第1条件、または前記実行対象命令が特定条件の成立まで待機処理を行う命令という第2条件が成立する場合に成立する、構成1に記載の制御システム(1~4)。
【0096】
[構成3]
前記複数の命令(Cm1~Cm8)のうち前記中断条件が成立する命令に中断命令を付加するプログラム解析手段(130)をさらに備え、
前記制御手段(110)は、前記第2制御プログラム(Pg2)の実行時に前記実行対象命令に前記中断命令が付加されている場合、前記中断条件が成立していると判定する、構成1または2に記載の制御システム(2)。
【0097】
[構成4]
前記第1条件は、前記実行対象命令が前記移動機構(220)を動作させる命令であって前記移動機構(220)が動作しているという条件である、構成2に記載の制御システム(1,3,4)。
【0098】
[構成5]
前記制御手段(110)は、前記第1制御プログラム(Pg1)を実行する第1実行エンジン(Eg1)と、前記第2制御プログラム(Pg2)を実行する、コルーチンとして形成された第2実行エンジン(Eg2)とを含み、
前記第1制御プログラム(Pg1)は、シーケンスプログラムであり、前記第2制御プログラム(Pg2)をファンクションブロック(54)として含み、
前記制御手段(110)は、前記第1実行エンジン(Eg1)を介して前記第1制御プログラム(Pg1)を実行し、
前記第1実行エンジン(Eg1)は、前記ファンクションブロック(54)を介して前記第2実行エンジン(Eg2)を実行する、構成1~4のいずれか1項に記載の制御システム(1~4)。
【0099】
[構成6]
前記制御手段(110)は、共有メモリ(Msh)を介して互いにデータ交換を行う第1スレッド(Thr1)および第2スレッド(Thr2)を起動し、前記第1スレッド(Thr1)は前記第1制御プログラム(Pg1)から前記共有メモリ(Msh)へのアクセスを制御し、前記第2スレッド(Thr2)は前記第2制御プログラム(Pg2B)から前記共有メモリ(Msh)へのアクセスを制御する、構成1~5のいずれか1項に記載の制御システム(3)。
【0100】
[構成7]
移動機構(220)を含む複数の制御対象(200)を制御する方法であって、
予め定められた制御周期で、前記複数の制御対象(200)を制御するための周期実行型の第1制御プログラム(Pg1)を繰り返し実行して前記複数の制御対象(200)を制御するステップと、
前記第1制御プログラム(Pg1)から、前記移動機構(220)を制御するための非同期実行型の第2制御プログラム(Pg2)を呼び出すことによって前記移動機構(220)を制御するステップと、
前記第1制御プログラム(Pg1)の各制御周期において、前記第2制御プログラム(Pg2)に含まれる複数の命令(Cm1~Cm8)のうちの実行対象命令が中断条件を満たす場合、前記実行対象命令を実行せずに前記第2制御プログラム(Pg2)の処理を中断して前記第2制御プログラム(Pg2)から前記第1制御プログラム(Pg1)に制御を返すステップと、
当該制御周期の次の制御周期において前記実行対象命令の次の命令から前記第2制御プログラム(Pg2)の処理を再開するステップとを含む、方法。
【0101】
[構成8]
移動機構(220)を含む複数の制御対象(200)を制御するプログラムであって、
前記プログラムは、プロセッサによって実行されることによって、
予め定められた制御周期で、前記複数の制御対象(200)を制御するための周期実行型の第1制御プログラム(Pg1)を繰り返し実行して前記複数の制御対象(200)を制御し、
前記第1制御プログラム(Pg1)から、前記移動機構(220)を制御するための非同期実行型の第2制御プログラム(Pg2)を呼び出すことによって前記移動機構(220)を制御し、
前記第1制御プログラム(Pg1)の各制御周期において、前記第2制御プログラム(Pg2)に含まれる複数の命令(Cm1~Cm8)のうちの実行対象命令が中断条件を満たす場合、前記実行対象命令を実行せずに前記第2制御プログラム(Pg2)の処理を中断して前記第2制御プログラム(Pg2)から前記第1制御プログラム(Pg1)に制御を返し、
当該制御周期の次の制御周期において前記実行対象命令の次の命令から前記第2制御プログラム(Pg2)の処理を再開する、プログラム。
【0102】
今回開示された各実施の形態は、矛盾しない範囲で適宜組み合わされて実施されることも予定されている。今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0103】
1~4 制御システム、12 上位ネットワーク、20 フィールドネットワーク、52 シーケンス命令群、54 ファンクションブロック、100 制御装置、104 メインメモリ、106 上位ネットワークコントローラ、108 フィールドネットワークコントローラ、110 制御手段、110D,430 プロセッサ、112,414 メモリカードインターフェイス、114,115 メモリカード、116 ローカルバスコントローラ、118,420 プロセッサバス、120 記憶手段、120D,408 ストレージ、122 ローカルバス、130 プログラム解析手段、170 コントローラ、180 機能ユニット、200,210 制御対象、200D フィールドデバイス、220 移動機構、220_1 アームロボット、220_2 サーボモータ、222_1 ロボットコントローラ、222_2 サーボドライバ、400 サポート装置、404 揮発性メモリ、406 不揮発性メモリ、410 キーボード、412 マウス、418 外部装置インターフェイス、450 ディスプレイ、500 表示装置、600 サーバ装置、700 ゲートウェイ、900 インターネット、Cm1~Cm8 命令、Cms 中断命令、Eg1,Eg1B 第1実行エンジン、Eg2A,Eg2B,Eg2 第2実行エンジン、Msh 共有メモリ、Pg1 第1制御プログラム、Pg2B,Pg2 第2制御プログラム、Psc システムプログラム、Psp サポートプログラム、Pu1~Pu3 ユーザプログラム、Thr1 第1スレッド、Thr2 第2スレッド。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10