JP6879625B2 - プログラマブルコントローラ、管理装置および制御システム - Google Patents

プログラマブルコントローラ、管理装置および制御システム Download PDF

Info

Publication number
JP6879625B2
JP6879625B2 JP2016252441A JP2016252441A JP6879625B2 JP 6879625 B2 JP6879625 B2 JP 6879625B2 JP 2016252441 A JP2016252441 A JP 2016252441A JP 2016252441 A JP2016252441 A JP 2016252441A JP 6879625 B2 JP6879625 B2 JP 6879625B2
Authority
JP
Japan
Prior art keywords
unit
allocation
processes
setting data
core
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.)
Active
Application number
JP2016252441A
Other languages
English (en)
Other versions
JP2018106440A (ja
Inventor
荒牧 成彦
成彦 荒牧
藤枝 宏之
宏之 藤枝
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.)
Toshiba Mitsubishi Electric Industrial Systems Corp
Toshiba Infrastructure Systems and Solutions Corp
Original Assignee
Toshiba Mitsubishi Electric Industrial Systems Corp
Toshiba Infrastructure Systems and Solutions Corp
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 Toshiba Mitsubishi Electric Industrial Systems Corp, Toshiba Infrastructure Systems and Solutions Corp filed Critical Toshiba Mitsubishi Electric Industrial Systems Corp
Priority to JP2016252441A priority Critical patent/JP6879625B2/ja
Priority to CN201780080671.5A priority patent/CN110114732B/zh
Priority to PCT/JP2017/043532 priority patent/WO2018123456A1/ja
Priority to US16/473,421 priority patent/US10956238B2/en
Priority to KR1020197017786A priority patent/KR102258542B1/ko
Priority to TW106145280A priority patent/TWI664509B/zh
Publication of JP2018106440A publication Critical patent/JP2018106440A/ja
Application granted granted Critical
Publication of JP6879625B2 publication Critical patent/JP6879625B2/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
    • 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/54Interprogram communication
    • G06F9/543User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Description

