JP7124023B2 - コントローラ - Google Patents
コントローラ Download PDFInfo
- Publication number
- JP7124023B2 JP7124023B2 JP2020156097A JP2020156097A JP7124023B2 JP 7124023 B2 JP7124023 B2 JP 7124023B2 JP 2020156097 A JP2020156097 A JP 2020156097A JP 2020156097 A JP2020156097 A JP 2020156097A JP 7124023 B2 JP7124023 B2 JP 7124023B2
- Authority
- JP
- Japan
- Prior art keywords
- access
- processing
- request data
- access request
- output
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/042—Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
- G05B19/0423—Input/output
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/042—Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Systems (AREA)
- Programmable Controllers (AREA)
- Valve Device For Special Equipments (AREA)
- Control Of Throttle Valves Provided In The Intake System Or In The Exhaust System (AREA)
- Hardware Redundancy (AREA)
Description
本発明の実施形態は、コントローラに関する。
従来から、産業プラントにおける機器群に接続される入出力装置と接続され、CPU(Central Processing Unit)モジュールを備えるコントローラがある。また、近年は、CPUのマルチコア化が進み、複数のCPUコアのそれぞれでコントローラプロセスを実行し、それぞれのコントローラプロセスによって同一の入出力装置にアクセスする構成もある。
CPUコアが実行するコントローラプロセスは、制御対象機器の時間的制約からリアルタイム性が求められ、定周期でタスク処理を実現する。また、CPUコアは、コントローラプロセスによって、定周期処理の前段では、演算の対象となるI/Oデータの入出力処理を行っている。
しかしながら、従来技術において、1つのコントローラプロセスから入出力処理で入出力装置にアクセスしている場合、他のコントローラプロセスはその入出力装置にアクセスできないので待たされる。このように、コントローラプロセスの待ち時間が発生し、入出力処理が遅延すると、タスク処理も遅延するので、リアルタイム性の点で改善の余地がある。
そこで、本発明の実施形態の課題は、産業プラントにおける機器群に接続される入出力装置と接続され、所定の処理単位で処理を実行する複数の処理部から入出力装置へのアクセスの待ち時間を低減することができるコントローラを提供することである。
実施形態のコントローラは、産業プラントにおける機器群に接続される入出力装置と接続され、所定の処理単位で処理を実行する複数の処理部を備えるコントローラであって、それぞれの前記処理部は、アクセス要求データの送信先である前記入出力装置に対するアクセスの待ち時間と、前記アクセス要求データに従って出力を要求するデータを分割するか否かを決定するためのデータサイズの閾値であるアクセス分割サイズ閾値と、の対応関係を示す分割テーブルを記憶する分割テーブル記憶部と、前記分割テーブルを参照して、出力予定のアクセス要求データに従って出力を要求するデータのサイズが、現在の前記アクセスの待ち時間に対応する前記アクセス分割サイズ閾値よりも大きい場合、当該出力を要求するデータを前記アクセス分割サイズ閾値以下のサイズに分割して前記アクセス要求データを更新する分割部と、所定の周期でタスク処理部によって実行されるタスク処理の前段の入出力処理で、前記アクセス要求データを前記入出力装置に対して出力する際に、前記分割部によって前記アクセス要求データが更新された場合には、更新された前記アクセス要求データを前記入出力装置に対して出力する出力処理部と、前記入出力装置から前記アクセス要求データに対応するデータを入力する入力処理部と、を備える。
以下、本発明のコントローラの実施形態について、図面を参照して説明する。
(第1実施形態)
図1は、第1実施形態の制御システムSの全体構成の一例を示す図である。本実施形態の制御システムSは、例えば、産業プラントに適用されるシステムである。図1に示すように、制御システムSは、PC(Personal Computer)1と、コントローラ2と、を備える。
図1は、第1実施形態の制御システムSの全体構成の一例を示す図である。本実施形態の制御システムSは、例えば、産業プラントに適用されるシステムである。図1に示すように、制御システムSは、PC(Personal Computer)1と、コントローラ2と、を備える。
PC1は、ユーザが、コントローラ2で実行するアプリケーションプログラムの生成や、コントローラ2の稼動状況をモニタリングするために用いるコンピュータである。PC1は、ソフトウェアであるエンジニアリングツール11を有する。エンジニアリングツール11は、制御システムSに関するシステム構築、プログラミング、モニタリング、情報収集、監視等を行うソフトウェアである。PC1は、エンジニアリングツール11の機能によってコントローラ2を管理する。
コントローラ2は、産業プラントにおける機器群に接続されるI/O機器3(入出力装置)と通信路5で接続され、所定の処理単位(例えばスレッド単位)で処理を実行する複数の処理部(例えばCPUコア)を備える。コントローラ2は、マルチコアCPU20、21、RAM(Random Access Memory)22、HDD(Hard Disk Drive)23、ツールインタフェース24、I/Oインタフェース25、および、バス26を備える。
マルチコアCPU20、21は、複数のCPUコア(以下、単に「コアともいう。)を有するCPUである。マルチコアCPU20は、コアA301およびコアB302を備える。マルチコアCPU21は、コアC303およびコアD304を備える。なお、マルチコアCPU20、21それぞれが有するコアの数は一例であり、2つに限らない。マルチコアCPU20、21は、コントローラ2全体を制御する。RAM22は、マルチコアCPU20、21の動作領域であり、書き込み可能な記憶媒体である。
HDD23は、制御ソフトウェア、ブート処理プログラム、アプリケーションプログラム、OS(Operating System)等を記憶する。
ツールインタフェース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の数は異なる。ただし、以下では、一組のI/O機器3およびI/Oインタフェース25に着目して説明する。
図2は、第1実施形態のコントローラ2の機能構成の一例を示すブロック図である。コントローラ2は、マルチコアCPU20のコアA301によって動作するコントローラプロセスとして、コントローラスレッド41Aを実現する。また、コントローラ2は、マルチコアCPU20のコアB302によって動作するコントローラプロセスとして、コントローラスレッド41Bを実現する。以下、コントローラスレッド41A、41Bのうち、主に代表してコントローラスレッド41Aについて説明する。
さらに、コントローラ2は、マルチコアCPU21のコアC303によって動作するコントローラプロセスとして、コントローラスレッド41Cを実現する。また、マルチコアCPU21のコアD304によって動作するコントローラプロセスとして、コントローラスレッド41Dを実現する。
コントローラスレッド41Aは、機能構成として、入力処理部421と、出力処理部422と、ドライバAPI(Application Program Interface)43と、を備える。ドライバAPI43は、取得部430と、タスク処理部431と、分割部432と、変更部433と、調整部434と、分割テーブル記憶部435と、処理優先度閾値記憶部436と、を備える。なお、コントローラスレッド41B、41C、41Dも、コントローラスレッド41Aと同様の構成を備えているものとして、説明を省略する。
分割テーブル記憶部435と処理優先度閾値記憶部436は、例えば、RAM22(図1)、HDD23(図1)によって実現される(詳細は後述)。
分割テーブル記憶部435は、I/O機器3に対するアクセスの待ち時間と、出力予定のアクセス要求データに従って出力を要求するデータを分割するか否かを決定するためのデータサイズの閾値であるアクセス分割サイズ閾値と、の対応関係を示す分割テーブルを記憶する。
ここで、図3は、第1実施形態の分割テーブルの一例を示す図である。分割テーブルは、アクセスの待ち時間ごとにアクセス分割サイズ閾値が定義されたテーブルである。例えば、アクセスの待ち時間が長いほど、アクセス分割サイズ閾値は小さい。
図2に戻って、入力処理部421は、各種情報の入力処理を行う。入力処理部421は、例えば、I/O機器3からアクセス要求データに対応するデータを入力する。
出力処理部422は、各種情報の出力処理を行う。出力処理部422は、例えば、所定の周期でタスク処理部431によって実行されるタスク処理の前段の入出力処理でアクセス要求データをI/O機器3に対して出力する。その際に、出力処理部422は、アクセス要求データが分割部432によって更新されたときは、更新されたアクセス要求データをI/O機器3に対して出力する。出力を要求するデータの残りについても必要に応じて分割部432で更新し、I/O機器3に対して出力を要求する。
取得部430は、コントローラスレッド41や、デバイスドライバ52や、I/O機器3などから、各種情報を取得する。
タスク処理部431は、I/O機器3から取得したデータに基づいて所定のタスク処理を行う。
分割部432は、分割テーブル記憶部435に記憶されている分割テーブルを参照して、出力予定のアクセス要求データに従って出力を要求するデータのサイズが、現在のアクセスの待ち時間に対応するアクセス分割サイズ閾値よりも大きい場合、当該出力を要求するデータをアクセス分割サイズ閾値以下のサイズに分割してアクセス要求データを更新する。
また、コントローラ2は、統計情報記憶部210を記憶する。統計情報記憶部210は、例えば、RAM22(図1)、HDD23(図1)によって実現される。統計情報記憶部210は、I/O機器3に対するアクセス要求データの平均待ち時間と、アクセス要求データの平均処理時間と、を含む統計情報を記憶する。
例えば、図7のIOCTL統計情報55は、統計情報の一例である。IOCTL統計情報55は、CPUコアA~D毎のIOCTL平均待ち時間551と、全体IOCTL平均待ち時間552と、CPUコアA~D毎のIOCTL平均処理時間553と、全体IOCTL平均処理時間554と、を含む情報である。
図2に戻って、変更部433は、分割テーブルにおけるアクセス分割サイズ閾値を変更する。変更部433は、例えば、統計情報記憶部210に記憶されている統計情報(図7のIOCTL統計情報55)に基づいて、分割テーブルにおけるアクセス分割サイズ閾値を変更する(詳細は後述)。調整部434については、第3実施形態で説明する。
図4は、第1実施形態のCPUコアによる処理の一例を示すフローチャートである。なお、コアA301、コアB302、コアC303、コアD304のそれぞれが図4の処理を行うが、代表してコアA301を動作主体とする。
コアA301がアクセス要求データをI/O機器3に送信(出力)する場合、まず、ステップS101において、分割部432は、分割テーブル記憶部435に記憶されている分割テーブルを参照して、出力予定のアクセス要求データに従って出力を要求するデータのサイズが、現在のアクセスの待ち時間に対応するアクセス分割サイズ閾値よりも大きいか否かを判定し、Yesの場合はステップS102に進み、Noの場合はステップS103に進む。
ステップS102において、分割部432は、アクセス要求データに従って出力を要求するデータをアクセス分割サイズ閾値以下のサイズに分割してアクセス要求データを更新する。そして、ステップS103において、出力処理部422は、I/O機器3にアクセス要求データを出力する。ステップS102を経由している場合、出力処理部422は、I/O機器3に、ステップS102で更新されたアクセス要求データを出力する。
以下、さらに具体的な例について説明する。図5は、第1実施形態におけるCPUコアの入出力処理の説明図である。コントローラ2において、RAM22にユーザプロセス空間40とOS50によるカーネル空間51が生成される。そして、ユーザプロセス空間40において、CPUモジュール上で動作するコントローラプロセスは、複数のコントローラスレッド41A、41B、41C、41Dに分割されている。例えば、コアA301がコントローラスレッド41Aを実現し、コアB302がコントローラスレッド41Bを実現し、コアC303がコントローラスレッド41Cを実現し、コアD304がコントローラスレッド41Dを実現する。
なお、本実施形態では、2つのマルチコアCPU20、21に搭載された2つずつのコア(コアA~D)によって各コントローラスレッドを実現するものとしたが、これに限定されない。例えば、各コントローラスレッドは、1つのマルチコアCPUに搭載された4つのコアによって実現してもよいし、あるいは、CPU自体が4つに分離しているマルチプロセッサ構成によって実現してもよい。また、処理単位は、コントローラスレッド単位に限定されず、例えば、コントローラプロセス単位であってもよい。
以下、説明を簡潔にするために、コントローラスレッドを動作主体として記載する場合がある。また、コントローラスレッド41A、41B、41C、41Dについて、同様の動作を行う場合には、代表してコントローラスレッド41Aについて説明する場合がある。また、コントローラスレッドを単に「スレッド」ともいう。
コントローラスレッド41Aは、設定された制御周期に従ったタスク実行時間となるようにタスク実行処理を周期的に繰り返し実施する。ここで、図9は、第1実施形態のタスク実行処理の説明図である。図9に示すように、タスク実行処理91は、入出力処理92と、タスク処理93と、同期処理94と、から構成される。このようなタスク実行処理91が周期的に繰り返される。
図5に戻って、コントローラスレッド41Aは、入出力処理92(図9)でI/O機器3にアクセスする場合、ドライバAPI43によってデバイスドライバ52にIOCTL(システムコール)を発行する。これを受けて、デバイスドライバ52は、IOCTL処理によってI/O機器3へアクセスを行う。
また、デバイスドライバ52は、デバイスオブジェクト53と、ドライバオブジェクト56と、を有する。デバイスオブジェクト53は、IOCTL待ちキュー54と、IOCTL統計情報55と、を有する。
ドライバオブジェクト56は、IOCTLエントリ57を有する。IOCTLエントリ57は、PIO(Programmed I/O)読み出し、PIO書き込み、DMA(Direct Memory Access)読み出し、DMA書き込みなどの情報を記憶する。
デバイスドライバ52は、I/O機器3へのアクセスを開始した後は、アクセスを中断することができない。つまり、デバイスドライバ52が一つのスレッドのIOCTL処理を実施中、他のスレッドのIOCTL処理はIOCTL待ちキュー54に格納されて待たされる。
デバイスドライバ52は、処理中であったIOCTL処理が終了すると、IOCTL待ちキュー54の先頭のスレッドをデキューし、IOCTL処理を開始する。また、デバイスドライバ52の処理は、他スレッドへの実行の切り替えを禁止した状態で実施する。したがって、IOCTL処理の待ち時間が増えると、コントローラスレッドのスキャン実行時間の遅延につながる。
ドライバAPI43は、アクセス分割サイズ閾値を含む分割テーブル(図3)を保持している。以下、図6も併せて参照する。図6は、第1実施形態におけるCPUコアのアクセス要求データの分割処理の説明図である。なお、スレッド優先度閾値64については第2実施形態で説明する。
ドライバAPI43は、コントローラスレッド41からドライバAPI43の関数呼び出しがあった時(図6のS1)、要求アクセスサイズ61(アクセス要求データに従って出力を要求するデータのサイズ)を残りアクセスサイズ63に保存する。
次に、ドライバAPI43は、要求アクセスサイズ61とアクセス分割サイズ閾値62(図3参照)を比較し、要求アクセスサイズ61がアクセス分割サイズ閾値62より大きい場合は、要求アクセスサイズ61をアクセス分割サイズ閾値62のサイズに変更し(図6のS2)、デバイスドライバ52へIOCTL処理を要求する(図6のS3)。
デバイスドライバ52の処理が完了し、ドライバAPI43に動作が復帰した時(図6のS4の後)、ドライバAPI43は、残りアクセスサイズ63から要求アクセスサイズ61を減算し、残りアクセスサイズ63が存在する場合は、残りアクセスサイズ63を要求アクセスサイズ61とし、デバイスドライバ52へIOCTL処理の要求を繰り返し実行する。
また、デバイスドライバ52の動作が完了し、ドライバAPI43に動作が復帰すると、他の実行優先度が高いスレッドへの実行の切り替えが可能となる。前記のようにコントローラスレッド41からI/O機器3へのアクセス要求データに従って出力を要求するデータをドライバAPI43でアクセス分割サイズ閾値62以下のアクセスサイズに分割してアクセス要求データを更新して、デバイスドライバ52に要求することで、コントローラスレッド41間のI/O機器3へのアクセスの競合時に、実行優先度の高いコントローラスレッド41が、実行優先度の低いコントローラスレッド41のために待たされる時間を低減することができる。また、図6のS4の後、ドライバAPI43からコントローラスレッド41にI/O機器3からのデータが渡される(図6のS5)。
以下、図7、図8も併せて参照する。図7は、第1実施形態におけるIOCTL統計情報の取得処理の説明図である。図8は、第1実施形態におけるアクセス分割サイズ閾値の設定処理の説明図である。ドライバAPI43は、アクセス分割サイズ閾値設定API72(変更部433)を具備しており、コントローラスレッド41がアクセス分割サイズ閾値設定API72を呼び出した時(図8のS21、S22)、アクセス分割サイズ閾値設定API72はパラメータで指定された値をアクセス分割サイズ閾値62に設定する。これにより、コントローラスレッド41がタスク処理93(図9)を開始しているRUN状態においてもアクセス分割サイズ閾値62を動的に変更することが可能となる。また、図8に示すように、ドライバAPI43はIOCTL平均待ち時間取得API81(取得部430)を具備している。
また、アクセス分割サイズ閾値62は、より具体的に、以下のようにして変更することができる。図7に示すように、デバイスドライバ52は、IOCTL統計情報55として、CPUコアA~D毎のIOCTL平均待ち時間551と全体IOCTL平均待ち時間552とCPUコアA~D毎のIOCTL平均処理時間553と全体IOCTL平均処理時間554とを含む情報を保持しており、IOCTL処理の終了時にIOCTL統計情報55の更新を行う。
また、ドライバAPI43は、IOCTL統計情報取得API71(取得部430)を具備しており、コントローラスレッド41からIOCTL統計情報の取得を要求された時に(図7のS11)、デバイスドライバ52で保持しているIOCTL統計情報55を取得し(図7のS12、S13)、コントローラスレッド41に応答する(図7のS14)。これにより、コントローラスレッド41は、IOCTL統計情報55を認識することができる。
コントローラスレッド41のアクセス分割サイズ閾値設定API72は、前記機能を使用して認識した全体IOCTL平均待ち時間552と全体IOCTL平均処理時間554と、コントローラスレッド41のタスク実行時間(図9のタスク実行処理91の時間)に応じてあらかじめ設定されているIOCTL処理の上限時間から適切なアクセス分割サイズ閾値62を算出し、アクセス分割サイズ閾値62をRUN状態において動的に変更することが可能となる。
このように、第1実施形態のコントローラ2によれば、I/O機器3へのアクセス要求データを、出力を要求するデータのサイズが現在のアクセスの待ち時間に対応するアクセス分割サイズ閾値よりも大きい場合に、当該サイズがアクセス分割サイズ閾値以下のサイズになるように分割してアクセス要求データを更新することで、アクセスの待ち時間を低減することができる。
また、アクセス分割サイズ閾値を、動的、かつ、統計情報に基づいて適切な値に変更することができる。
(第2実施形態)
次に、第2実施形態について説明する。第1実施形態と同様の事項については、説明を適宜省略する。図2において、分割部432は、分割テーブル記憶部435の分割テーブルを参照して、出力予定のアクセス要求データに従って出力を要求するデータのサイズが現在のアクセスの待ち時間に対応するアクセス分割サイズ閾値よりも大きい場合であって、かつ、アクセス要求データの処理の優先度が処理優先度閾値記憶部436(図2)に記憶された当該処理に対応する優先度閾値(図6のスレッド優先度閾値64)以下の場合に、アクセス要求データに従って出力を要求するデータをアクセス分割サイズ閾値以下のサイズに分割してアクセス要求データを更新する。
次に、第2実施形態について説明する。第1実施形態と同様の事項については、説明を適宜省略する。図2において、分割部432は、分割テーブル記憶部435の分割テーブルを参照して、出力予定のアクセス要求データに従って出力を要求するデータのサイズが現在のアクセスの待ち時間に対応するアクセス分割サイズ閾値よりも大きい場合であって、かつ、アクセス要求データの処理の優先度が処理優先度閾値記憶部436(図2)に記憶された当該処理に対応する優先度閾値(図6のスレッド優先度閾値64)以下の場合に、アクセス要求データに従って出力を要求するデータをアクセス分割サイズ閾値以下のサイズに分割してアクセス要求データを更新する。
図10は、第2実施形態のCPUコアによる処理の一例を示すフローチャートである。図4の場合と同様、代表してコアA301を動作主体とする。
コアA301がアクセス要求データをI/O機器3に送信(出力)する場合、まず、ステップS100において、分割部432は、処理優先度閾値記憶部436を参照して、処理対象のスレッドの優先度が優先度閾値以下であるか否かを判定し、Yesの場合はステップS101に進み、Noの場合はステップS103に進む。
ステップS101において、分割部432は、分割テーブル記憶部435に記憶されている分割テーブルを参照して、アクセス要求データに従って出力を要求するデータのサイズが、現在のアクセスの待ち時間に対応するアクセス分割サイズ閾値よりも大きいか否かを判定し、Yesの場合はステップS102に進み、Noの場合はステップS103に進む。
ステップS102において、分割部432は、アクセス要求データに従って出力を要求するデータをアクセス分割サイズ閾値以下のサイズに分割してアクセス要求データを更新する。そして、ステップS103において、出力処理部422は、I/O機器3に対してアクセス要求データを出力する。ステップS102を経由している場合、出力処理部422は、I/O機器3に、ステップS102で更新されたアクセス要求データを出力する。
このようにして、第2実施形態のコントローラ2によれば、処理優先度閾値記憶部436(ドライバAPI43)でスレッドの優先度の閾値を保持しており、ドライバAPI43が実行された時、実行中のスレッドの優先度と閾値を比較し、実行中のスレッドの優先度が閾値以下の場合に、アクセス要求データに従って要求するデータをアクセス分割サイズ閾値62以下のサイズに分割してアクセス要求データを更新して、デバイスドライバ52に要求する。これにより、実行優先度の高いスレッドのオーバヘッドが削減され、実効性の高いアクセスの待ち時間の低減を実現できる。
(第3実施形態)
次に、第3実施形態について説明する。第1実施形態と同様の事項については、説明を適宜省略する。図2において、調整部434は、統計情報記憶部210に記憶された統計情報(図7のIOCTL統計情報55)に基づいて、平均待ち時間が小さくなるように、複数のスレッドそれぞれの処理周期の繰り返しのタイミングを調整する。
次に、第3実施形態について説明する。第1実施形態と同様の事項については、説明を適宜省略する。図2において、調整部434は、統計情報記憶部210に記憶された統計情報(図7のIOCTL統計情報55)に基づいて、平均待ち時間が小さくなるように、複数のスレッドそれぞれの処理周期の繰り返しのタイミングを調整する。
図11は、第3実施形態のタスク実行処理の説明図である。図11(a)は、CPUコアAの処理周期を示している。ここで、調整部434は、統計情報記憶部210に記憶された統計情報に基づいて、平均待ち時間が小さくなるように、例えば、CPUコアBのタスク実行処理の開始タイミングを調整する。
図11(b)は、CPUコアBの処理周期を示している。図11(a)におけるCPUコアAのタスク実行処理の開始タイミング101と比較して、図11(b)におけるCPUコアBのタスク実行処理の開始タイミング103は、開始調整時間102の分だけ遅く調整されている。
調整部434は、開始調整時間102を、例えば、「プロセスの動作するコア番号×全体IOTCL平均待ち時間」を「タスク実行時間-全体IOTCL平均待ち時間-全体IOTCL平均処理時間」で除算した余りとして算出することができる。
このようにして、第3実施形態のコントローラ2によれば、IOCTL統計情報55に基づいて平均待ち時間が小さくなるようにスレッドごとのタスク実行処理の開始タイミングを調整することで、コントローラスレッド間の入出力処理の競合を削減することができ、アクセスの待ち時間をより低減することができる。
なお、上述の各実施形態のコントローラ2で実行されるプログラムは、HDDなどに記録されている。当該プログラムは、インストール可能な形式又は実行可能な形式のファイルでCD-ROM、フレキシブルディスク、CD-R、DVD等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成しても良い。さらに、当該プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、当該プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。また、当該プログラムを、ROM等に予め組み込んで提供するように構成しても良い。
当該プログラムは、上述した各部(入力処理部421、出力処理部422、取得部430、タスク処理部431、分割部432、変更部433、調整部434)を含むモジュール構成となっており、実際のハードウェアとしてはマルチコアCPU20、21が上記HDDから制御処理プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされて主記憶装置上に生成されるようになっている。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…PC、2…コントローラ、3…I/O機器、4、5…通信路、11…エンジニアリングツール、20、21…マルチコアCPU、22…RAM、23…HDD、24…ツールインタフェース、25…I/Oインタフェース、26…バス、301…コアA、302…コアB、303…コアC、304…コアD
Claims (4)
- 産業プラントにおける機器群に接続される入出力装置と接続され、所定の処理単位で処理を実行する複数の処理部を備えるコントローラであって、
それぞれの前記処理部は、
アクセス要求データの送信先である前記入出力装置に対するアクセスの待ち時間と、前記アクセス要求データに従って出力を要求するデータを分割するか否かを決定するためのデータサイズの閾値であるアクセス分割サイズ閾値と、の対応関係を示す分割テーブルを記憶する分割テーブル記憶部と、
前記分割テーブルを参照して、出力予定のアクセス要求データに従って出力を要求するデータのサイズが、現在の前記アクセスの待ち時間に対応する前記アクセス分割サイズ閾値よりも大きい場合、当該出力を要求するデータを前記アクセス分割サイズ閾値以下のサイズに分割して前記アクセス要求データを更新する分割部と、
所定の周期でタスク処理部によって実行されるタスク処理の前段の入出力処理で、前記アクセス要求データを前記入出力装置に対して出力する際に、前記分割部によって前記アクセス要求データが更新された場合には、更新された前記アクセス要求データを前記入出力装置に対して出力する出力処理部と、
前記入出力装置から前記アクセス要求データに対応するデータを入力する入力処理部と、
を備えるコントローラ。 - それぞれの前記処理部は、
前記入出力装置に対するアクセスの平均待ち時間と、前記アクセス要求データの平均処理時間と、を含む統計情報に基づいて、前記分割テーブルにおける前記アクセス分割サイズ閾値を変更する変更部を、さらに備える、請求項1に記載のコントローラ。 - それぞれの前記処理部は、
処理ごとの優先度の閾値である優先度閾値を記憶する処理優先度閾値記憶部を、さらに備え、
前記分割部は、前記分割テーブルを参照して、出力予定の前記アクセス要求データに従って出力を要求するデータのサイズが現在の前記アクセスの待ち時間に対応する前記アクセス分割サイズ閾値よりも大きい場合であって、かつ、前記アクセス要求データの処理の優先度が前記処理優先度閾値記憶部に記憶された当該処理に対応する前記優先度閾値以下の場合に、前記アクセス要求データに従って出力を要求するデータを前記アクセス分割サイズ閾値以下のサイズに分割して前記アクセス要求データを更新する、請求項1に記載のコントローラ。 - それぞれの前記処理部は、
前記入出力装置に対するアクセスの平均待ち時間と、前記アクセス要求データの平均処理時間と、を含む統計情報に基づいて、前記平均待ち時間が小さくなるように、前記周期の繰り返しのタイミングを調整する調整部を、さらに備える請求項1に記載のコントローラ。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020156097A JP7124023B2 (ja) | 2020-09-17 | 2020-09-17 | コントローラ |
AU2021342862A AU2021342862B2 (en) | 2020-09-17 | 2021-06-08 | Controller |
PCT/JP2021/021680 WO2022059270A1 (ja) | 2020-09-17 | 2021-06-08 | コントローラ |
US18/040,255 US20230273586A1 (en) | 2020-09-17 | 2021-06-08 | Controller |
CN202180051417.9A CN115956238A (zh) | 2020-09-17 | 2021-06-08 | 控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020156097A JP7124023B2 (ja) | 2020-09-17 | 2020-09-17 | コントローラ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022049843A JP2022049843A (ja) | 2022-03-30 |
JP7124023B2 true JP7124023B2 (ja) | 2022-08-23 |
Family
ID=80776635
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020156097A Active JP7124023B2 (ja) | 2020-09-17 | 2020-09-17 | コントローラ |
Country Status (5)
Country | Link |
---|---|
US (1) | US20230273586A1 (ja) |
JP (1) | JP7124023B2 (ja) |
CN (1) | CN115956238A (ja) |
AU (1) | AU2021342862B2 (ja) |
WO (1) | WO2022059270A1 (ja) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002163075A (ja) | 2000-11-29 | 2002-06-07 | Pfu Ltd | ディスクアレイ装置とそのディスクアレイ装置の実現に用いられるプログラム記録媒体 |
JP2007164764A (ja) | 2005-09-30 | 2007-06-28 | Rockwell Automation Technologies Inc | 制御および構成情報を最新化するための制御器および装置へのデータの埋め込み |
JP2010152837A (ja) | 2008-12-26 | 2010-07-08 | Mitsubishi Electric Corp | バッファ装置 |
JP2017211767A (ja) | 2016-05-24 | 2017-11-30 | 株式会社日立製作所 | 機器制御システム |
-
2020
- 2020-09-17 JP JP2020156097A patent/JP7124023B2/ja active Active
-
2021
- 2021-06-08 AU AU2021342862A patent/AU2021342862B2/en active Active
- 2021-06-08 CN CN202180051417.9A patent/CN115956238A/zh active Pending
- 2021-06-08 US US18/040,255 patent/US20230273586A1/en active Pending
- 2021-06-08 WO PCT/JP2021/021680 patent/WO2022059270A1/ja active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002163075A (ja) | 2000-11-29 | 2002-06-07 | Pfu Ltd | ディスクアレイ装置とそのディスクアレイ装置の実現に用いられるプログラム記録媒体 |
JP2007164764A (ja) | 2005-09-30 | 2007-06-28 | Rockwell Automation Technologies Inc | 制御および構成情報を最新化するための制御器および装置へのデータの埋め込み |
JP2010152837A (ja) | 2008-12-26 | 2010-07-08 | Mitsubishi Electric Corp | バッファ装置 |
JP2017211767A (ja) | 2016-05-24 | 2017-11-30 | 株式会社日立製作所 | 機器制御システム |
Also Published As
Publication number | Publication date |
---|---|
US20230273586A1 (en) | 2023-08-31 |
AU2021342862A1 (en) | 2023-02-23 |
CN115956238A (zh) | 2023-04-11 |
JP2022049843A (ja) | 2022-03-30 |
AU2021342862B2 (en) | 2023-11-30 |
WO2022059270A1 (ja) | 2022-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6146128B2 (ja) | データ処理装置 | |
WO2011148920A1 (ja) | マルチプロセッサシステム、実行制御方法、実行制御プログラム | |
JP6170553B2 (ja) | 異種プロセッサを使用するアプリケーションに低レイテンシを提供するためのシステムおよび方法 | |
US8843672B2 (en) | Access method, computer and recording medium | |
JP5565204B2 (ja) | データ転送装置、データ転送方法およびプログラム、ならびに、画像形成装置 | |
WO2018179873A1 (ja) | アクセラレータを有する計算機のためのライブラリ、およびアクセラレータ | |
JP7124023B2 (ja) | コントローラ | |
JP2017204121A (ja) | 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム | |
JP2008040650A (ja) | バスアービトレーション装置 | |
JP2009199367A (ja) | 計算機システム、i/oスケジューラ及びi/oスケジューリング方法 | |
JP6368452B2 (ja) | 非同期のデバイスによって実行されるタスクのスケジューリングの向上 | |
JP2005258509A (ja) | ストレージ装置 | |
US11556377B2 (en) | Storage medium, task execution management device, and task execution management method | |
JP5404294B2 (ja) | データ演算装置の制御回路及びデータ演算装置 | |
EP1513069A2 (en) | Resource management apparatus | |
JP6165016B2 (ja) | 負荷分散制御装置 | |
JP2002006944A (ja) | 制御機能付き表示器 | |
JP7381711B2 (ja) | 情報処理装置 | |
JP7305052B2 (ja) | 遅延量更新装置、処理システム及びプログラム | |
JP7567566B2 (ja) | 情報処理装置およびプログラム | |
JP2007219925A (ja) | バス制御装置、バス制御プログラム及び記録媒体 | |
WO2015125453A1 (ja) | 情報処理装置及び負荷制御方法 | |
JPWO2012098655A1 (ja) | データ書き込み制御装置、データ書き込み制御方法及び情報処理装置 | |
JP4999932B2 (ja) | 仮想計算機システム及び仮想計算機重み付け設定処理方法及び仮想計算機重み付け設定処理プログラム | |
JP6119997B2 (ja) | データ処理装置、データ処理装置の制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20211001 |
|
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: 20220712 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220810 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7124023 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |