JP2021163030A - 制御装置、プログラムおよび制御方法 - Google Patents

制御装置、プログラムおよび制御方法 Download PDF

Info

Publication number
JP2021163030A
JP2021163030A JP2020062362A JP2020062362A JP2021163030A JP 2021163030 A JP2021163030 A JP 2021163030A JP 2020062362 A JP2020062362 A JP 2020062362A JP 2020062362 A JP2020062362 A JP 2020062362A JP 2021163030 A JP2021163030 A JP 2021163030A
Authority
JP
Japan
Prior art keywords
program
control
control device
data
cycle
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2020062362A
Other languages
English (en)
Other versions
JP7380390B2 (ja
Inventor
征彦 仲野
Masahiko Nakano
裕希 三宅
Hiroki Miyake
嵩史 大倉
Takafumi Okura
政則 太田
Masanori Ota
哲司 若年
Tetsuji Wakatoshi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Omron Corp
Original Assignee
Omron Corp
Omron Tateisi Electronics Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Omron Corp, Omron Tateisi Electronics Co filed Critical Omron Corp
Priority to JP2020062362A priority Critical patent/JP7380390B2/ja
Priority to EP20928541.0A priority patent/EP4130899A4/en
Priority to PCT/JP2020/047256 priority patent/WO2021199519A1/ja
Priority to CN202080097305.2A priority patent/CN115176208A/zh
Priority to US17/908,134 priority patent/US20230359487A1/en
Publication of JP2021163030A publication Critical patent/JP2021163030A/ja
Application granted granted Critical
Publication of JP7380390B2 publication Critical patent/JP7380390B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/056Programming the PLC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/15Plc structure of the system
    • G05B2219/15079Multitasking, real time multitasking
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/25Pc structure of the system
    • G05B2219/25343Real time multitasking
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Abstract

【課題】制御周期内において、システムサービスを実施できる時間を確保する。【解決手段】制御装置は、予め定められた周期においてプロセッサで実行される最も実行の優先度が高いリアルタイム制御のための第1のプログラムと、第1のプログラムより実行の優先度が低いプログラムであって、リアルタイム制御に関連する処理のための第2のプログラムと、第2のプログラムより実行の優先度が低く、周期においてプロセッサの空き時間がある場合に実行されるシステムサービスの第3のプログラムと、スケジューラとを含み、スケジューラは、周期内において、第2のプログラムにおいて予め定められた種類の命令コードが実行されると、プロセッサに第2のプログラムの実行を中断させ第3のプログラムを実行開始させる。【選択図】図1

Description

この開示は、優先度の異なる複数のプログラムを実行する制御装置に関する。
様々な生産現場において、PLC(プログラマブルロジックコントローラ)などの制御装置を用いたFA(Factory Automation)技術が広く普及している。このような制御装置では、制御周期内で複数種類のプログラムを実行させるようなニーズがある。特開2019−36043号公報(特許文献1)は、各タスクが有する優先度に従い複数のタスクを順番に実行する制御装置を開示する。
特開2019−36043号公報
PLCなどの制御装置においては、制御対象を制御するプログラムの実行の優先度は高く設定される。これに対して、いわゆる制御とは異なるシステムサービスに係るプログラムの実行の優先度は低く設定され、制御周期の空き時間で実行される。
制御が複雑化するに伴い制御プログラムの実行時間は長くなって、制御周期内に空き時間がなくなる傾向がある。その一方で、システムサービスを実施する時間も確保したいとのニーズがある。したがって、予め定められた周期内において、システムサービスを実施できる時間を確保できる仕組みが望まれる。
この開示に係る制御対象を制御する制御装置は、プロセッサと、複数のプログラムを格納する記憶部と、予め定められた周期内で、プロセッサに優先度に従い実行させるプログラムを管理するスケジューラと、を含み、記憶部の複数のプログラムは、周期においてプロセッサで実行される最も実行の優先度が高いプログラムであって、制御対象のリアルタイム制御処理のための第1のプログラムと、第1のプログラムより実行の優先度が低いプログラムであって、リアルタイム制御に関連する関連処理のための第2のプログラムと、第2のプログラムより実行の優先度が低く、周期においてプロセッサの空き時間がある場合に実行されるシステムサービスの第3のプログラムとを含み、スケジューラは、周期内において、第2のプログラムの実行を開始し、その後に第2のプログラムにおいて予め定められた種類の命令コードが実行された場合、プロセッサに第2のプログラムの実行を中断させ第3のプログラムを実行開始させる切替部を含む。
上述の開示によれば、スケジューラの切替部は、周期内において、プロセッサに優先度に従いプログラムを実行させる場合に、第2のプログラムの実行を開始し、その後に第2のプログラムにおいて予め定められた種類の命令コードが実行されたときは、プロセッサに第2のプログラムの実行を中断させ第3のプログラムを実行開始させる。これにより、第3のプログラムを周期内で実行する時間を確保することが可能となり、当該周期内において、システムサービスを実施できる。
上述の開示において、リアルタイム制御処理は、関連処理により生成された中間コードに基づき制御対象への指令値を生成する処理を含み、予め定められた種類の命令コードは、実行されると複数周期にわたる中間コードを生成する命令コードを含む。
上述の開示によれば、第2のプログラムの実行が中断されるとしても、リアルタイム制御処理において、先行して生成された複数周期に亘る中間コードに基づき指令値を生成することができる。
上述の開示において、予め定められた種類の命令コードは、待ち合わせ条件と当該待ち合わせ条件が満たされるかを判断するコードを用いて記述される待ち合わせ命令コードを含む。
上述の開示によれば、待ち合わせ命令コードが実行されて待ち合わせ条件が満たされるまで関連処理が待ち状態となる場合において、プロセッサに第2のプログラムの実行を中断させ第3のプログラムを実行開始させることができる。
上述の開示において、第2のプログラムは、インタプリタ言語で記述されたプログラムを含む。
上述の開示によれば、制御装置は、インタプリタによる命令コードの解析結果を利用することで、予め定められた種類の命令コードが実行されるか否かを判断できる。
上述の開示において、システムサービスは、制御対象に関するデータを含むレコードを時系列に格納する時系列データベースの処理を含む。
上述の開示によれば、制御装置は、第2のプログラムの実行を中断させ第3のプログラムを実行開始させることにより、制御対象に関するデータを含むレコードを時系列に格納する時系列データベースの処理時間を、周期内で確保することが可能となる。
上述の開示において、制御装置は、さらに、周期毎に、時系列データベースへ格納すべきレコードを構成するためのデータを生成するデータ生成部と、データ生成部により生成されるデータを順次格納する、揮発性の主記憶装置上に形成されるノンブロッキングキューと、を備え、システムサービスは、ノンブロッキングキューからデータを読み出し、時系列データベースに格納する処理を含む。
上述の開示によれば、周期内で比較的高速に生成されるデータを、ノンブロッキングキューを経由して、比較的アクセス速度の遅い時系列データベースに格納することができる。
上述の開示において、制御装置が時系列データベースを備える。
上述の開示によれば、制御装置は、内部に時系列データベースを備えることができる。
上述の開示において、制御装置は、さらに、ノンブロッキングキューのメモリ残量を監視する残量監視部を備え、切替部は、メモリ残量と閾値の比較の結果に基づき、プロセッサに、実行中の第2のプログラムの実行を中断させ、第3のプログラムの実行を開始させる。
上述の開示によれば、制御装置は、ノンブロッキングキューのメモリ残量と閾値の比較の結果に基づき、プロセッサに、実行中の第2のプログラムの実行を中断させ、第3のプログラムの実行を開始させることができる。
上述の開示において、第1のプログラムは、第2のプログラムの実行が中断した場合に実行される、関連処理の命令コードを含む。
上述の開示によれば、制御装置は、第2のプログラムの実行が中断されると、第1のプログラムの実行中において、関連処理の命令コードを実行することができる。
この開示に係るプログラムは、制御対象を制御するためのプロセッサを有する制御装置で実行されるプログラムであって、予め定められた周期内で、プロセッサに優先度に従い実行させるプログラムを管理するスケジューラプログラムと、周期においてプロセッサで実行される最も実行の優先度が高いプログラムであって、制御対象のリアルタイム制御処理のための第1のプログラムと、第1のプログラムより実行の優先度が低いプログラムであって、リアルタイム制御に関連する関連処理のための第2のプログラムと、第2のプログラムより実行の優先度が低く、周期においてプロセッサの空き時間がある場合に実行されるシステムサービスの第3のプログラムとを備え、スケジューラプログラムは、周期内において、第2のプログラムの実行を開始し、その後に第2のプログラムにおいて予め定められた種類の命令コードが実行された場合、プロセッサに第2のプログラムの実行を中断させ第3のプログラムを実行開始させるスイッチプログラムを含む。
この開示によれば、プロセッサが優先度に従いプログラムを実行中において、スイッチプログラムが実行されることにより、周期内において、第3のプログラムを実行する時間を確保できる。これにより、予め定められた周期内において、システムサービスを実施できる時間を確保できる仕組みを提供できる。
この開示に係る制御方法は、制御対象を制御するためのプロセッサを有する制御装置を制御する制御方法であって、制御装置は、予め定められた周期においてプロセッサで実行される最も実行の優先度が高いプログラムであって、制御対象のリアルタイム制御処理のための第1のプログラムと、第1のプログラムより実行の優先度が低いプログラムであって、リアルタイム制御に関連する関連処理のための第2のプログラムと、第2のプログラムより実行の優先度が低く、周期においてプロセッサの空き時間がある場合に実行されるシステムサービスの第3のプログラムとを備え、制御方法は、周期内で、プロセッサに優先度に従い実行させるプログラムを管理するステップを、備え、管理するステップは、周期内において、第2のプログラムの実行を開始し、その後に第2のプログラムにおいて予め定められた種類の命令コードが実行されるか否かを判断するステップと、判断に基づき、場合、プロセッサに第2のプログラムの実行を中断させ第3のプログラムを実行開始させるステップとを含む。
この開示によれば、プロセッサが優先度に従いプログラムを実行中において、周期内において、第3のプログラムを実行する時間を確保できる。これにより、予め定められた周期内において、システムサービスを実施できる時間を確保できる仕組みを提供できる。
この開示によれば、制御周期内において、システムサービスを実施できる時間を確保できる。
適用例を模式的に示す図である。 実施の形態に係る制御システム1の全体構成例を示す模式図である。 実施の形態に係る制御装置100のハードウェア構成例を示すブロック図である。 本実施の形態に係る制御装置100のソフトウェア構成例を示すブロック図である。 実施の形態に係る制御装置100の機能構成の一例を示す模式図である。 本実施の形態に係る制御装置100における時系列データベース180に関する処理の要部を示す模式図である。 実施の形態に係る制御装置100における時系列データベース180に格納されるレコードのデータ構造の一例を示す図である。 実施の形態に係る制御装置100における時系列データベース180に格納されるレコードのデータ構造の一例を示す図である。 実施の形態に係る制御装置100における周期制御の一例を示す模式図である。 実施の形態に係る制御装置100における周期制御の一例を示す模式図である。 実施の形態に係る制御装置100における周期制御の一例を示す模式図である。 実施の形態に係る制御装置100における周期制御の一例を示す模式図である。 実施の形態に係る制御アプリケーション処理部30の処理を概略的に示すフローチャートである。 実施の形態に係るプログラム解析部34の処理を示すフローチャートである。 実施の形態に係る命令コードの種類とプログラムコードの対応関係を示す表である。 実施の形態に係るスケジューラ25の処理を概略的に示すフローチャートである。 実施の形態に係る制御アプリケーションプログラム1542の一部を模式的に示す図である。 実施の形態に係る切替部26の処理を概略的に示すフローチャートである。 実施の形態に係る制御アプリケーション処理部301が実行する命令コードの一例を模式的に示す図である。 実施の形態に係る制御装置100の時系列データベース180に格納される時系列データを用いたアプリケーションの一例を説明するための図である。
以下、図面を参照しつつ、本発明に従う実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。
<A.適用例>
図1は、適用例を模式的に示す図である。図1を参照して、本開示が適用される場面の一例について説明する。図1を参照して、FAの生産現場に備えられる制御対象を制御する制御装置100は、プロセッサ102と、HDD(Hard Disc Drive)などの二次記憶装置108と、スケジューラ25と、時系列データベース180と、を備える。制御装置100は、PLCなどのコントローラを含む。「制御対象」は、FAの生産ラインに備えられて制御の対象となる機械または設備、センサなどを含む。機械または設備は、ロボット、テーブル、コンベアなどのメカニカル機構を含む。
スケジューラ25は、予め定められた周期内で、プロセッサ102に優先度に従い実行させるプログラムを管理する。時系列データベース180は、周期毎に生成される制御対象に関するデータを含むレコードを時系列にストレージに格納するよう構成される。本実施の形態では、予め定められた周期は、制御周期Tに相当する。
二次記憶装置108は、プロセッサ102が読み取り可能なように複数のプログラムを格納する。二次記憶装置108に格納されるプログラムは、第1のプログラム、第2のプログラムおよび第3のプログラムを含む。第1のプログラムは、制御周期Tにおいてプロセッサ102で実行される最も実行の優先度が高いプログラムであって、制御対象のリアルタイム制御処理のために実行される。第2のプログラムは、第1のプログラムより実行の優先度が低いプログラムであって、リアルタイム制御に関連する関連処理のために実行される。第3のプログラムは、第2のプログラムより実行の優先度が低いシステムサービスのプログラムであって、制御周期Tにおいてプロセッサ102の空き時間がある場合に実行される。実施の形態では、プロセッサ102の空き時間は、プロセッサ102がプログラム(プロセス,タスク)を実行していないアイドル状態の期間を示す。
例えば、第1のプログラムは、「IECプログラム」を含む。IECプログラムは、実行毎に全体がスキャンされて、実行される毎に1または複数の指令値を演算するプログラムを包含する用語である。IECプログラムは、典型的には、国際電気標準会議(International Electrotechnical Commission:IEC)によって規定された国際規格IEC61131−3に従って記述された1または複数の命令からなるプログラムを包含する。IECプログラムには、シーケンス制御のためのロジック処理部およびモーション制御のためのモーション処理部の命令を含み得る。IECプログラムは、制御周期T毎にすべてのプログラムが実行(スキャン)される。IECプログラムは、対象のリアルタイム制御などのような即時性および高速性が要求される制御に好適である。なお、IECプログラムとしては、国際規格IEC61131−3に従って記述された命令に限らず、PLCの製造メーカまたはベンダーなどが独自に規定した命令を含むようにしてもよい。
シーケンス制御のロジック処理部は、基本的には、入力値、出力値、内部値などを演算する1または複数の論理回路により記述されるプログラム(シーケンスプログラム)を先頭から最終まで順番に実行する方式である。1回の制御周期Tにおいて、プログラムの先頭から最終まで実行され、次の制御周期Tにおいて、プログラムの先頭から最終までが再度実行される。なお、シーケンスプログラムは、電気回路を表現するプログラムである。
モーション制御のモーション処理部は、後述する制御アプリケーション処理部が出力する中間コードに従い、制御対象に含まれるサーボモータなどのアクチュエータに対して、位置、速度、加速度、加加速度、角度、角速度、角加速度、角加加速度などの数値を指令値として演算する処理を含む。モーション制御においても、1回の制御周期Tにおいて、ファンクションブロックや数値演算式などにより記述されるプログラム(モーション処理プログラム)の先頭から最終までが実行される。すなわち、制御周期T毎に指令値は演算(更新)されることになる。モーション処理部が用いる中間コードは、複数の制御周期Tに亘って指令値を演算できるだけの命令を含むことが多いから、モーション処理部が中間コードを取得するタイミングは、各制御周期Tでなくともよい。
第2のプログラムは、制御アプリケーションプログラムを含む。制御アプリケーションプログラムが制御アプリケーション処理部により実行されることにより、例えば、CNC(Computer Numerical Control:コンピュータ数値制御)および/または産業用ロボットを用いた、特定の加工または動作を行う装置または機械ならびにそれらの制御に係る処理が実現され得る。
第2のプログラムは、制御対象のリアルタイム制御に関連した関連処理を実現するための1または複数の命令からなるプログラムを包含し、基本的には、「IECプログラム」には含まれない制御アプリケーションプログラムなどのプログラムを包含する。第2のプログラムは、一例として、CNCではG言語を用いて記述され、産業用ロボット制御ではロボット言語を用いて記述される。これらの言語はインタプリタ言語を含む。インタプリタ言語で記述される第2のプログラムは、命令コードを逐次解釈し実行するインタプリタ方式で実行される。なお、第2のプログラムは、インタプリタ言語で記述されたプログラムに限定されず、第1のプログラムと同様のIECプログラムの言語で記述されてもよい。
プロセッサ102は、インタプリタプログラムを実行することによりインタプリタを提供する。インタプリタは、第2のプログラムに記述された1または複数の命令コードを解釈し、その解釈された内容に基づいて、制御周期T毎にモーション処理部が指令値を演算するための中間コードを生成する。中間コードは、第2のプログラムに記述された1または複数の命令コード毎に生成されるので、1つの第2のプログラムから複数の中間コードが生成されることが多い。このような中間コードの生成が、上記に述べた関連処理に含まれ得る。
中間コードの各々においては、制御周期Tの時刻(あるいは、時間)を入力として、指令値を演算できる関数が規定され得る。すなわち、中間コードは、モーション処理部が制御周期T毎に指令値を演算するための関数であってもよい。このような関数を用いることで、モーション処理部は、第2のプログラムによって生成される中間コードを順次参照して、各制御周期Tにおける指令値を演算できる。
スケジューラ25は、制御周期T内において、プロセッサ102に、第1のプログラム、第2のプログラムおよび第3のプログラムを各プログラムが有する優先度に従い実行させる。第1〜第3のプログラムは、それぞれ、当該プログラムが他のプログラムよりも優先して実行されるべき度合いを示す優先度が設定されている。第2のプログラムおよび第3のプログラム制御周期T内では、プロセッサ102は、第1のプログラムを実行開始し(時間t0)、第1のプログラムが実行終了すると第2のプログラムを実行開始する(時間t1)。その後、第2のプログラムにおいて予め定められた種類の命令コードが実行された場合(ステップR1)、スケジューラ25が備える切替部26は、プロセッサ102に実行させるプログラムを切替える(ステップR2、時間t2)。切替えでは、切替部26は、プロセッサ102に第2のプログラムの実行を中断させ第3のプログラムを実行開始させる(ステップR3,R4)。
このように第2のプログラムの実行を中断させることにより、制御周期T内においてプロセッサ102の空き時間が設けられて、この空き時間で第3のプログラムが実行される。これにより、制御周期T内において、システムサービスを実施できる時間を確保することができる。
システムサービスは、例えば、時系列データベース180の処理を含み得る。したがって、制御周期T内において時系列データベース180の処理時間を確保することができる。
<B.制御システムの全体構成例>
まず、本実施の形態に係る制御装置を含む制御システム1の全体構成例について説明する。
図2は、実施の形態に係る制御システム1の全体構成例を示す模式図である。図2を参照すると、実施の形態に係る制御システム1は、主たる構成要素として、制御対象を制御する制御装置100を含む。
制御装置100は、PLCなどの、一種のコンピュータとして具現化されてもよい。制御装置100は、フィールドバス2を介してフィールド装置群8と接続されるとともに、フィールドバス4を介して1または複数の表示装置300と接続される。制御装置100は、それぞれのバスまたはネットワークを介して、接続された装置との間でデータを遣り取りする。一般的に「フィールドバス」は、「フィールドネットワーク」とも称されるが、説明の簡素化のため、以下の説明においては、「フィールドバス」と総称する。すなわち、実施の形態の「フィールドバス」は、「フィールドバス」に加えて「フィールドネットワーク」を含み得る。
制御装置100は、製造装置や設備を制御するための各種演算を実行する制御演算を行う。制御装置100は、制御演算処理に加えて、フィールド装置群8にて計測され、制御装置100へ転送されるデータ(以下、「入力データ」とも称す。)や制御演算処理によって算出される各種のデータを取得する入出力処理を行う。
制御装置100は、時系列データベース180をさらに有している。時系列データベース180は、後述するように、入出力処理により取得される各種データを時系列に格納する。図2では、時系列データベース180は、時系列DB180と示されている。
具体的には、制御装置100は、指定された、制御対象に関するデータを含むレコードを生成するデータ生成処理を行い、時系列データベース180は、データ生成処理により生成されるデータを時系列に格納する。
時系列データベース180に格納されるレコードの群を「時系列データ」とも称す。本明細書において、「時系列データ」は、任意の対象についてのデータ(観測値)の時間的な変化を連続的(あるいは、一定間隔をおいて不連続)に観測して得られる一連の値を意味する。
本明細書において「観測値」は、制御装置100での制御演算において利用可能な値(実値)を総称する概念であり、典型的には、制御対象から取得されて制御演算に入力される値(フィールドから取得された測定値など)、取得された入力値に基づいて制御演算によって決定される制御対象に対する出力値(フィールドへ与えられる指令値など)、制御演算の過程において算出される演算値(任意の変数値)などを含み得る。すなわち、「観測値」は、制御装置100においてデータとして格納できる、あるいは、制御装置100からデータとして外部出力できる任意の値を包含するものである。
フィールドバス2およびフィールドバス4は、データの到達時間が保証される、定周期通信を行うバスまたはネットワークを採用することが好ましい。このような定周期通信を行うバスまたはネットワークとしては、EtherCAT(登録商標)などが知られている。また、EtherNet/IP(登録商標)、DeviceNet(登録商標)、CompoNet(登録商標)などを採用してもよい。
フィールド装置群8は、制御対象または制御に関連する製造装置や生産ラインなど(以下、「フィールド」とも総称する。)から入力データを収集する装置を含む。このような入力データを収集する装置としては、入力リレーや各種センサ(例えば、アナログセンサ、温度センサ、振動センサなど)などが想定される。フィールド装置群8は、さらに、制御装置100にて生成される指令(以下、「出力データ」とも称す。)に基づいて、フィールドに対して何らかの作用を与える装置を含む。このようなフィールドに対して何らかの作用を与える装置としては、出力リレー、コンタクタ、サーボドライバおよびサーボモータ、その他任意のアクチュエータが想定される。
フィールド装置群8は、フィールドバス2を介して、制御装置100との間で、入力データおよび出力データを含むデータを遣り取りする。図2に示す構成例においては、フィールド装置群8は、リモートI/O(Input/Output)装置12と、リレー群14と、画像センサ18およびカメラ20と、サーボドライバ22およびサーボモータ24と、産業用ロボット251およびロボットコントローラ23とを含む。フィールド装置群8としては、これらに限られることなく、入力データを収集できるデバイス、または、出力データに基づく何らかのアクションができるデバイスであれば、どのようなものを採用してもよい。
リモートI/O装置12は、フィールドバス2を介して通信を行う通信カプラと、入力データの取得および出力データの出力を行うための入出力部(以下、「I/Oユニット」とも称す。)とを含む。このようなI/Oユニットを介して、制御装置100とフィールドとの間で入力データおよび出力データが遣り取りされる。図2には、リレー群14を介して、入力データおよび出力データとして、デジタル信号が遣り取りされる例が示されている。
I/Oユニットは、フィールドバスに直接接続されるようにしてもよい。図2には、フィールドバス2にI/Oユニット16が直接接続されている例を示す。
画像センサ18は、カメラ20によって撮像された画像データに対して、パターンマッチングなどの画像計測処理を行って、その処理結果を制御装置100へ出力する。
サーボドライバ22は、制御装置100からの出力データ(例えば、位置指令や速度指令など)に従って、サーボモータ24を駆動する。
上述のように、フィールドバス2を介して、制御装置100とフィールド装置群8との間でデータが遣り取りされることになるが、これらの遣り取りされるデータは、数100μsecオーダ〜数10msecオーダのごく短い周期で更新されることになる。なお、このような遣り取りされるデータの更新処理は、I/Oリフレッシュ処理とも称される。
また、フィールドバス4を介して制御装置100と接続される表示装置300は、ユーザからの操作を受けて、制御装置100に対してユーザ操作に応じたコマンドなどを出力するとともに、制御装置100での演算結果などをグラフィカルに表示する。
制御装置100は、サポート装置200が接続可能になっていてもよい。サポート装置200は、制御装置100が制御対象を制御するために必要な準備を支援する装置である。具体的には、サポート装置200は、制御装置100で実行されるプログラムの開発環境(プログラム作成編集ツール、パーサ、コンパイラなど)、制御装置100および制御装置100に接続される各種デバイスのパラメータ(コンフィギュレーション)を設定するための設定環境、生成したユーザプログラムを制御装置100へ出力する処理、制御装置100上で実行されるユーザプログラムなどをオンラインで修正・変更する処理、などを提供する。
制御装置100は、さらに、入出力処理により取得されたデータおよび/または時系列データベース180に格納されたデータを外部装置へ出力するゲートウェイ処理も有している。
外部装置として、図2には、制御装置100と上位ネットワーク6を介して接続される、製造実行システム(MES:Manufacturing Execution System)400およびIoT(Internet of Things)サービス450を典型例として示す。制御装置100は、これらの外部システムや外部サービスに対して、制御対象の製造装置や設備からの情報を提供することができる。
製造実行システム400は、制御対象の製造装置や設備からの情報を取得して、生産全体を監視および管理するものであり、オーダ情報、品質情報、出荷情報などを扱うこともできる。製造実行システム400の内部、あるいは、製造実行システム400と並列して、情報を格納するためのデータベースを配置してもよい。制御装置100は、制御対象の製造装置や設備での製造状態などを示す製造データを製造実行システム400から取得することができる。
IoTサービス450は、上位ネットワーク6に接続された、あるいは、上位ネットワーク6に接続されるインターネットに接続された、1または複数のコンピュータで構成される、一種のクラウドサービスが想定される。IoTサービス450を構成するシステムは、通信処理を行い、制御装置100から送信された任意の情報を1または複数のプロセッサ(例えば、CPU(Central Processing Unit)、MPU(Micro-Processing Unit)、GPU(Graphics Processing Unit)など)で処理するとともに、所定の出力を行うシステムをいう。
IoTサービス450としては、制御対象の製造装置や設備からの情報を取得して、マクロ的またはミクロ的な分析などを行うシステムを想定している。例えば、制御対象の製造装置や設備からの情報に含まれる何らかの特徴的な傾向を抽出するデータマイニングや、制御対象の設備や機械からの情報に基づく機械学習を行うための機械学習ツールなどが想定される。
制御装置100は、他の制御装置100と通信可能に接続されることもある。
<C.制御装置のハードウェア構成例>
実施の形態に係る制御装置100のハードウェア構成例について説明する。
図3は、実施の形態に係る制御装置100のハードウェア構成例を示すブロック図である。図3を参照すると、制御装置100は、演算処理部および1または複数のI/Oユニット124−1,124−2,…を含む。
制御装置100は、プロセッサ102と、チップセット104と、主記憶装置106と、内部ストレージに相当する二次記憶装置108と、上位ネットワークコントローラ110と、USB(Universal Serial Bus)コントローラ112と、外部ストレージインターフェイス114と、ローカルバスコントローラ122と、フィールドバスコントローラ118,120と、カウンタ126と、RTC(Real Time Clock)128とを含む。
プロセッサ102は、CPU、MPU、GPUなどで構成され、二次記憶装置108に格納された各種プログラムを読出して、主記憶装置106に展開して実行することで、制御対象に応じた制御、および、後述するような各種処理を実現する。二次記憶装置108は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)などの不揮発性記憶装置などで構成される。主記憶装置106は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置などで構成される。
チップセット104は、プロセッサ102と各デバイスを制御することで、制御装置100全体としての処理を実現する。
二次記憶装置108には、基本的な動作を実現するためのシステムプログラムに加えて、制御対象の製造装置や設備に応じて作成されるユーザプログラムが格納される。
上位ネットワークコントローラ110は、上位ネットワーク6を介して、製造実行システム400やIoTサービス450(図2参照)などとの間のデータを遣り取りする。上位ネットワークコントローラ110は、典型的には、ASIC(Application Specific Integrated Circuit)やFPGA(Field-Programmable Gate Array)といった専用回路を用いて実現される。
USBコントローラ112は、USB(Universal Serial Bus)接続を介してサポート装置200との間のデータの遣り取りを制御する。USBコントローラ112は、典型的には、ASICやFPGAといった専用回路を用いて実現される。
外部ストレージインターフェイス114は、外部ストレージ116を着脱可能に構成されており、外部ストレージ116に対してデータを書込み、外部ストレージ116から各種データ(ユーザプログラムやトレースデータなど)を読出すことが可能になっている。外部ストレージ116は、例えば、SDカードなどのフラッシュメモリからなる揮発性記憶装置に相当する。
カウンタ126は、制御装置100における各種処理の実行タイミングを管理するための時刻基準として用いられる。カウンタ126は、典型的には、所定周期毎にカウンタ値をインクリメントまたはデクリメントする。カウンタ126として、プロセッサ102を駆動するシステムバス上に配置された、ハードウェアタイマーである高精度イベントタイマー(HPET:High Precision Event Timer)などを用いて実装してもよいし、あるいは、ASICやFPGAなどの専用回路を用いて実装してもよい。
RTC128は、計時動作を行う一種のカウンタであり、現在時刻をプロセッサ102などへ提供する。
ローカルバスコントローラ122は、制御装置100に搭載されるI/Oユニット124−1,124−2,…との間でデータを遣り取りするインターフェイスである。ローカルバスコントローラ122は、典型的には、ASICやFPGAといった専用回路を用いて実現されるが、ソフトウェア実装で実現してもよい。ソフトウェア実装を採用する場合には、ローカルバスコントローラ122は、主として、プロセッサ、主記憶装置、ストレージなどで構成され、プロセッサがストレージに格納されたシステムプログラム(ファームウェア)などを読出して、主記憶装置に展開して実行することで、必要な処理を実現する。
ローカルバスコントローラ122は、ローカルバスを介して接続される他のデバイスである、I/Oユニット124−1,124−2,…との間でタイミングを管理するための時刻基準として用いられるカウンタ123を有している。同様に、I/Oユニット124−1,124−2,…の各々も、ローカルバスコントローラ122および他のI/Oユニットとの間でタイミングを管理するための時刻基準として用いられるカウンタ125を有している。カウンタ123およびカウンタ125については、上述のカウンタ126と同様の構成を採用できる。
フィールドバスコントローラ118は、フィールドバス2を介した他のデバイスとの間のデータの遣り取りを制御する。フィールドバスコントローラ118は、典型的には、ASICやFPGAといった専用回路を用いて実現されるが、ソフトウェア実装で実現してもよい。ソフトウェア実装を採用する場合には、フィールドバスコントローラ118は、主として、プロセッサ、主記憶装置、ストレージなどで構成され、プロセッサがストレージに格納されたシステムプログラム(ファームウェア)などを読出して、主記憶装置に展開して実行することで、必要な処理を実現する。フィールドバスコントローラ118は、他のデバイスとの間でタイミングを管理するための時刻基準として用いられるカウンタ119を有している。
同様に、フィールドバスコントローラ120は、フィールドバス4を介した他のデバイスとの間でデータを遣り取りする。フィールドバスコントローラ120は、典型的には、ASICやFPGAといった専用回路を用いて実現されるが、ソフトウェア実装で実現してもよい。ソフトウェア実装を採用する場合には、フィールドバスコントローラ120は、主として、プロセッサ、主記憶装置、ストレージなどで構成され、プロセッサがストレージに格納されたシステムプログラム(ファームウェア)などを読出して、主記憶装置に展開して実行することで、必要な処理を実現する。フィールドバスコントローラ120は、他のデバイスとの間でタイミングを管理するための時刻基準として用いられるカウンタ121を有している。
また、各デバイスも、フィールドバスコントローラ118またはフィールドバスコントローラ120との間でタイミングを管理するための時刻基準として用いられるカウンタを有している。
カウンタ119およびカウンタ121ならびに各デバイスが有するカウンタについては、上述のカウンタ126と同様の構成を採用できる。
フィールドバスコントローラ118,120は、フィールドバスを介した定周期通信を行うための通信マスターとして動作し、フィールドバスに接続されている各デバイスが有するカウンタが示すカウンタ値とカウンタ119,121が示すカウンタ値との差分を逐次監視して、必要に応じて、カウンタ値にずれが発生しているデバイスに対して補正を指示するための同期信号を出力する。このように、フィールドバスコントローラ118,120は、デバイスのカウンタが示すカウンタ値をカウンタ119,121が示すカウンタ値と一致させるための指令をデバイスへ与える同期管理処理を行う。
二次記憶装置108は、システムプログラム149とユーザプログラムとを含む複数のプログラムを格納する。システムプログラム149は、OS(Operating System)およびインタプリタを実現するインタプリタプログラム151などを含む。
ユーザープログラムは、制御プログラム152、システムサービスを実現するシステムサービスプログラム195、変数管理プログラム160、実行されるとスケジューラ25を実現するスケジューラプログラム170、入力プログラム172および出力プログラム174を含む。スケジューラプログラム170は、実行されると切替部26を実現するスイッチプログラム171を含む。
制御プログラム152は、「第1のプログラム」の実施例であるIECプログラム1541と、「第2のプログラム」の実施例である制御アプリケーションプログラム1542と、データベース書込プログラム156と、残量監視プログラム1544とを含む。データベース書込プログラム156と残量監視プログラム1544とは、実行されると、後述するNBQ(Non-Blocking Queue:ノンブロッキングキュー)158に関連した処理を実現する。NBQ158は、制御装置100においてデータベース処理に関連して備えられる。
システムサービスプログラム195は、「第3のプログラム」の実施例であるデータベースプログラム190と、上位接続プログラム192と、ゲートウェイプログラム194とを含む。データベースプログラム190は、実行されると、時系列データベース180に格納するためにNBQ158からデータを読出すデータベース読出プログラム191を含む。
実施の形態に係る制御装置100が備える時系列データベース180は、二次記憶装置108および/または外部ストレージ116が提供する記憶領域を利用して実現されてもよい。以下の説明においては、二次記憶装置108および外部ストレージ116を単に「ストレージ」と総称することもある。また、「ストレージ」との対比で、揮発性の主記憶装置106を「メモリ」と称することもある。
なお、本実施の形態における時系列データベース180は、データベースファイルを格納する記憶領域に加えて、データベースファイルの生成、書込み、読出しといった各種操作を実現するためのプロセッサ102などによる処理、ならびに、各種操作を実現するためのバッファリング領域あるいはワーキング領域を含むものである。時系列データベース180に含まれる記憶領域は、主記憶装置106または二次記憶装置108に備えることができる。
図3には、プロセッサ102がプログラムを実行することで必要な処理が提供される構成例を示したが、これらの提供される処理の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。あるいは、制御装置100の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOSを並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
上述の図2および図3に示す制御システム1においては、制御装置100、サポート装置200および表示装置300がそれぞれ別体として構成されているが、これらの処理の全部または一部を単一の装置に集約した構成を採用してもよい。
<D.制御装置のソフトウェア構成例>
次に、実施の形態に係る制御装置100のソフトウェア構成例について説明する。
図4は、本実施の形態に係る制御装置100のソフトウェア構成例を示すブロック図である。図4を参照すると、制御装置100は、PLCエンジン150と、時系列データベース180と、上位接続プログラム192と、ゲートウェイプログラム194とを含む。
PLCエンジン150は、典型的には、制御装置100のプロセッサ102が、OSの元で、二次記憶装置108に格納されているシステムプログラムを読出して主記憶装置106に展開して実行することで各種プログラムの実行環境が提供され、当該実行環境下において、各種プログラムを実行することができる。
より具体的には、PLCエンジン150は、制御プログラム152と、変数管理プログラム160と、スケジューラプログラム170と、入力プログラム172と、出力プログラム174とを選択的に実行可能に構成される。PLCエンジン150には、NBQ158が実現されている。
NBQ158は、例えば、メモリ(揮発性の主記憶装置106)上に用意される、複数のタスクまたはプロセスからのアクセスを共用する共有メモリ領域を用いて実現される。NBQ158は、主記憶装置106上の共有メモリ領域に加えて、システムプログラムをプロセッサ102が実行することで提供されるバッファ管理処理によって実現される。バッファ管理処理は、共有メモリ領域内に所定の大きさで区切った複数のデータ領域(後述する、共有バッファ)からなるバッファプールを規定するとともに、各共有バッファの状態(空き、データ格納中、予約など)などを管理する処理を含む。バッファ管理処理を実現するためのシステムプログラムは、空バッファへのデータ書込みなどの処理を実現するためのCAS(Compare And Swap)命令などのプロセッサ命令を含む。
また、NBQ158を実現するためのバッファ管理処理は、制御プログラム152からのデータ書込みを受付けるインターフェイスと、データベースマネージャ182からのデキューを受付けるインターフェイスとを有している。このようなそれぞれのインターフェイスによって、データベース書込プログラム156から時系列データベース180までの論理的なデータ転送経路において、それぞれがNBQ158を利用することができる。
変数管理プログラム160と、スケジューラプログラム170と、入力プログラム172と、出力プログラム174とについては、システムプログラムの一部として実装されてもよい。この場合には、これらのプログラムが提供するそれぞれの処理を単一のシステムプログラムが提供するようにしてもよい。
制御プログラム152は、IECプログラム1541と、制御アプリケーションプログラム1542と、データベース書込プログラム156と、残量監視プログラム1544とを含む。残量監視プログラム1544は、NBQ158の空き領域のサイズを示すメモリ残量を監視し、監視の結果を出力する。NBQ158に格納されたデータは読出されて時系列データベース180に格納されるので、読出されたデータが格納されていた記憶領域はその後にデータが書込まれるまでは空き領域を構成する。
データベース書込プログラム156は、制御装置100のデータ生成処理の少なくとも一部を提供するコードに相当し、例えばIECプログラム1541内に記述された命令によって、予め定められた周期毎(例えば制御周期毎)に呼び出され、時系列データベース180へ格納すべきレコードを構成するためのデータを生成する。より具体的には、データベース書込プログラム156から時系列データベース180へのデータ転送経路には、NBQ158が配置されており、データベース書込プログラム156は、指定されたデータを時系列データベース180に直接書込むのではなく、NBQ158へ書込む。
NBQ158は、時系列データベース180へのデータ書込みの完了を待つことなく、データベース書込プログラム156の処理を続行させるための、一種のバッファである。NBQ158には、データベース書込プログラム156からのデータがキューの形で格納される。NBQ158は、データベース書込プログラム156により生成されるデータを順次格納する。NBQ158に格納されたデータ(キュー)は、順次読出されて、時系列データベース180に格納される。
なお、データベース書込プログラム156にシリアライズ通信プログラムを結合させてもよい。シリアライズ通信プログラムは、データベース書込プログラム156から時系列データベース180に対して書込まれるデータに対してシリアライズ処理を行う。より具体的には、シリアライズ通信プログラムは、PLCエンジン150により実行され、時系列データを格納可能なバイト列に変換する処理(シリアライズ)を実行する。対象のデータは、時系列データベース180内への格納前に、シリアライズ処理により所定のバイト列に変換される。
時系列データベース180の少なくとも一部は、ストレージ(二次記憶装置108、または、外部ストレージ116)を利用して構成される。時系列データベース180は、データベース書込プログラム156からのデータが時系列に格納されるデータベースファイル186に加えて、データベースマネージャ182および書込みバッファ184を含む。
データベースマネージャ182は、典型的には、制御装置100のプロセッサ102が、データベースプログラム190を実行することで実現される。データベースマネージャ182は、データベースファイル186へのレコードの追加、および、外部からの要求に応じたデータベースファイル186を構成するレコードの検索および抽出を担当する。データベースプログラム190によってデータベース読出プログラム191が呼び出されて実行されると読出処理部183(図5参照)が実現される。読出処理部183は、NBQ158に格納されたデータを順次読出して、データベースファイル186へ追加する。
書込みバッファ184は、例えば、主記憶装置106上に用意される記憶領域、または、ストレージに内蔵されるキャッシュメモリ上に用意される記憶領域を用いて実現される。
データベース書込プログラム156は、読出処理部183によってNBQ158から読出されたデータから時系列データのレコードを生成し、生成された時系列データのレコードをデータベースファイル186に順次格納する。データベースファイル186には、入力データ、出力データ、制御プログラム152による制御演算において算出される演算データ、製造データ、イベントデータの少なくとも一部が時系列に格納されることになる。
変数管理プログラム160は、入力データおよび出力データなどのPLCエンジン150で利用可能な値を変数の形で管理する。より具体的には、変数管理プログラム160は、制御装置100の状態などを示すシステム変数162と、制御装置100とローカルバスまたはフィールドバスを介して接続される各種デバイスが保持する値を示すデバイス変数164と、制御装置100で実行されるIECプログラム1541が保持する値を示すユーザ変数166とを管理する。
スイッチプログラム171を有するスケジューラプログラム170は、制御装置100で実行されるプログラムの実行単位に相当するプロセスやタスクなどに対してリソース割当てや実行タイミングなどを管理する。
入力プログラム172は、制御装置100とローカルバスまたはフィールドバスを介して接続される各種デバイスから入力データを取得する処理を行う。
出力プログラム174は、制御装置100において実行されるIECプログラム1541と制御アプリケーションプログラム1542によって算出される指令値(出力データ)をローカルバスまたはフィールドバスを介して接続される対象のデバイスへ出力する。
なお、制御装置100が管理する入力データ、出力データ、演算データ、製造データ、イベントデータなどを統計処理した上で、時系列データベース180に対して書込みを行う、PLCエンジン150により実行される統計記録プログラムをさらに備えるようにしてもよい。統計処理としては、例えば、断片集約近似(PAA:Picewise Aggregate Approximation)や離散ストリングへの記号化(SAX:Symbolic Aggregate approximation)などの手法を用いることができる。PAAは、時系列データからパターンを見つけることができ、発見されたパターンにより圧縮を容易にする。あるいは、SAXは、時系列データを文字列に変換することで、圧縮およびパターンの発見を容易化できる。
制御装置100の上位接続プログラム192は、製造実行システム400から製造データを取得する。変数管理プログラム160は、これらの取得された入力データおよび製造データを変数として管理する。
IECプログラム1541は、変数管理プログラム160により管理されるシステム変数162、デバイス変数164、ユーザ変数166を参照しつつ、予め指定された制御演算を実行し、その実行結果(出力データ)を変数管理プログラム160に出力する。
データベース書込プログラム156は、変数管理プログラム160により管理される変数のうち指定された観測値をNBQ158へ書込む。時系列データベース180のデータベースマネージャ182は、NBQ158にキューの形で格納されているデータを順次読出して、その読出したデータからなるレコードをデータベースファイル186に順次追加する。
上位接続プログラム192は、変数管理プログラム160により管理される変数のうち指定された変数の値、および/または、時系列データベース180のデータベースファイル186を構成するレコードのうち指定されたレコードを、時系列データとして製造実行システム400へ出力する。
製造実行システム400がデータベースを有しており、あるいは、製造実行システム400とは別にデータベースが配置されている場合には、上位接続プログラム192に代えて、あるいは、上位接続プログラム192の一部として、データベース接続プログラムが設けられていてもよい。このようなデータベース接続プログラムは、例えば、リレーショナルデータベースに対してSQLなどのクエリを送信するとともに、応答を受信する処理を実行するようにしてもよい。
ゲートウェイプログラム194は、変数管理プログラム160により管理される変数のうち指定された変数の値、および/または、時系列データベース180のデータベースファイル186を構成するレコードのうち指定されたレコードを、時系列データとしてIoTサービス450へ出力する。IoTサービス450は、制御装置100からの時系列データに基づいて、挙動解析を行って、制御対象の設備や装置などの予知保全などを行う。
<E.制御装置の機能構成例>
図5は、実施の形態に係る制御装置100の機能構成の一例を示す模式図である。図5を参照して、制御装置100は、制御アプリケーション処理部30と、プログラム処理部40と、I/O処理部50と、スケジューラ25と、切替部26と、フィールドネットワークインターフェイス55と、上位ネットワークインターフェイス51と、システムサービス処理部185とを含む。図5の制御装置100は、これらコンポーネントに関連づけて、さらに、NBQ158と、時系列データベース180とを含む。
スケジューラ25は、制御アプリケーション処理部30と、プログラム処理部40と、I/O処理部50と、システムサービス処理部185とを、これら各部に対応のプログラムの実行の優先度に基づく順序で実施する。優先度に基づく実施の順序は後述する。
制御アプリケーション処理部30は、スケジューラ25のスケジューリングに従い、制御アプリケーションプログラム1542を制御周期Tに同期した周期で実行する。例えば、制御アプリケーションプログラム1542は2回の制御周期T、すなわち2T毎に実行される。なお、制御アプリケーションプログラム1542の実行周期は、2Tに限定されない。
制御アプリケーション処理部30は、プログラム解析部34と、中間コード33を格納するバッファ32とを含む。プログラム解析部34は、インタプリタ31を利用することで制御アプリケーションプログラム1542に記述された命令コードを解析する。制御アプリケーションプログラム1542は、実行されることにより中間コード33を生成し、バッファ32に格納する。制御装置100のメモリの一部は、バッファ32を構成する。プログラム解析部34は、制御アプリケーションプログラム1542の実行中に、予め定められた種類の命令コードが実行されたことを検出すると、検出結果をフラグFとして共有メモリ159に格納する。制御装置100のメモリの一部が共有メモリ159を構成する。
制御アプリケーション処理部30のインタプリタ31は、制御アプリケーションプログラム1542の少なくとも一部を解釈して、中間コード33を生成する。すなわち、インタプリタ31は、制御アプリケーションプログラム1542を逐次解釈および実行して中間コード33を生成するとともに、生成した中間コード33をバッファ32に格納する。
プログラム処理部40は、スケジューラ25のスケジューリングに従い、IECプログラム1541を制御周期T毎に実行する。
プログラム処理部40は、予め定められた制御周期T毎にIECプログラム1541を実行(スキャン)して1または複数の指令値を演算する。すなわち、プログラム処理部40は、IECプログラム1541に従って、制御周期T毎に指令値を演算する。
プログラム処理部40は、IECプログラム1541に含まれるシーケンスプログラムなどのロジック命令を処理するロジック処理部41と、IECプログラム1541に含まれるモーション命令を処理するモーション処理部42と、データベース書込部43と、残量監視部44とを含む。
モーション処理部42は、IECプログラム1541に含まれるモーション命令に従って、制御周期T毎に指令値を演算する機能を提供する。具体的には、モーション処理部42は、インタプリタ31が事前に生成した中間コード33に従って、制御周期T毎に指令値を演算する。すなわち、モーション処理部42は、バッファ32に予め格納された中間コード33に従って、制御周期T毎に指令値を演算する機能を提供する。一般的に制御アプリケーションプログラム1542に記述される命令(コード)は、逐次実行されるために、指令値の演算周期を保証できないが、中間コード33を利用することで、モーション処理部42は、制御周期T毎に指令値を演算できる。中間コード33において記述される命令には、各制御アプリケーションに応じた座標系が用いられてもよい。
このように、インタプリタ31は、生成した中間コード33をバッファ32に逐次キューイングし、モーション処理部42は、バッファ32にキューイングされた順に中間コード33を読出す。
実施の形態において、「中間コード」は、制御周期T毎に指令値を演算するための命令を包含する概念である。「中間コード」は、1または複数の命令、あるいは、1または複数の関数を含む。本実施の形態においては、中間コード33は、モーション処理部42が制御周期T毎に指令値を演算できるものであれば、どのようなコードであってもよい。
データベース書込部43は、IECプログラム1541の実行中に呼び出されるデータベース書込プログラム156を実行する。残量監視部44は、IECプログラム1541の実行中に呼び出される残量監視プログラム1544を実行する。制御周期T毎に、データベース書込プログラム156を実行するデータベース書込部43は、制御周期T毎に、時系列データベース180へ格納すべきレコードを構成するためのデータを生成する「データ生成部」に相当する。具体的には、データベース書込部43は、生成したデータをNBQ158の空き領域に格納する。
また、残量監視部44は、NBQ158の空き領域の大きさに相当するメモリ残量を監視し、メモリ残量と閾値とを比較し、比較の結果を示す値を共有メモリ159の変数MRに設定する。
システムサービス処理部185は、スケジューラ25のスケジューリングに従い、データベースプログラム190を、制御周期Tにおけるプロセッサ102の空き時間で実行する。システムサービス処理部185は、読出処理部183を有するデータベースマネージャ182を含む。読出処理部183は、データベースプログラム190の実行中にデータベース読出プログラム191が呼び出されて実行されることで実現される。
読出処理部183は、NBQ158からデータを読出し、時系列データベース180に格納する処理を実現する。
上位ネットワークインターフェイス51は、プログラム処理部40および制御アプリケーション処理部30と、上位ネットワーク6を介して接続されている装置との間のデータの遣り取りを仲介する。
フィールドネットワークインターフェイス55は、I/O処理部50とフィールドとの間のインターフェイスである。
I/O処理部50は、変数管理プログラム160を実行する。I/O処理部50は、プログラム処理部40によるIECプログラム1541の実行に先だって、入力データおよび出力データを更新するI/Oリフレッシュ処理を実施する。I/Oリフレッシュ処理においては、フィールドネットワークインターフェイス55を介してフィールドから入力した値をシステム変数162、デバイス変数164およびユーザ変数166に設定する。ロジック処理部41およびモーション処理部42は、システム変数162、デバイス変数164およびユーザ変数166に設定された入力データを用いて演算を実施する。次の制御周期TのI/Oリフレッシュ処理において、直前の制御周期Tでロジック処理部41により演算された1または複数の指令値(基本的には、論理値)およびモーション処理部42により演算された1または複数の指令値(基本的には、数値)は、システム変数162、デバイス変数164およびユーザ変数166に設定されて、設定された指令値はフィールドネットワークインターフェイス55を介してフィールドに出力される。
(e1.メモリ枯渇の回避)
実施の形態では、NBQ158は例えば、メモリ(揮発性の主記憶装置106)上に用意されるから、NBQ158のメモリ容量(サイズ)は制限される。したがって、プロセッサ102の空き時間がないために、システムサービス処理部185にプロセッサ102を含むリソースの使用権が与えられない、すなわちシステムサービス処理部185がデータベースプログラム190を実行できない場合は、NBQ158の空き領域、すなわちメモリ残量が不足することになる。つまり、NBQ158には、データベース書込部43によってデータが順次に書込まれるが、一方で読出処理部183によってNBQ158からデータは読出されないために、NBQ158にデータを書込むための空き領域が不足することになる。以下では、このようなNBQ158の空き領域の不足を「メモリ枯渇」と称する。
実施の形態では、制御装置100は、システムサービス処理部185がデータベースプログラム190を実行できるプロセッサ102の空き時間を確保するように構成される。これにより、メモリ枯渇に対処することができる。
より具体的には、スケジューラ25の切替部26は、フラグFの値に基づき、制御アプリケーションプログラム1542で予め定められた種類の命令コードが実行されたことを検出したときは、プロセッサ102に制御アプリケーションプログラム1542の実行を中断させて、プロセッサ102の空き時間を確保し、確保された空き時間でプロセッサ102にデータベースプログラム190(より特定的にはデータベース読出プログラム191)を実行開始させる。
また、スケジューラ25の切替部26は、変数MRの値に基づき、メモリ枯渇の可能性を検出しときは、プロセッサ102に制御アプリケーションプログラム1542の実行を中断させて、プロセッサ102の空き時間を確保し、確保された空き時間でプロセッサ102にデータベースプログラム190(より特定的にはデータベース読出プログラム191)を実行開始させる。
このように、切替部26は、制御周期Tにおいて、制御アプリケーションプログラム1542を実行中に、フラグFまたは変数MRの値に基づき、プロセッサ102が実行するプログラムを、制御アプリケーションプログラム1542からデータベースプログラム190にスイッチするよう構成される。これにより、制御周期Tにおいて、データベース読出プログラム191を実行するための空き時間を確保できて、NBQ158のメモリ枯渇を回避できる。
<F.時系列データベースへのデータ書込み処理>
次に、実施の形態に係る時系列データベース180へのデータ書込み処理について説明する。
図6は、本実施の形態に係る制御装置100における時系列データベース180に関する処理の要部を示す模式図である。図6を参照すると、制御装置100は、ローカルバスまたはフィールドバスなどを介して、フィールド装置群8との間で入力データおよび出力データを遣り取りする。
制御装置100において、製造装置や設備を制御するための各種演算を含む制御プログラム152は、制御周期Tでサイクリック実行される。制御プログラム152は、データ書込み条件が成立すると、データベース書込プログラム156を起動させるための命令を含む。
データベース書込プログラム156は、指定されたデータ(1または複数の変数値)を時系列データベース180へ書込むための命令を発行する。例えば、図5中には、"put"命令が示されている。なお、データベース書込プログラム156から時系列データベース180へ書込まれるデータを収集および加工するための処理である、データ収集加工処理153を、制御プログラム152内において、あるいは、制御プログラム152と並行して実行するようにしてもよい。
時系列データベース180には、データベース書込プログラム156からのデータが時系列に格納される(時系列データ)。時系列データベース180に格納された時系列データは、上位システムへ送信されて解析処理などに利用されてもよい。
図6に示す構成においては、製造実行システム400やIoTサービス450といった上位システムに配置された接続処理402を利用して、時系列データベース180から必要な時系列データが抽出される。そして、上位システムにおいては、抽出された時系列データに対して、時系列分析やデータマイニングといった解析処理404が実施される。
あるいは、時系列データベース180に格納される時系列データを異常検知処理198で利用するようにしてもよい。異常検知処理198は、PLCエンジン150が必要なプログラムを実行することで実現される。異常検知処理198は、時系列データベース180からの時系列データと、予め取得している教師データなどとを比較することで、制御対象において何らかの異常が発生している、あるいは、異常が発生する兆候が見られるといった判断を行う。
制御装置100において、制御プログラム152制御周期T(例えば、数百マイクロ秒〜数ミリ秒)でサイクリック実行される。制御プログラム152のサイクリック実行と同期して、時系列データベース180へのデータ書込みが実行されることもある。一方で、時系列データベース180は、基本的には、ストレージ(二次記憶装置108、または、外部ストレージ116(図3参照))を利用して構成される。このようなストレージは、一般的には、記憶容量は大きいものの、主記憶装置に比較して、アクセス速度(特に、書込み速度)は低く、かつ、アクセス速度のゆらぎが大きい(例えば、100ミリ秒〜1000ミリ秒)。
そこで、本実施の形態に係る制御装置100は、アクセス速度が高くないストレージを利用した時系列データベース180に対しても、制御周期Tと同期したデータ書込みを実現できる構成を提供する。
具体的には、制御プログラム152(データベース書込プログラム156)から時系列データベース180へのデータ書込みプロセスにおいて、ロックフリーのキューであるNBQ158(図4参照)が配置される。このようなNBQ158を採用することで、ストレージに対するアクセス速度に比較して、データベース書込プログラム156がデータ書込み命令を発行する周期が短い場合であっても、データベース書込プログラム156の実行がデータ書込み待ちで中断するような事態を回避できる。すなわち、制御周期Tに同期した、時系列データベース180へのデータ書込みを実現できる。
このような制御周期Tと同期した時系列データの格納により、制御プログラム152に含まれる命令を用いることで、入力データ(例えば、アナログセンサの計測値など)、出力データ(例えば、位置指令や速度指令など)、演算データ(例えば、異常検知処理に用いられるフィルタパラメータや特徴量など)、製造データ(例えば、製造状態や品番など)を不揮発性のストレージに制御周期T毎に格納できる。
<G.データ構造>
実施の形態に係る時系列データベース180に格納されるレコードのデータ構造の一例について説明する。
制御装置100は、制御対象に関連する観測値と、時刻管理処理によって示される観測値に対応付けられた時刻、および/または、内部カウンタが示す当該観測値に対応付けられたカウンタ値とを含む、レコードを生成してもよい。観測値は、プロセッサ102が利用可能な値である。
図7と図8は、実施の形態に係る制御装置100における時系列データベース180に格納されるレコードのデータ構造の一例を示す図である。図7を参照すると、レコードは、時刻フィールド1821と、カウンタ値フィールド1822と、インデックスフィールド1823と、観測値フィールド1824とを含む。
時刻フィールド1821およびカウンタ値フィールド1822は、対応するデータ(1または複数の観測値)が取得されたタイミングを示す情報が格納される。
より具体的には、時刻フィールド1821には、対応するデータが取得されたタイミングを示す時刻(例えば、RTC128により管理される時刻)が格納される。
カウンタ値フィールド1822には、対応するデータが取得されたときの、制御装置100で管理するカウンタからのカウンタ値、または、フィールドバス/ローカルバスにおいてタイミングを管理するためのカウンタからのカウンタ値のうち少なくともいずれか1つが格納される。時刻フィールド1821に時刻を格納するとともに、カウンタ値フィールド1822にカウンタ値を格納することで、対応するデータ(観測値)の事後的な解析を支援することができる。
インデックスフィールド1823は、データベースへのレコードの書込み動作などに応じて、所定値だけインクリメント/デクリメントされる値(インデックス値)が格納される。典型的には、レコードが格納される毎に1ずつカウントアップされるような値が用いられる。例えば、IECプログラム1541内にデータベース書込プログラム156を起動する命令が記述されている場合には、その起動する命令の実行に伴ってインデックス値をインクリメントするようにしてもよい。
観測値フィールド1824には、指定されたデータ(1または複数の観測値)が格納される。観測値フィールド1824に格納されるデータとしては、入力データ、出力データ、演算データ、製造データ、イベントデータなどが含まれる。
具体的には、入力データとしては、各種センサから取得されたデジタル信号(状態値)やアナログ信号(各種計測信号)などを含む。観測値に加えて、当該観測値を出力したセンサを特定するための情報を併せて格納するようにしてもよい。
出力データとしては、モーションドライブや開度調節器などに対して出力される指令値などが格納されてもよい。指令値に加えて、指令値の出力先のアクチュエータを特定するための情報を併せて格納するようにしてもよい。
演算データとしては、IECプログラム1541の実行によって算出される変数値や過渡的な値などが格納されてもよい。変数値や過渡的な値に加えて、当該演算データを出力したIECプログラム1541またはタスクなどを特定するための情報を併せて格納するようにしてもよい。
製造データとしては、製造実行システム400から受信した実行指令値群(例えば、ワークの品番、ロット番号、レシピ番号など)が格納されてもよい。実行指令値群としては、ワークを一意に特定する識別番号やワークの種類などを特定する情報が含まれていてもよい。
イベントデータとしては、観測値が予め定められたしきい値を超えたあるいは下回った場合の情報や、予め定められた異常フラグなどがオンした場合の情報が格納されてもよい。イベントデータを発生させた変数などの情報を含めてもよい。
さらに、イベントデータについては、予め定められた周期で繰返し生成または格納される時系列データではなく、予め定められた条件が満たされた場合に生成してもよい。この場合にも、カウンタ同期されたカウンタ値および/または時刻を対応付けるようにしてもよい。
上述したようなレコードが制御周期Tまたは所定イベント毎に生成および出力される。例えば、図8に示す例では、500μsec毎にレコードが生成および出力される例を示す。このように、指定された観測値を含むレコードが時系列に生成および出力されることで、これらの時系列データに基づいて、各種解析を行うことができる。
図7または図8に示すレコードをKey−Value型で構成してもよい。この場合には、例えば、時刻フィールド1821およびカウンタ値フィールド1822をKeyとし、インデックスフィールド1823および観測値フィールド1824をValueとしてもよい。すなわち、時系列データの各レコードは、観測値に対応付けられた時刻およびカウンタ値をKeyとして含むとともに、対応するValueとして観測値を含む。
上述の説明においては、制御装置100が自装置内に有している時系列データベース180にレコードを格納する処理を典型例として説明したが、これに限らず、上位システムなどへレコードを送信するようにしてもよい。この場合においても、図7または図8に示すようなレコードが制御周期T毎に生成され、システムサービス処理部185により、目的の外部装置へ送信されてもよい。
さらに、制御装置100の時系列データベース180を構成するデータベースマネージャ182およびデータベースファイル186が同一の制御装置100内に配置されなくてもよい。すなわち、制御装置100においては、システムサービス処理部185のデータベースマネージャ182がNBQ158からデータを読出すとともに、制御装置100の外部にあるデータベースファイル186へレコードを書込むようにしてもよい。制御装置100の外部としては、他の制御装置100のストレージやネットワーク上のストレージ(ネットワークストレージ)などが想定される。
本実施の形態に係る制御装置100において実装される、データベース書込プログラム156から時系列データベース180までの論理的なデータ転送経路において配置されるNBQ158は、ストレージへの書込み速度の遅さを補償するという効果を発揮するが、ネットワークストレージに対する書込み速度の遅さについても補償するという効果を得ることができる。
このような、ネットワークストレージ上にレコードを書込むことのできるような構成を採用することで、制御装置100内にデータベースファイル186としてレコードを格納する構成に比較して、より多くのデータを蓄えることができる。さらに、複数の制御装置100が単一のネットワークストレージに対してそれぞれレコードを書込むような構成も可能であり、ストレージの集約が可能であり、これによって、データ管理やセキュリティの面からもメリットが得られる。
<H.周期制御とスイッチ>
図9〜図12は、実施の形態に係る制御装置100における周期制御の一例を示す模式図である。図9〜図12を参照して、周期制御とシステムサービス処理部185のための空き時間の確保を説明する。
図9は、I/O処理部50と、データベース書込部43(図中は、DB書込部43と略す)を有するロジック処理部41と、モーション処理部42と、制御アプリケーション処理部30と、システムサービス処理部185とがシーケンシャルに実行されている例を示す。これら各処理部は、制御装置100では「タスク」として扱われる。タスクは、制御装置100のプロセッサ102を含むリソース(コンピューティング資源)を割当てる制御の対象となる基本単位であり、各タスクに、実行させるべき1または複数のプログラムが登録または設定される。すなわち、いずれかのタスクに対してリソースが割当てられ、当該タスクが実行できる状態になると、当該タスクに登録または設定されている1または複数のプログラムの実行が開始または再開されることになる。タスクは、実施の形態では、例えばプライマリタスクと、セカンダリタスクと、システムサービスタスクとを含む。
プライマリタスクは、制御装置100のプロセッサ102で実行される最も実行の優先度(以下、単に「優先度」とも称す。)の高いプログラムを含む。プライマリタスクは、I/O処理部50と、ロジック処理部41と、モーション処理部42とを含む。プライマリタスクは各制御周期Tで実行されることが保証されている。
セカンダリタスクは、プライマリタスクに比較して優先度が低いが実行周期が保証されるタスクであって、例えば制御アプリケーション処理部30を含む。セカンダリタスクの制御アプリケーション処理部30は、例えば制御周期Tの整数倍の周期で実行される。実施の形態では、制御アプリケーション処理部30は、例えば周期2T、すなわち2倍の制御周期T毎に実行される。
低優先で実行される制御アプリケーション処理部30のインタプリタ31は、予め定められた制御アプリケーション同期周期(周期2T)が到来する前に、制御アプリケーションプログラム1542の解釈を一時停止する。一時停止するタイミングは制御アプリケーションプログラム1542の全てのコードを解釈実行し終えたタイミングを含む。
その一時停止したタイミングで、プログラム処理部40と制御アプリケーション処理部30との間でデータ同期230を行うことで、双方に整合性をもつデータを共有する。このように、インタプリタ31は、制御周期Tの整数倍である同期周期(すなわち、制御アプリケーション同期周期)である周期2T毎に、プログラム処理部40との間で共有するデータを更新する。共有データの更新に併せて、フィールド側から取得される入力データおよび出力データについても更新(データ同期)するようにしてもよい。
システムサービスタスクは、セカンダリタスクよりも優先度が低く、制御周期Tにおけるプロセッサ102の空き時間で実行される。システムサービスタスクは、システムサービス処理部185を含む。これにより、制御装置100は、プライマリタスクおよびセカンダリタスクの実行周期を保証する範囲で、システムサービスタスクを実行することができる。
スケジューラ25は、これらのタスク(に含まれる各プログラム)を優先度に従い実行タイミングを管理することでタスクの周期制御を実現する。より具体的には、スケジューラ25は、適時のタイミングおよび期間で、リソースを各タスクのプログラムに割当てることで、プロセッサ102に、各タスクのプログラムを優先度に従い実行させる。
図9のケースでは、各制御周期Tにおいて、ロジック処理部41により呼出されたデータベース書込部43が実行されてNBQ158へのデータ書込みが実施されるとともに、周期2T毎にシステムサービス処理部185の読出処理部183によってNBQ158からデータが読出される。その結果、メモリ枯渇を回避することができる。
その一方で、制御アプリケーションプログラム1542の内容によっては、制御アプリケーション処理部30の実行時間が長くなる。制御アプリケーション処理部30の実行時間が長くなると、上記に述べた一時停止のタイミングが周期2Tの終了に一致する場合が発生する。この場合、図10に示すように、制御周期T内において空き時間無し231の事象が生じる。図10では、直前の周期2Tにおいて空き時間無し231の事象が生じたために、その後の周期2Tにおける空き時間まで、読出処理部183によってNBQ158からデータ読出しが実施されないにもかかわらずデータベース書込部43によってデータがNBQ158に格納される。したがって、NBQ158は、その後の周期2Tにおける空き時間までのN回(N≧4)の制御周期Tに亘るデータが格納されることになるから、その後の周期2Tにおける空き時間が到来するまでに、メモリが枯渇する可能性がある。
(h1.タスクスイッチの一例)
実施の形態では、制御周期Tにおいてシステムサービス処理部185の実行時間を確保するために、すなわちメモリ枯渇を回避できるよう、制御装置100は、制御アプリケーションプログラム1542の予め定められた種類の命令コードが実行されたことを検出したとき、タスクをスイッチする。
具体的には、図11を参照して、制御アプリケーション処理部30の実行中に呼出されて実行されるプログラム解析部34は、インタプリタ31が制御アプリケーションプログラム1542の予め定められ種類の命令コードが実行されたか否かを検出する。プログラム解析部34は、予め定められた種類の命令コードが実行されたことを検出すると、フラグFをTrueにセットする。スケジューラ25の切替部26は、フラグFがFalseからTrueに変更されたことを検出すると、タスクをスイッチ45する。具体的には、切替部26は、プロセッサ102に制御アプリケーション処理部30の実行を中断(中断232)させシステムサービス処理部185を実行開始させる。プログラム解析部34が、予め定められた種類の命令コードが実行されたことを検出する処理は後述する。
図11に示すタスクスイッチによれば、制御装置100は、制御周期Tにおいて、制御アプリケーション処理部30の実行の中断232によって空き時間233を確保し、確保された空き時間233においてシステムサービス処理部185の読出処理部183はNBQ158からのデータ読出を実施する。これにより、NBQ158のメモリ枯渇を回避できる。
(h2.タスクスイッチの他の例)
実施の形態では、メモリ枯渇を回避できるよう、制御装置100は、残量監視部44が検出したNBQ158のメモリ残量を示す変数MRの値に基づき、図12に示すようにタスクスイッチを実施する。
図12を参照して、プライマリタスクは、I/O処理部50と、ロジック処理部41と、モーション処理部42とを含む。ロジック処理部41はDB書込部43に加えて、残量監視部44および制御アプリケーション処理部301を含む。残量監視部44は、IECプログラム1541の実行中に呼出される残量監視プログラム1544が実行されることにより実現される。制御アプリケーション処理部301は、IECプログラム1541内に記述された所定の命令コードが実行されることにより実現される。この制御アプリケーション処理部301を実現する所定の命令コードについては後述する。なお、残量監視プログラム1544も、IECプログラム1541内に記述された残量監視の命令コードを含んで構成されてもよい。
残量監視部44は、NBQ158のメモリ残量(単位は、例えばパーセント)を検出し、検出したメモリ残量と閾値とを比較し、比較の結果に基づく値を変数MRに設定する。
実施の形態では、閾値は、警告閾値と、警告閾値よりも大きな値を示す監視閾値とを含む。残量監視部44は、上記の比較結果が(メモリ残量>監視閾値)を示す場合はメモリ残量に十分余裕があることを示すように変数MRに「Normal」を設定し、上記の比較結果が(監視閾値≧メモリ残量>警告閾値)を示す場合はメモリ枯渇の可能性があることを示すように変数MRの「Monitoring」を設定し、上記の比較結果が(メモリ残量≦警告閾値)を示す場合はメモリ枯渇に至ったことを示すように変数MRに「Warning」を設定する。
例えば、切替部26は、制御周期Tにおいて変数MRが「Normal」または「Monitoring」を示す場合は、タスクのスイッチ45を実施しないが「Warning」を示す場合は、スイッチ45を実施する。具体的には、切替部26は、プロセッサ102に制御周期Tにおいて実行中の制御アプリケーション処理部30の実行を中断232させて、スイッチ45を実施して、システムサービス処理部185を実行開始させる。これにより、制御装置100は、当該制御周期Tにおいて、中断232によって生じた空き時間233においてシステムサービス処理部185を実行して、NBQ158からをデータを読出すことができる。これにより、制御装置100はNBQ158のメモリ枯渇を解消することができる。
残量監視部44は、典型的には、制御周期TのIECプログラム1541の実行開始時において、NBQ158のメモリ残量を検出する。これにより、各制御周期Tにおいて、変数MRは最新のメモリ残量に基づく値が設定される。したがって、切替部26は、直近に検出されたメモリ残量に基づき、スイッチ45を実施するか否かを判断できる。
<I.タスクスイッチの具体例>
上記の(h1.タスクスイッチの一例)および(h2.タスクスイッチの他の例)のそれぞれについて、具体的な実現例を説明する。
(i1.タスクスイッチの一の具体例)
上記の(h1.タスクスイッチの一例)の具体的な処理を、図13〜図16を参照して説明する。図13は、実施の形態に係る制御アプリケーション処理部30の処理を概略的に示すフローチャートである。図14は、実施の形態に係るプログラム解析部34の処理を示すフローチャートである。図15は、実施の形態に係る命令コードの種類と命令コードの対応関係を示す表である。図16は、実施の形態に係るスケジューラ25の処理を概略的に示すフローチャートである。
図13を参照して、制御アプリケーション処理部30は、変数同期処理を実施する(ステップS1)。変数同期処理は、上記に述べたデータ同期230の処理に含まれる。また、制御アプリケーション処理部30は、ステップS1において、フラグFに初期値としてFalseをセットする。
制御アプリケーション処理部30の処理が開始されると、インタプリタ31のプログラム解析部34は、制御アプリケーションプログラム1542をプログラム解析する(ステップS3)。プログラム解析処理の詳細は図14で説明する。
制御アプリケーション処理部30は、制御アプリケーションプログラム1542の実行結果を出力する(ステップS5)。例えば、制御アプリケーション処理部30は、実行結果として中間コード33をバッファ32に格納する。
制御アプリケーション処理部30は、制御アプリケーションプログラム1542の実行を終了すると終了通知を出力する(ステップS7)。
図14のプログラム解析部34の処理は、図15の表を参照して実施される。図15の表は、例えばストレージに格納される。図15を参照して、表は、予め定められた命令コードの種類(条件待ち、動作系)と、各種類に対応付けて当該種類に該当する命令コードとを有する。
図15では、条件待ち命令コードは、待ち合わせ条件と当該待ち合わせ条件が満たされるかを判断するコードを用いて記述される待ち合わせ命令コードを含む。具体的には、条件待ち命令コードは、待ち合わせ条が合致するまで、すなわち待ち合わせ条が満たされることが判断されるまで次の行のプログラムの命令コードを実行しないことを指示する命令コードである。この命令コードには、例えば、待ち合わせ条件を用いて記述されるIF文またはWHILE文などの命令コードと、待ち合わせ条件として所定時間の経過を用いて記述されるWAIT、TIMER、SLEEPなどの命令コードを含む。
条件待ち命令コードとしては、例えば、制御アプリケーションプログラム1542上でデジタルインプットの信号の入力待ち状態、タイマ処理、インポジションチェック待ち状態などを規定する命令コードを含む。
また、動作系命令コードは、実行されると中間コード33を生成する命令コードであって、例えば、軌道生成に関連した命令コードであるMOVE、MOVEC、MOVESなどを含む。
動作系命令コードが実行されることで生成される中間コード33は、複数の制御周期Tに亘って指令値の演算を可能にする。例えば、ある動作系命令コードが実行されることにより出力される中間コード33が連続した複数の制御周期Tの期間に亘って指令値を規定するものであるとすると、モーション処理部42は、中間コード33をバッファ32から読出して、複数の制御周期T分の期間に亘って指令値を周期的に演算する。なお、動作系命令コードの命令コード毎に、1個の中間コード33から生成することのできる指令値が規定する連続する制御周期Tの数を異ならせることができる。
したがって、制御アプリケーション処理部30の制御アプリケーションプログラム1542から中間コード33の生成処理が、プログラム処理部40のモーション処理部42による指令値の演算処理に比較して、十分に先だって実行されれば、タスクのスイッチ45によって制御アプリケーション処理部30の実行が中断されたとしても、モーション処理部42は、バッファ32の中間コード33を用いて、その後の複数の連続した制御周期Tに亘る期間の指令値を算出することができる。
図14を参照して、インタプリタ31は制御アプリケーションプログラム1542の先頭行から1行ずつプログラムを読出し(ステップS31)、プログラム解析部34は、読出されたプログラムの命令コードの種類を、図15の表を参照して判断する(ステップS33)。
プログラム解析部34は、命令コードを解析し、解析の結果に基づき動作系命令コードであると判断すると(ステップS33で“動作系命令”)、プログラム解析部34は、当該命令コードに従う演算を実施し、演算結果である中間コード33を算出する(ステップS37)。
プログラム解析部34は、演算が終了したか否かを判断し(ステップS39)、演算は終了していないと判断すると(ステップS39でNO)、ステップS31に移行し、インタプリタ31は次の行のプログラムを読出すが、演算は終了したと判断すると(ステップS39でYES)、ステップS40に移行する。
プログラム解析部34は、命令コードを解析し、解析の結果に基づき条件待ち命令コードであると判断すると(ステップS33で“条件待ち命令”)、プログラム解析部34は、当該命令コードに従う演算を実施し、演算結果に基づき条件が満たされた(条件が合致した)か否かを判断する(ステップS35)。プログラム解析部34は、条件が合致したと判断すると(ステップS35でYES)、ステップS31に移行し、インタプリタ31は次の行のプログラムを読出す。プログラム解析部34は、条件は合致しないと判断すると(ステップS35でNO)、すなわち制御アプリケーション処理部30は条件が合致するまで待ち状態となると判断する場合は、ステップS40に移行する。
ステップS40では、プログラム解析部34は、フラグFにTrueをセットする。
図16を参照して、スケジューラ25は、フラグFがFalseからTrueに変更されたことの通知をプログラム解析部34から受信するか否かを判断する(ステップS41)。スケジューラ25は、通知を受信しないと判断すると(ステップS41でNO)、通常のスケジューリング処理を実施する(ステップS47)。すなわち、スケジューラ25は、優先度に基づく順序でプロセッサ102にタスクを実行させる。
一方、スケジューラ25は、通知を受信したと判断すると(ステップS41でYES)、切替部26は、タスクをスイッチする。すなわち、切替部26は、プロセッサ102に制御アプリケーション処理部30の実行を中断させて、システムサービス処理部185の実行を開始させる(ステップS43)。
タスクのスイッチが実施されると、スケジューラ25は、次の制御周期Tが到来したか否かを判断する(ステップS45)。スケジューラ25は、次の制御周期Tは到来していないと判断する間は(ステップS45でNO)、ステップS45の処理を繰り返すが、次の制御周期Tが到来したと判断すると(ステップS45でYES)、ステップS47の処理を実施し、スケジューリングの処理が終了したか否かを判断する(ステップS49)。
スケジューラ25は、タスクのスケジューリング処理は終了していないと判断すると(ステップS49でNO)、ステップS41に戻るが、タスクのスケジューリング処理は終了したと判断すると(ステップS49でYES)、一連の処理を終了する。
図16のスケジューラ25の処理によれば、フラグFがFalseからTrueに変更されたとき、切替部26は、プロセッサ102に制御アプリケーション処理部30の実行を中断させてシステムサービス処理部185を実行開始させることで、NBQ158からのデータ読出しが実施されてメモリ枯渇を回避できる。
また、バッファ32には複数の制御周期Tに亘る指令値の算出を可能にする中間コード33が格納され得るので、制御アプリケーション処理部30の実行が中断したとしても、当該中断はモーション処理部42の指令値の算出に影響しない。
(i2.タスクスイッチの他の具体例)
上記の(h2.タスクスイッチの他の例)の具体的な処理を、図17と図18を参照して説明する。図17は、実施の形態に係る制御アプリケーションプログラム1542の一部を模式的に示す図である。図18は、実施の形態に係る切替部26の処理を概略的に示すフローチャートである。図19は、実施の形態に係る制御アプリケーション処理部301が実行する命令コードの一例を模式的に示す図である。
図19において示される、制御アプリケーション処理部301が実行する命令コードは、IECプログラム1541において、スイッチ45によって制御アプリケーション処理部30(すなわち、制御アプリケーションプログラム1542)の実行が中断した場合に実行される命令コードを含む。この命令コードは、制御対象のリアルタイム制御に関連する処理を実施するための命令コードであって、典型的には、制御アプリケーションプログラム1542の命令コードに相当するコードであって、中間コードを生成する命令コードを含む。
図17を参照して、制御アプリケーションプログラム1542は、命令コード1600を含む。命令コード1600は、“Sign(X)=True”の条件が満たされる間は、プログラムの次の行の命令コードを解析・実行しないことを示す待ち合わせ命令を示す。Sign(X)は、“変数MRは「Warning」を示す”との条件を示す。したがって、変数MRが「Warning」を示す間は、制御アプリケーションプログラム1542の次の命令コードが実行されない待ち状態となる。この待ち状態は、変数MRが「Normal」または「Monitoring」に変更されるまで待ち合わせる状態を包含する。具体的には、待ち合わせ状態は、NBQ158のメモリ枯渇が解消されるまで待ち合わせる状態、すなわち読出処理部183によってNBQ158からデータが読出されて十分な空き領域ができるまで待ち合わせる状態を含む。
このように、NBQ158がメモリ枯渇の状態にある間は、切替部26が、プロセッサ102に制御アプリケーション処理部30の実行を中断させてシステムサービス処理部185を実行開始させて、メモリ枯渇を解消することができる。なお、この命令コード1600は、図15に示す条件待ちの命令コードの種類に該当する。
待ち合わせ命令の命令コード1600は、NBQ158からのシステムサービス処理部185のデータ読出によって、変数MRが「Warning」から「Normal」または「Monitoring」に変更されると、待ち合わせは終了する。すなわち変数MRが「Warning」から「Normal」または「Monitoring」に変更されると、命令コード1600の“Sign(X)=True”の条件が満たされなくなり、制御アプリケーションプログラム1542では、命令コード1600の次の行の命令コードが読出されて解析・実行される。
図18を参照して、残量監視部44は、メモリ残量を検出し(ステップS61)、検出したメモリ残量と警告閾値および監視閾値とを比較することにより(ステップS63、ステップS67)、変数MRに比較の結果に基づく値を設定する。
切替部26は、変数MRの値が「Warning」を示すときは(ステップS63でYES)、警告の処理(ステップS65)を実施し、変数MRの値が「Monitoring」を示すときは(ステップS63でNO、ステップS67でYES)、監視の処理(ステップS69)を実施する。変数MRの値が「Warning」および「Monitoring」のいずれも示さないとき(ステップS67でNO)、すなわち変数MRが「Normal」を示すときは、処理は終了する。
図19を参照して、警告の処理(ステップS65)と監視の処理(ステップS69)の一例を説明する。制御アプリケーション処理部301のプログラムは、IECプログラム1541内において例えばラダープログラムで記述されている。図19では、FB(ファンクションブロック)1546、1548は、制御アプリケーションプログラム1542の一部の命令コードに相当する。監視の処理(ステップS69)では、切替部26は、信号X1をプログラム処理部40に出力する。プログラム処理部40が実行するIECプログラム1541は、信号X1を入力するとブロック1545がオンし、FB1546が実行される。また、警告の処理(ステップS65)では、“変数MRが「Warning」を示す”のIF文の条件ブロック1547がオンすると、すなわちIF文の条件が満たされると、FB1548が実行される。
図19のFB1546は、実行されると、例えば、連続したN個の制御周期Tに亘る中間コード33を出力する。また、FB1548は、実行されると、例えば、連続したM個(ただし、M≧N)の制御周期Tに亘る中間コード33を出力する。
これにより、メモリ残量の値が監視閾値または警告閾値よりも小さい期間では、メモリ枯渇に対処するために、制御周期Tにおいて制御アプリケーション処理部30の実行が中断されるとしても、当該制御周期Tにおいて、プライマリタスクの制御アプリケーション処理部301が実行されることで、複数の制御周期Tに亘る指令値を算出するための中間コード33を算出することができる。したがって、各制御周期Tのプライマリタスクにおけるモーション処理部42の実行に先行して、指令値の算出に必要な中間コードが算出されることを保証できる。
なお、図19に示す制御アプリケーション処理部301のプログラムは、フラグFに従いスイッチ45が実施される場合に、プライマリタスクにおいて実行されるようにしてもよい。
<J.応用例>
次に、実施の形態に係る制御装置100が生成および出力する時系列データを用いた応用例について説明する。
図20は、実施の形態に係る制御装置100の時系列データベース180に格納される時系列データを用いたアプリケーションの一例を説明するための図である。
図20に示す例では、製造実行システム400は、制御装置100の時系列データベース180に格納された時系列データを用いて、品質トレーサビリティなどを実現する。具体的には、時系列データベース180に格納された時系列データに含まれる製造データに基づいて、いずれのワーク(製造物)に対応付けられる時系列データであるかを判別する。判別されたワーク毎の時系列データを発生した時刻順に並べることで、製造時におけるワーク毎の状態を把握することができる。例えば、図20には、「品番001」のワークに対応付けて複数の時系列データが格納されるとともに、「品番002」のワークに対応付けて複数の時系列データが格納される例を示す。
このように、製造実行システム400は、制御装置100の時系列データベース180に格納された時系列データに基づいて、品質トレーサビリティに係る情報を生成してもよい。
品質トレーサビリティに係る情報を生成する際に、時刻およびカウンタの情報を対応付けて、時系列データ内の観測値を処理することで、より時間的に緻密な情報を生成することができる。
また、図20に示す例では、IoTサービス450は、いわゆるビッグデータ解析を実現する。IoTサービス450には、製造装置/設備11を制御する制御装置100からの時系列データだけではなく、別の製造装置/設備11からの時系列データも出力される。IoTサービス450には、1または複数の製造装置/設備からの時系列データに対して、各種の解析を実施する。このような解析の一例として、時系列分析460が示されている。
IoTサービス450を提供するシステムを構成する1または複数のプロセッサが時系列分析460を実行する。時系列分析460においては、1または複数のプロセッサが時系列データに対する前処理462を実行する。前処理462においては、1または複数のプロセッサがストレージに格納された時系列データから特徴量などを抽出して次元を下げる処理、異常値・外れ値を除外する処理などを実行する。さらに、1または複数のプロセッサは、前処理462が実施された時系列データに対して、分析処理464を実行する。
1または複数のプロセッサは、分析処理464の結果に基づいてモデリング466を実施することで、制御対象の製造装置/設備についてのモデルを生成する。1または複数のプロセッサは、生成したモデル(関数またはパラメータのセット)をストレージに格納する。さらに、1または複数のプロセッサは、生成されたモデルに基づいて、異常の発生や劣化の進行などの予測処理468を実行する。最終的に、1または複数のプロセッサは、予測処理468の結果がグラフや表などを用いて視覚的にディスプレイなどに出力されてもよい(視覚化処理470)。
以上のように、IoTサービス450は、制御装置100の時系列データベース180に格納された時系列データに基づくデータ解析を実施する。このようなIoTサービス450は、典型的には、クラウド上の十分な演算リソースを有する環境で実施されることが想定される。そのため、大量の時系列データを用いて、隠れた特性などを見つけることができる。
このようなデータ解析を行う際に、時刻およびカウンタの情報を対応付けて、時系列データ内の観測値同士の時間的関係をより精緻に決定できるので、より正確かつ有意義な解析を実現できる。例えば、モデルの生成にあたっては、観測値同士の隠れた因果関係を探索することが重要であるが、このような因果関係は時間的なずれによって見つけることができない場合もある。本実施の形態に係るシステムにおいては、前処理において、観測値同士の時間的な関係をより正確に決定できるので、より正確なモデルの生成を実現できる。
また、何らかの異常が発生した時刻を参照して、その発生した時刻における設備データを確認する必要がある場合などにより有益である。
また、図20に示す例においては、制御装置100の内部でAI(Artificial Intelligence)処理196が実施される例を示す。AI処理196においては、例えば、教師ありの機械学習を行っておき、制御対象の製造装置や設備に生じる異常や劣化傾向を事前に検出するようにしてもよい。
具体的には、AI処理196は、制御装置100の時系列データベース180に格納された時系列データに含まれる1または複数の観測値から特徴量を生成し、その生成した特徴量を統計処理した上で、学習データとして保持する。そして、AI処理196は、何らかの新たな観測値が入力されると、当該入力された観測値が学習データからどの程度外れているのかを示す度合いを算出するとともに、その算出された外れの度合いに基づいて、異常の有無や劣化傾向を判断する。
このようなAI処理196を制御装置100内に実装することで、制御対象の製造装置や設備に生じる異常や劣化傾向を実質的にリアルタイムに検出できる。
<K.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
制御対象(8)を制御する制御装置(100)であって、
プロセッサ(102)と、
複数のプログラムを格納する記憶部(108)と、
予め定められた周期内で、前記プロセッサに優先度に従い実行させるプログラムを管理するスケジューラ(25)と、を含み、
前記記憶部の前記複数のプログラムは、
前記周期において前記プロセッサで実行される最も実行の優先度が高いプログラムであって、前記制御対象のリアルタイム制御処理のための第1のプログラム(1541)と、
前記第1のプログラムより実行の優先度が低いプログラムであって、前記リアルタイム制御に関連する関連処理のための第2のプログラム(1542)と、
前記第2のプログラムより実行の優先度が低く、前記周期においてプロセッサの空き時間がある場合に実行されるシステムサービスの第3のプログラム(190、191)とを含み、
前記スケジューラは、
前記周期内において、前記第2のプログラムの実行を開始し、その後に前記第2のプログラムにおいて予め定められた種類の命令コードが実行された場合、前記プロセッサに前記第2のプログラムの実行を中断させ前記第3のプログラムを実行開始させる切替部(26)を含む、制御装置。
[構成2]
前記リアルタイム制御処理は、前記関連処理により生成された中間コードに基づき前記制御対象への指令値を生成する処理を含み、
前記予め定められた種類の命令コードは、実行されると複数周期にわたる前記中間コードを生成する命令コードを含む、構成1に記載の制御装置。
[構成3]
前記予め定められた種類の命令コードは、待ち合わせ条件と当該待ち合わせ条件が満たされるかを判断するコードを用いて記述される待ち合わせ命令コードを含む、構成1または2に記載の制御装置。
[構成4]
前記第2のプログラムは、インタプリタ言語で記述されたプログラムを含む、構成1から3のいずれか1に記載の制御装置。
[構成5]
前記システムサービスは、
前記制御対象に関するデータを含むレコードを時系列に格納する時系列データベース(180)の処理を含む、構成1から4のいずれか1に記載の制御装置。
[構成6]
前記制御装置は、さらに、
前記周期毎に、前記時系列データベースへ格納すべきレコードを構成するためのデータを生成するデータ生成部(43)と、
前記データ生成部により生成されるデータを順次格納する、揮発性の主記憶装置上に形成されるノンブロッキングキュー(158)と、を備え、
前記システムサービスは、
前記ノンブロッキングキューから前記データを読み出し、前記時系列データベースに格納する処理(183)を含む、構成5に記載の制御装置。
[構成7]
前記制御装置が前記時系列データベースを備える、構成6に記載の制御装置。
[構成8]
前記制御装置は、さらに、
前記ノンブロッキングキューのメモリ残量を監視する残量監視部(44)を備え、
前記切替部は、
前記メモリ残量と閾値の比較の結果に基づき、前記プロセッサに、実行中の前記第2のプログラムの実行を中断させ、前記第3のプログラムの実行を開始させる、構成6または7に記載の制御装置。
[構成9]
前記第1のプログラムは、前記第2のプログラムの実行が中断した場合に実行される、前記関連処理の命令コード(301)を含む、構成1から8のいずれか1に記載の制御装置。
[構成10]
制御対象(8)を制御するためのプロセッサ(102)を有する制御装置(100)で実行されるプログラムであって、
予め定められた周期内で、前記プロセッサに優先度に従い実行させるプログラムを管理するスケジューラプログラム(170)と、
前記周期において前記プロセッサで実行される最も実行の優先度が高いプログラムであって、前記制御対象のリアルタイム制御処理のための第1のプログラム(1541)と、
前記第1のプログラムより実行の優先度が低いプログラムであって、前記リアルタイム制御に関連する関連処理のための第2のプログラム(1542)と、
前記第2のプログラムより実行の優先度が低く、前記周期においてプロセッサの空き時間がある場合に実行されるシステムサービスの第3のプログラム(190、191)とを備え、
前記スケジューラプログラムは、
前記周期内において、前記第2のプログラムの実行を開始し、その後に前記第2のプログラムにおいて予め定められた種類の命令コードが実行された場合、前記プロセッサに前記第2のプログラムの実行を中断させ前記第3のプログラムを実行開始させるスイッチプログラム(171)を含む、プログラム。
[構成11]
制御対象(8)を制御するためのプロセッサ(102)を有する制御装置(100)を制御する制御方法であって、
前記制御装置は、
予め定められた周期において前記プロセッサで実行される最も実行の優先度が高いプログラムであって、前記制御対象のリアルタイム制御処理のための第1のプログラム(1541)と、
前記第1のプログラムより実行の優先度が低いプログラムであって、前記リアルタイム制御に関連する関連処理のための第2のプログラム(1542)と、
前記第2のプログラムより実行の優先度が低く、前記周期においてプロセッサの空き時間がある場合に実行されるシステムサービスの第3のプログラム(190、191)とを備え、
前記制御方法は、
前記周期内で、前記プロセッサに優先度に従い実行させるプログラムを管理するステップを、備え、
前記管理するステップは、
前記周期内において、
前記第2のプログラムの実行を開始し、その後に前記第2のプログラムにおいて予め定められた種類の命令コードが実行されるか否かを判断するステップ(S33)と、
前記判断に基づき、場合、前記プロセッサに前記第2のプログラムの実行を中断させ前記第3のプログラムを実行開始させるステップ(S43)とを含む、制御方法。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1 制御システム、25 スケジューラ、26 切替部、30,301 制御アプリケーション処理部、31 インタプリタ、32 バッファ、33 中間コード、34 プログラム解析部、40 プログラム処理部、41 ロジック処理部、42 モーション処理部、43 データベース書込部、44 残量監視部、45 スイッチ、50 I/O処理部、100 制御装置、102 プロセッサ、106 主記憶装置、108 二次記憶装置、151 インタプリタプログラム、152 制御プログラム、156 データベース書込プログラム、159 共有メモリ、160 変数管理プログラム、170 スケジューラプログラム、171 スイッチプログラム、172 入力プログラム、174 出力プログラム、180 時系列データベース、182 データベースマネージャ、183 読出処理部、184 書込みバッファ、185 システムサービス処理部、186 データベースファイル、190 データベースプログラム、191 データベース読出プログラム、195 システムサービスプログラム、1541 IECプログラム、1542 制御アプリケーションプログラム、1544 残量監視プログラム、F フラグ、MR 変数、T 制御周期。