本発明の実施形態は、プログラマブルコントローラ、管理装置および制御システムに関する。
従来、1つの中央処理装置(CPUパッケージ)に複数のプロセッサコアを含む、マルチコアCPU(マルチコアプロセッサ)を備えたプログラマブルコントローラ(プログラマブルロジックコントローラ、Programmable Logic Controller、PLC)では、各プロセッサコアが別々の処理を並行して実施することで処理能力を向上させている。
特開2007−94898号公報 特開2012−141722号公報
しかしながら、従来技術においては、各プロセッサコアへの処理の割当ては、各プログラマブルコントローラ専用のアプリケーションプログラムによって定められていた。このため、従来技術においては、各プロセッサコアへの処理の割当てを変更するためにはアプリケーションプログラムの修正が必要となり、この結果、修正したアプリケーションプログラムのコンパイルも必要となる。このため、従来技術では、プロセッサコアへの処理の割当てを動的かつ迅速に変更することは困難であった。このような従来技術において、プログラマブルコントローラの各プロセッサコアへの処理の割当てをより柔軟に変更可能にすることが求められていた。
実施形態のプログラマブルコントローラは、複数のプロセッサコアを備えたプログラマブルコントローラであって、複数の入出力インタフェースと、入力部と、割当部と、送信部と、電源制御部と、更新部と、実行部と、を備える。複数の入出力インタフェースは、プログラマブルコントローラの制御対象の装置との間で信号の入出力を行う複数の入出力機器と情報の送受信を行う。入力部は、複数のプロセッサコアで実行されるためのアプリケーションプログラムと、アプリケーションプログラムに含まれる複数の処理と該複数の処理の各々が用いる複数の入出力インタフェースとが対応付けられた情報を含む設定データとを、プログラマブルコントローラに接続された管理装置から入力する。実行部は、アプリケーションプログラムを起動する。割当部は、実行部によってアプリケーションプログラムが起動された場合に、アプリケーションプログラムに含まれる処理のうち、実行対象の処理を設定データから逐次検索し、複数のプロセッサコアのそれぞれに対して、複数の処理のいずれかを割当てる。送信部は、複数のプロセッサコアと複数の処理の割当て結果を、管理装置に送信する。電源制御部は、管理装置で複数のプロセッサコアに対する複数の処理の割当てが変更され、変更後の割当ての情報が追加された設定データを入力部が入力した場合に再起動を行う。更新部は、再起動の後に設定データに基づいて複数のプロセッサコアへの割当てを更新する。実行部は、割当部による複数のプロセッサコアへの複数の処理の割当てに基づいて複数の処理を実行し、割当てが変更された場合は、変更後の割当てに基づいて複数の処理を実行する。また、割当部は、設定データに基づいて、複数の処理のうち、同一の入出力インタフェースを用いる処理を、複数のプロセッサコアのうちの同一のプロセッサコアに優先的に割り当てる。
図1は、実施形態1にかかる制御システムの全体構成の一例を示す図である。 図2は、実施形態1にかかるコントローラの機能的構成の一例を示すブロック図である。 図3は、実施形態1にかかる設定データの構成および内容の一例を示す図である。 図4は、実施形態1にかかるPCのハードウェア構成の一例を示す図である。 図5は、実施形態1にかかるPCの機能的構成の一例を示すブロック図である。 図6は、実施形態1にかかるモニタリング画面の一例を示す図である。 図7は、実施形態1にかかる警告表示の一例を示す図である。 図8は、実施形態1にかかるアプリケーションプログラムおよび設定データの生成処理の流れの一例を示すフローチャートである。 図9は、実施形態1にかかるコントローラによる制御処理の流れの一例を示すフローチャートである。 図10は、実施形態1にかかるモニタリング処理の流れの一例を示すフローチャートである。 図11は、実施形態1にかかる割当て変更処理の流れの一例を示すフローチャートである。 図12は、実施形態2にかかるコントローラの機能的構成の一例を示すブロック図である。 図13は、実施形態2にかかるPCの機能的構成の一例を示すブロック図である。 図14は、実施形態2にかかるモニタリング画面の一例を示す図である。 図15は、実施形態2にかかる制御処理の全体の流れの一例を示すフローチャートである。 図16は、実施形態2にかかるモニタリング処理の流れの一例を示すフローチャートである。
(実施形態1)
図1は、実施形態1にかかる制御システムSの全体構成の一例を示す図である。本実施形態にかかる制御システムSは、例えば、プラントに適用されるものである。図1に示すように、制御システムSは、PC(Personal Computer)1と、プログラマブルコントローラ(以下、コントローラという)2とを備える。
PC1は、ユーザが、コントローラ2で実行するアプリケーションプログラムの生成や、コントローラ2の稼動状況をモニタリングするために用いるコンピュータである。PC1は、ソフトウェアであるエンジニアリングツール11を有する。エンジニアリングツール11は、制御システムSに関するシステム構築、プログラミング、モニタリング、情報収集、監視等を行うソフトウェアである。PC1は、エンジニアリングツール11の機能によってコントローラ2を管理する。PC1は、本実施形態における管理装置の一例である。PC1およびエンジニアリングツール11についての詳細は後述する。
コントローラ2は、図1に示すように、マルチコアCPU(マルチコアプロセッサ)20、RAM(Random Access Memory)22、FROM(Flash Read Only Memory)23、ツールインタフェース24、I/Oインタフェース25、および、バス26を備える。
マルチコアCPU20は、複数のプロセッサコア(以下、コアという)を有するCPUである。図1に示すように、マルチコアCPU20は、コアA301およびコアB302を備える。図1のマルチコアCPU20が有するコアの数は一例であり、2つに限らない。マルチコアCPU20は、コントローラ2全体を制御する。
RAM22は、マルチコアCPU20の動作領域であり、書き込み可能な記憶媒体である。FROM23は、いわゆるフラッシュメモリであり、電気的に書き換え可能な不揮発性半導体記憶媒体である。
ツールインタフェース24は、通信路4を介してPC1との間で情報の送受信を行うためのインタフェースである。通信路4は、PC1とコントローラ2を結ぶ通信路であり、例えば、Ethernet(登録商標)やUSB(Universal Serial Bus)などの高速の通信路であるが、それらに限定されない。
I/Oインタフェース25は、通信路5を介してI/O機器3との間で情報の送受信を行うためのインタフェースである。通信路5は、コントローラ2とI/O機器3を結ぶ通信路である。また、バス26は、コントローラ2の内部のデータ伝送路である。
I/O機器3は、プラントを構成する装置との入出力を行うための機器である。I/O機器3としては、例えば、制御対象設備に設置されたセンサ等からの信号の入力を行う入力装置(AI(Analog Input)機器、DI(Digital Input)機器)や、制御対象設備のアクチュエータ等に対して信号の出力を行う出力装置(AO(Analog Output)機器、DO(Digital Output)機器)がある。図1では、I/O機器3およびI/Oインタフェース25は1つずつ記載されているが、これに限らない。例えば、プラントの構成によって、I/O機器3およびI/Oインタフェース25の数は異なる。
図2は、本実施形態にかかるコントローラ2の機能的構成の一例を示すブロック図である。図2に示すように、コントローラ2は、入力部201と、割当部202と、実行部203と、更新部204と、電源制御部205と、送信部206と、記憶部250とを備える。
記憶部250は、例えばFROM23によって構成される。また、記憶部250は、入力部201がPC1からダウンロード(入力)した、アプリケーションプログラム311と、設定データ310とを記憶する。アプリケーションプログラム311は、コントローラ2がプラントを制御するためのプログラムである。記憶部250に記憶されたアプリケーションプログラム311は、コンパイル済みのアプリケーションプログラム311、すなわち実行形式のアプリケーションプログラム311であるとする。
設定データ310は、アプリケーションプログラム311に含まれる複数の処理の属性情報と、コアA301およびコアB302の属性情報と、コアA301およびコアB302に対する各処理との割当てと、を定義する定義ファイルである。言い換えれば、設定データ310は、従来技術ではアプリケーションプログラム311内に含まれていた定義情報を、アプリケーションプログラム311の外部に定義した定義ファイルである。
図3は、本実施形態にかかる設定データ310の構成および内容の一例を示す図である。本実施形態における設定データ310は、定義ファイル313aおよび定義ファイル313bを含む。
図3(a)に示すように、定義ファイル313aは、例えば、「処理」、「I/Oインタフェース」、「分離不可処理」、「コア」等の定義情報を含む。「処理」は、アプリケーションプログラム311に含まれる複数の処理の情報である。「I/Oインタフェース」は、アプリケーションプログラム311に含まれる各処理で用いられるI/Oインタフェース25を特定する情報である。「分離不可処理」は、異なるコアに割当てることができない複数の処理の組み合わせの情報である。「コア」は、各処理が実行されるコアA301またはコアB302の割当てである。
設定データ310は、PC1のエンジニアリングツール11で生成されるが、生成時点では各処理はコアA301およびコアB302に割当てられていない。このため、生成された時点の設定データ310では、図3(a)の項目「コア」は、空白(未割当)である。各処理のコアA301およびコアB302への割当ては、後述の割当部202で決定される。また、PC1のエンジニアリングツール11が処理の割当てを変更した場合には、PC1は、変更後の割当てを設定データ310に登録する。
また、図3(b)に示すように、定義ファイル313bは、コアA301およびコアB302の「I/Oインタフェースの上限数」や、「割当て不可インタフェース」の定義情報を含む。「I/Oインタフェースの上限数」は、コアA301およびコアB302に割当てられた各処理に対応付けられたI/Oインタフェース25の数の上限の規定値である。また、「割当て不可インタフェース」は、コアA301またはコアB302に、特定のI/Oインタフェース25に対応付けられた処理を割当てることを禁止する定義である。
図3に示す設定データ310の構成および内容は一例であり、これに限らない。また、設定データ310が含む定義ファイルの数は、2つに限らない。例えば、設定データ310は1つの定義ファイルに定義ファイル313aおよび定義ファイル313bの内容を含める構成を採用しても良い。
図2に戻り、入力部201は、アプリケーションプログラム311および設定データ310を、PC1から、ツールインタフェース24を介して入力(ダウンロード)する。入力部201は、入力したアプリケーションプログラム311および設定データ310を、記憶部250に保存する。また、後述する割当部202が決定したコアA301およびコアB302への処理の割当てがPC1において変更された場合に、入力部201は、変更後の割当てが登録された設定データ310を入力する。入力部201は、変更後の割当てが登録された設定データ310を、記憶部250に保存する。この場合、入力部201は、既に記憶部250に記憶された設定データ310を上書きして、変更後の割当てが登録された設定データ310を保存しても良い。
割当部202は、コアA301およびコアB302のそれぞれに対して、アプリケーションプログラム311に含まれる複数の処理のいずれかを割当てる。具体的には、割当部202は、実行部203がアプリケーションプログラム311を起動した場合に、実行対象の処理を設定データ310から検索し、コアA301またはコアB302に割当てる。
割当部202は、アプリケーションプログラム311全体の処理が効率よく実行可能となるように、コアA301およびコアB302へ各処理の割当てを行う。例えば、割当部202は、同一のI/Oインタフェース25を用いる処理を、設定データ310から検索し、これらの処理を同一のコアA301またはコアB302に優先的に割り当てる。同一のI/Oインタフェース25を用いる複数の処理を、同一のコアA301またはコアB302で行うことで、割当部202は、I/Oインタフェース25の入出力の回数を削減して、アプリケーションプログラム311全体の処理時間を低減することができる。
また、割当部202は、並行して同時に実行可能な処理を、優先的に異なるコアA301またはコアB302に割当てることにより、アプリケーションプログラム311全体の処理時間を低減する。割当部202は、例えば、設定データ310に分離不可処理として定義されていない処理は、並行して同時に実行可能であると判断する。割当部202は、例えばコントローラ2のOS(Operating System)の一機能として構成されても良い。
従来技術においては、各コアへの処理の割当ては、アプリケーションプログラム311のコード内で指定されたり、コンパイラによって決定されたりしていた。そのため、各アプリケーションプログラム311は、特定のコントローラの専用となり、例えばコアの数が異なる他のコントローラで使用することが困難であった。本実施形態では、コントローラ2の割当部202がコアA301およびコアB302への処理の割当てを行うため、アプリケーションプログラム311は、各処理を実行するコアを指定する情報を含まない。このため、本実施形態のコントローラ2は、コアの数等の構成の異なる他のコントローラとも、同一のアプリケーションプログラム311を共通して使用することができる。
割当部202は、各処理のコアA301およびコアB302への割当てを、設定データ310に登録する。また、割当部202は、設定データ310に各処理とコアA301およびコアB302の割当ての情報が既に含まれている場合は、当該設定データ310に従ってコアA301およびコアB302に各処理を割当てる構成を採用しても良い。例えば、コントローラ2が特定のアプリケーションプログラム311を複数回実行する場合に、2回目以降の実行では、設定データ310に登録された前回以前の割当てを適用する構成を採用しても良い。
電源制御部205は、コントローラ2の電源を制御する。例えば、電源制御部205は、コアA301およびコアB302への処理の割当てがPC1において変更され、変更後の割当ての情報が追加された設定データ310を入力部201が入力した場合に、コントローラ2をリブート(再起動)する。
更新部204は、コントローラ2のリブート後に、記憶部250に記憶された、変更後の割当ての情報が追加された設定データ310に基づいて、コアA301およびコアB302への割当てを更新する。更新部204は、更新した割当てを、実行部203に送出する。更新部204は、割当部202と同様に、コントローラ2のOSの一機能として構成されても良い。
実行部203は、アプリケーションプログラム311の起動をする。実行部203は、アプリケーションプログラム311を特定の時間に起動するものとしても良いし、ユーザの操作や、外部装置からの信号を受けて起動するものとしても良い。
また、実行部203は、アプリケーションプログラム311を起動した場合に、割当部202から取得したコアA301およびコアB302への処理の割当てに基づいて、アプリケーションプログラム311に含まれる個々の処理を実行する。また、実行部203は、更新部204から、更新した割当てを取得した場合は、更新後の割当てに基づいて、アプリケーションプログラム311に含まれる各処理を実行する。実行部203は、リブート前に実行されていた処理から再実行を開始するものとしても良いし、アプリケーションプログラム311全体を、最初から再実行するものとしても良い。
送信部206は、コアA301およびコアB302ごとの動作状態を、PC1へ送信する。例えば、送信部206は、コアA301およびコアB302への処理の割当て結果を、ツールインタフェース24および通信路4を介してPC1に送信する。また、送信部206は、各処理で用いられるI/Oインタフェース25を、当該処理と対応付けて、ツールインタフェース24および通信路4を介してPC1に送信する。
次に、PC1の構成について説明する。図4は、本実施形態にかかるPC1のハードウェア構成の一例を示す図である。図4に示すようにPC1は、入力装置12と、CPU13と、メモリ14と、HDD(Hard Disk Drive)15と、ディスプレイ(モニタ)16と、通信インタフェース17と、バス18とを備える。
入力装置12は、例えばキーボードやマウス、タッチパネル等であり、ユーザの操作を受け付ける装置である。
CPU13は、PC1の全体的な制御を行う制御装置である。例えば、CPU13は、メモリ14に記憶されているプログラム等を実行することで、様々な構成を実現する。メモリ14は、読み出し可能なデータを記憶するメモリであり、例えばROMである。また、PC1は、書込み可能なRAM等のメモリをさらに備える構成を採用しても良い。
HDD15は、外部記憶装置(補助記憶装置)である。PC1は、HDD15の代わりに、フラッシュメモリ等の記憶媒体を備える構成を採用しても良い。
ディスプレイ16は、液晶パネル等からなる表示装置であり、本実施形態における表示部の一例である。通信インタフェース17は、通信路4を介してコントローラ2との間で情報の送受信を行うためのインタフェースである。また、バス18は、PC1の内部のデータ伝送路である。図4に示すPC1の構成は一例であり、一般的なコンピュータの機能を備えるものであれば良い。
次に、PC1の機能的構成について説明する。図5は、本実施形態にかかるPC1の機能的構成の一例を示すブロック図である。図5に示すように、PC1で稼働するソフトウェアであるエンジニアリングツール11は、受付部101と、プログラム生成部102と、コンパイラ103と、分割部104と、設定データ生成部105と、割当て変更部106と、表示制御部107と、送受信部108とを備える。また、PC1は、記憶部150を備える。
記憶部150は、例えばHDD15によって構成される。あるいは、記憶部150は、RAM等の書き込み可能な記憶媒体によって構成されるものとしても良い。記憶部150は、実行形式のアプリケーションプログラム311と、設定データ生成部105が生成した設定データ310とを記憶する。また、記憶部150が記憶するアプリケーションプログラム311は、PC1のプログラム生成部102が生成したものに限らない。例えば、他のエンジニアリングツールが生成したアプリケーションプログラム311を記憶する構成を採用しても良い。
受付部101は、ユーザの操作を、入力装置12を介して受け付ける。例えば、受付部101は、後述の表示制御部107が、ディスプレイ16に表示した複数の処理のうちのいずれかの割当てを、コアA301またはコアB302の一方から他方へ変更するドラッグアンドドロップ操作を受け付ける。
プログラム生成部102は、受付部101からユーザの操作内容を取得しコントローラ2で実行するためのアプリケーションプログラム311を生成する。例えば、プログラム生成部102は、ユーザがディスプレイ16に表示されたファンクションブロック図や、ラダー図等を操作して設定した内容を、受付部101から取得し、アプリケーションプログラム311に変換する。ユーザは、ファンクションブロック図や、ラダー図等を操作することにより、プラントを制御するための制御プロセスと、制御内容とを入力する。
本実施形態における制御プロセスは、プラントの制御における工程と、各工程に含まれる作業とを含む。また、本実施形態における制御内容は、各工程の実行順序および制御方法等の定義である。例えば、コントローラ2が定められた順序で各工程を逐次進めるアプリケーションプログラム311を生成する場合、ユーザは、シーケンス制御として各工程の実行順序を設定する。また、コントローラ2が定められた工程または作業を繰り返すアプリケーションプログラム311を生成する場合、ユーザは、ループ制御として各工程または作業の実行順序を設定する。1つのアプリケーションプログラム311内に、シーケンス制御とループ制御とが混在しても良い。また、シーケンス制御とループ制御とに限らず、他の種類の制御を設定可能な構成を採用しても良い。プログラム生成部102は、ユーザの操作内容を受付部101から取得し、アプリケーションプログラム311に変換する。
コンパイラ103は、プログラム生成部102が生成したアプリケーションプログラム311を、コントローラ2が実行可能な形式に変換する。コンパイラ103は、コンパイル済みのアプリケーションプログラム311、すなわち実行形式のアプリケーションプログラム311を、記憶部150に保存する。
分割部104は、実行形式のアプリケーションプログラム311を、複数の処理に分割する。例えば、分割部104は、アプリケーションプログラム311を実行した場合におけるプロセスを複数のスレッドで実行させるための処理単位に、アプリケーションプログラム311を分割する。処理の分割単位は一例であり、これに限らない。分割部104は、アプリケーションプログラム311の分割結果を、設定データ生成部105に送出する。
また、アプリケーションプログラム311は、プログラム生成部102が生成したものに限らない。例えば、分割部104は、他のエンジニアリングツールで生成したアプリケーションプログラム311を記憶部150から取得して、複数の処理に分割する構成を採用しても良い。本実施形態では、コンパイラ103と分割部104とを分けているが、これに限らない。例えば、コンパイラ103が処理の分割も行う構成を採用しても良い。
設定データ生成部105は、アプリケーションプログラム311に含まれる複数の処理の情報を含む設定データ310を生成する。例えば、設定データ生成部105は、図3(a)に示すように、分割部104から、分割した各処理を特定可能な定義情報を取得し、定義ファイル313aに登録する。また、設定データ生成部105は、アプリケーションプログラム311から、各処理で用いられるI/Oインタフェース25を特定する情報を取得し、各処理を特定可能な定義情報と紐づけて、定義ファイル313aに登録する。
また、設定データ生成部105は、複数の処理のうち、異なるコアA301またはコアB302に割当てることができない複数の処理である分離不可処理の組み合わせの情報を定義ファイル313aに登録する。分離不可処理の例としては、ループ制御を行うアプリケーションプログラム311において、同一のループに含まれる処理がある。この他にも、設定データ生成部105は、処理の前後関係等の理由で、異なるコアA301またはコアB302に割当てることができない処理の組み合わせを、分離不可処理として定義ファイル313aに登録する構成を採用しても良い。
また、設定データ生成部105は、図3(b)に示すように、コアA301またはコアB302に割当てられる処理に対応付けられるI/Oインタフェース25の上限数を、定義ファイル313bに登録しても良い。また、設定データ生成部105は、図3(b)に示すように、特定のコアA301またはコアB302へ割当て不可のI/Oインタフェース25を、定義ファイル313bに登録しても良い。設定データ生成部105は、例えば、受付部101から、ユーザが入力したI/Oインタフェース25の上限数、および割当て不可インタフェースを入力値を取得して、定義ファイル313bに登録する。
送受信部108は、通信インタフェース17および通信路4を介して、コントローラ2との間で情報およびデータを送受信する。例えば、送受信部108は、コンパイラ103がコンパイルしたアプリケーションプログラム311と、設定データ生成部105が生成した設定データ310とを、コントローラ2に送信する。
また、送受信部108は、コントローラ2でアプリケーションプログラム311が起動された場合に、コアA301およびコアB302ごとの動作状態を、コントローラ2から受信する。具体的には、送受信部108は、コントローラ2から、複数の処理をコアA301およびコアB302のそれぞれに割当てた結果、および、I/Oインタフェース25と各処理との対応付けを受信(取得)する。
表示制御部107は、ディスプレイ16の表示内容を制御する。例えば、表示制御部107は、ユーザがアプリケーションプログラム311を生成するために使用するファンクションブロック図や、ラダー図をディスプレイ16に表示する。また、例えば、表示制御部107は、送受信部108から、コントローラ2における複数の処理の、コアA301およびコアB302への割当てと、各処理とI/Oインタフェース25の対応付けとを取得し、ディスプレイ16に表示する。言い換えれば、表示制御部107は、コントローラ2のコアA301およびコアB302の動作状態を監視し、必要に応じて処理の割当てを変更するためのモニタリング画面をユーザに提供する。
表示制御部107がディスプレイ16に表示させる内容について、図6を用いて説明する。図6は、本実施形態にかかるモニタリング画面の一例を示す図である。図6(a)(b)はそれぞれディスプレイ16上に表示されたGUI(Graphical User Interface)の画面である。図6(a)は、コントローラ2の割当部202が複数の処理をコアA301およびコアB302に割当てた結果を示す画面であり、図6(b)は、ユーザによって変更された割当てを示す画面である。
また、図6に示す画面に表示される処理A〜Dは、分割部104が分割した、アプリケーションプログラム311に含まれる複数の処理の一例を示す画像である。処理A〜Dは、アプリケーションプログラム311の起動後にコアA301またはコアB302に割当てられた、実行中あるいは実行準備中の処理である。処理A〜Dは、それぞれ処理が終了すると、画面から順次削除される。また、アプリケーションプログラム311に含まれる他の処理がコアA301またはコアB302に割当てられると、画面に新たに表示される。このため、図6に示す画面は、アプリケーションプログラム311の進行に伴って、表示される処理が変化する。また、図6のI/F#1〜#3は、複数のI/Oインタフェース25a〜cを示す画像である。
図6に示すように、本実施形態の表示制御部107は、処理A〜Dと、処理A〜Dで用いられるI/Oインタフェース25a〜cとを対応付けてディスプレイ16に表示する。表示制御部107は、処理とI/Oインタフェース25との対応付けを、コントローラ2の送信部206が送信した情報を送受信部108から取得する。あるいは、表示制御部107は、処理とI/Oインタフェース25との対応付けを記憶部150に保存された設定データ310から読み出して表示する構成を採用しても良い。
表示制御部107は、ユーザの操作に応じてディスプレイ16上の表示を変更する。例えば、表示制御部107は、複数の処理のうちのいずれかの割当てを、コアA301またはコアB302の一方から他方へ変更するユーザの操作を、受付部101から取得した場合に、ディスプレイ16上の表示を変更する。ユーザの操作とは、例えばドラッグアンドドロップ操作であるが、これに限らない。
例えば、図6(a)に示す例では、コアA301に処理Aおよび処理Bが割当てられ、コアB302に処理Cおよび処理Dが割当てられている。ここで、ユーザが処理BをコアA301からコアB302に移動するドラッグアンドドロップ操作を受付部101が受け付けた場合、表示制御部107は、ディスプレイ16上の表示を図6(b)のように変更する。すなわち、図6(b)に示すように、ディスプレイ16上では、コアA301に処理Aが割当てられ、コアB302に処理B、処理Cおよび処理Dが割当てられているように表示が変更される。また、処理Bに対応付けられたI/F#2(I/Oインタフェース25b)も、処理Bの移動に伴ってコアB302へ移動する。
また、表示制御部107は、受付部101が、分離不可処理を分離する割当て変更の操作を受け付けた場合は、ディスプレイ16上に警告を表示する。ユーザの操作が分離不可処理を分離する割当て変更の操作であるか否かは、後述の割当て変更部106が確認し、表示制御部107に通知をする。図7は、本実施形態にかかる警告表示の一例を示す図である。コアA301に割当てられた処理Xおよび処理Yは、分離不可処理として設定データ310に登録されている。ディスプレイ16上で処理YをコアB302に移動する操作を受付部101が受け付けると、表示制御部107は、ディスプレイ16上に警告を表示する。
警告の例として、表示制御部107は、図7に示すメッセージ901のように「Warning 処理YをコアBに設定不可」等と表示する。あるいは、表示制御部107は、図7に示す処理Yの移動先のコアB302の周辺に、記号900のように当該操作が不適切である旨を示す「/(スラッシュ)」等の記号を表示する。メッセージ901、記号900は警告表示の一例であり、これに限定しない。また、分離不可処理の組み合わせに含まれる複数の処理を全て移動する場合は、表示制御部107は、当該警告は表示しない構成を採用しても良い。例えば、処理Xと処理Yとを共にコアA301からコアB302に移動する場合は、表示制御部107は、当該警告は表示しない。
この他に、表示制御部107は、割当て変更部106が不適切な操作であると判断した場合には、ディスプレイ16に警告を表示する。
図5に戻り、割当て変更部106は、受付部101が受け付けたユーザの操作に応じて、コアA301およびコアB302への処理の割当てを変更する。図6(b)で説明したように、ユーザが、処理BをコアA301からコアB302に移動する操作をした場合、割当て変更部106は、記憶部150に記憶された設定データ310に対して、変更後の処理の割当ての情報を追加する。例えば、割当て変更部106は、図6(b)に示すように、コアA301には処理Aを割当て、コアB302には処理B〜Dを割当てることを、設定データ310に追加する。
本実施形態においては、割当て変更部106は、処理の割当てを変更する場合に、アプリケーションプログラム311自体ではなく、設定データ310を更新するため、アプリケーションプログラム311を修正および再コンパイルすることなく、割当てを変更することができる。
また、割当て変更部106は、設定データ310を更新する前に、ユーザの操作による割当ての変更が適切であるかを確認する。例えば、割当て変更部106は、受付部101が、分離不可処理を分離する割当て変更の操作を受け付けた場合は、当該割当てを変更しない。また、割当て変更部106は、分離不可処理を分離する割当て変更の操作を受け付けた場合に、表示制御部107に通知をする。
また、割当て変更部106は、コアA301およびコアB302のそれぞれに割当てられるI/Oインタフェース25の上限数を超える場合や、割当て不可のI/Oインタフェース25を割当てる操作を受け付けた場合、当該操作は不適切であると判断する。このような場合に、割当て変更部106は、割当てを変更しない。また、割当て変更部106は、表示制御部107に通知をする。
次に、以上のように構成された本実施形態のPC1における、アプリケーションプログラム311および設定データ310の生成処理について説明する。図8は、本実施形態にかかるアプリケーションプログラム311および設定データ310の生成処理の流れの一例を示すフローチャートである。図8のフローチャートの処理は、PC1で行われる。
まず、受付部101は、ユーザが入力した制御プロセスおよび制御内容を受け付ける(S1)。受付部101は、受け付けた制御プロセスおよび制御内容を、プログラム生成部102に送出する。
プログラム生成部102は、受付部101からユーザが入力した制御プロセスおよび制御内容を取得して、コントローラ2で実行するためのアプリケーションプログラム311を生成する(S2)。プログラム生成部102は、生成したアプリケーションプログラム311を、コンパイラ103に送出する。
コンパイラ103は、プログラム生成部102が生成したアプリケーションプログラム311をコンパイルする(S3)。コンパイラ103は、実行形式のアプリケーションプログラム311を、記憶部150に保存する。
分割部104は、実行形式のアプリケーションプログラム311を、複数の処理に分割する(S4)。
設定データ生成部105は、分割部104が分割した処理ごとの定義情報を含む設定データ310を生成する(S5)。この時点では、設定データ310は、各処理を特定可能な定義情報と、各処理で用いられるI/Oインタフェース25を特定する情報と、分離不可処理の組み合わせの情報と、を含む。設定データ生成部105は、生成した設定データ310を、記憶部150に保存する。
送受信部108は、実行形式のアプリケーションプログラム311、および設定データ310を、コントローラ2へ送信する(S6)。
次に、以上のように構成された本実施形態のコントローラ2における制御処理について説明する。図9は、本実施形態にかかるコントローラ2による制御処理の流れの一例を示すフローチャートである。
入力部201は、実行形式のアプリケーションプログラム311および設定データ310を、PC1から、ツールインタフェース24を介して入力する(S10)。入力部201は、入力したアプリケーションプログラム311および設定データ310を記憶部250に保存する。
実行部203は、記憶部250に記憶された実行形式のアプリケーションプログラム311を起動する(S11)。
割当部202は、アプリケーションプログラム311に含まれる処理のうち、実行対象の処理を設定データ310から逐次検索し、コアA301またはコアB302に割当てる。実行部203は、割当てられたコアA301またはコアB302で、設定データ310に登録された各処理を実行する(S12)。
送信部206は、コアA301およびコアB302ごとの動作状態、すなわちコアA301およびコアB302への処理の割当て、および、各処理に紐付くI/Oインタフェース25を、PC1へ送信する(S13)。ここで、PC1のエンジニアリングツール11では、図10に示すモニタリング処理が行われ、場合によってコアA301およびコアB302への処理の割当てが変更される。本実施形態におけるモニタリング処理の詳細は後述する。
PC1のエンジニアリングツール11で、コアA301およびコアB302への処理の割当てが変更された場合、入力部201は、変更後の割当ての情報が追加された設定データ310を入力する。入力部201は、更新された設定データ310を、記憶部250に保存する。入力部201は、記憶部250に記憶された設定データ310を、更新された設定データ310で上書きしても良い。
電源制御部205は、入力部201が、更新された設定データ310を受信したか否かを判断する(S14)。入力部201が、更新された設定データ310を受信した場合(S14“Yes”)、電源制御部205は、コントローラ2をリブートする(S15)。
更新部204は、リブート後に、更新された設定データ310に基づいてコアA301およびコアB302への処理の割当てを更新する(S16)。実行部203は、コアA301およびコアB302への更新された割当てに基づいて、リブート前に実行していた処理を再実行する(S17)。
処理が再実行されると、S13の処理に戻り、送信部206は、コアA301およびコアB302ごとの動作状態をPC1へ送信する(S13)。処理実行中にコアA301およびコアB302への割当てが変更される度に、コントローラ2の各機能部は、S13〜S17の処理を繰り返す。
入力部201が、更新された設定データ310を受信しない場合(S14“No”)、アプリケーションプログラム311の全ての処理が終了するまでは、実行部203が次の処理を順次実行する(S18“No”、S19)。次の処理が実行されると、S13の処理に戻り、送信部206は、コアA301およびコアB302ごとの動作状態をPC1へ送信する(S13)。アプリケーションプログラム311に含まれる全ての処理が終了すると(S18“Yes”)、当該フローチャートの処理は終了する。
次に、PC1で実行されるモニタリング処理について説明する。図10は、本実施形態にかかるモニタリング処理の流れの一例を示すフローチャートである。このフローチャートの処理は、図9のS13でコアA301およびコアB302の動作状態がコントローラ2からPC1へ送信された場合に、開始する。
送受信部108は、コントローラ2から、コアA301およびコアB302ごとの動作状態、すなわち、コアA301およびコアB302への処理の割当て、および、各処理に紐付くI/Oインタフェース25を、複数の処理をコアA301およびコアB302のそれぞれに割当てた結果を受信する(S100)。
表示制御部107は、図6(a)に示すように、コントローラ2のコアA301およびコアB302ごとの動作状態をディスプレイ16に表示する(S101)。表示制御部107は、ディスプレイ16に、コアA301およびコアB302に対する処理A〜Dの割当て、および処理A〜Dに対応付けられたI/Oインタフェース25a〜cを表示し、ユーザに対してコントローラ2の動作状態をモニタリングする画面を提供する。
受付部101が、コアA301およびコアB302への処理の割当ての変更する操作をユーザから受け付けた場合(S102“Yes”)、割当て変更部106および表示制御部107が、割当て変更処理(S103)を実行する。
図11は、本実施形態にかかる割当て変更処理(S103)の流れの一例を示すフローチャートである。まず、受付部101は、ユーザの操作内容を付ける(S201)。すなわち、受付部101は、コアA301またはコアB302に割当てられた処理のいずれかに対して、ディスプレイ16の画面上で移動する操作が入力されたことを受け付ける。受付部101は、割当て変更部106および表示制御部107に、移動対象の処理と、当該処理がコアA301またはコアB302のどちらからどちらへ移動されたかを送出する。
割当て変更部106は、変更対象の処理は、現在のコアA301またはコアB302に割当てられた他の処理と分離可能か否かを判断する(S202)。図6に示す例では、割当て変更部106は、コアA301に割当てられた処理Bが、同じくコアA301に割当てられた処理Aと分離可能か否かを、判断する。割当て変更部106は、各処理が分離可能か否かを、記憶部150の設定データ310に分離不可処理として登録されているか否かによって判断する。
割当て変更部106は、変更対象の処理を、分離可能な処理であると判断した場合(S202“Yes”)、当該変更対象の処理の割当てを変更し、記憶部150に記憶された設定データ310を更新する(S203)。また、割当て変更部106は、表示制御部107に当該変更対象の処理の割当ては変更可能であることを通知する。表示制御部107は、ユーザの操作に応じて、画面上の各処理の表示を変更する。図6に示す例では、表示制御部107は、処理Bの割当てを、コアA301からコアB302へ移動する。
一方、割当て変更部106は、変更対象の処理を、分離不可処理であると判断した場合(S202“No”)、表示制御部107に、当該変更対象の処理Bの割当ては変更不可であることを通知する。表示制御部107は、図7で説明したように、ディスプレイ16上に警告を表示する(S204)。この場合、処理の割当ては変更されない。
ここで図11のフローチャートの割当て変更処理が終了し、図10のモニタリング処理に戻る。割当て変更部106は、コアA301およびコアB302への処理の割当てを変更した場合(S104“Yes”)、変更したことを送受信部108に通知する。送受信部108は、更新された設定データ310を、コントローラ2へ送信する(S105)。
ここで、図10に示すモニタリング処理は終了する。S105で、送受信部108が、更新された設定データ310をコントローラ2へ送信した後は、コントローラ2側で図9のS14の受信処理が行われる。
このように本実施形態のコントローラ2においては、割当部202が、コアA301およびコアB302のそれぞれに対して、複数の処理のいずれかを割当てる。また、本実施形態のコントローラ2によれば、変更後の割当ての情報が追加された設定データ310を入力部201が入力した場合に、電源制御部205がコントローラ2を再起動すると、実行部203が、変更後の割当てに基づいて各処理を実行する。このように、本実施形態のコントローラ2によれば、更新された設定データ310を入力後に再起動することで処理の割当てを変更することができる。すなわち、本実施形態のコントローラ2によれば、処理の実行中にコアA301およびコアB302への割当てを変更して、再度処理を実行することができる。このため、本実施形態のコントローラ2によれば、実際の稼動状況に合わせてコアA301およびコアB302への処理の割当てを迅速に変更することができ、コアA301およびコアB302への処理の割当てをより柔軟に変更することができる。
また、本実施形態のコントローラ2によれば、割当部202が、コアA301およびコアB302のそれぞれに対して、複数の処理のいずれかを割当てるため、処理の割当てがアプリケーションプログラム311によって固定されず、同一のアプリケーションプログラム311を他のコントローラ2に適用することが可能となる。
また、本実施形態のPC1によれば、本実施形態の割当て変更部106は、受付部101が受け付けたユーザの操作に応じて、設定データ310を更新して割当てを変更する。このように、本実施形態の割当て変更部106は、処理の割当てを変更する場合に、アプリケーションプログラム311自体ではなく、設定データ310を更新するため、アプリケーションプログラム311を再コンパイルすることなく、動的かつ迅速に割当てを変更することができる。このため、本実施形態のPC1によれば、コアA301およびコアB302への処理の割当てをより柔軟に変更することができる。
また、本実施形態のPC1の設定データ生成部105が生成する設定データ310は、分離不可処理の組み合わせの情報を含み、割当て変更部106は、受付部101が分離不可処理を分離する割当て変更の操作を受け付けた場合に、当該割当てを変更しない。このため、本実施形態のPC1によれば、コアA301およびコアB302に対して不適切な処理の割当てが行われることを防止することができる。
また、本実施形態のPC1の設定データ生成部105が生成する設定データ310は、各処理とI/Oインタフェース25とを対応付けた情報を含み、表示制御部107は、各処理とI/Oインタフェース25とを対応付けてディスプレイ16に表示する。このため、本実施形態のPC1によれば、ユーザが処理の割当てを変更する際に、同一のI/Oインタフェース25に対応付けられた処理を、異なるコアA301またはコアB302に割当てることを抑制することができる。
また、本実施形態のPC1の受付部101は、ディスプレイ16に表示された複数の処理のうちのいずれかの割当てを、コアA301またはコアB302一方から他方へ変更するドラッグアンドドロップ操作を受け付け、割当て変更部106は、受付部101が受け付けた割当ての変更内容に応じて、設定データ310を更新する。このため、本実施形態のPC1によれば、簡易な操作で処理の割当てを変更することができる画面を、ユーザに対して提供することができる。
本実施形態では、エンジニアリングツール11はPC1が備えるソフトウェアであるとしたが、これに限らない。例えば、エンジニアリングツール11はコントローラ2に接続可能な、専用の管理装置であっても良い。あるいは、エンジニアリングツール11とコントローラ2とは、一体的に形成された1つの装置であっても良い。
本実施形態では、コントローラ2の割当部202は、コアA301およびコアB302に処理を割当てた後に、コアA301およびコアB302に対する処理の割当ての情報を、設定データ310に追加する構成としたが、これに限らない。例えば、割当部202は、コアA301およびコアB302に処理を割当てた結果を保存せず、アプリケーションプログラム311が実行される度に新規に割当てを行う構成を採用しても良い。当該構成を採用する場合、PC1の割当て変更部106が、コアA301およびコアB302への処理の割当てを指定した場合にのみ、当該割当てが設定データ310に保存され、次回以降の実行の際に適用される構成としても良い。
(実施形態2)
実施形態1の制御システムSでは、コアA301およびコアB302ごとに、割り当てられた処理と当該処理が用いるI/Oインタフェース25とを対応付けてディスプレイ16に表示していた。本実施形態の制御システムSは、さらに、各処理によってコアA301およびコアB302にかかる負荷の度合を、PC1のディスプレイ16に表示する。
図12は、本実施形態にかかるコントローラ2の機能的構成の一例を示すブロック図である。図12に示すように、本実施形態のコントローラ2は、入力部201と、割当部202と、実行部203と、更新部204と、電源制御部205と、送信部1206と、負荷検出部207と、記憶部250とを備える。入力部201と、割当部202と、実行部203と、更新部204と、電源制御部205と、記憶部250とは、実施形態1と同様の構成である。
負荷検出部207は、コアA301およびコアB302の負荷の度合を、各処理ごとに検出する。負荷検出部207は、コアA301およびコアB302ごとの負荷の度合を、単位時間当たりに占める各処理の実行時間の割合から算出する。例えば、単位時間を10msとした場合に、コアA301に割当てられた処理Aの実行時間が8msであった場合は、コアA301における処理Aの実行時間の割合は80%となる。単位時間は一定の周期であれば良く、10msに限らない。また、負荷検出部207は、コアA301およびコアB302の負荷の度合を、メモリアクセス回数から算出する構成を採用しても良い。負荷検出部207は、検出した負荷の度合を示す負荷情報を、送信部1206に送出する。
送信部1206は、コアA301およびコアB302ごとの動作状態および負荷情報を、PC1へ送信する。
図13は、本実施形態にかかるPC1の機能的構成の一例を示すブロック図である。図13に示すように、PC1で稼働するソフトウェアであるエンジニアリングツール11は、受付部101と、プログラム生成部102と、コンパイラ103と、分割部104と、設定データ生成部105と、割当て変更部106と、表示制御部1107と、送受信部1108とを備える。また、PC1は、記憶部150を備える。受付部101と、プログラム生成部102と、コンパイラ103と、分割部104と、設定データ生成部105と、割当て変更部106と、記憶部150とは、実施形態1と同様の構成である。
送受信部1108は、実施形態1と同様に、コンパイラ103がコンパイルしたアプリケーションプログラム311と、設定データ生成部105が生成した設定データ310とを、コントローラ2に送信する。また、送受信部1108は、コントローラ2でアプリケーションプログラム311が起動された場合に、コアA301およびコアB302ごとの動作状態に加えて、負荷状態を、コントローラ2から受信する。
表示制御部1107は、送受信部1108から、コントローラ2におけるコアA301およびコアB302への複数の処理の割当てと、負荷情報とを取得し、ディスプレイ16に表示する。言い換えれば、表示制御部1107は、コントローラ2のコアA301およびコアB302の動作状態および負荷情報を監視し、必要に応じて処理の割当てを変更するためのモニタリング画面をユーザに提供する。
図14は、本実施形態にかかるモニタリング画面の一例を示す図である。図14(a)は、ユーザによる処理の割当てが変更される前の画面を示し、図14(b)は、ユーザによる処理の割当てが変更された後の画面を示す。図14に示すように、本実施形態におけるモニタリング画面は、制御プロセス全体を示す画像500と、コアA301およびコアB302に割当てられた、実行済みまたは実行中の処理を表示する画像とを含む。それぞれの画像は、横軸が時間、縦軸が負荷の度合を示す。処理A〜Dは実行順に、各画像の左側から右側へ時系列に表示される。各処理の横幅は単位時間を示し、例えば10msとする。各処理の横幅は一定の周期の時間であれば良く、10msに限らない。
図14(a)では、コアA301には処理Aおよび処理Dが割当てられ、コアB302には処理Bおよび処理Cが割当てられている。しかしながら、処理Bおよび処理Cは同一の単位時間内で実行されるため、当該単位時間において、コアB302における負荷の度合がコアA301と比較して高くなっている。
このような場合に、ユーザがディスプレイ16上で処理CをコアB302からコアA301に移動する操作をしたことを受付部101が受け付けると、割当て変更部106は処理Cの割当てを変更する。表示制御部1107は、ユーザによる操作に応じて、ディスプレイ16上の処理Cの割当てを、コアA301へ変更して表示する。また、図14(b)の例では、処理Cの移動によってコアA301の全体の負荷が高くなるので、ユーザは、さらに処理DをコアB302に移動している。本実施形態では、各処理A〜Dごとの、コアA301およびコアB302の負荷情報が表示されるため、ユーザに対して、より効率の良い処理の割当てを行うための情報を提供することができる。
本実施形態の表示制御部1107は、コアA301およびコアB302の負荷の度合を、横軸が時間、縦軸が負荷の度合を示すグラフで示しているが、これに限らない。例えば、表示制御部1107は、各処理ごとに負荷の度合を数値で表しても良いし、“低”“中”“高”のように段階的に表現しても良い。
表示制御部1107は、処理A〜Dの終了後、所定の時間が経過するとディスプレイ16の表示から順次削除するものとしても良い。また、表示制御部1107は、コアA301およびコアB302に割当てられた実行準備状態の処理も、ディスプレイ16上に表示しても良い。
また、図14では、処理A〜Dに対応付けられたI/Oインタフェース25は不図示であるが、表示制御部1107は、処理A〜Dの負荷の度合を示すグラフ内に、処理A〜Dに対応付けられたI/Oインタフェース25を表示する構成を採用しても良い。あるいは、図6で説明した実施形態1のモニタリング画面と、図14に示すモニタリング画面とを、ユーザが任意に切り替えることができる構成を採用しても良い。
以上のように構成された本実施形態のPC1における、アプリケーションプログラム311および設定データ310の生成処理は、図8で説明した実施形態1のフローチャートと同様である。
図15は、本実施形態にかかる制御処理の全体の流れの一例を示すフローチャートである。S10のアプリケーションプログラム311および設定データ310の入力から、S12の処理のコアA301およびコアB302への割当ておよび実行までは、図9で説明した実施形態1の処理の流れと同様である。
処理の実行が開始されると(S12)、負荷検出部207は、コアA301およびコアB302ごとの、各処理の負荷情報を検出する(S23)。
送信部1206は、コアA301およびコアB302ごとの動作状態と負荷情報を、PC1へ送信する(S24)。ここで、PC1のエンジニアリングツール11では、図16に示すモニタリング処理が行われ、場合によってコアA301およびコアB302への処理の割当てが変更される。本実施形態におけるモニタリング処理の詳細は後述する。
S14の更新された設定データ310の受信の有無の判断から、S19の次の処理の続行については、図9で説明した実施形態1の処理の流れと同様である。実施形態1と同様に、アプリケーションプログラム311に含まれる全ての処理が終了すると(S18“Yes”)、このフローチャートの処理は終了する。
次に、本実施形態のPC1で実行されるモニタリング処理について説明する。図16は、本実施形態にかかるモニタリング処理の流れの一例を示すフローチャートである。
このフローチャートの処理は図15のS24でコアA301およびコアB302ごとの動作状態と負荷情報が、コントローラ2からPC1へ送信された場合に、開始する。
送受信部1108は、コントローラ2から、コアA301およびコアB302ごとの動作状態と負荷情報を受信する(S120)。
表示制御部1107は、図14(a)に示すように、コントローラ2のコアA301およびコアB302ごとの動作状態をディスプレイ16に表示する(S121)。
S102の、ユーザによる割当て変更の操作の受け付けの有無の判断から、S105の更新された設定データ310の送信までは、図10で説明した実施形態1の処理の流れと同様である。
このように、本実施形態におけるPC1によれば、送受信部1108は、複数の処理によってコントローラ2のコアA301およびコアB302のそれぞれにかかる負荷の度合を示す負荷情報を、コントローラ2から取得し、表示制御部1107が、コアA301およびコアB302の負荷の度合をディスプレイ16に表示する。このため、本実施形態におけるPC1によれば、実施形態1と同様の効果を奏する他、ユーザに対して、コアA301およびコアB302への処理の割当てを適切に変更するための情報を提供することができる。
また、本実施形態におけるコントローラ2によれば、負荷検出部207が、コアA301およびコアB302に割当てられた各処理ごとの負荷の度合を検出するため、実施形態1と同様の効果を奏する他、コントローラ2の稼動状況を高精度に検出することができる。
以上説明したとおり、実施形態1、2のPC1およびコントローラ2によれば、コアA301およびコアB302への処理の割当てを、より柔軟に変更することができる。
なお、上述の各実施形態のコントローラ2で実行される制御処理プログラムは、ROM等に予め組み込まれて提供される。上述の各実施形態のコントローラ2で実行される制御処理プログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク、CD−R、DVD等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成しても良い。さらに、上述の各実施形態のコントローラ2で実行される制御処理プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、上述の各実施形態のコントローラ2で実行される制御処理プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
上述の各実施形態のコントローラ2で実行される制御処理プログラムは、上述した各部(入力部、割当部、実行部、更新部、電源制御部、送信部、負荷検出部)を含むモジュール構成となっており、実際のハードウェアとしてはマルチコアCPU20が上記ROMから制御処理プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、入力部、割当部、実行部、更新部、電源制御部、送信部、負荷検出部が主記憶装置上に生成されるようになっている。
上述の各実施形態のPC1で実行されるソフトウェアであるエンジニアリングツール11は、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供される。また、上述の各実施形態のPC1で実行されるエンジニアリングツール11を、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、上述の各実施形態のPC1で実行されるエンジニアリングツール11をインターネット等のネットワーク経由で提供または配布するように構成しても良い。また、上述の各実施形態のエンジニアリングツール11を、ROM等に予め組み込んで提供するように構成しても良い。
上述の各実施形態のPC1で実行されるソフトウェアであるエンジニアリングツール11は、上述した各部(受付部、プログラム生成部、コンパイラ、分割部、設定データ生成部、割当て変更部、表示制御部、送受信部)を含むモジュール構成となっており、実際のハードウェアとしてはCPU13が上記記憶媒体からプログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、受付部、プログラム生成部、コンパイラ、分割部、設定データ生成部、割当て変更部、表示制御部、送受信部が主記憶装置上に生成されるようになっている。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 PC
2 コントローラ
3 I/O機器
11 エンジニアリングツール
16 ディスプレイ(モニタ)
20 マルチコアCPU
24 ツールインタフェース
25,25a〜25c I/Oインタフェース
101 受付部
102 プログラム生成部
103 コンパイラ
104 分割部
105 設定データ生成部
106 割当て変更部
107,1107 表示制御部
108,1108 送受信部
150 記憶部
201 入力部
202 割当部
203 実行部
204 更新部
205 電源制御部
206,1206 送信部
250 記憶部
301 コアA
302 コアB
310 設定データ
311 アプリケーションプログラム
S 制御システム

Claims (6)

  1. 複数のプロセッサコアを備えたプログラマブルコントローラであって、
    前記プログラマブルコントローラの制御対象の装置との間で信号の入出力を行う複数の入出力機器と情報の送受信を行う複数の入出力インタフェースと、
    前記複数のプロセッサコアで実行されるためのアプリケーションプログラムと、前記アプリケーションプログラムに含まれる複数の処理と前記複数の処理の各々が用いる前記複数の入出力インタフェースとが対応付けられた情報を含む設定データとを、前記プログラマブルコントローラに接続された管理装置から入力する入力部と、
    前記アプリケーションプログラムを起動する実行部と、
    前記実行部によって前記アプリケーションプログラムが起動された場合に、前記アプリケーションプログラムに含まれる処理のうち、実行対象の処理を前記設定データから逐次検索し、前記複数のプロセッサコアのそれぞれに対して、前記複数の処理のいずれかを割当てる割当部と、
    前記複数のプロセッサコアと前記複数の処理の割当て結果を、前記管理装置に送信する送信部と、
    前記管理装置で前記複数のプロセッサコアに対する前記複数の処理の割当てが変更され、変更後の前記割当ての情報が追加された前記設定データを前記入力部が入力した場合に再起動を行う電源制御部と、
    前記再起動の後に前記設定データに基づいて前記複数のプロセッサコアへの割当てを更新する更新部と、を備え、
    前記実行部は、前記割当部による前記複数のプロセッサコアへの前記複数の処理の前記割当てに基づいて前記複数の処理を実行し、前記割当てが変更された場合は、変更後の前記割当てに基づいて前記複数の処理を実行し、
    前記割当部は、前記設定データに基づいて、前記複数の処理のうち、同一の入出力インタフェースを用いる処理を、前記複数のプロセッサコアのうちの同一のプロセッサコアに優先的に割り当てる、
    プログラマブルコントローラ。
  2. プログラマブルコントローラで実行されるためのアプリケーションプログラムに含まれる複数の処理と、前記プログラマブルコントローラの制御対象の装置との間で信号の入出力を行う複数の入出力機器と情報の送受信を行う複数の入出力インタフェースとが対応付けられた情報を含む設定データを生成する設定データ生成部と、
    前記アプリケーションプログラムと前記設定データとを前記プログラマブルコントローラに送信し、前記プログラマブルコントローラで前記アプリケーションプログラムが起動された場合に、前記プログラマブルコントローラの複数のプロセッサコアのそれぞれへの、実行中の前記アプリケーションプログラムに含まれる前記複数の処理の割当てを、前記プログラマブルコントローラから取得する送受信部と、
    前記複数の処理の前記複数のプロセッサコアへの割当てと、前記複数の処理と前記複数の入出力インタフェースの対応付けとを表示部に表示する表示制御部と、
    前記割当てを変更するユーザの操作を受け付ける受付部と、
    前記受付部が受け付けた操作に応じて、前記設定データを更新して前記割当てを変更する割当て変更部と、
    を備える管理装置。
  3. 前記設定データは、前記複数の処理のうち、異なるプロセッサコアに割当てることができない複数の処理である分離不可処理の組み合わせの情報を含み、
    前記割当て変更部は、前記受付部が、前記分離不可処理を分離する割当て変更の操作を受け付けた場合、当該割当てを変更しない、
    請求項2に記載の管理装置。
  4. 前記受付部は、前記表示制御部が、前記表示部に表示した前記複数の処理のうちのいずれかの割当てを、一のプロセッサコアから他のプロセッサコアへ変更するドラッグアンドドロップ操作を受け付け、
    前記割当て変更部は、前記受付部が受け付けた割当ての変更内容に応じて、前記設定データを更新する、
    請求項2または3に記載の管理装置。
  5. 前記送受信部は、前記複数の処理によって前記プログラマブルコントローラの前記複数のプロセッサコアのそれぞれにかかる負荷の度合を示す負荷情報を、前記プログラマブルコントローラから取得し、
    前記表示制御部は、前記複数のプロセッサコアに割当てられた前記複数の処理のそれぞれの負荷の度合を前記表示部に表示する、
    請求項2から4のいずれか1項に記載の管理装置。
  6. プログラマブルコントローラと管理装置とを備えた制御システムであって、
    前記プログラマブルコントローラは、
    複数のプロセッサコアと、
    前記プログラマブルコントローラの制御対象の装置との間で信号の入出力を行う複数の入出力機器と情報の送受信を行う複数の入出力インタフェースと、
    前記複数のプロセッサコアで実行されるためのアプリケーションプログラムと、前記アプリケーションプログラムに含まれる複数の処理と前記複数の処理の各々が用いる前記複数の入出力インタフェースとが対応付けられた情報を含む設定データとを、前記プログラマブルコントローラに接続された管理装置から入力する入力部と、
    前記アプリケーションプログラムを起動する実行部と、
    前記実行部によって前記アプリケーションプログラムが起動された場合に、前記アプリケーションプログラムに含まれる処理のうち、実行対象の処理を前記設定データから逐次検索し、
    前記複数のプロセッサコアのそれぞれに対して、前記複数の処理のいずれかを割当てる割当部と、
    前記複数のプロセッサコアと前記複数の処理の割当て結果を、前記管理装置に送信する送信部と、
    前記管理装置で前記複数のプロセッサコアに対する前記複数の処理の割当てが変更され、変更後の前記割当ての情報が追加された前記設定データを前記入力部が入力した場合に再起動を行う電源制御部と、
    前記再起動の後に前記設定データに基づいて前記複数のプロセッサコアへの割当てを更新する更新部と、を備え、
    前記実行部は、前記割当部による前記複数のプロセッサコアへの前記複数の処理の前記割当てに基づいて前記複数の処理を実行し、前記割当てが変更された場合は、変更後の前記割当てに基づいて前記複数の処理を実行し、
    前記割当部は、前記設定データに基づいて、前記複数の処理のうち、同一の入出力インタフェースを用いる処理を、前記複数のプロセッサコアのうちの同一のプロセッサコアに優先的に割り当て、
    前記管理装置は、
    前記設定データを生成する設定データ生成部と、
    前記プログラマブルコントローラの前記複数のプロセッサコアのそれぞれへの前記複数の処理の割当てを、前記プログラマブルコントローラから取得する送受信部と、
    前記複数の処理の前記複数のプロセッサコアへの割当てを表示部に表示する表示制御部と、
    前記割当てを変更するユーザの操作を受け付ける受付部と、
    前記受付部が受け付けた操作に応じて、前記割当てを変更する割当て変更部と、
    を備える制御システム。
