(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024088106
(43)【公開日】2024-07-02
(54)【発明の名称】制御システム、処理方法およびデータ中継プログラム
(51)【国際特許分類】
G06F 9/54 20060101AFI20240625BHJP
G05B 19/05 20060101ALI20240625BHJP
【FI】
G06F9/54 B
G05B19/05 Z
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022203110
(22)【出願日】2022-12-20
(71)【出願人】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】稲本 修治
(72)【発明者】
【氏名】見置 孝昌
(72)【発明者】
【氏名】玉垣 裕
(72)【発明者】
【氏名】阪谷 信幸
【テーマコード(参考)】
5H220
【Fターム(参考)】
5H220AA05
5H220AA06
5H220BB18
5H220CC09
5H220CX09
5H220JJ12
5H220JJ34
(57)【要約】
【課題】予め定められた周期毎に実行されるプログラムと、予め定められた条件が成立する毎に実行されるプログラムとが混在する場合であっても、互いのプログラムの実行が制限されない仕組みを提供する。
【解決手段】制御システムは、第1プログラムを予め定められた周期毎に実行する第1処理実行部と、第2プログラムを予め定められた条件が成立する毎に実行する第2処理実行部と、データ通信に用いられる通信路と、第1処理実行部と通信路との間に配置された第1データ中継部と、第2処理実行部と通信路との間に配置された第2データ中継部とを含む。第2データ中継部は、第2処理実行部が出力するデータを受け取り、当該受け取ったデータを第1データ中継部に送信する。第1データ中継部は、第1処理実行部が第2データ中継部からのデータにアクセスできるように、第2データ中継部からのデータを格納する。
【選択図】
図6
【特許請求の範囲】
【請求項1】
第1プログラムを予め定められた周期毎に実行する第1処理実行部と、
第2プログラムを予め定められた条件が成立する毎に実行する第2処理実行部と、
データ通信に用いられる通信路と、
前記第1処理実行部と前記通信路との間に配置された第1データ中継部と、
前記第2処理実行部と前記通信路との間に配置された第2データ中継部とを備え、
前記第2データ中継部は、前記第2処理実行部が出力するデータを受け取り、当該受け取ったデータを前記第1データ中継部に送信し、
前記第1データ中継部は、前記第1処理実行部が前記第2データ中継部からのデータにアクセスできるように、前記第2データ中継部からのデータを格納する、制御システム。
【請求項2】
前記第1データ中継部は、前記第1処理実行部が出力するデータを受け取り、当該受け取ったデータを前記第2データ中継部に送信し、
前記第2データ中継部は、前記第2処理実行部が前記第1データ中継部からのデータにアクセスできるように、前記第1データ中継部からのデータを格納する、請求項1に記載の制御システム。
【請求項3】
前記第1データ中継部および前記第2データ中継部の各々は、前記第1処理実行部が出力するデータを格納するための第1メッセージキューと、前記第2処理実行部が出力するデータを格納するための第2メッセージキューとを含む、請求項2に記載の制御システム。
【請求項4】
前記第1データ中継部は、前記第1メッセージキューにデータが格納されると、当該格納されたデータを前記第2データ中継部の前記第1メッセージキューに反映し、
前記第2データ中継部は、前記第2メッセージキューにデータが格納されると、当該格納されたデータを前記第1データ中継部の前記第2メッセージキューに反映する、請求項3に記載の制御システム。
【請求項5】
前記第1データ中継部および前記第2データ中継部の各々は、通信ミドルウェアである、請求項1~4のいずれか1項に記載の制御システム。
【請求項6】
前記第1データ中継部および前記第2データ中継部の各々は、前記通信路を介したデータ通信を担当するドライバを利用する、請求項5に記載の制御システム。
【請求項7】
前記第1処理実行部および前記第2処理実行部は、単一の制御装置に含まれる、請求項1~4のいずれか1項に記載の制御システム。
【請求項8】
前記第1処理実行部は、第1制御装置に含まれ、
前記第2処理実行部は、第2制御装置に含まれる、請求項1~4のいずれか1項に記載の制御システム。
【請求項9】
第1処理実行部が、第1プログラムを予め定められた周期毎に実行するステップと、
第2処理実行部が、第2プログラムを予め定められた条件が成立する毎に実行するステップと、
前記第2処理実行部と通信路との間に配置された第2データ中継部が、前記第2処理実行部が出力するデータを受け取り、当該受け取ったデータを前記第1処理実行部と通信路との間に配置された第1データ中継部に送信するステップと、
前記第1データ中継部が、前記第1処理実行部が前記第2データ中継部からのデータにアクセスできるように、前記第2データ中継部からのデータを格納するステップとを備える、処理方法。
【請求項10】
コンピュータに、
第1プログラムを予め定められた周期毎に実行する第1処理実行部と第2プログラムを予め定められた条件が成立する毎に実行する第2処理実行部との間のデータ通信に用いられる通信路、に接続されたデータ中継部を構成するステップと、
前記第1処理実行部が出力するデータを受け取り、当該受け取ったデータを他のデータ中継部に送信するステップと、
前記第2処理実行部が出力するデータを受け取り、当該受け取ったデータを前記他のデータ中継部に送信するステップとを実行させる、データ中継プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御システム、処理方法およびデータ中継プログラムに関する。
【背景技術】
【0002】
産業オートメーションの分野において、産業システムの制御を担当するOT(Operational Technology)と、情報システムを担当するIT(Information Technology)とを連携させる取組が活発化している。例えば、制御装置が収集したデータをAI(Artificial Intelligence)などを用いて解析するようなことが想定されている。
【0003】
特開2019-159882号公報(特許文献1)は、PLC(Programmable Logic Controller)と、HMIとしてのプログラマブル表示器とを備えて、機械や設備等の制御対象の動作を制御するIPC(産業用PC)システムを開示する。
【0004】
特表2021-523494号公報(特許文献2)は、パーソナルコンピュータ(PC)デバイスを産業用PC(IPC)として用いる構成を開示する。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2019-159882号公報
【特許文献2】特表2021-523494号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
OTによる産業システムの制御は、予め定められた周期毎に処理が実行される時間駆動の方式が採用される傾向にある(例えば、一定周期で実行されるシーケンス制御など)。これに対して、ITによる情報処理は、特定のイベントが発生することで処理が実行されるイベント駆動の方式が採用される傾向にある。
【0007】
時間駆動プログラムとイベント駆動プログラムとが混在している場合には、プログラム間でやり取りされるデータに不整合が生じる可能性があり、いずれかのプログラムが意図通りに動作しない可能性もある。そのため、時間駆動プログラムとイベント駆動プログラムとを互いに連携して実行させる必要がある。
【0008】
また、データを整合させるためのプログラムを追加する、あるいは、データのやり取りに関連するプログラムを改修するといった対策をとることもできる。但し、このような対策をとった場合には、保守性および移植性などが低下し得る。
【0009】
本発明は、予め定められた周期毎に実行されるプログラムと、予め定められた条件が成立する毎に実行されるプログラムとが混在する場合であっても、互いのプログラムの実行が制限されない仕組みを提供することを一つの目的とする。
【課題を解決するための手段】
【0010】
本発明のある局面に従う制御システムは、第1プログラムを予め定められた周期毎に実行する第1処理実行部と、第2プログラムを予め定められた条件が成立する毎に実行する第2処理実行部と、データ通信に用いられる通信路と、第1処理実行部と通信路との間に配置された第1データ中継部と、第2処理実行部と通信路との間に配置された第2データ中継部とを含む。第2データ中継部は、第2処理実行部が出力するデータを受け取り、当該受け取ったデータを第1データ中継部に送信する。第1データ中継部は、第1処理実行部が第2データ中継部からのデータにアクセスできるように、第2データ中継部からのデータを格納する。
【0011】
この構成によれば、第2処理実行部は、処理の実行結果を反映したデータを第2データ中継部に出力すれば、次の処理を開始できる。そのため、第1処理実行部による周期毎の実行に律速されることなく、第2処理実行部が第2プログラムを実行できる。
【0012】
第1データ中継部は、第1処理実行部が出力するデータを受け取り、当該受け取ったデータを第2データ中継部に送信してもよい。第2データ中継部は、第2処理実行部が第1データ中継部からのデータにアクセスできるように、第1データ中継部からのデータを格納してもよい。この構成によれば、第1処理実行部は、処理の実行結果を反映したデータを第1データ中継部に出力すれば、処理を完了できる。そのため、第1処理実行部と第2処理実行部との間の律速を低減できる。
【0013】
第1データ中継部および第2データ中継部の各々は、第1処理実行部が出力するデータを格納するための第1メッセージキューと、第2処理実行部が出力するデータを格納するための第2メッセージキューとを含んでもよい。この構成によれば、第1処理実行部が出力するデータおよび第2処理実行部が出力するデータをそれぞれ独立に取り扱うことができる。
【0014】
第1データ中継部は、第1メッセージキューにデータが格納されると、当該格納されたデータを第2データ中継部の第1メッセージキューに反映してもよい。第2データ中継部は、第2メッセージキューにデータが格納されると、当該格納されたデータを第1データ中継部の第2メッセージキューに反映してもよい。この構成によれば、第1データ中継部と第2データ中継部との間で、第1メッセージキューおよび第2メッセージキューに格納されるデータを同期させることができる。
【0015】
第1データ中継部および第2データ中継部の各々は、通信ミドルウェアであってもよい。この構成によれば、第1処理実行部および第2処理実行部から見ると、通常のデータ通信の手続きに見えるので、特別な処理を追加する必要がない。
【0016】
第1データ中継部および第2データ中継部の各々は、通信路を介したデータ通信を担当するドライバを利用してもよい。この構成によれば、第1データ中継部および第2データ中継部は、通信路に特有の処理はドライバに任せることができるので、汎用性を高めることができる。
【0017】
第1処理実行部および第2処理実行部は、単一の制御装置に含まれてもよい。この構成によれば、第1処理実行部および第2処理実行部の両方を含む制御装置においても、第1処理実行部による周期毎の実行に律速されることなく、第2処理実行部が第2プログラムを実行できる。
【0018】
第1処理実行部は、第1制御装置に含まれてもよい。第2処理実行部は、第2制御装置に含まれてもよい。この構成によれば、複数の制御装置で構成される場合であっても、第1処理実行部による周期毎の実行に律速されることなく、第2処理実行部が第2プログラムを実行できる。
【0019】
本発明の別の局面に従う処理方法は、第1処理実行部が、第1プログラムを予め定められた周期毎に実行するステップと、第2処理実行部が、第2プログラムを予め定められた条件が成立する毎に実行するステップと、第2処理実行部と通信路との間に配置された第2データ中継部が、第2処理実行部が出力するデータを受け取り、当該受け取ったデータを第1処理実行部と通信路との間に配置された第1データ中継部に送信するステップと、第1データ中継部が、第1処理実行部が第2データ中継部からのデータにアクセスできるように、第2データ中継部からのデータを格納するステップとを含む。
【0020】
本発明のさらに別の局面に従うデータ中継プログラムは、コンピュータに、第1プログラムを予め定められた周期毎に実行する第1処理実行部と第2プログラムを予め定められた条件が成立する毎に実行する第2処理実行部との間のデータ通信に用いられる通信路、に接続されたデータ中継部を構成するステップと、第1処理実行部が出力するデータを受け取り、当該受け取ったデータを他のデータ中継部に送信するステップと、第2処理実行部が出力するデータを受け取り、当該受け取ったデータを他のデータ中継部に送信するステップとを実行させる。
【発明の効果】
【0021】
本発明によれば、予め定められた周期毎に実行されるプログラムと、予め定められた条件が成立する毎に実行されるプログラムとが混在する場合であっても、互いのプログラムの実行が制限されない仕組みを実現できる。
【図面の簡単な説明】
【0022】
【
図1】本実施の形態に従う産業システムの全体構成例を示す模式図である。
【
図2】本実施の形態に従う制御装置のハードウェア構成例を示す模式図である。
【
図3】本実施の形態に従う制御装置の機能構成例を示す模式図である。
【
図4】時間駆動タスクとイベント駆動タスクとを並列的に実行する場合の処理例を示す。
【
図5】
図4に示す処理例において生じ得る課題を示す図である。
【
図6】本実施の形態に従う制御装置におけるタスク実行の処理例を示す。
【
図7】本実施の形態に従う制御装置を含む産業システムの一例を示す模式図である。
【
図8】本実施の形態に従う制御システムの別の構成例を示す模式図である。
【発明を実施するための形態】
【0023】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【0024】
<A.適用例>
まず、本発明が適用される場面の一例について説明する。
【0025】
図1は、本実施の形態に従う産業システム1の全体構成例を示す模式図である。
図1を参照して、産業システム1は、1または複数の時間駆動プログラムおよび1または複数のイベント駆動プログラムを実行する制御装置100を含む。以下の説明においては、時間駆動プログラムを実行する処理を「時間駆動タスク150」と称し、イベント駆動プログラムを実行する処理を「イベント駆動タスク160」とも称す。
【0026】
時間駆動タスク150は、1または複数の時間駆動プログラムを予め定められた周期毎に実行される処理を包含する。時間駆動タスク150が複数存在することもあり、複数の時間駆動タスク150の実行周期は、互いに異なっていてもよい。また、「タスク」との名称にかかわらず、時間駆動タスク150において実行されるプログラムの内容は限定されない。
【0027】
イベント駆動タスク160は、1または複数のイベント駆動プログラムを予め定められた条件が成立する毎に実行される処理を包含する。イベント駆動タスク160が複数存在することもあり、複数のイベント駆動タスク160を実行するための条件は、互いに異なっていてもよい。予め定められた条件は、例えば、予め定められたイベントの発生を含む。また、「タスク」との名称にかかわらず、イベント駆動タスク160において実行されるプログラムの内容は限定されない。
【0028】
制御装置100は、時間駆動タスク150とイベント駆動タスク160との間のデータ通信を仲介するデータ中継部170を含む。データ中継部170は、時間駆動タスク150とイベント駆動タスク160との間で、処理の実行タイミングが異なっていることに起因する影響を低減する。データ中継部170の詳細については後述する。
【0029】
制御装置100は、例えば、産業用PC(Industrial Personal Computer)などのコンピュータである。制御装置100は、PLC(Programmable Logic Controller)であってもよい。
【0030】
制御装置100は、産業用ネットワーク2を介して、産業システムを構成するデバイス群10と接続される。産業用ネットワーク2は、EtherCAT(登録商標)、EtherNet/IP(登録商標)、DeviceNet(登録商標)、CompoNet(登録商標)などの産業用の通信プロトコルが採用されてもよい。
【0031】
デバイス群10は、各種情報を収集して制御装置100に送信するデバイスと、制御装置100からの指令に従って動作するデバイスとを含む。
【0032】
デバイス群10は、例えば、リモートI/O(Input/Output)装置12と、リレー群14と、サーボドライバ16およびサーボモータ18と、ロボット20と、カメラ22とを含む。
【0033】
リモートI/O装置12およびリレー群14は、産業システムに含まれるセンサなどからの信号を収集して制御装置100に送信し、制御装置100からの指令に従って、産業システムに含まれるアクチュエータなどに信号を与える。
【0034】
サーボドライバ16は、制御装置100からの指令に従って、サーボモータ18を駆動する。サーボドライバ16は、サーボモータ18の駆動状態などを示す情報を制御装置100に送信する。
【0035】
ロボット20は、制御装置100からの指令に従って動作する。ロボット20は、例えば、多関節ロボット、スカラーロボット、モバイルロボットなどである。
【0036】
カメラ22は、制御装置100からの指令に従って、または、予め定められた条件が成立すると、撮像した画像を制御装置100などに送信する。
【0037】
<B.ハードウェア構成例>
次に、本実施の形態に従う制御装置100のハードウェア構成例について説明する。
【0038】
図2は、本実施の形態に従う制御装置100のハードウェア構成例を示す模式図である。
図2を参照して、制御装置100は、1または複数のプロセッサ102と、主記憶装置104と、入力部106と、出力部108と、ネットワークコントローラ110,112と、ストレージ120とを含む。
【0039】
プロセッサ102は、時間駆動タスク150およびイベント駆動タスク160を含む各種処理を実行する演算処理部に相当する。プロセッサ102は、ストレージ120に格納されたプログラムを読み出して、主記憶装置104に展開して実行することで、後述するような処理を実現する。プロセッサ102は、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、MPU(Micro Processing Unit)などで構成される。
【0040】
主記憶装置104は、例えば、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)などの揮発性記憶装置で構成される。
【0041】
入力部106は、マウス、キーボード、タッチパネルなどで構成され、ユーザからの指示を受け付ける。出力部108は、ディスプレイインターフェイス、ディスプレイ、スピーカなどで構成され、プロセッサ102からの処理結果などを出力する。
【0042】
ネットワークコントローラ110は、図示しない上位ネットワークを介したデータ送受信を担当する。ネットワークコントローラ112は、産業用ネットワーク2を介したデバイス群10とのデータ送受信を担当する。
【0043】
ストレージ120は、例えば、SSD(Solid State Drive)、HDD(Hard Disk Drive)などの不揮発性記憶装置で構成される。ストレージ120には、例えば、1または複数のOS(Operating System)121と、ハイパーバイザプログラム122と、デプロイマネジャプログラム123と、時間駆動プログラム125と、イベント駆動プログラム126と、データ中継プログラム127とが格納される。
【0044】
ハイパーバイザプログラム122は、ハイパーバイザを構成するための命令を含む。ハイパーバイザは、複数のOS121が並行して実行できる仮想環境を提供する。
【0045】
デプロイマネジャプログラム123は、プログラムを仮想環境上に展開する。
時間駆動プログラム125は、時間駆動タスク150に対応するプログラムである。
【0046】
イベント駆動プログラム126は、イベント駆動タスク160に対応するプログラムである。
【0047】
データ中継プログラム127は、データ中継部170を構成するための命令を含む。すなわち、データ中継プログラム127は、データ中継部170を構成するための命令を含む。
【0048】
図2には、プロセッサ102がプログラムを実行することで必要な機能を提供する構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。
【0049】
<C.機能構成例>
次に、本実施の形態に従う制御装置100の機能構成例について説明する。
【0050】
図3は、本実施の形態に従う制御装置100の機能構成例を示す模式図である。
図3には、1つのハードウェアに仮想環境を構成し、構成された仮想環境上で複数の独立したプログラムを実行する構成例を示す。
【0051】
図3を参照して、制御装置100は、ハイパーバイザ180と、第1制御部130と、第2制御部140とを含む。
【0052】
ハイパーバイザ180は、制御装置100において利用可能なハードウェアリソースを第1制御部130および第2制御部140に提供する。ハイパーバイザ180は、第1制御部130と第2制御部140との間のデータ通信に用いられる仮想内部バス182を有している。仮想内部バス182は、データ通信を担当する通信路の一例である。
【0053】
第1制御部130は、第1処理実行部132と、OS121と、時間駆動プログラム125と、データ中継部170-1と、インターフェイス173,174とを含む。
【0054】
第1処理実行部132は、1または複数の時間駆動プログラム125を予め定められた周期毎に実行する。
【0055】
OS121は、第1処理実行部132が時間駆動プログラム125を実行するための環境を提供する。OS121は、仮想内部バス182を介したデータ通信を行うためのドライバ124を有している。
【0056】
データ中継部170-1は、第1処理実行部132と仮想内部バス182との間に配置されている。データ中継部170-1は、通信ミドルウェアであってもよい。データ中継部170-1は、仮想内部バス182を介したデータ通信を担当するドライバ124を利用するように構成されてもよい。
【0057】
データ中継部170-1は、時間駆動用のメッセージキュー171と、イベント駆動用のメッセージキュー172とを含む。メッセージキュー171,172は、一種のバッファメモリである。
【0058】
インターフェイス173,174は、データ中継部170-1によるドライバ124へのアクセスを仲介する。インターフェイス173は、時間駆動用のメッセージキュー171に格納されるデータを担当し、インターフェイス174は、イベント駆動用のメッセージキュー172に関連するデータを担当する。
【0059】
第2制御部140は、第2処理実行部142と、OS121と、データ中継部170-2と、インターフェイス173,174と、イベント駆動プログラム126とを含む。
【0060】
第2処理実行部142は、1または複数のイベント駆動プログラム126を予め定められた条件が成立する毎に実行する。
【0061】
OS121は、第2処理実行部142がイベント駆動プログラム126を実行するための環境を提供する。OS121は、仮想内部バス182を介したデータ通信を行うためのドライバ124を有している。
【0062】
データ中継部170-2は、第2処理実行部142と仮想内部バス182との間に配置されている。データ中継部170-2は、通信ミドルウェアであってもよい。データ中継部170-2は、仮想内部バス182を介したデータ通信を担当するドライバ124を利用するように構成されてもよい。
【0063】
データ中継部170-2は、時間駆動用のメッセージキュー171と、イベント駆動用のメッセージキュー172とを含む。メッセージキュー171,172は、一種のバッファメモリである。
【0064】
インターフェイス173,174は、データ中継部170-2によるドライバ124へのアクセスを仲介する。インターフェイス173は、時間駆動用のメッセージキュー171に格納されるデータを担当し、インターフェイス174は、イベント駆動用のメッセージキュー172に関連するデータを担当する。
【0065】
図3に示す構成例においては、第1処理実行部132および第2処理実行部142が単一の制御装置100に含まれている。
【0066】
<D.課題および解決手段>
次に、本実施の形態に従う制御装置100が解決する課題および解決手段について説明する。
【0067】
図4は、時間駆動タスク150とイベント駆動タスク160とを並列的に実行する場合の処理例を示す。
図4に示す例では、時間駆動タスク150およびイベント駆動タスク160は、共通のハードウェアリソースを利用して実行される。時間駆動タスク150は、最も高い優先度で実行される。イベント駆動タスク160は、時間駆動タスク150が発生するイベントに応じて、時間駆動タスク150が実行されていない時間に実行されるとする。
【0068】
図4を参照して、時間駆動タスク150は、周期T毎に繰り返し実行される。時間駆動タスク150は、演算処理151と、出力処理152と、入力処理153とを含む。
【0069】
出力処理152は、直前の演算処理151において算出された結果(値)を出力する処理である。入力処理153は、演算処理151に必要な入力値を取り込む処理である。
【0070】
演算処理151は、予め定められた命令の実行、命令の実行により得られた結果(V1,V2,・・・)の算出、イベントの発生などを含む。
【0071】
イベント駆動タスク160は、時間駆動タスク150が発生したイベントに応じて、処理を開始する。イベント駆動タスク160の実行後に算出または生成される結果は、時間駆動タスク150に出力される。なお、時間駆動タスク150が発生イベントに応じて、イベント駆動タスク160が処理を開始した後、次の周期で時間駆動タスク150の実行が開始されると、イベント駆動タスク160の実行は一旦休止となる。このように、処理は優先度に応じて実行される。そのため、イベント駆動タスク160を任意のタイミングで開始することが難しい。
【0072】
図5は、
図4に示す処理例において生じ得る課題を示す図である。
図5を参照して、イベント駆動タスク160の開始は、時間駆動タスク150がイベントを発生するタイミングに依存するが、処理内容によっては、イベント駆動タスク160を任意のタイミングで開始したいというニーズが存在する(符号50)。
【0073】
また、イベント駆動タスク160から出力される結果は、入力処理153により時間駆動タスク150に取り込まれることになる。そのため、イベント駆動タスク160は、新たな結果を出力する場合には、時間駆動タスク150が少なくとも1回実行されるまで待たなければならない。例えば、時間駆動タスク150の周期が125μsであるとすると、イベント駆動タスク160の開始は最大で125μs遅延する可能性がある。
【0074】
処理内容によっては、時間駆動タスク150が実行される前に、次のイベント駆動タスク160を開始したいというニーズが存在する(符号52)。すなわち、イベント駆動タスク160をより高速および/またはより高頻度に実行したいというニーズが存在する(符号54)。
【0075】
この場合、イベント駆動タスク160の実行毎に出力される結果が時間駆動タスク150に取り込まれないという課題が生じ得る(符号56)。すなわち、イベント駆動タスク160の実行頻度は、時間駆動タスク150の1周期の長さに律速されることになる。
【0076】
本実施の形態に従う制御装置100は、イベント駆動タスク160を任意のタイミングで開始できる。この結果、主として産業システムの制御を担当する時間駆動タスク150と非同期で、イベント駆動タスク160を実行できる。すなわち、時間駆動タスク150に律速されることなく、イベント駆動タスク160を開始できる。
【0077】
このような構成を採用することで、時間駆動タスク150の周期とイベント駆動タスク160の開始タイミングとを疎結合にできる。これによって、時間駆動タスク150の周期に依存せず、イベント駆動タスク160の開始タイミングを自由に設定できる。
【0078】
図6は、本実施の形態に従う制御装置100におけるタスク実行の処理例を示す。
図6を参照して、制御装置100は、時間駆動タスク150に関連付けられたデータ中継部170-1と、イベント駆動タスク160に関連付けられたデータ中継部170-2とを含む。データ中継部170-1およびデータ中継部170-2は、インターフェイス173,174と、ドライバ124と、仮想内部バス182とを介して(いずれも
図3参照)、データ通信できるようになっている。
【0079】
例えば、時間駆動タスク150の出力処理152により何らかの結果(値)が出力されると、出力された結果は、データ中継部170-1の時間駆動用のメッセージキュー171に格納される(符号72)。そして、データ中継部170-1とデータ中継部170-2との間のデータ通信により、データ中継部170-1のメッセージキュー171に格納された結果がデータ中継部170-2のメッセージキュー171にも格納される(符号74)。イベント駆動タスク160は、データ中継部170-2のメッセージキュー171にアクセスすることで、時間駆動タスク150が出力した結果を利用できる(符号76)。
【0080】
すなわち、データ中継部170-1は、時間駆動プログラム125を実行する第1処理実行部132が出力するデータを受け取り(符号72)、当該受け取ったデータをデータ中継部170-2に送信する(符号74)。データ中継部170-2は、イベント駆動プログラム126を実行する第2処理実行部142がデータ中継部170-1からのデータにアクセスできるように、データ中継部170-1からのデータをメッセージキュー171に格納する。
【0081】
一方、イベント駆動タスク160は、時間駆動タスク150が発生するイベントではなく、任意の方法で発生するイベント60に応じて開始する。イベント60は、時間駆動タスク150から独立したイベントトリガであり、任意のディスパッチャが発生してもよい。そのため、イベント駆動タスク160を任意のタイミングで開始できる。
【0082】
イベント駆動タスク160の実行後に出力された結果は、データ中継部170-1のイベント駆動用のメッセージキュー172に格納される(符号82)。そして、データ中継部170-2とデータ中継部170-1とのデータ通信により、データ中継部170-2のメッセージキュー172に格納された結果がデータ中継部170-2のメッセージキュー172にも格納される(符号84)。時間駆動タスク150は、データ中継部170-1のメッセージキュー172にアクセスすることで、イベント駆動タスク160が出力した結果を利用できる(符号86)。
【0083】
すなわち、データ中継部170-2は、イベント駆動プログラム126を実行する第2処理実行部142が出力するデータを受け取り(符号82)、当該受け取ったデータをデータ中継部170-1に送信する(符号84)。データ中継部170-1は、時間駆動プログラム125を実行する第1処理実行部132がデータ中継部170-2からのデータにアクセスできるように(符号86)、データ中継部170-2からのデータをメッセージキュー172に格納する。
【0084】
イベント駆動タスク160は、時間駆動タスク150が結果を取り込むまで待つ必要はなく、任意のタイミングで処理を完了できる。また、時間駆動タスク150は、イベント駆動タスク160が出力した結果を任意のタイミングで取り込むことができる。
【0085】
この結果、イベント駆動タスク160をより高速および/またはより高頻度に実行できる(符号54)。この場合、イベント駆動タスク160の実行毎に出力される結果は、データ中継部170-2のメッセージキュー172に順次格納され、続いて、データ中継部170-1のメッセージキュー172にも順次格納される。
【0086】
イベント駆動タスク160の実行頻度に応じて、メッセージキュー172のデータサイズ(バッファ容量)を設計することで、時間駆動タスク150は、イベント駆動タスク160が出力した結果の全部または一部を任意に取り込むことができる(符号56および符号86)。
【0087】
上述したように、データ中継部170-1,170-2の各々が有しているメッセージキュー171には、第1処理実行部132が出力するデータが格納される。一方、データ中継部170-1,170-2の各々が有しているメッセージキュー172には、第2処理実行部142が出力するデータが格納される。そして、データ中継部170-1は、メッセージキュー171にデータが格納されると、当該格納されたデータをデータ中継部170-2のメッセージキュー171に反映する(符号74)。同様に、データ中継部170-2は、メッセージキュー172にデータが格納されると、当該格納されたデータをデータ中継部170-1のメッセージキュー172に反映する(符号84)。
【0088】
図6に示すように、制御装置100によれば、時間駆動タスク150とイベント駆動タスク160との間のデータ通信を疎結合にできる。これによって、イベント駆動タスク160は、時間駆動タスク150の実行タイミングなどに律速されることなく実行できる。
【0089】
また、制御装置100によれば、時間駆動プログラム125(主として、産業システムの制御)とイベント駆動プログラム126(主として、情報システム)とを共存および連係できる。
【0090】
<E.産業システムの一例>
次に、本実施の形態に従う制御装置100を含む産業システム1の一例について説明する。
【0091】
図7は、本実施の形態に従う制御装置100を含む産業システム1の一例を示す模式図である。
図7を参照して、産業システム1は、ワーク6を搬送するコンベア4を含む。カメラ22が搬送されるワーク6を撮像し、撮像した画像に基づいてワーク6の座標(位置)が算出される。なお、撮像時には、フラッシュ24によりワーク6が照明される。ロボット20は、算出された座標に基づいて、ワーク6をピックする。
【0092】
図7に示す構成例においては、第1制御部130が実行する時間駆動タスク150がロボット20の制御を担当し、第2制御部140が実行するイベント駆動タスク160がカメラ22およびフラッシュ24の制御を担当する。
【0093】
例えば、イベント駆動タスク160は、フラッシュ24の点灯、点灯から所定時間後にカメラ22による撮像、撮像した画像の画像処理(ワーク6の座標を算出)などの処理を含む。時間駆動タスク150は、ロボット20のハンド位置の制御、ロボット20が移動するパスの算出、ロボット20のアーム位置の制御といった処理を含む。
【0094】
本実施の形態に従う制御装置100は、時間駆動タスク150の実行周期に律速されることなく、イベント駆動タスク160を実行できる。その結果、時間駆動タスク150の実行周期より短い時間でワーク6を撮像することが可能となる。ワーク6をより頻繁に撮像することで、ワーク6の座標をより正確に算出でき、制御精度を高めることができる。
【0095】
このとき、イベント駆動タスク160が算出するワーク6の座標は、データ中継部170に出力される。時間駆動タスク150は、データ中継部170が保持する座標を任意のタイミングで取り込む。
【0096】
<F.変形例>
上述の説明においては、単一の制御装置100が時間駆動タスク150およびイベント駆動タスク160を実行する構成例を説明した(
図3参照)。時間駆動タスク150およびイベント駆動タスク160をそれぞれ別の制御装置100が実行するようにしてもよい。
【0097】
図8は、本実施の形態に従う制御システムの別の構成例を示す模式図である。
図8を参照して、制御システムは、時間駆動タスク150を実行する制御装置100-1と、イベント駆動タスク160を実行する制御装置100-2とを含む。制御装置100-1と制御装置100-2とは、産業用ネットワーク2を介して接続されている。
【0098】
制御装置100-1の機能構成は、
図3に示す第1制御部130と同様であり、制御装置100-2の機能構成は、
図3に示す第2制御部140と同様である。
図8に示す構成例においては、第1処理実行部132は、制御装置100-1に含まれ、第2処理実行部142は、制御装置100-2に含まれる。
【0099】
さらに、
図3および
図8に示す構成例に限らず、時間駆動タスク150を実行する制御部および/または制御装置が複数存在していてもよいし、イベント駆動タスク160を実行する制御部および/または制御装置が複数存在していてもよい。
【0100】
その結果、3つ以上の制御部および/または制御装置の間でデータ通信を行う場合においても、上述したようなデータ中継部170を採用することで、同様の処理を実現できる。
【0101】
本明細書において、「制御システム」との用語は、1または複数の制御装置からなる構成を包含する。すなわち、
図3に示すように、単一の制御装置100が時間駆動タスク150およびイベント駆動タスク160を実行する構成例においては、単一の制御装置100が制御システムに相当する。また、
図8に示すように、複数の制御装置100からなる構成例においては、複数の制御装置100が制御システムに相当する。
【0102】
<G.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
【0103】
[構成1]
第1プログラム(125)を予め定められた周期毎に実行する第1処理実行部(132)と、
第2プログラム(126)を予め定められた条件が成立する毎に実行する第2処理実行部(142)と、
データ通信に用いられる通信路(182;2)と、
前記第1処理実行部と前記通信路との間に配置された第1データ中継部(170-1)と、
前記第2処理実行部と前記通信路との間に配置された第2データ中継部(170-2)とを備え、
前記第2データ中継部は、前記第2処理実行部が出力するデータを受け取り、当該受け取ったデータを前記第1データ中継部に送信し(82,84)、
前記第1データ中継部は、前記第1処理実行部が前記第2データ中継部からのデータにアクセスできるように、前記第2データ中継部からのデータを格納する(84,86)、制御システム。
【0104】
[構成2]
前記第1データ中継部は、前記第1処理実行部が出力するデータを受け取り、当該受け取ったデータを前記第2データ中継部に送信し(72,74)、
前記第2データ中継部は、前記第2処理実行部が前記第1データ中継部からのデータにアクセスできるように、前記第1データ中継部からのデータを格納する(74,76)、構成1に記載の制御システム。
【0105】
[構成3]
前記第1データ中継部および前記第2データ中継部の各々は、前記第1処理実行部が出力するデータを格納するための第1メッセージキュー(171)と、前記第2処理実行部が出力するデータを格納するための第2メッセージキュー(172)とを含む、構成2に記載の制御システム。
【0106】
[構成4]
前記第1データ中継部は、前記第1メッセージキューにデータが格納されると、当該格納されたデータを前記第2データ中継部の前記第1メッセージキューに反映し(74)、
前記第2データ中継部は、前記第2メッセージキューにデータが格納されると、当該格納されたデータを前記第1データ中継部の前記第2メッセージキューに反映する(84)、構成3に記載の制御システム。
【0107】
[構成5]
前記第1データ中継部および前記第2データ中継部の各々は、通信ミドルウェアである、構成1~4のいずれか1項に記載の制御システム。
【0108】
[構成6]
前記第1データ中継部および前記第2データ中継部の各々は、前記通信路を介したデータ通信を担当するドライバ(124)を利用する、構成5に記載の制御システム。
【0109】
[構成7]
前記第1処理実行部および前記第2処理実行部は、単一の制御装置(100)に含まれる、構成1~4のいずれか1項に記載の制御システム。
【0110】
[構成8]
前記第1処理実行部は、第1制御装置(100-1)に含まれ、
前記第2処理実行部は、第2制御装置(100-2)に含まれる、構成1~4のいずれか1項に記載の制御システム。
【0111】
[構成9]
第1処理実行部(132)が、第1プログラム(125)を予め定められた周期毎に実行するステップと、
第2処理実行部(142)が、第2プログラム(126)を予め定められた条件が成立する毎に実行するステップと、
前記第2処理実行部と通信路(182;2)との間に配置された第2データ中継部(170-2)が、前記第2処理実行部が出力するデータを受け取り、当該受け取ったデータを前記第1処理実行部と通信路との間に配置された第1データ中継部(170-1)に送信するステップ(82,84)と、
前記第1データ中継部が、前記第1処理実行部が前記第2データ中継部からのデータにアクセスできるように、前記第2データ中継部からのデータを格納するステップ(84,86)とを備える、処理方法。
【0112】
[構成10]
コンピュータ(100)に、
第1プログラム(125)を予め定められた周期毎に実行する第1処理実行部(132)と第2プログラム(126)を予め定められた条件が成立する毎に実行する第2処理実行部(142)との間のデータ通信に用いられる通信路(182;2)、に接続されたデータ中継部(182)を構成するステップと、
前記第1処理実行部が出力するデータを受け取り、当該受け取ったデータを他のデータ中継部に送信するステップ(72,74;82,84)と、
前記第2処理実行部が出力するデータを受け取り、当該受け取ったデータを前記他のデータ中継部に送信するステップ(74;84)とを実行させる、データ中継プログラム。
【0113】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0114】
1 産業システム、2 産業用ネットワーク、4 コンベア、6 ワーク、10 デバイス群、12 リモートI/O装置、14 リレー群、16 サーボドライバ、18 サーボモータ、20 ロボット、22 カメラ、24 フラッシュ、60 イベント、100 制御装置、102 プロセッサ、104 主記憶装置、106 入力部、108 出力部、110,112 ネットワークコントローラ、120 ストレージ、121 OS、122 ハイパーバイザプログラム、123 デプロイマネジャプログラム、124 ドライバ、125 時間駆動プログラム、126 イベント駆動プログラム、127 データ中継プログラム、130 第1制御部、132 第1処理実行部、140 第2制御部、142 第2処理実行部、150 時間駆動タスク、151 演算処理、152 出力処理、153 入力処理、160 イベント駆動タスク、170 データ中継部、171,172 メッセージキュー、173,174 インターフェイス、180 ハイパーバイザ、182 仮想内部バス。