(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-07-25
(45)【発行日】2022-08-02
(54)【発明の名称】コントローラおよびコントローラの備える通信制御部の制御方法
(51)【国際特許分類】
G05B 19/05 20060101AFI20220726BHJP
【FI】
G05B19/05 L
(21)【出願番号】P 2018203049
(22)【出願日】2018-10-29
【審査請求日】2020-12-15
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】100155712
【氏名又は名称】村上 尚
(72)【発明者】
【氏名】玉井 俊規
【審査官】大古 健一
(56)【参考文献】
【文献】特開2001-285394(JP,A)
【文献】特開2008-234258(JP,A)
【文献】特開2018-128780(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/04 -19/05
(57)【特許請求の範囲】
【請求項1】
複数のタスクを実行するプロセッサと、前記プロセッサによる前記複数のタスクの各々の実行により生成される複数の送信データを外部に出力する通信制御部と、を備えるコントローラであって、
前記通信制御部は、各々に、前記複数の送信データの各々が送信優先度と共に格納される複数の送信キューを含み、
前記通信制御部は、前記複数の送信キューの各々の先頭に格納された前記送信データの前記送信優先度が高い順に、前記複数の送信キューの各々の先頭に格納された前記送信データを、1つの送信ポートを介して順次出力し、
前記複数の送信キューは、
(A)各々が、前記複数のタスクの各々に予め対応付けられ、(B)各々に、予め対応付けられたタスクの実行により生成される前記送信データが、前記送信優先度と共に、格納される複数の対応送信キューと、
前記複数のタスクのいずれにも予め対応付けられていない非対応送信キューと、
を含み、
前記非対応送信キューには、前記複数のタスクのいずれかの実行により生成される前記送信データが、前記複数の対応送信キューの各々に前記送信データと共に格納される前記送信優先度のいずれよりも高い送信優先度と共に、格納される
コントローラ。
【請求項2】
複数のタスクを実行するプロセッサと、前記プロセッサによる前記複数のタスクの各々の実行により生成される複数の送信データを外部に出力する通信制御部と、を備えるコントローラであって、
前記通信制御部は、各々に、前記複数の送信データの各々が送信優先度と共に格納される複数の送信キューを含み、
前記通信制御部は、前記複数の送信キューの各々の先頭に格納された前記送信データの前記送信優先度が高い順に、前記複数の送信キューの各々の先頭に格納された前記送信データを、1つの送信ポートを介して順次出力し、
前記プロセッサは、前記複数のタスクの各々を、前記複数のタスクの各々に予め対応付けられた複数のCPUコアの各々において実行するマルチコアプロセッサである
コントローラ。
【請求項3】
複数のタスクを実行するプロセッサと、前記プロセッサによる前記複数のタスクの各々の実行により生成される複数の送信データを外部に出力する通信制御部と、を備えるコントローラであって、
前記通信制御部は、各々に、前記複数の送信データの各々が送信優先度と共に格納される複数の送信キューを含み、
1つの前記送信キューには、複数種類の送信優先度の前記複数の送信データが格納され、
前記通信制御部は、前記複数の送信キューの各々の先頭に格納された前記送信データの前記送信優先度が高い順に、前記複数の送信キューの各々の先頭に格納された前記送信データを、1つの送信ポートを介して順次出力
する
コントローラ。
【請求項4】
複数のタスクを実行するプロセッサと、前記プロセッサによる前記複数のタスクの各々の実行により生成される複数の送信データを外部に出力する通信制御部と、を備えるコントローラであって、
前記通信制御部は、各々に、前記複数の送信データの各々が送信優先度と共に格納される複数の送信キューを含み、
前記通信制御部は、前記複数の送信キューの各々の先頭に格納された前記送信データの前記送信優先度が高い順に、前記複数の送信キューの各々の先頭に格納された前記送信データを、1つの送信ポートを介して順次出力し、
前記通信制御部は、ハードウェアによる論理回路で構成される
コントローラ。
【請求項5】
複数のタスクを実行するプロセッサと、前記プロセッサによる前記複数のタスクの各々の実行により生成される複数の送信データを外部に出力する通信制御部と、を備えるコントローラの前記通信制御部によって実行される制御方法であって、
前記複数の送信データの各々を、前記複数の送信データの各々の送信優先度と共に、複数の送信キューの各々に格納する格納ステップと、
前記格納ステップにて、前記複数の送信キューの各々に前記送信優先度と共に格納した前記送信データについて、前記複数の送信キューの各々の先頭に格納した前記送信データの前記送信優先度が高い順に、前記複数の送信キューの各々の先頭に格納した前記送信データを、1つの送信ポートを介して順次出力する送信ステップと、
を含み、
前記複数の送信キューは、
(A)各々が、前記複数のタスクの各々に予め対応付けられ、(B)各々に、予め対応付けられたタスクの実行により生成される前記送信データが、前記送信優先度と共に、格納される複数の対応送信キューと、
前記複数のタスクのいずれにも予め対応付けられていない非対応送信キューと、
を含み、
前記格納ステップでは、前記非対応送信キューには、前記複数のタスクのいずれかの実行により生成される前記送信データを、前記複数の対応送信キューの各々に前記送信データと共に格納される前記送信優先度のいずれよりも高い送信優先度と共に、格納する
制御方法。
【請求項6】
複数のタスクを実行するプロセッサと、前記プロセッサによる前記複数のタスクの各々の実行により生成される複数の送信データを外部に出力する通信制御部と、を備えるコントローラの前記通信制御部によって実行される制御方法であって、
前記複数の送信データの各々を、前記複数の送信データの各々の送信優先度と共に、複数の送信キューの各々に格納する格納ステップと、
前記格納ステップにて、前記複数の送信キューの各々に前記送信優先度と共に格納した前記送信データについて、前記複数の送信キューの各々の先頭に格納した前記送信データの前記送信優先度が高い順に、前記複数の送信キューの各々の先頭に格納した前記送信データを、1つの送信ポートを介して順次出力する送信ステップと、
を含み、
前記プロセッサは、前記複数のタスクの各々を、前記複数のタスクの各々に予め対応付けられた複数のCPUコアの各々において実行するマルチコアプロセッサである
制御方法。
【請求項7】
複数のタスクを実行するプロセッサと、前記プロセッサによる前記複数のタスクの各々の実行により生成される複数の送信データを外部に出力する通信制御部と、を備えるコントローラの前記通信制御部によって実行される制御方法であって
、
前記複数の送信データの各々を、前記複数の送信データの各々
の送信優先度と共に
、複数の送信キューの各々に格納する格納ステップと、
前記格納ステップにて、前記複数の送信キューの各々に前記送信優先度と共に格納した前記送信データについて、前記複数の送信キューの各々の先頭に格納した前記送信データの前記送信優先度が高い順に、前記複数の送信キューの各々の先頭に格納した前記送信データを、1つの送信ポートを介して順次出力する送信ステップと、
を含
み、
1つの前記送信キューには、複数種類の送信優先度の前記複数の送信データが格納される
制御方法。
【請求項8】
複数のタスクを実行するプロセッサと、前記プロセッサによる前記複数のタスクの各々の実行により生成される複数の送信データを外部に出力する通信制御部と、を備えるコントローラの前記通信制御部によって実行される制御方法であって、
前記通信制御部は、ハードウェアによる論理回路で構成されており、
前記複数の送信データの各々を、前記複数の送信データの各々の送信優先度と共に、複数の送信キューの各々に格納する格納ステップと、
前記格納ステップにて、前記複数の送信キューの各々に前記送信優先度と共に格納した前記送信データについて、前記複数の送信キューの各々の先頭に格納した前記送信データの前記送信優先度が高い順に、前記複数の送信キューの各々の先頭に格納した前記送信データを、1つの送信ポートを介して順次出力する送信ステップと、
を含む制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラマブルコントローラ(Programmable Logic Controller;以下、PLCとも称す)などの制御装置に関する。
【背景技術】
【0002】
従来、PLCなどの産業用制御装置について、プロセッサの負荷を分散させるための各種の試みが知られている。例えば、下掲の特許文献1には、複数のコアからなるプロセッサと、複数のキューとを備え、前記複数のキューの各々を前記複数のコアの各々に対応付け、各コアにおける処理結果を、各コアに対応する各キューに格納するコントローラが開示されている。特許文献1のコントローラは、各コアに対応する各キューが、各コアにおける処理結果の出力等を制御することによって、処理結果の出力制御に係るプロセッサの負担を軽減しようとするものである。
【0003】
また、省配線、および、複数の制御対象の同期などの観点から、複数の制御対象と産業用制御装置とを1つのネットワークで接続する試みも、従来から知られている。例えば、下掲の非特許文献1には、1つのネットワークに対応できるように、1つの送信ポートに複数の送信キューを対応付けたコントローラが開示されている。
【0004】
これらの従来技術は、例えば、複数のコアの各々、または、複数のコアの各々が実行する複数のタスクの各々を、複数の送信キューの各々に予め対応付けておき、また、複数の送信キューの各々に固定の送信順序を予め割り当てておくものと整理することができる。そして、従来技術において複数の送信キューの各々は、自キューに割り当てられた送信順序に従って、自キューに格納されたデータ(つまり、自キューに対応付けられているコアにより生成される送信データ、または、自キューに対応付けられているタスクの実行により生成される送信データ)を送信する。
【先行技術文献】
【特許文献】
【0005】
【非特許文献】
【0006】
【文献】“インテル イーサネット・コントローラー I210-IT”、[online]、Intel Corporation、[2018年10月11日検索]、インターネット<https://ark.intel.com/ja/products/64402/Intel-Ethernet-Controller-I210-IT>
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、上述の従来技術には、或るタスクの実行により生成される送信データと、その或るタスクとは別のタスクの実行により生成される送信データとについて、ネットワークへの送信順序を柔軟に変更することが困難であるとの問題がある。以下、この問題について、
図10を参照しながら、その詳細を説明する。
【0008】
図10は、従来までの、複数の送信キューの各々に固定の送信順序を予め割り当てておき、この送信順序に従って、各送信キューが、各送信キューに格納されたデータをネットワークへと出力するコントローラに見られる問題を説明するための図である。
図10を用いて説明する従来までのコントローラは、マイクロプロセッサと、1つの送信ポートに対応付けられた複数の送信キューとを備えるものとする。以下の説明においては、記載の簡潔性を担保するため、「送信キュー」を「TX」と称することがある。
【0009】
図10を用いて説明するコントローラにおいて、マイクロプロセッサのコア1は、予めTX1に対応付けられており、コア2は、予めTX2に対応付けられている。そして、TX1には送信順序として「1」が割り当てられており、TX2には送信順序として「2」が割り当てられている。コア1は、タスクT1-1およびT1-2の各々を実行し、その実行により生成される送信データであるD1-1およびD1-2の各々を、コア1に対応付けられたTX1に格納する。コア2は、タスクT2-1およびT2-2の各々を実行し、その実行により生成される送信データであるD2-1およびD2-2の各々を、コア2に対応付けられたTX2に格納する。
【0010】
図10に示す例では、上述の4つの送信データの各々を送信したい順序を示す「P」について、送信データD1-1およびD2-1のPは「1」であり、送信データD1-2およびD2-2のPは「2」である。つまり、
図10には、送信データD2-1を送信データD1-2よりも先に送信したい例が示されている。
【0011】
しかしながら、前述の通り、
図10に示す従来までのコントローラにおいて、複数の送信キューの各々に格納された送信データは、複数の送信キューの各々に予め割り当てられている送信順序に従って、ネットワークへと出力される。そのため、送信データD2-1を送信データD1-2よりも先に送信したい場合であっても、送信データD2-1の格納先であるTX2は、送信データD1-2の格納先であるTX1よりも送信順序が遅いため、送信データD2-1は、送信データD1-2の後に送信される。つまり、送信データD2-1を送信データD1-2に優先して送信したくても、TX2に付与された送信順序(2)よりも、TX1に付与された送信順序(1)の方が早いため、送信データD2-1の送信は、送信データD1-2の送信の後となる。
【0012】
従来までのコントローラにおいて、送信データD2-1を送信データD1-2よりも先に送信するためには、送信データD2-1をTX1に格納し、送信データD1-2をTX2に格納する必要がある。そして、各送信データのPによって、各送信データの格納先を変更する場合、各送信データの格納先を選択する処理、格納先である送信キューの状態を確認する処理などをプロセッサが実行することが必要となるため、プロセッサの負荷が高くなってしまう。
【0013】
これまで説明してきたように、従来までの、各送信キューに予め割り当てておいた送信順序に従って、各送信キューが、自キューに格納されたデータを送信するコントローラは、送信データの送信順序を柔軟に変更することが困難であるとの問題がある。
【0014】
本発明の一態様は、複数のタスクの各々の実行により生成される送信データを、1つの送信ポートを介して順次送信するコントローラについて、前記複数のタスクを実行するプロセッサの負荷を抑制しつつ、前記送信データの送信順序を柔軟に変更できるようにすることを目的としている。
【課題を解決するための手段】
【0015】
上記の課題を解決するために、本発明の一態様に係るコントローラは、複数のタスクを実行するプロセッサと、前記プロセッサによる前記複数のタスクの各々の実行により生成される複数の送信データを外部に出力する通信制御部と、を備えるコントローラであって、前記通信制御部は、各々に、前記複数の送信データの各々が送信優先度と共に格納される複数の送信キューを含み、前記通信制御部は、前記複数の送信キューの各々の先頭に格納された前記送信データの前記送信優先度が高い順に、前記複数の送信キューの各々の先頭に格納された前記送信データを、1つの送信ポートを介して順次出力する。
【0016】
前記の構成によれば、前記コントローラにおける前記通信制御部は、前記複数の送信キューを含み、前記複数の送信キューの各々には、前記複数のタスクの各々の実行により生成される複数の送信データの各々が、前記送信優先度と共に、格納される。そして、前記通信制御部は、前記複数の送信キューの各々の先頭に格納された前記送信データの前記送信優先度が高い順に、前記複数の送信キューの各々の先頭に格納された前記送信データを、前記1つの送信ポートを介して順次出力する。
【0017】
従来のコントローラは、1つの通信ネットワークに送信する複数のメッセージ(複数のタスクの各々の実行により生成される送信データ)の送信順序を制御するため、例えば、以下の構成を備えている。すなわち、従来のコントローラは、1つの送信ポートに複数の送信キューを対応付け、各送信キューに予め付与された優先順位に従って、各送信キューに格納されたメッセージを、前記1つの送信ポートを介して、前記1つの通信ネットワークに順次出力していた。各メッセージについて、つまり、各タスクの実行により生成される送信データについて、その優先順位が固定である場合、各タスクを、予め固定の優先順位を付与しておいた複数の送信キューの各々に対応付ける従来のコントローラは、メッセージを優先順位に従って効率的に送信できる。
【0018】
しかしながら、従来のコントローラは、低い優先順位の付与されている送信キューに対応付けられたタスクの実行により生成される送信データ(すなわち、メッセージ)を、高い優先順位の付与されている送信キューに対応付けられたタスクの実行により生成される送信データに優先して送信することが困難である。従来のコントローラにおいて、各送信キューに格納されたメッセージは、各送信キューに予め付与された優先順位に従って送信され、各送信キューと各タスクとは予め対応付けられている。従来のコントローラにおいて、低い優先順位の付与された送信キューに対応付けられているタスクの実行により生成される送信データ(メッセージ)は、低い優先順位の付与された送信キューに格納され、高い優先順位の付与された送信キューに格納されているメッセージの後に送信される。
【0019】
これに対し、前記コントローラにおける前記通信制御部は、前記複数の送信キューの各々に格納されたメッセージ(各タスクの実行により生成される送信データ)を、各送信キューの優先順位ではなく、各メッセージの送信優先度に従って、前記1つの送信ポートを介して順次出力する。つまり、前記コントローラは、前記複数の送信データの各々の出力順序を、前記複数の送信データの各々が格納されている送信キューに予め付与された優先順位ではなく、前記複数の送信データの各々の前記送信優先度によって、制御する。
【0020】
したがって、前記コントローラは、前記複数の送信データの各々の、前記1つの送信ポートからの出力順序を、前記複数の送信データの各々に付与する前記送信優先度によって、柔軟に変更することができるとの効果を奏する。
【0021】
特に、前記コントローラは、前記複数のタスクの各々の実行により生成される送信データの、前記1つの送信ポートからの出力順序を、前記プロセッサではなく、前記通信制御部によって制御する。したがって、前記コントローラは、前記複数のタスクを実行するプロセッサへの処理負荷を増大させることなく、前記複数の送信データを、各送信データの送信優先度に従って、前記1つの送信ポートから出力できるとの効果を奏する。
【0022】
本発明の一態様に係るコントローラにおいて、前記複数の送信キューは、(A)各々が、前記複数のタスクの各々に予め対応付けられ、(B)各々に、予め対応付けられたタスクの実行により生成される前記送信データが、前記送信優先度と共に、格納される複数の対応送信キューと、前記複数のタスクのいずれにも予め対応付けられていない非対応送信キューと、を含み、前記非対応送信キューには、前記複数のタスクのいずれかの実行により生成される前記送信データが、前記複数の対応送信キューの各々に前記送信データと共に格納される前記送信優先度のいずれよりも高い送信優先度と共に、格納されてもよい。
【0023】
前記の構成によれば、前記コントローラにおける前記通信制御部は、「各々が、前記複数のタスクの各々に対応付けられた前記複数の対応送信キュー」に加えて、前記非対応送信キューをさらに含んでいる。そして、前記非対応送信キューには、前記複数のタスクのいずれかの実行により生成される送信データが、前記複数の送信キューの各々に前記送信データと共に格納される前記送信優先度のいずれよりも高い送信優先度と共に、格納される。
【0024】
前記コントローラは、前記複数の対応送信キューの各々に、予め対応付けられたタスクの実行により生成される前記送信データを格納することによって、複数の前記送信データの各々の格納先の選択に係る処理を不要とし、または、抑制できるという効果を奏する。
【0025】
ここで、前述の通り、前記通信制御部は、前記複数の送信キューの各々の先頭に格納された前記送信データの前記送信優先度が高い順に、前記複数の送信キューの各々の先頭に格納された前記送信データを、1つの送信ポートを介して順次出力する。例えば、前記通信制御部は、送信キューTX1の先頭に格納された送信データD1-1の優先度P:1と、送信キューTX2の先頭に格納された送信データD2-1の優先度P:2とを比較し、優先度P:1が優先度P:2よりも高いので、先ず送信データD1-1を送信する。
【0026】
そのため、送信データD1-1およびD2-1の後に生成された送信データD2-2に、優先度P:1よりも高い優先度P:0を付与したとしても、送信データD2-2を送信キューTX1または送信キューTX2に格納した場合、以下の事態が発生する。
【0027】
すなわち、送信キューTX1およびTX2の各々には既に送信データD1-1およびD2-1の各々が格納されているため、前記通信制御部は、送信データD1-1の優先度P:1と送信データD2-1の優先度P:2とを比較し、送信データD1-1を送信する。つまり、送信データD2-2を送信キューTX1または送信キューTX2に格納した場合、前記通信制御部は、送信データD2-2を送信データD1-1よりも早く送信することができない。
【0028】
そこで、前記コントローラにおける前記通信制御部は、対応送信キューTX1およびTX2に加えて、非対応送信キューTX0をさらに含み、非対応送信キューTX0に、送信データD2-2が、優先度P:0と共に格納される。
【0029】
前記通信制御部は、対応送信キューTX1、TX2、および、非対応送信キューTX0の各々の先頭に格納された送信データの優先度P(送信優先度)を比較する。そして、前記通信制御部は、各送信キューの先頭に格納された送信データの優先度Pが高い順に、各送信キューの各々の先頭に格納された送信データを、1つの送信ポートを介して順次出力する。
【0030】
具体的には、前記通信制御部は、対応送信キューTX1の先頭に格納された送信データD1-1、対応送信キューTX2の先頭に格納された送信データD2-1、および、非対応送信キューTX0の先頭に格納された送信データD2-2の各々について、優先度Pを比較する。送信データD1-1の優先度Pは「1」、送信データD2-1の優先度Pは「2」、送信データD2-2の優先度Pは「0」であるから、前記通信制御部は、送信データD2-2、D1-1、D2-1を、この順で、1つの送信ポートを介して順次出力する。
【0031】
したがって、前記コントローラにおける前記通信制御部は、前記複数のタスクの各々の実行により生成される複数の送信データの各々について、生成された順序から独立させて、各送信データの送信優先度に従って順次出力することができるとの効果を奏する。
【0032】
本発明の一態様に係るコントローラにおいて、前記プロセッサは、前記複数のタスクの各々を、前記複数のタスクの各々に予め対応付けられた複数のCPUコアの各々において実行するマルチコアプロセッサであってもよい。
【0033】
前記の構成によれば、前記コントローラは、マルチコアプロセッサを備え、前記複数のCPUコアの各々は、前記複数のタスクの各々に予め対応付けられている。したがって、前記コントローラは、前記複数のタスクを、例えばマルチタスクで実行する等によって、高速な制御を実現することができるとの効果を奏する。
【0034】
本発明の一態様に係るコントローラにおいて、前記複数の送信キューの各々に格納される前記送信データと前記送信優先度とは、ユーザによって予め対応付けられていてもよい。
【0035】
前記の構成によれば、前記コントローラにおいて、前記複数のタスクの各々の実行により生成され、前記複数の送信キューの各々に格納される複数の送信データの各々と、前記複数の送信キューの各々に格納される前記送信優先度とは、予めユーザによって対応付けられている。したがって、前記コントローラは、ユーザが、前記複数のタスクの各々の実行により生成される複数の前記送信データの各々について、前記1つの送信ポートからの出力順序(送信順序)を予め設定しておくことを可能とするとの効果を奏する。
【0036】
本発明の一態様に係るコントローラにおいて、前記通信制御部は、ハードウェアによる論理回路で構成されてもよい。
【0037】
前記の構成によれば、前記コントローラにおいて、前記通信制御部は、ハードウェアによる論理回路で構成される。つまり、前記コントローラは、前記複数のタスクを実行するプロセッサではなく、ハードウェアによる論理回路で構成した前記通信制御部によって、前記複数のタスクの各々の実行により生成される複数の前記送信データの各々の送信を制御する。したがって、前記コントローラは、前記プロセッサへの処理負荷を増大させることなく、ハードウェアによる論理回路で構成した前記通信制御部によって、複数の前記送信データの各々の送信を制御することができるとの効果を奏する。
【0038】
上記の課題を解決するために、本発明の一態様に係る制御方法は、複数のタスクを実行するプロセッサと、前記プロセッサによる前記複数のタスクの各々の実行により生成される複数の送信データを外部に出力する通信制御部と、を備えるコントローラの前記通信制御部によって実行される制御方法であって、前記複数の送信データの各々を、前記複数の送信データの各々の送信優先度と共に、複数の送信キューの各々に格納する格納ステップと、前記格納ステップにて、前記複数の送信キューの各々に前記送信優先度と共に格納した前記送信データについて、前記複数の送信キューの各々の先頭に格納した前記送信データの前記送信優先度が高い順に、前記複数の送信キューの各々の先頭に格納した前記送信データを、1つの送信ポートを介して順次出力する送信ステップと、を含む。
【0039】
前記の方法によれば、前記制御方法において、前記通信制御部は前記複数の送信キューを含み、前記制御方法は、前記複数の送信キューの各々に、前記複数のタスクの各々の実行により生成される複数の送信データの各々を、前記送信優先度と共に、格納する。そして、前記制御方法は、前記複数の送信キューの各々の先頭に格納した前記送信データの前記送信優先度が高い順に、前記複数の送信キューの各々の先頭に格納した前記送信データを、前記1つの送信ポートを介して順次出力する。
【0040】
従来のコントローラは、1つの通信ネットワークに送信する複数のメッセージ(複数のタスクの各々の実行により生成される送信データ)の送信順序を制御するため、例えば、以下の構成を備えている。すなわち、従来のコントローラは、1つの送信ポートに複数の送信キューを対応付け、各送信キューに予め付与された優先順位に従って、各送信キューに格納されたメッセージを、前記1つの送信ポートを介して、前記1つの通信ネットワークに順次出力していた。各メッセージについて、つまり、各タスクの実行により生成される送信データについて、その優先順位が固定である場合、各タスクを、予め固定の優先順位を付与しておいた複数の送信キューの各々に対応付ける従来のコントローラは、メッセージを優先順位に従って効率的に送信できる。
【0041】
しかしながら、従来のコントローラは、低い優先順位の付与されている送信キューに対応付けられたタスクの実行により生成される送信データ(すなわち、メッセージ)を、高い優先順位の付与されている送信キューに対応付けられたタスクの実行により生成される送信データに優先して送信することが困難である。従来のコントローラにおいて、各送信キューに格納されたメッセージは、各送信キューに予め付与された優先順位に従って送信され、各送信キューと各タスクとは予め対応付けられている。従来のコントローラにおいて、低い優先順位の付与された送信キューに対応付けられているタスクの実行により生成される送信データ(メッセージ)は、低い優先順位の付与された送信キューに格納され、高い優先順位の付与された送信キューに格納されているメッセージの後に送信される。
【0042】
これに対し、前記制御方法は、前記複数の送信キューの各々に格納したメッセージ(各タスクの実行により生成される送信データ)を、各送信キューの優先順位ではなく、各メッセージの送信優先度に従って、前記1つの送信ポートを介して順次出力する。つまり、前記制御方法は、前記複数の送信データの各々の出力順序を、前記複数の送信データの各々が格納されている送信キューに予め付与された優先順位ではなく、前記複数の送信データの各々の前記送信優先度によって、制御する。
【0043】
したがって、前記制御方法は、前記複数の送信データの各々の、前記1つの送信ポートからの出力順序を、前記複数の送信データの各々に付与する前記送信優先度によって、柔軟に変更することができるとの効果を奏する。
【0044】
特に、前記制御方法は、前記プロセッサではなく、前記通信制御部によって実行される。したがって、前記制御方法は、前記複数のタスクを実行するプロセッサへの処理負荷を増大させることなく、前記複数の送信データを、各送信データの送信優先度に従って、前記1つの送信ポートから出力できるとの効果を奏する。
【発明の効果】
【0045】
本発明の一態様によれば、複数のタスクの各々の実行により生成される送信データを、1つの送信ポートを介して順次送信するコントローラについて、前記複数のタスクを実行するプロセッサの負荷を抑制しつつ、前記送信データの送信順序を柔軟に変更できるとの効果を奏する。
【図面の簡単な説明】
【0046】
【
図1】本発明の実施形態1に係るコントローラのCPUユニットの要部構成を示す図である。
【
図2】本発明の実施形態1に係るコントローラを含む制御システムの概要を示す図である。
【
図3】本発明の実施形態1に係るコントローラの実行する、送信データの送信順序の制御を説明するための図である。
【
図4】
図1のCPUユニットが実行する処理の全体概要を示すフロー図である。
【
図5】
図4に示す処理のうち、
図1のネットワーク制御部および各CPUコアの実行する処理の全体概要を示すフロー図である。
【
図6】
図4に示す処理のうち、
図1の通信コントローラの実行する処理の全体概要を示すフロー図である。
【
図7】本発明の実施形態1に係るコントローラについて、送信キュー120(0)を設けなかった場合に生じる状況を説明する図である。
【
図8】本発明の実施形態1に係るコントローラについて、送信キュー120(0)を設けることによって可能となる送信順序を説明する図である。
【
図9】ユーザがタスクと送信優先度と対応付ける例を説明する図である。
【
図10】従来までのコントローラに見られる課題を説明する図である。
【発明を実施するための形態】
【0047】
〔実施形態1〕
以下、本発明の一側面に係る実施の形態(以下、「本実施形態」とも表記する)を、図面に基づいて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰返さない。本実施の形態においては、機械および設備等の制御対象を制御するPLC(プログラマブル・ロジック・コントローラ、Programmable Logic Controller)10をコントローラの典型例として説明を行なう。また、以下の説明においては、記載の簡潔性を担保するため、「送信キュー」を「TX」と称することがある。
【0048】
§1.適用例
本発明の一態様に係るPLC10(コントローラ)についての理解を容易にするため、先ず、本発明が適用される場面の一例について、具体的には、PLC10を含む制御システム1の概要について、
図2を用いて説明する。
【0049】
(制御システムの概要)
図2は、制御システム1の概要を示す図である。制御システム1は、PLC10と、PLC10へフィールドネットワーク20を介して接続されるサーボドライバ33、34およびリモートIOターミナル35と、フィールド機器であるデバイス31、32と、を含む。また、PLC10には、接続ケーブル50を介して、ツール60が接続される。制御システム1において、生産設備内の入力機器及び出力機器の制御を司る、1つ以上のPLC10と、PLC10により動作が制御される機器とは、フィールドネットワーク20等の制御系のネットワークに接続される。PLC10と機器とは、その制御系のネットワークを介してサイクリックに通信を行なうことで、INデータ及びOUTデータ(以下、「IOデータ」という)の送受信を行ない、生産設備を制御する。
【0050】
PLC10は、制御システム1において、機械および設備などの制御対象を制御する制御装置であり、制御システム1における、フィールドネットワーク20を介したデータ伝送を管理するマスタ装置である。PLC10は、主たる演算処理を実行するCPUユニット100と、電源ユニット101と、1つ以上のIOユニット(
図2の例では、IOユニット102、103、104)と、特殊ユニット105と、を含む。CPUユニット100と、IOユニット102、103、104の各々と、特殊ユニット105とは、PLCシステムバス106を介して、互いにデータを遣り取りできるように構成される。
【0051】
CPUユニット100は、制御対象の状態等に係る種々の処理を実行し、例えば、「送信データの送信と、受信データの受信と、受信データを使用して送信データを生成する制御プログラムの実行とを繰り返すことによって制御対象を制御する」処理を実行する。CPUユニット100の詳細については、
図1を参照して後述する。
【0052】
電源ユニット101は、CPUユニット100、IOユニット102、103、104、および、特殊ユニット105に、適切な電圧の電源を供給する。
【0053】
IOユニット102、103、104は、各々、一般的な入出力処理に関するユニットであり、オン/オフといったデータ(つまり、2値化されたデータ)の入出力を司る。具体的には、IOユニット102、103、104の各々は、センサなどの入力機器であるデバイス31が何らかの対象物を検出している状態(オン)、および、何らの対象物も検出していない状態(オフ)のいずれであるかという情報を収集する。また、IOユニット102、103、104の各々は、リレー、アクチュエータといった出力機器であるデバイス32に対して、活性化するための指令(オン)、および、不活性化するための指令(オフ)のいずれかを出力する。
【0054】
特殊ユニット105は、IOユニット102、103、104の各々が処理するデータとは異なるデータ(例えば、アナログデータ)の入出力、温度制御、特定の通信方式による通信など、IOユニット102、103、104ではサポートしない処理を実行する。
【0055】
デバイス31および32は、各々、PLC10によって制御される入出力機器である。入力機器であるデバイス31は、例えば、温度センサ、光センサなどの「検出器」、「スイッチ(押ボタンスイッチ、リミットスイッチ、圧力スイッチなど)」などである。出力機器であるデバイス32は、例えば、「アクチュエータ」、「リレー」、「電磁弁」、「表示器」、「表示灯」などである。
【0056】
フィールドネットワーク20は、CPUユニット100とフィールド機器(サーボドライバ33、34、およびリモートIOターミナル35)との間で遣り取りされる各種データを伝送する。フィールドネットワーク20としては、典型的には、各種の産業用イーサネット(登録商標)を用いることができる。産業用イーサネット(登録商標)としては、たとえば、EtherCAT(登録商標)、Profinet IRT、MECHATROLINK(登録商標)-III、Powerlink、SERCOS(登録商標)-III、CIP Motionなどが知られており、これらのうちのいずれを採用してもよい。さらに、産業用イーサネット(登録商標)以外のフィールドネットワーク20を用いてもよい。たとえば、モーション制御を行わない場合であれば、DeviceNet、CompoNet/IP(登録商標)などを、フィールドネットワーク20として用いてもよい。制御システム1では、典型的に、産業用イーサネット(登録商標)であるEtherCAT(登録商標)をフィールドネットワーク20として採用する場合の構成について例示する。
【0057】
PLC10は、IOユニット102、103、104の各々の機能、および、サーボドライバ33、34の機能をCPUユニット100に内蔵させ、そのような内蔵機能でまかなえる範囲については、CPUユニット100が、直接、制御対象を制御してもよい。
【0058】
サーボドライバ33、34の各々は、フィールドネットワーク20を介してCPUユニット100と接続され、CPUユニット100からの指令値に従って、サーボモータ41、42の各々を駆動する。より具体的には、サーボドライバ33、34の各々は、PLC10から一定の時間間隔で繰り返し(つまり、周期的に)、位置指令値、速度指令値、トルク指令値といった指令値を受ける。また、サーボドライバ33、34の各々は、サーボモータ41、42の各々に接続されている各種検出器から、サーボモータ41、42の各々の動作(状態)に係る各種検出値(実測値)を取得する。例えば、サーボモータ41、42の各々の軸に接続されている位置センサ(ロータリーエンコーダ)およびトルクセンサ等の検出器から、位置、速度、トルクといったサーボモータ41および42の各々の動作(状態)に係る実測値を取得する。サーボモータ41、42の各々の速度に係る実測値は、位置センサによって検出された今回位置と前回位置との差から算出されてもよい。
【0059】
そして、サーボドライバ33、34の各々は、CPUユニット100からの指令値を目標値に設定し、実測値をフィードバック値として、サーボモータ41および42の各々に対して、フィードバック制御を行う。すなわち、サーボドライバ33、34の各々は、実測値が目標値に近づくようにサーボモータ41、42の各々を駆動するための電流を調整する。サーボドライバ33、34の各々は、サーボモータアンプと称されることもある。
【0060】
図2には、サーボモータ41、42の各々とサーボドライバ33、34の各々とを組み合わせたシステム例を示すが、その他の構成、たとえば、パルスモータとパルスモータドライバとを組み合わせたシステムを採用することもできる。
【0061】
リモートIOターミナル35は、基本的には、IOユニット102、103、104の各々と同様に、一般的な入出力処理に関する処理を行う。より具体的には、リモートIOターミナル35は、フィールドネットワーク20でのデータ伝送に係る処理を行うための通信カプラ36と、1つ以上のIOユニット(
図2の例では、IOユニット37、38)とを含む。通信カプラ36と、IOユニット37、38の各々とは、リモートIOターミナルバス39を介して、データを互いに遣り取りできるように構成される。
【0062】
ツール60は、PLC10に接続可能な情報処理装置である。ツール60は、例えばUSB(Universal Serial Bus)ケーブルである接続ケーブル50を介して、PLC10に接続され、PLC10との間で各種パラメータの設定、プログラミング、モニタ、デバッグなどの処理を実行する。
【0063】
ツール60で実行される各種プログラムは、CD-ROM61に格納されて流通してもよい。CD-ROM61に格納されたプログラムは、ツール60のCD-ROM(Compact Disk-Read Only Memory)ドライブによって読み取られ、ツール60のハードディスク(HDD)等へ格納されてもよい。ツール60は、上位のホストコンピュータ等からネットワークを通じて、ツール60で実行されるプログラムをダウンロードしてもよい。
【0064】
ツール60は、例えば、パーソナルコンピュータであり、PLC10において実行されるユーザプログラムの作成・編集処理を実行する。また、ツール60は、ユーザプログラムをPLC10からダウンロードする処理を実行するとともに、ユーザプログラムをPLC10にアップロードする処理を実行する。
【0065】
ユーザは、ツール60を用いて、PLC10(特に、CPUユニット100)におけるプログラムの実行単位であるタスクを設定することができる。PLC10(特に、
図1のマルチコアプロセッサ160)は、タスクを実行することにより制御対象を制御するように構成され、タスクには、制御対象を制御するためのユーザプログラム等の実行が含まれる。ユーザプログラムは、制御対象機器を制御するための制御プログラムの一つである。ユーザは、ツール60を用いて、タスクの実行周期および実行タイミング、タスクで実行するプログラム、タスクで実行する入出力のリフレッシュ、タスク間で共有する変数等(グローバル変数等)に係る各種設定を定義することができる。ツール60は、ユーザにより定義された上述の各種設定を、PLC10に通知する(アップロードする)。
【0066】
(PLCの概要)
詳細は
図1を用いて説明するが、PLC10は、フィールドネットワーク20等の制御系の1つのネットワークに、送信ポート140を介して接続する。PLC10は、送信ポート140に対して、各々に格納されている送信データを、その送信データについて指定されている送信時刻に送信することのできる送信キュー120(TX120)を複数備えている。
【0067】
以下の説明において、TX120(送信キュー120)について、複数のTX120の各々を区別する必要がある場合には、符号に「(1)」、「(2)」、「(3)」、・・・、「(n)」等の添え字を付して区別する。例えば、「TX120(1)」、「TX120(2)」、「TX120(3)」、・・・、「TX120(n)」と記載して区別する。複数のTX120の各々を特に区別する必要がない場合は単に「TX120」と称する。「n」は、「2」以上の整数を意味する。後述する複数のCPUコア170についても同様に、複数のTX120の各々を区別する必要がある場合には符号に添え字を付して区別し、複数のTX120の各々を区別する必要がない場合は単に「CPUコア170」と称する。
【0068】
PLC10は、複数の送信キュー120の各々に格納されている送信データについて、その送信順序を制御するための優先度を設定する。そして、複数の送信キュー120の各々は、自キューの先頭に格納されている送信データに付与された優先度(送信優先度P)に従って、複数の送信キュー120の各々の先頭に格納されている送信データの送信順序を制御する。PLC10の実行する送信順序の制御について、
図10に例示した「各送信キューに予め割り当てておいた送信順序に従って実行される、従来までの送信順序の制御」との違いを、
図3を用いて説明する。
【0069】
(送信データに付与する送信優先度を用いた送信順序の制御)
図3は、PLC10の実行する、送信データの送信順序の制御を説明するための図である。詳細は
図1を用いて後述するが、PLC10は、マルチコアプロセッサ160を備え、マルチコアプロセッサ160は、複数のCPUコアである第1コア170(1)および第2コア170(2)を含む。第1コア170(1)は第1タスクT(1)に対応付けられており、第2コア170(2)は第2タスクT(2)に対応付けられており、つまり、第1タスクT(1)は第1コア170(1)において実行され、第2タスクT(2)は第2コア170(2)において実行される。また、第1送信キュー120(1)(つまり、TX120(1))は、第1コア170(1)または第1タスクT(1)に対応付けられ、第2送信キュー120(2)(つまり、TX120(2))は、第2コア170(2)または第2タスクT(2)に対応付けられている。
【0070】
以上に説明した通り、PLC10において、第1タスクT(1)および第2タスクT(2)の各々は、第1コア170(1)および第2コア170(2)の各々に対応付けられている。TX120(1)およびTX120(2)の各々は、第1タスクT(1)および第2タスクT(2)の各々、または、第1コア170(1)および第2コア170(2)の各々に対応付けられている。したがって、TX120(1)およびTX120(2)の各々は、直接、または、第1コア170(1)および第2コア170(2)の各々を介して間接に、第1タスクT(1)および第2タスクT(2)の各々に対応付けられている。
【0071】
TX120(1)からTX120(n)までの複数のTX120の各々に、直接または間接に、対応付けられるタスクは複数であってもよい。すなわち、TX120(1)に、複数の第1タスクT(1)(例えば、第1タスクT(1-1)、第1タスクT(1-2)、第1タスクT(1-3)、・・・、第1タスクT(1-n))が対応付けられてもよい。また、TX120(2)に、複数の第2タスクT(2)(例えば、第2タスクT(2-1)、第2タスクT(2-2)、第2タスクT(2-3)、・・・、第2タスクT(2-n))が対応付けられてもよい。
【0072】
同様に、PLC10において、複数のCPUコア170の各々に対応付けられるタスクは複数であってもよい。すなわち、第1コア170(1)に、複数の第1タスクT(1)(例えば、第1タスクT(1-1)、第1タスクT(1-2)、第1タスクT(1-3)、・・・、第1タスクT(1-n))が対応付けられてもよい。また、第2コア170(2)に、複数の第2タスクT(2)(例えば、第2タスクT(2-1)、第2タスクT(2-2)、第2タスクT(2-3)、・・・、第2タスクT(2-n))が対応付けられてもよい。
【0073】
PLC10は、TX120(1)からTX120(n)までの複数のTX120の各々に、直接、または、複数のCPUコア170の各々を介して間接に、1または複数のタスクを対応付けている。
【0074】
第1コア170(1)によって第1タスクT(1)の実行において生成される送信データ(例えば、第1タスクT(1)の実行結果を示すデータ)は、TX120(1)に格納される。同様に、第2コア170(2)によって第2タスクT(2)の実行において生成される送信データは、TX120(2)に格納される。すなわち、第1コア170(1)によって、第1タスクT(1-1)およびT(1-2)の各々の実行において生成される送信データD1-1およびD1-2は、各々、TX120(1)に格納される。第2コア170(2)によって、第2タスクT(2-1)およびT(2-2)の各々の実行において生成される送信データD2-1およびD2-2は、各々、TX120(2)に格納される。
【0075】
ここで、PLC10においては、
図10に例示した「複数の送信キューの各々に予め、送信順序を割り当てておく」のとは異なり、複数のTX120の各々に格納されるデータに、優先度(送信優先度P)が付与される。そして、複数の送信キュー120の各々は、自キューの先頭に格納されているデータの送信優先度Pに従って、自キューの先頭に格納されているデータを、送信ポート140を介して、フィールドネットワーク20等の制御系の1つのネットワークへと出力する。
【0076】
図3に示す例では、送信データD1-1およびD2-1の各々には、送信優先度P(つまり、送信したい順序)として、「1」が付与され、送信データD1-2およびD2-2の各々には、送信優先度Pとして、「2」が付与されている。
【0077】
ここで、「付与されている送信優先度Pが同じであれば、TX120(1)に格納されているデータを、TX120(2)に格納されているデータよりも優先して送信する」との前提の下では、送信順序は
図3に示すようになる。すなわち、送信優先度Pが共に「1」である送信データD1-1およびD2-1は、送信優先度Pが共に「2」である送信データD1-2およびD2-2よりも先に送信される。ここで、送信データD1-1はTX120(1)に格納されており、送信データD2-1はTX120(2)に格納されているため、送信優先度Pが「1」である送信データD1-1は、送信優先度Pが「1」である送信データD2-1よりも先に送信される。同様に、送信データD1-2はTX120(1)に格納されており、送信データD2-2はTX120(2)に格納されているため、送信優先度Pが「2」である送信データD1-2は送信優先度Pが「2」である送信データD2-2よりも先に送信される。
【0078】
したがって、
図3に示すように、PLC10は、各送信データに付与されている送信優先度Pに従って、送信データD1-1、D2-1、D1-2、D2-2を、この順に送信する。つまり、PLC10は、複数のデータの各々(複数のタスクの各々の実行により生成された送信データ)を、各データに付与された送信優先度Pに従って送信する。したがって、PLC10は、複数のデータの各々に付与する送信優先度Pを変更することによって、複数のデータの各々の送信順序を、柔軟に変更することができる。
【0079】
図10に例示した従来までのコントローラは、マイクロプロセッサのコア1を、送信順序として「1」を割り当てたTX1に対応付け、コア2を、送信順序として「2」を割り当てたTX2に対応付けている。したがって、コア1によって実行されるタスクにおいて生成される送信データはTX1に格納され、コア2によって実行されるタスクにおいて生成される送信データはTX2に格納される。
【0080】
コア1およびコア2の各々が実行するタスクには複数の種類があり、例えば、コア1において実行されるタスクにも、優先的に送信すべき制御データに係るタスクもあれば、制御データよりも優先度の低い、制御に関係しないデータに係るタスクもある。また、コア2において実行されるタスクにも、優先的に送信すべき制御データに係るタスクもあれば、制御データよりも優先度の低い、制御に関係しないデータに係るタスクもある。
【0081】
しかしながら、従来までのコントローラにおいて、TX1およびTX2に割り当てた送信順序は固定である。そのため、
図10に示すように、「コア2によって実行されるタスクにおいて生成される、制御データである送信データD2-1」を、「コア1によって実行されるタスクにおいて生成される、制御に関係しないデータである送信データD1-2」よりも先に送信することができない。また、従来までのコントローラに、「制御データである送信データD2-1の格納先をTX1に変更する」処理を実行させる場合、プロセッサの負荷が高くなってしまう。
【0082】
これに対して、PLC10は、複数のTX120の各々に格納する送信データについて、その送信データの送信順序を示す送信優先度Pを設定し、複数のTX120の各々に格納されている送信データの送信優先度Pに従って、送信データの送信順序を制御する。したがって、PLC10は、送信データが格納されるTX120に関係なく、他の送信データに優先して送信すべき送信データに、他の送信データに付与する送信優先度Pよりも高い送信優先度Pを付与することによって、その送信データを優先的に送信する。PLC10において、送信データの送信優先度Pの指定は、例えば、ディスクリプタを利用する。
【0083】
(特定のコアまたは特定のタスクに割り当てられていない送信キューの利用)
ここで、PLC10において、TX120は、例えば、FIFO(first in, first out、先入れ先出し)方式を採用している。例えば、第2コア170(2)によって、第2タスクT(2-1)およびT(2-2)がこの順で実行されると、TX120(2)には、以下のデータが格納される。すなわち、第2タスクT(2-1)の実行において生成される送信データD2-1、および、第2タスクT(2-2)の実行において生成される送信データD2-2が、この順で(つまり、各タスクの実行順で)、TX120(2)に格納される。
【0084】
ここで、PLC10は、複数のTX120の各々の先頭に格納された送信データの送信優先度Pが高い順に、複数のTX120の各々の先頭に格納された送信データを順次送信する。そのため、送信データD2-2を、送信データD2-1の後に、TX120(2)に格納した場合、送信データD2-2の送信優先度Pが評価されるのは、送信データD2-1の送信優先度Pの評価の後になる。つまり、送信データD2-2を、送信データD2-1の後に、TX120(2)に格納した場合、送信データD2-2の送信優先度Pを如何に高く設定しても、送信データD2-2の送信は、送信データD2-1の送信の後になる。
【0085】
そこで、PLC10は、複数のCPUコア170の内の特定のCPUコア170、または、複数のタスクT(1)からT(n)の内の特定のタスクT(x)に対応付けられていないTX120(0)を備えている。TX120(0)には、複数のタスクT(1)からT(n)のいずれかにおいて生成された送信データが、TX120(1)からTX120(n)の各々に格納される送信優先度Pよりも高い送信優先度Pと共に、格納される。
【0086】
PLC10は、TX120(0)を備え、TX120(0)に緊急性の高い送信データを格納することにより、TX120(1)からTX120(n)の各々に格納される送信データに関係なく、TX120(0)に格納した送信データを優先して送信できる。PLC10は、複数のCPUコア170の全てが共通して利用できるTX120(0)を備えることで、各々が特定のCPUコア170に対応付けられているTX120(1)からTX120(n)の状態に関係なく、緊急性の高いメッセージを優先的に送信することができる。
【0087】
(タスクについての注記)
PLC10のCPUユニット100は、種々のプログラムを「タスク」という実行単位で実行する。PLC10が「タスク」において実行可能な処理・プログラムは、「IO制御」、「制御プログラム」、および「システムサービス」の3つに分けることができる。なお、「システムサービス」は、PLC10の実行する処理・プログラムのうち「IO制御」および「制御プログラム」以外のものと捉えることができ、したがって、「システムサービス」は、「タスク」の必須の構成要素ではない。
【0088】
ユーザは、ツール60を用いて、PLC10(特に、CPUユニット100)におけるプログラムの実行単位であるタスクを設定することができる。PLC10(特に、CPUユニット100のマルチコアプロセッサ160)は、タスクを実行することにより制御対象を制御するように構成されており、タスクには、制御対象を制御するためのユーザプログラム等の実行が含まれている。ユーザプログラムは、制御対象機器を制御するための制御プログラムの一つである。ユーザは、ツール60を用いて、タスクの実行周期および実行タイミング、タスクで実行するプログラム、タスクで実行する入出力のリフレッシュ、タスク間で共有する変数等(グローバル変数等)に係る各種設定を定義することができる。ツール60は、ユーザにより定義された上述の各種設定を、PLC10に通知する(アップロードする)。タスクの設定は、ツール60から例えば接続ケーブル50を介してCPUユニット100へ転送され、不図示の不揮発性メモリなどに格納される。なお、前述の通り、「システムサービス」は、PLC10の実行する処理・プログラムのうち「IO制御」および「制御プログラム」以外のものと捉えることができるので、ユーザがタスク内での実行を指定しない「システムサービス」が、タスク中で実行されてもよい。
【0089】
ユーザは、ツール60を用いて、複数のタスクの間に優先順位を、より正確には、複数のタスクの各々の実行において生成される送信データの送信優先度Pを、設定することができる。例えばユーザは、ツール60を用いて、優先順位が互いに異なるプライマリ定周期タスクと、定周期タスクと、イベントタスクという3種類のタスクを設定できてもよい。プライマリ定周期タスクは、例えば、「IO制御、ユーザプログラム、モーション演算プログラム(、および、システムサービス)」を主な処理内容(実行内容)とする。定周期タスクは、例えば、「IO制御、ユーザプログラム(、および、システムサービス)」を主な処理内容とする。イベントタスクは、例えば、「ユーザプログラム(、および、システムサービス)」を主な処理内容とする。PLC10は、プライマリ定周期タスクを最優先で実行し、定周期タスクとイベントタスクとの間の優先関係はユーザが指定できてもよく、さらに、複数の定周期タスクの間に実行順位に係る優先度が設定されていてもよい。また、例えば、ユーザがツール60において、1つのタスクにシーケンス制御とモーション制御とを設定することにより、マルチコアプロセッサ160は、シーケンス制御とモーション制御とを同じ時間間隔で繰り返し実行する。
【0090】
ここで、ユーザは、ツール60を用いて、複数のタスクの間に優先順位を設定できるが、1つのタスクであっても、そのタスクの実行により生成される送信データは、複数の送信優先度Pを付与され得る。例えば、通常時は、或るタスクT(p)の実行によって、送信優先度Pが「2」である送信データD(p-1)が生成される場合であっても、或るタスクT(p)の実行によって、送信優先度Pが「0」である送信データD(p-2)が生成されることがある。具体的には、異常が発生していない状態では、タスクT(p)の実行によって送信データD(p-1)が生成されるのに対し、異常発生時には、タスクT(p)の実行によって、緊急性の高い送信データD(p-2)が生成されることがある。ユーザは、例えば、ツール60を用いて、異常が発生していない状態において(つまり、通常時において)タスクT(p)の実行によって生成される送信データD(p-1)の送信優先度Pを設定することができる。ユーザによる、ツール60を用いたタスクの優先度設定(特に、タスクの実行において生成される送信データの送信優先度Pの設定)について、詳細は、
図9を用いて後述する。
【0091】
§2.構成例
これまでに
図2および
図3を用いて概要を説明してきたPLC10について、次に、
図1を用いて、PLC10の備えるCPUユニット100の詳細を説明する。
【0092】
(CPUユニットのハードウェア構成)
図1は、PLC10のCPUユニット100の構成例を示す図である。
図1に例示する通り、CPUユニット100は、ハードウェア構成として、通信コントローラ110と、メインメモリ150と、マルチコアプロセッサ160と、を含む。CPUユニット100は、さらに、不図示の不揮発性メモリ、PLCシステムバス106を介したデータの遣り取りを制御するシステムバスコントローラ、ツール60とCPUユニット100とを接続するためのUSBコネクタなどを含んでもよい。通信コントローラ110と、メインメモリ150と、マルチコアプロセッサ160と、の間は、各種のバス(内部バス)を介してそれぞれ結合されている。
【0093】
マルチコアプロセッサ160は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成され、内部クロックに従って順次命令コードを解釈して実行する。マルチコアプロセッサ160は、複数のCPUコア170と、ネットワーク制御部180とを含み、
図1に示す例では、マルチコアプロセッサ160は、複数のCPUコア170として、第1コア170(1)および第2コア170(2)を含んでいる。マルチコアプロセッサ160の含むCPUコア170が2つであることは必須ではなく、マルチコアプロセッサ160は、複数のCPUコア170を含んでいればよい。ただし、詳細は後述するが、PLC10は、マルチコアプロセッサ160の代わりに、シングルコアプロセッサを備えてもよい。
【0094】
複数のCPUコア170(
図1に示す例では、第1コア170(1)および第2コア170(2))は、各々、複数のタスクを実行する。複数のCPUコア170は、各々、タスクの実行により生成した送信データを、メインメモリ150に格納(言い換えれば、設定)すると、データ転送要求(送信データのフィールドネットワーク20への送信)を、ネットワーク制御部180に対して発行する。
【0095】
特に、複数のCPUコア170の各々には、複数のCPUコア170の各々において実行される、複数のタスクTの各々が対応付けられている。すなわち、
図1に示す第1コア170(1)および第2コア170(2)の各々には、第1コア170(1)および第2コア170(2)の各々において実行される複数のタスクTが予め対応付けられている。例えば、第1コア170(1)には、タスクT(1)、T(3)、T(5)、・・・が対応付けられており、第2コア170(2)には、タスクT(2)、T(4)、T(6)、・・・が対応付けられている。
【0096】
マルチコアプロセッサ160の含む複数のCPUコア170の各々には、複数のTX120の各々が対応付けられ、具体的には、第1コア170(1)および第2コア170(2)の各々には、TX120(1)およびTX120(2)が対応付けられている。第1コア170(1)によって実行されるタスクにおいて生成される送信データは、原則として、TX120(1)に格納され、第2コア170(2)によって実行されるタスクにおいて生成される送信データは、原則として、TX120(2)に格納される。
【0097】
ネットワーク制御部180は、複数のCPUコア170の各々によるタスクの実行によって生成された複数の送信データの各々に係るディスクリプタを、メインメモリ150に格納(言い換えれば、設定)する。また、ネットワーク制御部180は、複数のCPUコア170の各々から発行されたデータ転送要求を受け取ると、受け付けたデータ転送要求に対応する送信データのデータ転送(フィールドネットワーク20への送信)を、通信コントローラ110に要求する。
【0098】
メインメモリ150は、CPUユニット100の記憶手段であり、例えば、マルチコアプロセッサ160による演算処理によって生成された送信データは、メインメモリ150へと格納される。前述の通り、CPUユニット100は、記憶手段としてさらに、不図示の不揮発性メモリをさらに備えていてもよい。
【0099】
メインメモリ150は、揮発性の記憶領域(RAM)であり、マルチコアプロセッサ160によって生成された送信データの格納に加えて、CPUユニット100へ電源投入後にマルチコアプロセッサ160で実行されるべき各種プログラムを保持する。また、メインメモリ150は、マルチコアプロセッサ160による各種プログラムの実行時の作業用メモリとしても使用される。このようなメインメモリ150として、例えば、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)等を用いることができる。
【0100】
一方、不揮発性メモリは、各種のプログラムおよびパラメータなどのデータを不揮発的に保持する。これらのデータは、必要に応じて、マルチコアプロセッサ160がアクセスできるようにメインメモリ150にコピーされる。このような不揮発性メモリは、フラッシュメモリのような半導体メモリを用いることができる。あるいは、ハードディスクドライブのような磁気記録媒体、DVD-RAM(Digital Versatile Disk Random Access Memory)のような光学記録媒体などを用いることもできる。
【0101】
通信コントローラ110は、送信データの送信および受信データの受信を実行し、典型的には、FPGA(Field-Programmable gate array)またはASIC(Application Specific Integrated Circuit)等のハードウェアで構成される。通信コントローラ110は、メインメモリ150およびマルチコアプロセッサ160の各々とのデータの送受信が可能に構成される。
【0102】
通信コントローラ110は、送信ポート140を介してフィールドネットワーク20と接続され、フィールドネットワーク20を介したデータの遣り取りを、特に、送信データの送信を、制御する。通信コントローラ110は、例えば、フィールドネットワーク20における物理層およびデータリンク層の機能を提供する。すなわち、通信コントローラ110は、用いられるフィールドネットワーク20の規格に従い、送信データの送信および受信データの受信を制御する。具体的には、通信コントローラ110は、フィールドネットワーク20に接続されるフィールド機器との間で、複数のTX120の各々に格納されている送信データを送信し、また、受信データを受信して自らのバッファメモリに格納する。特に、通信コントローラ110は、複数のデータFIFO122の各々の先頭に格納されている送信データを、複数のディスクリプタFIFO123の各々の先頭に格納されている送信優先度Pに従って、送信ポート140を介して順次出力する。
【0103】
これまでに概要を説明してきた、通信コントローラ110と、メインメモリ150と、マルチコアプロセッサ160との関係は、以下のように整理することができる。すなわち、マルチコアプロセッサ160による演算処理によって生成された送信データは、原始的にはメインメモリ150に格納される。そして、特定の装置・ユニットへ転送されるべき送信データは、メインメモリ150から読み出されて、通信コントローラ110のTX120(特に、データFIFO122)に一次的に保持される。例えば、ユーザプログラムは、タスクT(1)に割り当てられることによって、第1コア170(1)で実行され、その実行結果は、送信データとして、TX120(1)に一時的に格納された後、PLC10の制御対象へと送信される。
【0104】
(通信コントローラの詳細)
通信コントローラ110は、複数のTX120と、優先度調停部130と、送信ポート140とを含み、前述の通り、複数のTX120および優先度調停部130は、FPGAまたはASIC等のハードウェアによる論理回路で構成される。
図1においては、記載の簡潔性を担保するため、送信ポート140を介してフィールドネットワーク20から受信する受信データを処理する構成、受信データを格納するバッファメモリなどの、本実施の形態に直接関係のない構成は、省略している。ただし、実施の実情に則して、通信コントローラ110は、当該省略された構成を備えてもよい。
【0105】
TX120は、フィールドネットワーク20を介して他の装置などへ出力されるデータ、および、PLCシステムバス106を介してCPUユニット100以外のユニットへ出力されるデータ(出力データ)の送信バッファとして機能する。すなわち、TX120は、メインメモリ150とのデータの通信に用いられるメモリ領域である。
【0106】
通信コントローラ110は、TX120(0)からTX120(n)までの複数のTX120を含み、
図1には、「n=2」として、TX120(0)からTX120(2)までの3つのTX120を含む例が開示されている。しかしながら、「n=2」であることは必須ではなく、通信コントローラ110は、複数のTX120を備えていればよい。すなわち、PLC10は、1または複数の送信データを一時的にバッファリングするとともに、当該バッファリングした送信データをフィールドネットワーク20に順次送出する、FIFO(First In First Out)のTX120を複数備えている。
【0107】
ここで、複数のタスクT(1)からT(n)の各々は、複数のCPUコア170(1)から170(n)の各々に対応付けられており、複数のCPUコア170(1)から170(n)の各々は、TX120(1)からTX120(n)の各々に対応付けられている。したがって、TX120(1)からTX120(n)の各々は、複数のCPUコア170(1)から170(n)の各々を介して間接的に、複数のタスクT(1)からT(n)の各々に対応付けられている。言い換えれば、TX120(1)からTX120(n)の各々は、複数のタスクT(1)からT(n)の各々、または、複数のCPUコア170(1)から170(n)の各々に、対応付けられている。
【0108】
例えば、TX120(1)には第1コア170(1)が対応付けられており、第1コア170(1)によって実行されるタスクにおいて生成される送信データは、原則として、TX120(1)に格納される。具体的には、第1コア170(1)によって実行されるタスクにおいて生成される送信データであって、「1」以下の送信優先度Pが付与される送信データは、TX120(1)に格納される。第1コア170(1)によって実行されるタスクにおいて生成される送信データであって、送信優先度Pとして「0」が付与される送信データは、TX120(0)に格納される。
【0109】
TX120(2)には第2コア170(2)が対応付けられており、第2コア170(2)によって実行されるタスクにおいて生成される送信データは、原則として、TX120(2)に格納される。具体的には、第2コア170(2)によって実行されるタスクにおいて生成される送信データであって、「1」以下の送信優先度Pが付与される送信データは、TX120(2)に格納される。第2コア170(2)によって実行されるタスクにおいて生成される送信データであって、送信優先度Pとして「0」が付与される送信データは、TX120(0)に格納される。
【0110】
TX120(0)は、第1コア170(1)および第2コア170(2)のいずれにも対応付けられておらず、TX120(1)またはTX120(2)に格納される送信データに付与されるのよりも高い送信優先度Pが付与される送信データが格納される。具体的には、第1コア170(1)または第2コア170(2)によって実行されるタスクにおいて生成される送信データであって、送信優先度Pとして「0」が付与される送信データは、TX120(0)に格納される。
【0111】
TX120(0)からTX120(n)の各々の構成は同じであり、すなわち、TX120は、DMAC121、データFIFO122、ディスクリプタFIFO123、および、時刻/優先度設定部124を含む。
【0112】
DMAC(Direct Memory Access Controller)121は、メインメモリ150に格納されているディスクリプタを、TX120(特に、TX120のディスクリプタFIFO123)に転送する。また、DMAC121は、ディスクリプタFIFO123に格納されているディスクリプタに従って、メインメモリ150に格納されている送信データを、TX120(特に、TX120のデータFIFO122)に転送する。
【0113】
例えば、DMAC121(1)は、メインメモリ150に格納されている、TX120(1)のためのディスクリプタを、ディスクリプタFIFO123(1)に転送する。DMAC121(1)は、ディスクリプタFIFO123(1)に格納されているディスクリプタに従って、メインメモリ150に格納されている送信データを、データFIFO122(1)に転送する。DMAC121(1)は、ディスクリプタFIFO123(1)のディスクリプタに従って、TX120(1)に対応付けられている第1コア170(1)によって実行されるタスクにおいて生成された送信データを、データFIFO122(1)に転送する。
【0114】
データFIFO122には、ディスクリプタFIFO123(1)に格納されているディスクリプタに従うDMAC121によって、メインメモリ150に格納されている送信データが、FIFO方式で格納される。
【0115】
ディスクリプタFIFO123には、DMAC121によって、メインメモリ150に格納されているディスクリプタが、FIFO方式で格納される。ディスクリプタは、対応する送信データの送信時刻、データサイズ、および、送信優先度Pを示す情報に加えて、送信データが格納されているメインメモリ150のメモリアドレスなどの情報を含む。
【0116】
時刻/優先度設定部124は、データFIFO122に格納されている送信データと、ディスクリプタFIFO123に格納されているディスクリプタとを対応付ける。具体的には、時刻/優先度設定部124は、データFIFO122の先頭に格納されている送信データと、ディスクリプタFIFO123の先頭に格納されているディスクリプタとを対応付ける。同様に、時刻/優先度設定部124は、データFIFO122の先頭からn番目に格納されている送信データと、ディスクリプタFIFO123の先頭からn番目に格納されているディスクリプタとを対応付ける。
【0117】
メインメモリ150に格納されている送信データは、DMAC121によって、送信データの送信を開始すべき時刻である送信時刻と共にTX120にバッファリングされ(つまり、格納され)、バッファリングが完了すると送信可能状態となる。より正確には、DMAC121は、送信データをデータFIFO122に、送信時刻を、送信優先度Pなどと共に、ディスクリプタFIFO123に格納する。そして、送信可能状態となった送信データは、送信時刻に、TX120によって、ネットワークへの送信を開始される。ここで、複数の送信データについて送信時刻が一致または近似する場合、複数の送信データの送信が衝突するのを回避する必要がある。そこで、優先度調停部130が、複数の送信データの送信順序を制御する。
【0118】
優先度調停部130は、複数のTX120の各々の先頭に格納されている送信データの送信優先度Pに従って、複数のTX120の各々の先頭に格納されている送信データの送信順序を調停(制御)する。具体的には、優先度調停部130は、複数のTX120の各々における、複数のディスクリプタFIFO123の各々の先頭に格納されている送信優先度Pを比較する。優先度調停部130は、最も高い送信優先度Pを先頭に格納しているディスクリプタFIFO123を含むTX120に、送信権を付与する。優先度調停部130によって送信権を付与されたTX120は、データFIFO122の先頭に格納している送信データを、送信ポート140を介してフィールドネットワーク20へ出力する。
【0119】
例えば、ディスクリプタFIFO123(0)にはデータが未格納で、ディスクリプタFIFO123(1)には、先頭に「送信優先度P:1」、2番目に「送信優先度P:3」が格納され、ディスクリプタFIFO123(2)には、先頭のみに「送信優先度P:2」が格納されている場合、優先度調停部130は、以下の処理を実行する。
【0120】
すなわち、ディスクリプタFIFO123(0)にはデータが未格納なので、優先度調停部130は、ディスクリプタFIFO123(1)の先頭に格納されている「送信優先度P:1」と、ディスクリプタFIFO123(2)の先頭に格納されている「送信優先度P:2」とを比較する。「送信優先度P:1」の方が「送信優先度P:2」よりも高いため、優先度調停部130は、TX120(1)に送信権を付与し、TX120(1)は、データFIFO122(1)の先頭に格納している送信データを送信する。これに伴って、ディスクリプタFIFO123(1)において、2番目に格納されていた「送信優先度P:3」が先頭になり、データFIFO122(1)において、2番目に格納されていた送信データが先頭になる。
【0121】
ディスクリプタFIFO123(0)にはデータが未格納なので、優先度調停部130は、ディスクリプタFIFO123(1)の先頭に格納されている「送信優先度P:3」と、ディスクリプタFIFO123(2)の先頭に格納されている「送信優先度P:2」とを比較する。「送信優先度P:2」の方が「送信優先度P:3」よりも高いため、優先度調停部130は、TX120(2)に送信権を付与し、TX120(2)は、データFIFO122(2)の先頭に格納している送信データを送信する。これに伴って、ディスクリプタFIFO123(2)およびデータFIFO122(2)には、データが格納されていない状態となる。
【0122】
(PLCについての整理)
これまでに
図1を用いて構成を説明してきたPLC10について、その理解を容易にするため、以下のように整理しておく。すなわち、PLC10(コントローラ)は、複数のタスクを実行するマルチコアプロセッサ160(プロセッサ)と、マルチコアプロセッサ160による前記複数のタスクの各々の実行により生成される送信データを外部に出力する通信コントローラ110(通信制御部)と、を備える。通信コントローラ110は、前記複数の送信データの各々が送信優先度Pと共に格納される複数のTX120(送信キュー)を含む。通信コントローラ110は、複数のTX120の各々の先頭に格納された送信データの送信優先度Pが高い順に、複数のTX120の各々の先頭に格納された送信データを、1つの送信ポート140を介して順次出力する。
【0123】
前記の構成によれば、PLC10における通信コントローラ110は、複数のTX120を含み、複数のTX120の各々には、前記複数のタスクの各々の実行により生成される複数の送信データの各々が、送信優先度Pと共に、格納される。そして、通信コントローラ110は、複数のTX120の各々の先頭に格納した前記送信データの送信優先度Pが高い順に、複数のTX120の各々の先頭に格納した前記送信データを、1つの送信ポート140を介して順次出力する。
【0124】
従来のコントローラは、1つの通信ネットワークに送信する複数のメッセージ(複数のタスクの各々の実行により生成される送信データ)の送信順序を制御するため、例えば、以下の構成を備えている。すなわち、従来のコントローラは、1つの送信ポートに複数の送信キューを対応付け、各送信キューに予め付与された優先順位に従って、各送信キューに格納されたメッセージを、1つの送信ポートを介して、前記1つの通信ネットワークに順次出力していた。各メッセージについて、つまり、各タスクの実行により生成される送信データについて、その優先順位が固定である場合、各タスクを、予め固定の優先順位を付与しておいた複数の送信キューの各々に対応付ける従来のコントローラは、メッセージを優先順位に従って効率的に送信できる。
【0125】
しかしながら、従来のコントローラは、低い優先順位の付与された送信キューに対応付けられているタスクの実行により生成される送信データを、高い優先順位の付与された送信キューに対応付けられているタスクの実行により生成される送信データに優先して送信することが困難である。従来のコントローラにおいて、各送信キューに格納されたメッセージは、各送信キューに予め付与された優先順位に従って送信され、各送信キューと各タスクとは予め対応付けられている。従来のコントローラにおいて、低い優先順位の付与された送信キューに対応付けられているタスクの実行により生成される送信データ(メッセージ)は、低い優先順位の付与された送信キューに格納され、高い優先順位の付与された送信キューに格納されているメッセージの後に送信される。
【0126】
これに対し、PLC10における通信コントローラ110は、複数のTX120の各々に格納したメッセージ(各タスクの実行により生成される送信データ)を、複数のTX120の各々の優先順位ではなく、各メッセージの送信優先度に従って、送信ポート140を介して順次出力する。つまり、PLC10は、前記複数の送信データの各々の出力順序を、前記複数の送信データの各々が格納されているTX120に予め付与された優先順位ではなく、前記複数の送信データの各々の送信優先度Pによって、制御する。
【0127】
したがって、PLC10は、前記複数の送信データの各々の、送信ポート140からの出力順序を、前記複数の送信データの各々に付与する送信優先度Pによって、柔軟に変更することができるとの効果を奏する。
【0128】
特に、PLC10は、複数のタスクの各々の実行により生成される送信データの、送信ポート140からの出力順序を、マルチコアプロセッサ160ではなく、通信コントローラ110によって制御する。したがって、PLC10は、複数のタスクを実行するマルチコアプロセッサ160への処理負荷を増大させることなく、複数の送信データを、各送信データの送信優先度Pに従って、送信ポート140から出力できるとの効果を奏する。
【0129】
PLC10において、マルチコアプロセッサ160は、複数のタスクの各々を、複数のタスクの各々に予め対応付けられた複数のCPUコア170の各々において実行するマルチコアプロセッサである。
【0130】
前記の構成によれば、PLC10は、マルチコアプロセッサ160を備え、複数のCPUコア170の各々は、複数のタスクの各々に予め対応付けられている。したがって、PLC10は、複数のタスクを、例えばマルチタスクで実行する等によって、高速な制御を実現することができるとの効果を奏する。
【0131】
PLC10において、複数のTX120の各々に格納される送信データと送信優先度Pとは、ユーザによって予め対応付けられている。前記の構成によれば、PLC10において、複数のタスクの各々の実行により生成され、複数のTX120の各々に格納される複数の送信データの各々と、複数のTX120の各々に格納される送信優先度Pとは、予めユーザによって対応付けられている。したがって、PLC10は、ユーザが、複数のタスクの各々の実行により生成される複数の送信データの各々について、送信ポート140からの出力順序(送信順序)を予め設定しておくことを可能とするとの効果を奏する。
【0132】
PLC10において、通信コントローラ110は、ハードウェアによる論理回路で構成されている。前記の構成によれば、PLC10において、通信コントローラ110は、FPGAまたはASIC等のハードウェアによる論理回路で構成される。つまり、PLC10は、複数のタスクを実行するマルチコアプロセッサ160ではなく、ハードウェアによる論理回路で構成した通信コントローラ110によって、複数のタスクの各々の実行により生成される複数の送信データの各々の送信を制御する。したがって、PLC10は、マルチコアプロセッサ160への処理負荷を増大させることなく、ハードウェアによる論理回路で構成した通信コントローラ110によって、複数の送信データの各々の送信を制御することができるとの効果を奏する。
【0133】
§3.動作例
図1等を用いて説明してきたように、PLC10は、複数のTX120を備え、複数のTX120の各々の先頭に格納されている送信データの送信優先度Pに従って、複数のTX120の各々の先頭に格納されている送信データの送信順序を制御する。以下、
図4、
図5、および、
図6を用いて、PLC10(特に、CPUユニット100)が実行する処理について、説明していく。
【0134】
図4は、CPUユニット100が実行する処理の全体概要を示すフロー図である。CPUコア170によるタスクの実行によって生成される送信データは、通常、その送信時刻、データサイズ、送信優先度P、および、格納されるメインメモリ150のアドレスなどが予め決められており、つまり、データ構造が決まっている。そこで、ネットワーク制御部180は、送信データがメインメモリ150に格納される前に、メインメモリ150に格納される予定の送信データについてのディスクリプタを、メインメモリ150に格納(つまり、設定)しておく(S1)。
【0135】
CPUコア170は、自コアに対応付けられたタスク(例えば、モーション制御などのタスク)を実行し、実行したタスクによって生成された送信データを、メインメモリ150に格納(つまり、設定)する(S2)。また、CPUコア170は、実行したタスクによって生成された送信データのデータ転送(フィールドネットワーク20への送信)を、ネットワーク制御部180に要求する(S3)。
【0136】
CPUコア170からのデータ転送要求を受け付けたネットワーク制御部180は、受け付けたデータ転送要求に対応する送信データの送信を、通信コントローラ110に、特に、TX120に要求する(S4)。ネットワーク制御部180は、TX120に対して送信を要求する送信データのディスクリプタ分のポインタ(個数)を更新する。例えば、ネットワーク制御部180は、TX120(1)に、3つの送信データの送信を要求する場合、TX120(1)の、3つのディスクリプタポインタを更新する。
【0137】
ディスクリプタポインタが更新されたTX120は、更新されたディスクリプタポインタの個数に対応するディスクリプタ(ディスクリプタデータ)を、メインメモリ150から取得する(S5)。TX120は、メインメモリ150から取得したディスクリプタデータを、ディスクリプタFIFO123に格納する。例えば、TX120(1)の3つのディスクリプタポインタが更新されると、DMAC121(1)は、メインメモリ150から、TX120(1)のためのディスクリプタを、3つ、ディスクリプタFIFO123(1)に転送する。
【0138】
TX120(特に、DMAC121)は、S5においてディスクリプタFIFO123に格納(つまり、転送)したディスクリプタに従って、メインメモリ150に格納されている送信データを、データFIFO122に転送する(S6)。
【0139】
TX120は、S6においてデータFIFO122に格納した送信データを送信するために、優先度調停部130に送信要求を発行する(S7)。例えば、時刻/優先度設定部124は、データFIFO122の先頭に格納されている送信データを送信するための送信要求を、ディスクリプタFIFO123の先頭に格納されているディスクリプタに含まれる送信優先度Pと共に、優先度調停部130に出力する。
【0140】
優先度調停部130は、複数のTX120の各々からの送信要求を受け付けると、各送信要求の送信優先度Pに従って、複数の送信要求の間の調停を実施する(S8)。すなわち、優先度調停部130は、複数のTX120の各々のディスクリプタFIFO123の先頭に格納されているディスクリプタに含まれる送信優先度Pが最も高いTX120に、送信権を付与する。
【0141】
優先度調停部130によって送信権を付与されたTX120は、データFIFO122の先頭に格納している送信データを、送信ポート140を介してフィールドネットワーク20へ出力する(S9)。例えば、優先度調停部130によってTX120(1)に送信権が付与されると、時刻/優先度設定部124(1)は、データFIFO122(1)の先頭に格納している送信データを、送信ポート140を介してフィールドネットワーク20へ出力する。
【0142】
TX120は、データFIFO122に格納している送信データの送信に合わせて、ディスクリプタFIFO123に格納しているディスクリプタデータを削除する。例えば、時刻/優先度設定部124は、データFIFO122の先頭に格納している送信データを送信すると、ディスクリプタFIFO123の先頭に格納しているディスクリプタデータを削除する。その結果、データFIFO122の先頭から2番目に格納されていた送信データが、データFIFO122の先頭に、ディスクリプタFIFO123の先頭から2番目に格納されていたディスクリプタデータが、ディスクリプタFIFO123の先頭に、格納される。そして、ディスクリプタFIFO123に格納されているディスクリプタデータが無くなると、TX120は、マルチコアプロセッサ160のネットワーク制御部180に、データ送信の完了を通知する(S10)。
【0143】
図5は、
図4に示す処理のうち、CPUユニット100のネットワーク制御部180および複数のCPUコア170の各々が実行する処理の全体概要を示すフロー図である。
図5における「(N)」および「(C)」は、各々、ネットワーク制御部180およびCPUコア170の各々が実行する処理であることを示す添え字である。
【0144】
図5の(A)に示すように、ネットワーク制御部180は、
図4のS1に対応する処理として、例えば、各々が、メインメモリ150に格納される予定の複数の送信データの各々に対応する、複数のディスクリプタを、メインメモリ150に設定する(S1(N))。そして、ネットワーク制御部180は、或るタスク(タスク_n)からの、言い換えれば、その或るタスクを実行したCPUコア170からの、送信データの送信要求を受け付けるまで待機しておく(S3(N)でNo)。
【0145】
図4のS3に対応する「CPUコア170(言い換えれば、タスク_n)からの送信要求」があると(S3(N)でYes)、ネットワーク制御部180は、
図4のS4に対応する処理として、以下の処理を実行する。すなわち、ネットワーク制御部180は、CPUコア170から受け付けたデータ転送要求に対応する送信データの送信を、通信コントローラ110に要求する(S4(N))。
【0146】
その後、ネットワーク制御部180は、
図4のS10に対応する送信完了通知をTX120から受信するまで待機し(S10(N)でNo)、送信完了通知を受信すると(S10(N)でYes)、処理を狩猟する。
【0147】
図5の(B)に示すように、CPUコア170(言い換えれば、CPUコア170によって実行されるタスク)は、
図4のS2およびS3の各々に対応する処理として、以下の処理を実行する。すなわち、CPUコア170は、フィールドネットワーク20に送信する送信データを生成し、生成した送信データを、メインメモリ150に格納(つまり、設定)する(S2(C))。そして、CPUコア170は、メインメモリ150に設定した送信データを送信するよう、ネットワーク制御部180に要求し、つまり、送信要求をネットワーク制御部180に発行する(S3(C))。
【0148】
図6は、
図4に示す処理のうち、CPUユニット100の通信コントローラ110が実行する処理の全体概要を示すフロー図である。
図6における「(T)」は、通信コントローラ110が実行する処理であることを示す添え字である。
【0149】
通信コントローラ110(特に、複数のTX120の各々)は、
図4のS4に対応する「CPUコア170からの送信要求(データ転送要求)」として、ディスクリプタポインタの更新があるかを判定する(S4(T))。複数のTX120の各々は、ディスクリプタポインタの更新があるまで待機しておく(S4(T)でNo)。
【0150】
ディスクリプタポインタの更新があると判定すると(S4(T)でYes)、TX120(特に、DMAC121)は、
図4のS5およびS6の各々に対応する処理として、以下の処理を実行する。すなわち、DMAC121は、メインメモリ150からディスクリプタデータを取得し、取得したディスクリプタデータを、ディスクリプタFIFO123に格納する(S5(T))。そして、DMAC121は、ディスクリプタFIFO123に格納したディスクリプタに従って、メインメモリ150に格納されている送信データを、データFIFO122に転送する(S6(T))。
【0151】
TX120(例えば、時刻/優先度設定部124)は、ディスクリプタFIFO123の先頭に格納されているディスクリプタの示す送信時刻が経過したかを判定し(S61)、送信時刻が経過するまで待機しておく(S61でNo)。ディスクリプタFIFO123の先頭に格納されているディスクリプタの示す送信時刻が経過したと判定すると(S61でYes)、TX120(例えば、時刻/優先度設定部124)は、
図4のS7に対応する処理として、以下の処理を実行する。すなわち、TX120は、データFIFO122の先頭に格納されている送信データを送信するための送信要求を、ディスクリプタFIFO123の先頭に格納されているディスクリプタに含まれる送信優先度Pと共に、優先度調停部130に出力する(S7(T))。
【0152】
TX120(例えば、時刻/優先度設定部124)は、
図4のS8に対応する「優先度調停部130からの送信権」を獲得できたかを判定し(S8(T))、「優先度調停部130からの送信権」を獲得できるまで待機しておく(S8(T)でNo)。「優先度調停部130からの送信権」を獲得すると(S8(T)でYes)、TX120(例えば、時刻/優先度設定部124)は、
図4のS9に対応する処理として、以下の処理を実行する。すなわち、TX120は、データFIFO122の先頭に格納している送信データを、送信ポート140を介してフィールドネットワーク20へ出力する(S9(T))。
【0153】
TX120は、ネットワーク制御部180から指定されたディスクリプタ数分の送信を終了したかを判定し、つまり、ディスクリプタFIFO123に格納されているディスクリプタデータが無いかを判定する(S91)。TX120は、ネットワーク制御部180から指定されたディスクリプタ数分の送信を終了していないと判定すると(S91でNo)、つまり、ディスクリプタFIFO123に格納されているディスクリプタデータがあると、S5(T)に戻って処理を繰り返す。
【0154】
TX120は、ネットワーク制御部180から指定されたディスクリプタ数分の送信を終了したと判定すると(S91でYes)、つまり、ディスクリプタFIFO123に格納されているディスクリプタデータがなくなると、
図4のS10に対応する処理として、以下の処理を実行する。すなわち、X120は、マルチコアプロセッサ160に、データ送信の完了を通知する(S10(T))。
【0155】
これまでに
図4および
図6を用いて説明してきた、PLC10の実行する処理、特に、通信コントローラ110の実行する処理は、以下のように整理することができる。すなわち、通信コントローラ110が実行する処理(制御方法)は、マルチコアプロセッサ160による複数のタスクの各々の実行により生成される複数の送信データの各々を、複数の送信データの各々の送信優先度Pと共に、複数のTX120の各々に格納する格納ステップ(S6(T))と、前記格納ステップにて、複数のTX120の各々に送信優先度Pと共に格納した送信データについて、複数のTX120各々の先頭に格納した送信データの送信優先度Pが高い順に、複数のTX120の各々の先頭に格納した送信データを、1つの送信ポート140を介して順次出力する送信ステップ(S7(T)からS9(T)に対応)と、を含む。
【0156】
前記の方法によれば、前記制御方法において、通信コントローラ110は複数のTX120を含み、前記制御方法は、複数のTX120の各々に、複数のタスクの各々の実行により生成される複数の送信データの各々を、送信優先度Pと共に、格納する。そして、前記制御方法は、複数のTX120の各々の先頭に格納した送信データの送信優先度Pが高い順に、複数のTX120の各々の先頭に格納した送信データを、1つの送信ポート140を介して順次出力する。
【0157】
従来のコントローラは、1つの通信ネットワークに送信する複数のメッセージ(複数のタスクの各々の実行により生成される送信データ)の送信順序を制御するため、例えば、以下の構成を備えている。すなわち、従来のコントローラは、1つの送信ポートに複数の送信キューを対応付け、各送信キューに予め付与された優先順位に従って、各送信キューに格納されたメッセージを、前記1つの送信ポートを介して、前記1つの通信ネットワークに順次出力していた。各メッセージについて、つまり、各タスクの実行により生成される送信データについて、その優先順位が固定である場合、各タスクを、予め固定の優先順位を付与しておいた複数のTX120の各々に対応付ける従来のコントローラは、メッセージを優先順位に従って効率的に送信できる。
【0158】
しかしながら、従来のコントローラは、低い優先順位の付与されているTX120に対応付けられたタスクの実行により生成される送信データ(すなわち、メッセージ)を、高い優先順位の付与されているTX120に対応付けられたタスクの実行により生成される送信データに優先して送信することが困難である。従来のコントローラにおいて、各送信キューに格納されたメッセージは、各送信キューに予め付与された優先順位に従って送信され、各送信キューと各タスクとは予め対応付けられている。従来のコントローラにおいて、低い優先順位の付与されたTX120に対応付けられているタスクの実行により生成される送信データ(メッセージ)は、低い優先順位の付与されたTX120に格納され、高い優先順位の付与されたTX120に格納されているメッセージの後に送信される。
【0159】
これに対し、前記制御方法は、複数のTX120の各々に格納したメッセージ(各タスクの実行により生成される送信データ)を、複数のTX120の各々の優先順位ではなく、各メッセージの送信優先度Pに従って、送信ポート140を介して順次出力する。つまり、前記制御方法は、複数の送信データの各々の出力順序を、複数の送信データの各々が格納されている複数のTX120の各々に予め付与された優先順位ではなく、複数の送信データの各々の送信優先度Pによって、制御する。
【0160】
したがって、前記制御方法は、複数の送信データの各々の、送信ポート140からの出力順序を、複数の送信データの各々に付与する送信優先度Pによって、柔軟に変更することができるとの効果を奏する。
【0161】
特に、前記制御方法は、マルチコアプロセッサ160ではなく、通信コントローラ110によって実行される。したがって、前記制御方法は、複数のタスクを実行するマルチコアプロセッサ160への処理負荷を増大させることなく、複数の送信データを、各送信データの送信優先度Pに従って、1つの送信ポート140から出力できるとの効果を奏する。
【0162】
(緊急度の高い送信データの優先的送信)
特定のコアまたは特定のタスクに割り当てられていない送信キュー120(つまり、TX120(0))を備えることによって、PLC10は、緊急度の高い送信データを、他の送信データに優先して送信することができる。以下に、PLC10が送信キュー120を備えることによって可能となる「緊急度の高い送信データの優先的送信」について、
図7および
図8を用いて、その詳細を説明する。
【0163】
図7は、PLC10について、TX120(0)を設けなかった場合に生じる状況を説明する図である。例えば、第1コア170(1)によるタスクT(1-1)の実行によって生成される送信データD1-1は、「送信優先度P:1」が付与されて、TX120(1)に格納される。同様に、第2コア170(2)によるタスクT(2-1)の実行によって生成される送信データD2-1は、「送信優先度P:1」が付与されて、TX120(2)に格納される。
【0164】
第2タスクT(2-1)の実行後に、第2コア170(2)によって第2タスクT(2-2)が実行された場合、第2タスクT(2-2)の実行によって生成された送信データD2-2を、TX120(2)に格納すると、
図7に示す事態が発生する。
【0165】
すなわち、FIFO方式を採用するTX120(2)には、第2タスクT(2-1)の実行により生成された送信データD2-1と、第2タスクT(2-2)の実行により生成された送信データD2-2とが、この順に格納される。そして、TX120(2)の先頭に送信データD2-1を、TX120(2)の先頭から2番目に送信データD2-2を格納した場合、PLC10は、送信データD2-2を送信データD2-1よりも先に送信することができない。
【0166】
PLC10は、複数のTX120の各々の先頭に格納した送信データの送信優先度Pが高い順に、複数のTX120の各々の先頭に格納された送信データを順次送信するため、
図7に示す例では、以下の順に送信データD1-1、D2-1、D2-2を送信する。すなわち、PLC10は、TX120(1)の先頭に格納された送信データD1-1の「送信優先度P:1」と、TX120(2)の先頭に格納された送信データD2-1の「送信優先度P:1」とを比較する。「付与されている送信優先度Pが同じであれば、TX120(1)に格納されているデータを、TX120(2)に格納されているデータよりも優先して送信する」との前提の下では、PLC10は、先ず、送信データD1-1を送信する。次に、PLC10は、TX120(1)に格納されている送信データが無いので、TX120(2)の先頭に格納された送信データD2-1を送信する。そして、PLC10は、送信データD2-1の送信後に、送信データD2-2を送信する。
【0167】
以上に説明した通り、送信データD2-2を、送信データD2-1の後に、TX120(2)に格納した場合、送信データD2-2の送信優先度Pが評価されるのは、送信データD2-1の送信優先度Pの評価の後になる。つまり、送信データD2-2を、送信データD2-1の後に、TX120(2)に格納した場合、送信データD2-2の送信優先度Pを如何に高く設定しても、送信データD2-2の送信は、送信データD2-1の送信の後になる。
図7に示すように、第2コア170(2)で緊急度の高い(「送信優先度P:0」を付与する)送信データD2-2が発生しても、送信データD2-2を、第2コア170(2)に対応付けられたTX120(2)に格納すると、送信データD2-2の送信は遅れる。
【0168】
そこで、PLC10は、特定のコアまたは特定のタスクに割り当てられていないTX120(0)を備え、緊急度の高い送信データはTX120(0)に格納することによって、他の送信データに優先して、緊急度の高い送信データを送信する。以下、
図8を用いて、PLC10が緊急度の高い送信データを他の送信データに優先して送信する方法について、その詳細を説明する。
【0169】
図8は、PLC10について、TX120(0)を設けることによって可能となる送信順序を説明する図である。TX120(0)は、複数のCPUコア170の内の特定のCPUコア170、または、複数のタスクT(1)からT(n)の内の特定のタスクT(x)には対応付けられていない。TX120(0)には、複数のCPUコア170の内の任意のCPUコア170によって生成された送信データが格納され、また、任意のタスクの実行により生成された送信データが格納される。言い換えれば、TX120(0)は、任意のCPUコア170が、送信データの送信のためのバッファとして利用可能であり、また、任意のタスクが、送信データの送信のためのバッファとして利用可能である。
【0170】
TX120(0)に格納される送信データに付与される送信優先度Pは、TX120(0)以外のTX120(つまり、TX120(1)からTX120(n))のいずれかに格納される送信データに付与される送信優先度Pよりも高い。例えば、TX120(0)に格納される送信データに付与される送信優先度Pは「0」であり、TX120(0)以外のTX120に格納される送信データに付与される送信優先度Pは「1」以上である。優先度調停部130は、「送信優先度P:0」を、最も高い送信優先度Pと判定する。以下、「送信データD2-1の後に、第2コア170(2)によって生成された送信データD2-2」に、「送信優先度P:0」を付してTX120(0)に格納することで、PLC10が、送信データD2-2を他の送信データに優先して送信する例を説明する。
【0171】
図8に示す例においては、
図7に示した例と同様に、第1コア170(1)によるタスクT(1-1)の実行によって生成される送信データD1-1は、「送信優先度P:1」が付与されて、TX120(1)に格納される。また、第2コア170(2)によるタスクT(2-1)の実行によって生成される送信データD2-1は、「送信優先度P:1」が付与されて、TX120(2)に格納される。そして、第2タスクT(2-1)の実行後に、第2コア170(2)によって第2タスクT(2-2)が実行され、第2タスクT(2-2)の実行によって送信データD2-2が生成された点までは、
図8に示す例は、
図7に示した例と同様である。
【0172】
緊急度の高いデータである送信データD2-2は、
図7の例では、「送信優先度P:0」を付与されてTX120(2)に格納されたが、
図8に示す例では、「送信優先度P:0」を付与されてTX120(0)に格納される。
【0173】
優先度調停部130は、TX120(0)、TX120(1)、および、TX120(2)の各々の先頭に格納されている送信データに付与されている送信優先度Pを比較し、「送信優先度P:0」を、最も高い送信優先度Pと判定する。そして、優先度調停部130は、この判定結果に基づいて、TX120(0)に送信権を付与し、TX120(0)は、データFIFO122(0)の先頭に格納されている送信データD2-2を、送信ポート140を介してフィールドネットワーク20へ出力する。
【0174】
送信データD2-2の送信後、優先度調停部130は、TX120(1)およびTX120(2)の各々の先頭に格納されている送信データに付与されている送信優先度Pを比較する。「付与されている送信優先度Pが同じであれば、TX120(1)に格納されているデータを、TX120(2)に格納されているデータよりも優先して送信する」との前提の下では、優先度調停部130は、TX120(1)に送信権を付与する。TX120(1)は、データFIFO122(1)の先頭に格納されている送信データD1-1を送信する。
【0175】
送信データD1-1の送信後、優先度調停部130は、TX120(2)に送信権を付与し、TX120(2)は、データFIFO122(2)の先頭に格納されている送信データD2-1を、送信ポート140を介してフィールドネットワーク20へ出力する。
【0176】
したがって、PLC10は、緊急性の高い送信データを、「送信優先度P:0」を付与してTX120(0)に格納することにより、TX120(0)以外のTX120に格納した送信データに優先して、TX120(0)に格納した送信データを送信する。
【0177】
これまでに
図8を用いて説明してきたように、複数のTX120は、TX120(1)からTX120(n)までの複数のTX120(対応送信キュー)と、TX120(0)(非対応送信キュー)と、を含む。TX120(1)からTX120(n)までの複数のTX120は、各々が、複数のタスクの各々に予め対応付けられている。TX120(1)からTX120(n)までの複数のTX120の各々には、予め対応付けられたタスクの実行により生成される送信データが、送信優先度Pと共に、格納される。これに対し、TX120(0)は、複数のタスクのいずれにも予め対応付けられていない。TX120(0)には、複数のタスクのいずれかの実行により生成される送信データが、TX120(1)からTX120(n)までの複数のTX120の各々に送信データと共に格納される送信優先度Pのいずれよりも高い送信優先度Pと共に、格納される。
【0178】
前記の構成によれば、PLC10における通信コントローラ110は、「各々が、複数のタスクの各々に対応付けられた、TX120(1)からTX120(n)までのTX120」に加えて、TX120(0)をさらに含んでいる。そして、TX120(0)には、複数のタスクのいずれかの実行により生成される送信データが、TX120(1)からTX120(n)までの各々に送信データと共に格納される送信優先度Pのいずれよりも高い送信優先度Pと共に、格納される。
【0179】
PLC10は、TX120(1)からTX120(n)までの複数のTX120の各々に、予め対応付けられたタスクの実行により生成される送信データを格納することによって、複数の送信データの各々の格納先の選択に係る処理を不要とし、または、抑制できるという効果を奏する。
【0180】
ここで、前述の通り、通信コントローラ110は、複数のTX120の各々の先頭に格納された送信データの送信優先度Pが高い順に、複数のTX120の各々の先頭に格納された送信データを、送信ポート140を介して順次出力する。例えば、通信コントローラ110は、TX120(1)の先頭に格納された送信データD1-1の送信優先度P:1と、TX120(2)の先頭に格納された送信データD2-1の送信優先度P:2とを比較する。そして、通信コントローラ110は、送信優先度P:1が送信優先度P:2よりも高いので、先ず、送信データD1-1を送信する。
【0181】
そのため、送信データD1-1およびD2-1の後に生成された送信データD2-2に、送信優先度P:1よりも高い送信優先度P:0を付与したとしても、送信データD2-2をTX120(1)またはTX120(2)に格納した場合、以下の事態が発生する。
【0182】
すなわち、TX120(1)およびTX120(2)には、各々、既に送信データD1-1およびD2-1が格納されているため、通信コントローラ110は、先ず、送信データD1-1の送信優先度P:1と送信データD2-1の送信優先度P:2とを比較する。そして、通信コントローラ110は、送信優先度P:2よりも高い送信優先度P:1の送信データD1-1を送信する。つまり、送信データD2-2をTX120(1)またはTX120(2)に格納した場合、通信コントローラ110は、送信データD2-2を送信データD1-1よりも早く送信することができない。
【0183】
そこで、PLC10における通信コントローラ110は、TX120(1)およびTX120(2)に加えて、TX120(0)をさらに含み、TX120(0)に、送信データD2-2を、送信優先度P:0と共に格納する。
【0184】
通信コントローラ110は、TX120(0)、TX120(1)、および、TX120(2)の各々の先頭に格納された送信データの送信優先度Pを比較する。そして、通信コントローラ110は、TX120(0)、TX120(1)、および、TX120(2)の各々の先頭に格納された送信データの送信優先度Pが高い順に、TX120(0)、TX120(1)、および、TX120(2)の各々の先頭に格納された送信データを、送信ポート140を介して順次出力する。
【0185】
具体的には、通信コントローラ110は、TX120(1)の先頭に格納された送信データD1-1、TX120(2)の先頭に格納された送信データD2-1、および、TX120(0)の先頭に格納された送信データD2-2の各々について、送信優先度Pを比較する。送信データD1-1の送信優先度Pは「1」、送信データD2-1の送信優先度Pは「2」、送信データD2-2の送信優先度Pは「0」であるから、通信コントローラ110は、送信データD2-2、D1-1、D2-1を、この順で、送信ポート140を介して順次出力する。
【0186】
したがって、PLC10における通信コントローラ110は、複数のタスクの各々の実行により生成される複数の送信データの各々について、生成された順序から独立させて、各送信データの送信優先度Pに従って順次出力することができるとの効果を奏する。
【0187】
(ユーザによる、タスクと送信優先度との対応付け)
図9は、ユーザがタスクと送信優先度と対応付ける例を説明する図である。
図9の(A)に示すように、ユーザは、ツール60を用いて、複数のタスクの間に優先順位を、より正確には、複数のタスクの各々の実行において生成される送信データの送信優先度Pを、設定することができる。例えば、ユーザは、ツール60を用いて、PLC10に、複数のタスクの各々に割り当てる、「IO制御、ユーザプログラム、モーション演算プログラム、および、システムサービス」の各々について、優先順位を設定することができる。
【0188】
図9の(B)に示すように、PLC10は、接続ケーブル50を介して、ツール60に接続し、ツール60の表示画面に、
図9の(A)に例示するような、複数のタスクの各々の優先順位を示す情報を表示させる。PLC10は、複数のタスクの各々の優先順位について、defaultの値(例えば、工場出荷段階において設定される、一般的に推奨される優先順位の値)を、ツール60の表示画面に表示させてもよい。ユーザは、表示画面に表示されたdefaultの値を参考に、複数のタスクの各々について、優先順位を設定する。
【0189】
ユーザが複数のタスクの各々について設定した優先順位は、複数のタスクの各々の実行により生成される送信データの送信優先度Pに反映される。言い換えれば、ユーザが複数のタスクの各々について設定した優先順位は、複数のタスクの各々の実行により生成される送信データの送信優先度Pに対応付けられる。
【0190】
例えば、ユーザが複数のタスクの各々について設定した優先順位は、複数のタスクの各々の実行により生成される送信データが、TX120(0)以外のTX120に格納される時に付与される送信優先度Pに反映される。或るタスクT(x)にユーザが優先順位として「y」を設定すると、PLC10は、或るタスクT(x)の実行により生成された送信データを、TX120(1)からTX120(n)のいずれかに格納する場合、その送信データの送信優先度Pの値を「y」とする。
【0191】
§4.変形例
これまで、PLC10が、マルチコアプロセッサ160を備える例を説明してきたが、PLC10は、マルチコアプロセッサ160の代わりに、シングルコアプロセッサを備えてもよい。PLC10は複数のタスクを実行すればよく、それらの複数のタスクの各々が、TX120(1)からTX120(n)の各々に対応付けられていればよい。
【0192】
すなわち、PLC10は、シングルコアプロセッサを備え、時分割により複数のタスクを並行して実行してもよく、つまり、マルチタスクで処理を実行してもよい。PLC10は、シングルコアを採用し、マルチタスクについて、或るタスクの実行中は他のタスクを実行しない「並行実行」を行なってもよい。
【0193】
ただし、PLC10は、マルチコアプロセッサ160を備え、複数のタスクの各々を複数のCPUコアの各々で同時に並行して実行することによって、すなわち、マルチタスクで処理を実行することによって、タスクの処理能力の向上を図ることができる。
【0194】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【0195】
10 PLC(コントローラ)
110 通信コントローラ(通信制御部)
120 TX(送信キュー)
120(0) TX(非対応送信キュー)
120(1) TX(対応送信キュー)
120(2) TX(対応送信キュー)
120(n) TX(対応送信キュー)
140 送信ポート
160 マルチコアプロセッサ(プロセッサ)
170 CPUコア
S6(T) 格納ステップ
S7(T) 送信ステップ
S8(T) 送信ステップ
S9(T) 送信ステップ