JP2016252441A 2016-12-27 2016-12-27 プログラマブルコントローラ、管理装置および制御システム Active JP6879625B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2016252441A JP6879625B2 (ja) 2016-12-27 2016-12-27 プログラマブルコントローラ、管理装置および制御システム
CN201780080671.5A CN110114732B (zh) 2016-12-27 2017-12-04 可编程控制器、管理装置和控制系统
PCT/JP2017/043532 WO2018123456A1 (ja) 2016-12-27 2017-12-04 プログラマブルコントローラ、管理装置および制御システム
US16/473,421 US10956238B2 (en) 2016-12-27 2017-12-04 Programmable controller, management device, and control system
KR1020197017786A KR102258542B1 (ko) 2016-12-27 2017-12-04 프로그래머블 컨트롤러, 관리 장치 및 제어 시스템
TW106145280A TWI664509B (zh) 2016-12-27 2017-12-22 可程式控制器、管理裝置及控制系統

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016252441A JP6879625B2 (ja) 2016-12-27 2016-12-27 プログラマブルコントローラ、管理装置および制御システム

Publications (2)

Publication Number Publication Date
JP2018106440A JP2018106440A (ja) 2018-07-05
JP6879625B2 true JP6879625B2 (ja) 2021-06-02

Family

ID=62710938

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016252441A Active JP6879625B2 (ja) 2016-12-27 2016-12-27 プログラマブルコントローラ、管理装置および制御システム