Claims (11)

  1. 制御対象を制御する制御装置であって、
    プロセッサと、
    複数のプログラムを格納する記憶部と、
    予め定められた周期内で、前記プロセッサに優先度に従い実行させるプログラムを管理するスケジューラと、を含み、
    前記記憶部の前記複数のプログラムは、
    前記周期において前記プロセッサで実行される最も実行の優先度が高いプログラムであって、前記制御対象のリアルタイム制御処理のための第1のプログラムと、
    前記第1のプログラムより実行の優先度が低いプログラムであって、前記リアルタイム制御に関連する関連処理のための第2のプログラムと、
    前記第2のプログラムより実行の優先度が低く、前記周期においてプロセッサの空き時間がある場合に実行されるシステムサービスの第3のプログラムとを含み、
    前記スケジューラは、
    前記周期内において、前記第2のプログラムの実行を開始し、その後に前記第2のプログラムにおいて予め定められた種類の命令コードが実行された場合、前記プロセッサに前記第2のプログラムの実行を中断させ前記第3のプログラムを実行開始させる切替部を含む、制御装置。
  2. 前記リアルタイム制御処理は、前記関連処理により生成された中間コードに基づき前記制御対象への指令値を生成する処理を含み、
    前記予め定められた種類の命令コードは、実行されると複数周期にわたる前記中間コードを生成する命令コードを含む、請求項1に記載の制御装置。
  3. 前記予め定められた種類の命令コードは、待ち合わせ条件と当該待ち合わせ条件が満たされるかを判断するコードを用いて記述される待ち合わせ命令コードを含む、請求項1または2に記載の制御装置。
  4. 前記第2のプログラムは、インタプリタ言語で記述されたプログラムを含む、請求項1から3のいずれか1項に記載の制御装置。
  5. 前記システムサービスは、
    前記制御対象に関するデータを含むレコードを時系列に格納する時系列データベースの処理を含む、請求項1から4のいずれか1項に記載の制御装置。
  6. 前記制御装置は、さらに、
    前記周期毎に、前記時系列データベースへ格納すべきレコードを構成するためのデータを生成するデータ生成部と、
    前記データ生成部により生成されるデータを順次格納する、揮発性の主記憶装置上に形成されるノンブロッキングキューと、を備え、
    前記システムサービスは、
    前記ノンブロッキングキューから前記データを読み出し、前記時系列データベースに格納する処理を含む、請求項5に記載の制御装置。
  7. 前記制御装置が前記時系列データベースを備える、請求項6に記載の制御装置。
  8. 前記制御装置は、さらに、
    前記ノンブロッキングキューのメモリ残量を監視する残量監視部を備え、
    前記切替部は、
    前記メモリ残量と閾値の比較の結果に基づき、前記プロセッサに、実行中の前記第2のプログラムの実行を中断させ、前記第3のプログラムの実行を開始させる、請求項6または7に記載の制御装置。
  9. 前記第1のプログラムは、前記第2のプログラムの実行が中断した場合に実行される、前記関連処理の命令コードを含む、請求項1から8のいずれか1項に記載の制御装置。
  10. 制御対象を制御するためのプロセッサを有する制御装置で実行されるプログラムであって、
    予め定められた周期内で、前記プロセッサに優先度に従い実行させるプログラムを管理するスケジューラプログラムと、
    前記周期において前記プロセッサで実行される最も実行の優先度が高いプログラムであって、前記制御対象のリアルタイム制御処理のための第1のプログラムと、
    前記第1のプログラムより実行の優先度が低いプログラムであって、前記リアルタイム制御に関連する関連処理のための第2のプログラムと、
    前記第2のプログラムより実行の優先度が低く、前記周期においてプロセッサの空き時間がある場合に実行されるシステムサービスの第3のプログラムとを備え、
    前記スケジューラプログラムは、
    前記周期内において、前記第2のプログラムの実行を開始し、その後に前記第2のプログラムにおいて予め定められた種類の命令コードが実行された場合、前記プロセッサに前記第2のプログラムの実行を中断させ前記第3のプログラムを実行開始させるスイッチプログラムを含む、プログラム。
  11. 制御対象を制御するためのプロセッサを有する制御装置を制御する制御方法であって、
    前記制御装置は、
    予め定められた周期において前記プロセッサで実行される最も実行の優先度が高いプログラムであって、前記制御対象のリアルタイム制御処理のための第1のプログラムと、
    前記第1のプログラムより実行の優先度が低いプログラムであって、前記リアルタイム制御に関連する関連処理のための第2のプログラムと、
    前記第2のプログラムより実行の優先度が低く、前記周期においてプロセッサの空き時間がある場合に実行されるシステムサービスの第3のプログラムとを備え、
    前記制御方法は、
    前記周期内で、前記プロセッサに優先度に従い実行させるプログラムを管理するステップを、備え、
    前記管理するステップは、
    前記周期内において、
    前記第2のプログラムの実行を開始し、その後に前記第2のプログラムにおいて予め定められた種類の命令コードが実行されるか否かを判断するステップと、
    前記判断に基づき、場合、前記プロセッサに前記第2のプログラムの実行を中断させ前記第3のプログラムを実行開始させるステップとを含む、制御方法。
JP2020062362A 2020-03-31 2020-03-31 制御装置、プログラムおよび制御方法 Active JP7380390B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2020062362A JP7380390B2 (ja) 2020-03-31 2020-03-31 制御装置、プログラムおよび制御方法
EP20928541.0A EP4130899A4 (en) 2020-03-31 2020-12-17 CONTROL DEVICE, PROGRAM AND CONTROL METHOD
PCT/JP2020/047256 WO2021199519A1 (ja) 2020-03-31 2020-12-17 制御装置、プログラムおよび制御方法
CN202080097305.2A CN115176208A (zh) 2020-03-31 2020-12-17 控制装置、程序以及控制方法
US17/908,134 US20230359487A1 (en) 2020-03-31 2020-12-17 Control device, non-transitory computer-readable medium, and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020062362A JP7380390B2 (ja) 2020-03-31 2020-03-31 制御装置、プログラムおよび制御方法

Publications (2)

Publication Number Publication Date
JP2021163030A true JP2021163030A (ja) 2021-10-11
JP7380390B2 JP7380390B2 (ja) 2023-11-15

Family

ID=77930243

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020062362A Active JP7380390B2 (ja) 2020-03-31 2020-03-31 制御装置、プログラムおよび制御方法

Country Status (5)

Country Link
US (1) US20230359487A1 (ja)
EP (1) EP4130899A4 (ja)
JP (1) JP7380390B2 (ja)
CN (1) CN115176208A (ja)
WO (1) WO2021199519A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117312117B (zh) * 2023-11-30 2024-03-01 沐曦集成电路(杭州)有限公司 一种打点数据的处理方法、装置、设备及介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10065417B4 (de) * 2000-12-27 2011-07-21 Siemens AG, 80333 Programmierung von zyklischen Maschinen
JP2007004334A (ja) * 2005-06-22 2007-01-11 Fuji Electric Fa Components & Systems Co Ltd プログラマブルコントローラ
JP5099251B1 (ja) * 2011-07-15 2012-12-19 オムロン株式会社 Plcのcpuユニット、plc用のシステムプログラム、plc用のシステムプログラムを格納した記録媒体、plcシステム、plcサポート装置、plcサポートプログラム、および、plcサポートプログラムを格納した記録媒体
JP6626240B2 (ja) * 2014-03-13 2019-12-25 オムロン株式会社 コントローラ
WO2018186358A1 (ja) * 2017-04-07 2018-10-11 オムロン株式会社 制御装置、制御方法および制御プログラム
JP6406466B1 (ja) 2017-04-07 2018-10-17 オムロン株式会社 制御装置、制御方法および制御プログラム
JP6919404B2 (ja) 2017-08-10 2021-08-18 オムロン株式会社 制御装置
JP6927089B2 (ja) * 2018-03-05 2021-08-25 オムロン株式会社 制御装置、システムプログラム、制御方法