Country Status (6)

Country Link
US (1) US10956238B2 (ja)
JP (1) JP6879625B2 (ja)
KR (1) KR102258542B1 (ja)
CN (1) CN110114732B (ja)
TW (1) TWI664509B (ja)
WO (1) WO2018123456A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7141905B2 (ja) * 2018-10-12 2022-09-26 株式会社日立産機システム コントロール装置及びコントロール方法
US20220075349A1 (en) * 2020-09-08 2022-03-10 Delta Tau Data Systems, Inc. Method and apparatus for multi-core processor management in a motion control system
WO2022137525A1 (ja) 2020-12-25 2022-06-30 株式会社ジーベックテクノロジー 研磨具ホルダの制御方法、研磨具ホルダ、および研磨工具
JP7318829B2 (ja) * 2021-07-09 2023-08-01 株式会社安川電機 生産システム、プログラム作成装置、生産方法、及びプログラム

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003295910A (ja) * 2002-03-29 2003-10-17 Omron Corp ユニット及びツール機器並びにプログラム製品
JP2007018268A (ja) * 2005-07-07 2007-01-25 Sumitomo Heavy Ind Ltd タスクスケジューリング方法、タスクスケジューリング装置、及びタスクスケジューリングプログラム
JP4582414B2 (ja) 2005-09-29 2010-11-17 横河電機株式会社 プログラム管理装置
WO2010010723A1 (ja) * 2008-07-22 2010-01-28 トヨタ自動車株式会社 マルチコアシステム、車両用電子制御ユニット、タスク切り替え方法
US9703595B2 (en) * 2008-10-02 2017-07-11 Mindspeed Technologies, Llc Multi-core system with central transaction control
JP2010218445A (ja) * 2009-03-18 2010-09-30 Toshiba Corp マルチコアプロセッサシステム、スケジューリング方法およびスケジューラプログラム
JP5444112B2 (ja) * 2010-04-30 2014-03-19 株式会社東芝 プラント制御システムおよびプログラムリロケート方法
EP2581834A4 (en) * 2010-06-14 2014-12-31 Fujitsu Ltd MULTICULTURAL PROCESSOR SYSTEM, INTERMEDIATE COHERENCE CONTROL PROCEDURE, AND INTERMEDIATE COHERENCE CONTROL PROGRAM
JP5505501B2 (ja) * 2010-06-22 2014-05-28 富士通株式会社 マルチコアプロセッサシステム、制御プログラム、および制御方法
US8880381B2 (en) * 2010-10-01 2014-11-04 The Boeing Company Optimization of processor characteristics and large scale system optimization through domain decomposition
JP2012108576A (ja) * 2010-11-15 2012-06-07 Toyota Motor Corp マルチコアプロセッサ、処理実行方法、プログラム
JP2012141722A (ja) 2010-12-28 2012-07-26 Mitsubishi Electric Corp 設定装置
CN102096390B (zh) * 2011-01-30 2014-04-09 深圳市合信自动化技术有限公司 可编程逻辑控制器、组态程序编译器及方法
JP6213053B2 (ja) 2012-09-04 2017-10-18 富士通株式会社 プログラム、情報処理装置およびスケジュール決定方法
JP2014081765A (ja) * 2012-10-16 2014-05-08 Nippon Telegr & Teleph Corp <Ntt> 負荷分散装置、負荷分散方法および負荷分散プログラム
KR101689099B1 (ko) 2013-04-04 2016-12-22 미쓰비시덴키 가부시키가이샤 엔지니어링 툴 및 프로그래머블 로직 컨트롤러
JP6252140B2 (ja) 2013-11-29 2017-12-27 富士通株式会社 タスク割り付けプログラム及びタスク割り付け方法
JP6203691B2 (ja) * 2014-08-29 2017-09-27 ファナック株式会社 複数軸の軸制御処理を分散して実行可能な数値制御装置
US20160091882A1 (en) * 2014-09-29 2016-03-31 Siemens Aktiengesellschaft System and method of multi-core based software execution for programmable logic controllers
JP6430223B2 (ja) * 2014-11-26 2018-11-28 株式会社東芝 通信装置、遠隔制御方法、コンピュータプログラム及び遠隔制御システム

Also Published As

Publication number Publication date
WO2018123456A1 (ja) 2018-07-05
CN110114732A (zh) 2019-08-09
KR20190087520A (ko) 2019-07-24
TWI664509B (zh) 2019-07-01
US10956238B2 (en) 2021-03-23
CN110114732B (zh) 2022-02-25
TW201832029A (zh) 2018-09-01
US20200151033A1 (en) 2020-05-14
JP2018106440A (ja) 2018-07-05
KR102258542B1 (ko) 2021-05-28

Similar Documents

Publication Publication Date Title
JP6879625B2 (ja) プログラマブルコントローラ、管理装置および制御システム
US9110843B2 (en) Rack and method thereof for simultaneously updating basic input output systems
TWI534569B (zh) 控制裝置、開發裝置,及開發程式
EP3979148A1 (en) Method and system for displaying machine learning automatic modeling procedure
KR102280116B1 (ko) 엔지니어링 장치, 엔지니어링 장치의 제어 방법 및 프로그램
CN111290768A (zh) 一种容器化应用系统的更新方法、装置、设备和介质
CN110895490A (zh) 一种数据批量处理系统、方法、设备和存储介质
JP7085305B2 (ja) コントロールシステム及びコントロール方法
JP6239400B2 (ja) 制御装置
JP6496058B1 (ja) エンジニアリングツール、コントローラ、および制御システム
CN115277398A (zh) 一种集群的网络配置方法和装置
EP3819758A2 (en) Instruction executing method and apparatus, electronic device, and computer-readable storage medium
JP7364388B2 (ja) 制御システム
CN110737533B (zh) 一种任务调度方法、装置及电子设备和存储介质
JP2009116618A (ja) 情報処理装置
CN113051122B (zh) 性能数据获取方法、装置、电子设备和介质
CN105320030B (zh) 工程装置、工程系统以及下载处理方法
US20150100825A1 (en) Information processing device and method
JPWO2016166799A1 (ja) 制御システム及びプログラマブルロジックコントローラ
JP7447186B2 (ja) 計算機システム及び仮想化基盤の構築制御方法
JP2022178916A (ja) 機械学習システム、機械学習プログラム、及び、機械学習方法
CN113742122A (zh) 异常处理方法、装置、存储介质及电子设备
JP2019152911A (ja) 情報処理装置、情報処理方法およびコンピュータプログラム
JP5177083B2 (ja) ソースコード自動生成プログラム,ソースコード自動生成装置
US20170090985A1 (en) Non-invasive live repairs and deployments

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20171018

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20171019

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20171018

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20171019

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200609

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200806

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201117

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210115

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: 20210330

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210427

R150 Certificate of patent or registration of utility model

Ref document number: 6879625

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150