Also Published As

Publication number Publication date
CN115176208A (zh) 2022-10-11
WO2021199519A1 (ja) 2021-10-07
EP4130899A4 (en) 2024-05-01
EP4130899A1 (en) 2023-02-08
US20230359487A1 (en) 2023-11-09
JP7380390B2 (ja) 2023-11-15

Similar Documents

Publication Publication Date Title
JP6388050B1 (ja) 制御装置
JP6903275B2 (ja) 制御装置および制御方法
EP3336637A1 (en) Control system, control program, and control method
JP6903976B2 (ja) 制御システム
EP3373087B1 (en) Control device and program
JP6724847B2 (ja) 制御装置、制御プログラム、制御システム、および制御方法
US11301294B2 (en) Control device, control method, and control program
CN110402430B (zh) 控制装置、控制方法以及记录介质
US10606246B2 (en) Control device and control method with various command values in a shared memory providing access to various program execution and command value operation parts in each control cycle
US20190095246A1 (en) Support device and non-transitory storage medium
EP3376320A1 (en) Control device
WO2021199519A1 (ja) 制御装置、プログラムおよび制御方法
EP3457239B1 (en) Control device and control method
US11520302B2 (en) Control system and control device
JP2021077219A (ja) 制御装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230111

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20231003

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231016

R150 Certificate of patent or registration of utility model

Ref document number: 7380390

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150