(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-06-15
(45)【発行日】2022-06-23
(54)【発明の名称】演算装置および制御装置
(51)【国際特許分類】
G06F 13/362 20060101AFI20220616BHJP
G05B 19/05 20060101ALI20220616BHJP
G06F 13/38 20060101ALI20220616BHJP
【FI】
G06F13/362 520Z
G05B19/05 L
G06F13/38 330Z
(21)【出願番号】P 2016199584
(22)【出願日】2016-10-07
【審査請求日】2019-08-06
【審判番号】
【審判請求日】2021-07-16
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】福田 泰士
(72)【発明者】
【氏名】▲高▼居 正一
(72)【発明者】
【氏名】江口 重行
(72)【発明者】
【氏名】西村 康裕
【合議体】
【審判長】田中 秀人
【審判官】山崎 慎一
【審判官】山澤 宏
(56)【参考文献】
【文献】国際公開第2009/075068(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F13/362
G05B19/05
G06F13/38
(57)【特許請求の範囲】
【請求項1】
制御装置を構成する演算装置であって、
通信線を介して1または複数の機能ユニットとデータを遣り取りするための通信回路と、
前記通信線を介してデータを送信または受信するための第1要求を予め定められた周期毎に発行するための第1処理と、予め定められた条件が満たされたときに前記通信線を介してデータを送信するための第2要求を発行する第2処理とを実行するプロセッサと、
前記プロセッサにより発行される前記第1要求および前記第2要求に応答して、前記通信回路を起動する制御回路とを備え、
前記制御回路は、前記第1処理の実行周期に対応付けて、前記第2要求に応じたデータの送信を禁止する禁止期間を設定する手段を備え、
前記制御回路は、前記第1処理の実行タイミングよ
り前から前記禁止期間を開始し、
前記
禁止期間は、
前記制御回路が前記第1要求に応答して前記通信回路を起動するタイミングと、前記制御回路が前記第2要求
に応答して前記通信回路を起動してから
前記通信回路が前記第2要求に応じたデータの送信
を完了するまでの処理時間
とに応じて決定される、演算装置。
【請求項2】
前記制御回路は、前記禁止期間内に前記第2要求を受信すると、当該受信した第2要求に応じた前記通信回路の起動を、当該禁止期間の終了後まで延期する、請求項1に記載の演算装置。
【請求項3】
前記制御回路は、前記プロセッサでの前記第1処理および前記第2処理の実行を管理するスケジューラから、前記第1処理の実行タイミングを取得して、前記禁止期間を設定する、請求項1または2に記載の演算装置。
【請求項4】
前記第1要求は、前記1または複数の機能ユニットへデータを送信するための要求、および、前記1または複数の機能ユニットが保持しているデータを取得するための要求、のうち少なくとも一方を含む、請求項1~3のいずれか1項に記載の演算装置。
【請求項5】
前記第2要求は、前記1または複数の機能ユニットのうち、特定の機能ユニットへメッセージを送信するための要求を含む、請求項1~4のいずれか1項に記載の演算装置。
【請求項6】
前記制御回路は、FPGAまたはASICを用いて実装される、請求項1~5のいずれか1項に記載の演算装置。
【請求項7】
制御装置であって、
演算装置と、
1または複数の機能ユニットとを備え、
前記演算装置は、
通信線を介して前記1または複数の機能ユニットとデータを遣り取りするための通信回路と、
前記通信線を介してデータを送信または受信するための第1要求を予め定められた周期毎に発行するための第1処理と、予め定められた条件が満たされたときに前記通信線を介してデータを送信するための第2要求を発行する第2処理とを実行するプロセッサと、
前記プロセッサにより発行される前記第1要求および前記第2要求に応答して、前記通信回路を起動する制御回路とを備え、
前記制御回路は、前記第1処理の実行周期に対応付けて、前記第2要求に応じたデータの送信を禁止する禁止期間を設定する手段を備え、
前記制御回路は、前記第1処理の実行タイミングよ
り前から前記禁止期間を開始し、
前記
禁止期間は、
前記制御回路が前記第1要求に応答して前記通信回路を起動するタイミングと、前記制御回路が前記第2要求
に応答して前記通信回路を起動してから
前記通信回路が前記第2要求に応じたデータの送信
を完了するまでの処理時間
とに応じて決定される、制御装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、1または複数の機能ユニットを含む制御装置を構成する演算装置およびその制御装置に関する。
【背景技術】
【0002】
様々なFA(Factory Automation)を実現するための主たるコンポーネントとして、PLC(プログラマブルコントローラ)などの制御装置が普及している。このような制御装置は、1または複数の機能ユニットとの間で通信線を介してデータを遣り取りする。この遣り取りされるデータは、データの種類や特性などに応じて、優先度が設定される場合がある。例えば、特開2015-090548号公報(特許文献1)は、通信ラインを介したデータ伝送を優先度に応じてより効率的に行うことのできる制御装置を開示する。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に開示される制御装置では、優先度判断部が入力されたフレームのヘッダ部に含まれるヘッダ情報に基づいて、入力されたフレームに含まれるデータの優先度を判断し、その判断結果に応じてフレームを優先度毎に用意されたQueに格納する。
【0005】
本発明は、特性が異なる複数種類のデータを共通の通信線で送受信するための新たな構成を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明のある局面に従う制御装置を構成する演算装置は、通信線を介して1または複数の機能ユニットとデータを遣り取りするための通信回路と、通信線を介してデータを送信または受信するための第1要求を予め定められた周期毎に発行するための第1処理と、予め定められた条件が満たされたときに通信線を介してデータを送信するための第2要求を発行する第2処理とを実行するプロセッサと、プロセッサにより発行される第1要求および第2要求に応答して、通信回路を起動する制御回路とを含む。制御回路は、第1処理の実行周期に対応付けて、第2要求を無効化する禁止期間を設定する手段を含む。
【0007】
好ましくは、制御回路は、禁止期間内に第2要求を受信すると、当該受信した第2要求に応じた通信回路の起動を、当該禁止期間の終了後まで延期する。
【0008】
好ましくは、制御回路は、第1処理の実行タイミングより予め定められた時間だけ前もって禁止期間を開始する。
【0009】
好ましくは、制御回路は、プロセッサでの第1処理および第2処理の実行を管理するスケジューラから、第1処理の実行タイミングを取得して、禁止期間を設定する。
【0010】
好ましくは、第1要求は、1または複数の機能ユニットへデータを送信するための要求、および、1または複数の機能ユニットが保持しているデータを取得するための要求、のうち少なくとも一方を含む。
【0011】
好ましくは、第1要求は、1または複数の機能ユニットのうち、特定の機能ユニットへメッセージを送信するための要求を含む。
【0012】
好ましくは、制御回路は、FPGAまたはASICを用いて実装される。
本発明の別の局面に従う制御装置は、演算装置と、1または複数の機能ユニットとを含む。演算装置は、通信線を介して1または複数の機能ユニットとデータを遣り取りするための通信回路と、通信線を介してデータを送信または受信するための第1要求を予め定められた周期毎に発行するための第1処理と、予め定められた条件が満たされたときに通信線を介してデータを送信するための第2要求を発行する第2処理とを実行するプロセッサと、プロセッサにより発行される第1要求および第2要求に応答して、通信回路を起動する制御回路とを含む。制御回路は、第1処理の実行周期に対応付けて、第2要求を無効化する禁止期間を設定する手段を含む。
【発明の効果】
【0013】
本発明に従えば、特性が異なる複数種類のデータを共通の通信線で送受信するための新たな構成を提供できる。
【図面の簡単な説明】
【0014】
【
図1】本実施の形態に係るPLCの要部構成を示す模式図である。
【
図2】本実施の形態に係るPLCのローカルネットワーク上を転送される通信フレームのデータ構造の一例を示す模式図である。
【
図3】本実施の形態に係るPLCにおいて通信フレームの送信処理を実現するための装置構成を示す模式図である。
【
図4】本実施の形態に係るPLCにおける通信フレームの送信に係る関連技術を説明するためのタイムチャートである。
【
図5】本実施の形態に係るPLCにおける通信フレームの送信に係る処理を説明するためのタイムチャートである。
【
図6】本実施の形態に係るPLCにおける通信フレームの送信に係る別の処理を説明するためのタイムチャートである。
【
図7】本実施の形態に係るPLCにおける禁止期間の設定方法を説明するための模式図である。
【
図8】本実施の形態の第1変形例に係るPLCの要部構成を示す模式図である。
【
図9】本実施の形態の第2変形例に係るPLCの要部構成を示す模式図である。
【発明を実施するための形態】
【0015】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【0016】
以下の説明においては、「制御装置」の典型例として、PLC(プラグラマブルコントローラ)を具体例として説明するが、PLCとの名称に限定されることなく、本明細書に開示された技術的思想は、任意の制御装置に対して適用可能である。
【0017】
<A.装置構成>
まず、本実施の形態に係るPLCの装置構成について説明する。
図1は、本実施の形態に係るPLCの要部構成を示す模式図である。
【0018】
図1を参照して、本実施の形態に係るPLC1は、典型的には、CPUユニット100と、1または複数の機能ユニット150とから構成される。CPUユニット100は、PLC1を構成する一要素であり、PLC1全体の処理を制御する演算装置に相当する。機能ユニット150は、PLC1による様々な機械や設備の制御を実現するための各種機能を提供する。CPUユニット100と1または複数の機能ユニット150との間は、通信線の一例であるローカルネットワーク126を介して接続されている。
【0019】
CPUユニット100は、演算処理部101と、制御回路110と、通信回路120とを含む。
【0020】
演算処理部101は、プロセッサ102およびメモリ104を含む。説明の便宜上、
図1には、1つのプロセッサ102のみを描くが、複数のプロセッサを実装してもよい。なお、各プロセッサは、複数のコアを有していてもよい。
【0021】
メモリ104は、プロセッサ102でのプログラムの実行に必要なワーク領域を提供する部位(典型的には、揮発性メモリ)と、プロセッサ102で実行されるプログラム自体を格納する部位(典型的には、不揮発性メモリ)とを含む。揮発性メモリとしては、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などを用いることができ、不揮発性メモリとしては、フラッシュメモリやハードディスクなどを用いることができる。
【0022】
メモリ104は、システムプログラム106およびユーザプログラム107ならびにコンフィギュレーション108などを格納する。システムプログラム106は、プロセッサ102においてユーザプログラム107を実行するためのOS(Operating System)およびライブラリなどを含む。ユーザプログラム107は、典型的には、1または複数の機能ユニット150が収集したデータ(以下、「入力データ」とも称す。)の取得処理や、1または複数の機能ユニット150へ送信するデータ(以下、「出力データ」とも称す。)の生成処理を実行するための指令を含み、制御対象の機械や設備に応じて任意に作成される。コンフィギュレーション108は、CPUユニット100でのプログラム実行に必要な各種設定値やネットワーク構成を定義する各種設定値を含む。
【0023】
制御回路110は、演算処理部101と通信回路120との間で要求を仲介する機能を有しており、例えば、プロセッサ102からの通信要求に応答して、通信回路120に対して指令を与えてデータの送信または受信を行う。制御回路110における処理および機能については、後に詳述する。
【0024】
制御回路110の少なくとも主要部については、ハードワイヤードな構成を有することで、プロセッサ102より高速な処理を実現する。すなわち、制御回路110は、ハードウェアロジックを用いて実現される。例えば、制御回路110は、PLD(Programmable Logic Device)の一例であるFPGA(Field-Programmable Gate Array)や、IC(Integrated Circuit)の一例であるASIC(Application Specific Integrated Circuit)などを用いて実装されてもよい。
【0025】
通信回路120は、通信線であるローカルネットワーク126を介して、1または複数の機能ユニット150とデータを遣り取りする。より具体的には、通信回路120は、1または複数の機能ユニット150が収集または生成したデータ(入力データ)を受信し、CPUユニット100により取得または生成されたデータ(出力データ)を1または複数の機能ユニット150へ送信する。出力データは、各機能ユニット150から制御対象の機械や設備などへ与えられる指令値に相当する。また、通信回路120は、ローカルネットワーク126を介して、イベント的に発生するメッセージを送信または受信することもできる。
【0026】
より具体的には、通信回路120は、ローカルネットワーク126と物理的に接続され、制御回路110からの指令に従って電気信号を生成して、ローカルネットワーク126上に送信するとともに、ローカルネットワーク126上に生じる電気信号を、制御回路110を介して演算処理部101へ出力する。通信回路120は、ローカルネットワーク126を介したデータの遣り取りに加えて、ローカルネットワーク126上を転送されるデータの到着時間を保証するための時間管理および送受信タイミング管理などを行う機能を有している。
【0027】
本実施の形態に係るPLC1において、ローカルネットワーク126上では、予め定められたデータ構造を有する通信フレームが所定周期で順次転送されてもよく、CPUユニット100および各機能ユニット150は、順次転送される通信フレームに対して、指定されたデータを指定された領域に書込み、および、必要なデータを対応する領域から読出す。
【0028】
このように、ローカルネットワーク126は、一種の定周期ネットワークが採用されてもよく、CPUユニット100の通信回路120の制御下において、1または複数の機能ユニット150の各々は、入力データのCPUユニット100への送信、および、CPUユニット100からの出力データの受信を所定周期毎に繰返す。
【0029】
このような定周期ネットワークとしては、EtherCAT(登録商標)、EtherNet/IP(登録商標)、DeviceNet(登録商標)、CompoNet(登録商標)などの公知のプロトコルに係るネットワークを採用してもよい。
【0030】
図1に示す構成においては、説明の便宜上、演算処理部101と、制御回路110と、通信回路120との3つに区別して構成を描いているが、これに限られることなく任意の実装形態を採用できる。例えば、演算処理部101の全部または一部と制御回路110とを同一のチップ上に実装したSoC(System on Chip)で構成してもよい。あるいは、演算処理部101の全体を単一のチップ上に実装するとともに、制御回路110および通信回路120を別の単一のチップ上に実装してもよい。このような実装形態については、要求される性能やコストなどを考慮して適宜選択される。
【0031】
機能ユニット150は、典型的には、I/Oユニット、通信ユニット、温度調整ユニット、ID(Identifier)センサユニットなどを包含し得る。
【0032】
I/Oユニットとしては、例えば、デジタル入力(DI)ユニット、デジタル出力(DO)ユニット、アナログ出力(AI)ユニット、アナログ出力(AO)ユニット、パルスキャッチ入力ユニット、および、複数の種類を混合させた複合ユニットなどが挙げられる。
【0033】
通信ユニットは、他のPLC、リモートI/O装置、機能ユニットなどとデータの遣り取りを仲介するものであり、例えば、EtherCAT(登録商標)、EtherNet/IP(登録商標)、DeviceNet(登録商標)、CompoNet(登録商標)などのプロトコルに係る通信装置などを包含し得る。
【0034】
温度調整ユニットは、温度計測値などを取得するアナログ入力機能と、制御指令などを出力するアナログ出力機能と、PID(Proportional Integral Differential)制御機能とを含む制御装置である。IDセンサユニットは、RFID(Radio Frequency IDentifier)などから非接触でデータを読出す装置である。
【0035】
より具体的には、機能ユニット150の各々は、機能モジュール156と、I/Oインターフェイス158と、通信回路160とを含む。
【0036】
機能モジュール156は、各機能ユニット150の主たる処理を実行する部分であり、制御対象の機械や設備などからのフィールド情報の収集や、制御対象の機械や設備などへの指令信号の出力などを司る。
【0037】
I/Oインターフェイス158は、制御対象の機械や設備などとの間の信号の遣り取りを仲介する回路である。
【0038】
通信回路160は、ローカルネットワーク126を順次転送される通信フレームを処理する。すなわち、通信回路160は、ローカルネットワーク126を介して何らかの通信フレームを受信すると、当該受信した通信フレームに対するデータ書込みおよび/またはデータ読出しを行った後に、ローカルネットワーク126上において次に位置する機能ユニット150へ当該通信フレームを送信する。通信回路160は、このようなフレームリレーの機能を提供する。
【0039】
より具体的には、通信回路160は、送受信コントローラ166と、送受信ポート162,164とを含む。
【0040】
送受信ポート162,164は、ローカルネットワーク126と物理的に接続される部位であり、送受信コントローラ166からの指令に従って電気信号を生成して、ローカルネットワーク126上に送信するとともに、ローカルネットワーク126上に生じる電気信号をデジタル信号に変換して送受信コントローラ166へ出力する。
【0041】
送受信コントローラ166は、ローカルネットワーク126上を転送される通信フレームに対するデータ書込みおよび/またはデータ読出しを行う。
【0042】
<B.通信フレーム>
次に、ローカルネットワーク126上を転送されるいくつかの通信フレームについて説明する。
【0043】
図2は、本実施の形態に係るPLC1のローカルネットワーク126上を転送される通信フレームのデータ構造の一例を示す模式図である。
図2(A)には、I/Oリフレッシュフレーム180のデータ構造の一例を示し、
図2(B)には、イベントフレーム190のデータ構造の一例を示す。
【0044】
図2(A)に示すI/Oリフレッシュフレーム180は、1または複数の機能ユニット150から入力データを取得するとともに、1または複数の機能ユニット150に対して出力データを与える。すなわち、I/Oリフレッシュフレーム180は、CPUユニット100が保持する入力データをリフレッシュするとともに、各機能ユニット150が保持する出力データをリフレッシュするために用いられる。
【0045】
より具体的には、I/Oリフレッシュフレーム180は、フレーム種別および宛先を格納するヘッダ部と、データを格納する本体部とからなる。
【0046】
フレーム種別としては、通信フレームの種類を特定するための識別情報が用いられ、例えば、ユニキャスト、マルチキャスト、ブロードキャストのいずれであるかを示す識別情報が用いられる。I/Oリフレッシュフレーム180は、CPUユニット100から送信されて、ローカルネットワーク126を一巡した後にCPUユニット100に戻るので、典型的には、マルチキャストを示す識別情報が格納される。このとき、マルチキャストでの送信においては、特定の宛先が存在しないので、特殊値が格納される。
【0047】
本体部には、入力データの領域および出力データの領域が規定されており、それぞれの領域は、ローカルネットワーク126に接続されている全部または一部の機能ユニット150のそれぞれ対応付けられている。各機能ユニット150は、I/Oリフレッシュフレーム180を受信すると、自ユニットに割当てられている領域に格納されている出力データを読出すとともに、自ユニットが収集または生成した入力データを自ユニットに割当てられている領域に書込む。このような出力データの読出しおよび入力データの書込みが各機能ユニット150において実行されることで、ローカルネットワーク126に接続されている各機能ユニット150からの入力データの取得および出力データの送信を実現できる。
【0048】
なお、
図2(A)には、1または複数の機能ユニット150からの入力データ、および、1または複数の機能ユニット150への出力データを単一の通信フレームに格納したデータ構造の例を示したが、いずれか一方のデータのみを格納する通信フレームを採用してもよい。この場合、例えば、入力データ用の通信フレームと、出力データ用の通信フレームとをそれぞれ用意してもよい。また、I/Oリフレッシュの対象となる入力データおよび出力データは、予めコンフィグレーションされており、機能ユニット150が収集したデータの全部がCPUユニット100へ送信されない場合もある。
【0049】
このように、I/Oリフレッシュフレーム180を送信するための要求(第1要求)は、1または複数の機能ユニット150へ出力データを送信するための要求、および、1または複数の機能ユニット150が保持している入力データを取得するための要求、のうち少なくとも一方を含むことになる。
【0050】
図2(B)に示すイベントフレーム190は、I/Oリフレッシュフレーム180と同様に、フレーム種別および宛先を格納するヘッダ部と、データを格納する本体部とからなる。
【0051】
イベントフレーム190は、例えば、各機能ユニット150に対するステータスや設定値の変更を指示するコマンドや、各機能ユニット150に格納されているログや状態値などをCPUユニット100へ送信させるためのコマンドなどを含んでいてもよい。
【0052】
フレーム種別としては、典型的には、ユニキャストまたはブロードキャストを示す識別情報が用いられる。ユニキャストが指定される場合には、特定の宛先を示す識別情報が格納される。また、ブロードキャストが指定される場合には、特定の宛先が存在しないので、特殊値が格納される。本体部には、送信または通知されるメッセージや実行すべき処理を示すコマンドなどが格納される。イベントフレーム190の本体部に格納される内容は任意に設定できる。
【0053】
このように、イベントフレーム190を送信するための要求(第2要求)は、1または複数の機能ユニット150のうち、特定の機能ユニット150へメッセージを送信するための要求を含み得る。
【0054】
<C.通信フレームの送信処理>
次に、
図2に示すような通信フレームの送信に係る構成を説明する。
図3は、本実施の形態に係るPLC1において通信フレームの送信処理を実現するための装置構成を示す模式図である。
【0055】
図2(A)に示すI/Oリフレッシュフレーム180、および、
図2(B)に示すイベントフレーム190の送信および受信に係る処理は、プロセッサ102において実行される。
図3を参照して、I/Oリフレッシュフレーム180(
図2(A))により入力データの取得および出力データの送信を行うためのI/Oリフレッシュ処理210、および、イベントフレーム190(
図2(B))により1または複数の機能ユニット150に対して何らかのイベントフレームを送信する処理を行うためのイベントフレーム送信処理220が、プロセッサ102において実行される。I/Oリフレッシュ処理210およびイベントフレーム送信処理220は、システムプログラム106またはユーザプログラム107に含まれるプログラムをプロセッサ102が実行することにより実現される。
【0056】
プロセッサ102においては複数のプログラム(「タスク」とも称される。)が実行される。各プログラムの実行時間を管理するために、各プログラムの優先度に応じて、プロセッサ102のプロセッサ時間が割当てられる。
図3に示す例においては、I/Oリフレッシュ処理210は、予め定められた一定周期で繰返し実行(定周期実行)されるタスクであり、イベントフレーム送信処理220は、プロセッサ102の空きプロセッサ時間において実行されるタスクである。このような特性を考慮して、I/Oリフレッシュ処理210には、イベントフレーム送信処理220に比較して高い優先度が設定されているとする。説明の便宜上、I/Oリフレッシュ処理210などのより高い優先度が設定されている処理を「高優先処理」と称し、イベントフレーム送信処理220などのより低い優先度が設定されている処理を「低優先処理」とも称す。
【0057】
高優先処理であるI/Oリフレッシュ処理210は、典型的には、予め定められた一定周期毎に発生する割込指令によって実行されることになる。
【0058】
本実施の形態に係るCPUユニット100においては、制御回路110が通信回路120によるローカルネットワーク126を介したデータの遣り取りを制御する。具体的には、制御回路110は、プロセッサ102からのフレーム送信要求に応答して、通信回路120を起動するとともに、通信回路120から指示されたフレームを送信させる。また、制御回路110は、通信回路120で受信された、戻りフレーム(すなわち、ローカルネットワーク126を一巡後のI/Oリフレッシュフレーム180)、または、送信先からの受信応答(例えば、ACK(Acknowledgement)などの通信フレーム)を、プロセッサ102へ出力する。
【0059】
制御回路110は、フレーム送信要求などをバッファリングするための要求キュー112と、時刻を測定するためのタイマ114とを含む。
【0060】
要求キュー112は、プロセッサ102から複数のフレーム送信要求が与えられたときに、これらフレーム送信要求を一次的に格納する。
【0061】
タイマ114は、タイマ114としては、リアルタイムクロックを採用することもできるが、本実施の形態においては、所定周期でカウントアップ(インクリメント)するフリーランカウンタ(Free Run Counter)が用いられる。フリーランカウンタが出力するカウンタ値をある時点からの経過時間として扱うことで、現在時刻を計算でき、これによってタイマとして機能させることができる。タイマ114は、後述する禁止期間の設定などに用いられる。
【0062】
図3に示す例においては、プロセッサ102は、I/Oリフレッシュ処理210を周期的に実行することで、I/Oリフレッシュフレーム送信要求を周期的に制御回路110へ送信し、制御回路110から出力される通信回路120で受信された一巡後のI/Oリフレッシュフレーム180を取得する。つまり、プロセッサ102は、通信線であるローカルネットワーク126を介して、データを送信または受信するためのI/Oリフレッシュフレーム送信要求(第1要求)を予め定められた周期毎に発行するためのI/Oリフレッシュ処理210(第1処理)を実行する。
【0063】
また、プロセッサ102は、イベントフレーム送信処理220をイベント実行することで、イベントフレーム送信要求をイベント的に制御回路110へ送信し、制御回路110から出力される通信回路120で受信された受信応答(ACK)を取得する。イベントフレーム送信処理220は、予め定められた条件が満たされた場合に実行されるイベント的に処理である。例えば、何らかの内部フラグがオンにセットされた場合などに実行される。このように、プロセッサ102は、予め定められた条件が満たされたときに、通信線であるローカルネットワーク126を介してデータを送信するためのイベントフレーム送信要求(第2要求)を発行するイベントフレーム送信処理220(第2処理)を実行する。
【0064】
制御回路110は、プロセッサ102により発行される、I/Oリフレッシュフレーム送信要求(第1要求)およびイベントフレーム送信要求(第2要求)に応答して、通信回路120を起動する。
【0065】
図3に示すような、プロセッサ102と通信回路120とを仲介する制御回路110を採用することで、プロセッサ102において実行される各処理から見れば、通信フレームの送信要求を制御回路110へ出力するだけで、それ以降の通信処理を管理する必要がないので、処理を簡素化できるという利点がある。
【0066】
<D.関連技術>
次に、プロセッサ102と通信回路120とを仲介する制御回路110に関する関連技術について説明する。
【0067】
図4は、本実施の形態に係るPLC1における通信フレームの送信に係る関連技術を説明するためのタイムチャートである。
図4を参照して、プロセッサ102においては、高優先処理としてI/Oリフレッシュ処理210が一定周期で繰返し実行されており、低優先処理としてイベントフレーム送信処理220が順次実行されているとする。優先度を異ならせることで、I/Oリフレッシュ処理210によるI/Oリフレッシュフレーム180の一定周期毎の送信を維持しつつ、この一定周期毎の送信に影響を与えないように、必要に応じたイベントフレーム190の送信を実現する。
【0068】
I/Oリフレッシュ処理210は、典型的には、I/Oリフレッシュフレーム180の生成に必要なデータの収集や加工などを行う送信処理と、受信したI/Oリフレッシュフレーム180に含まれるデータの抽出や加工などを行う受信処理とを含む。I/Oリフレッシュ処理210において送信処理が完了すると、プロセッサ102は、I/Oリフレッシュフレーム180の送信要求を制御回路110へ発行する(シーケンスSQ2)。制御回路110は、この送信要求に応答して、起動指令を通信回路120へ与えることで、通信回路120からI/Oリフレッシュフレーム180を送信する(シーケンスSQ4)。その後、通信回路120は、ローカルネットワーク126を一巡後のI/Oリフレッシュフレーム180を受信すると、制御回路110を介して、完了通知をプロセッサ102へ出力する(シーケンスSQ6)。完了通知に応答して、プロセッサ102は、I/Oリフレッシュ処理210の受信処理を実行する。受信処理の実行完了により、I/Oリフレッシュ処理210の実行は終了する。このようなI/Oリフレッシュ処理210が一定周期毎に繰返される。なお、I/Oリフレッシュ処理210に要する時間を考慮して、I/Oリフレッシュ処理210を繰返し実行する一定周期の長さが決定される。
【0069】
図4に示す例では、先のI/Oリフレッシュ処理210の実行後、後続のI/Oリフレッシュ処理210の実行開始前に、イベントフレーム送信処理220が実行された場合を示している。なお、
図4には、高優先処理および低優先処理が並列実行可能な、マルチコアまたはマルチプロセッサからなるプロセッサ102を採用した場合の処理例を示す。
【0070】
イベントフレーム送信処理220において、イベントフレーム190に含まれるデータの収集や加工などを行う処理が実行され、その処理が完了すると、プロセッサ102は、イベントフレーム190の送信要求を制御回路110へ発行する(シーケンスSQ8)。制御回路110は、この送信要求に応答して、起動指令を通信回路120へ与えることで、通信回路120からイベントフレーム190を送信する(シーケンスSQ10)。
【0071】
このとき、
図4に示すように、イベントフレーム送信処理220の完了タイミングが、後続のI/Oリフレッシュ処理210の実行開始より後にずれ込んでしまうと、I/Oリフレッシュフレーム180の送信タイミングがずれてしまう。すなわち、後続のI/Oリフレッシュ処理210において送信処理が完了すると、プロセッサ102は、I/Oリフレッシュフレーム180の送信要求を制御回路110へ発行する(シーケンスSQ12)。このとき、通信回路120はイベントフレーム190の送信処理中であるため、制御回路110は、即座には、通信回路120へ起動指令を与えることができない。そのため、制御回路110は、通信回路120でのイベントフレーム190の送信処理の完了まで待機した後に、起動指令を通信回路120へ与えることで、通信回路120からI/Oリフレッシュフレーム180を送信する(シーケンスSQ14)。その後、通信回路120は、ローカルネットワーク126を一巡後のI/Oリフレッシュフレーム180を受信すると、制御回路110を介して、完了通知をプロセッサ102へ出力する(シーケンスSQ16)。
【0072】
このように、プロセッサ102においては、異なる優先度を設定することで、I/Oリフレッシュフレーム180が一定周期で送信されるように(すなわち、通信周期に時間ゆらぎが生じないように)しているが、低優先処理であっても、イベントフレーム送信処理220が並列的に実行されることで、I/Oリフレッシュフレーム180の送信タイミングが影響を受ける可能性がある。
【0073】
特に、プロセッサ102でのプログラム実行には、時間ゆらぎがあるので、イベントフレーム送信処理220の実行タイミングなどを正確に管理することは容易でははい。
【0074】
そこで、本実施の形態に係るPLC1においては、制御回路110に以下のような機能を搭載することで、I/Oリフレッシュフレーム180が一定周期で送信されることを保証する。
【0075】
<E.禁止期間の採用>
本実施の形態に係るPLC1においては、I/Oリフレッシュフレーム180の送信周期(すなわち、I/Oリフレッシュ処理210の実行周期)に対応付けて、イベントフレーム送信要求(第2要求)を無効化する禁止期間を設定する。このような禁止期間は、プロセッサ102とは独立した制御回路110によって設定される。これにより、プロセッサ102でのプログラム実行において生じる時間ゆらぎの影響を受けることなく、I/Oリフレッシュフレーム180の送信周期を保証できる。
【0076】
図5は、本実施の形態に係るPLC1における通信フレームの送信に係る処理を説明するためのタイムチャートである。
図5には、
図4と同様に、I/Oリフレッシュ処理210およびイベントフレーム送信処理220がプロセッサ102で実行される状態を示す。
【0077】
本実施の形態においては、制御回路110は、I/Oリフレッシュフレーム180の送信周期(すなわち、I/Oリフレッシュ処理210の実行周期)に対応付けて、I/Oリフレッシュフレーム180以外の通信フレームの送信を禁止する期間(禁止期間200)を設定する。この禁止期間200の設定によって、イベントフレーム送信要求を含む、I/Oリフレッシュフレーム180以外の通信フレームの送信要求が無効化される。
【0078】
但し、状況によっては、禁止期間200において、イベントフレーム送信要求を無効化する一方で、I/Oリフレッシュフレーム180以外の優先度の高い通信フレームについては、その送信要求を有効化してもよい。
【0079】
禁止期間200において、イベントフレーム送信処理220の完了後にプロセッサ102がイベントフレーム190の送信要求を制御回路110へ発行した(シーケンスSQ8)としても、制御回路110は、起動指令を通信回路120へ与えることはない。そして、禁止期間200から外れると、制御回路110は、先に受信していたイベントフレーム190の送信要求に応答して、起動指令を通信回路120へ与えることで、通信回路120からイベントフレーム190を送信する(シーケンスSQ10)。
【0080】
つまり、制御回路110は、禁止期間200内にイベントフレーム送信要求(第2要求)を受信すると、当該受信したイベントフレーム送信要求に応じた通信回路120の起動を、禁止期間200の終了後まで延期する。このような延期処理によって、I/Oリフレッシュフレーム180の送信処理が待たされるようなことがない。
【0081】
一方、後続のI/Oリフレッシュ処理210において送信処理が完了すると、プロセッサ102は、I/Oリフレッシュフレーム180の送信要求を制御回路110へ発行する(シーケンスSQ12)。I/Oリフレッシュフレーム180の送信要求に対しては、禁止期間200が設定されているか否かについては影響を与えないので、制御回路110は、その送信要求に応答して、起動指令を通信回路120へ与えることで、通信回路120からI/Oリフレッシュフレーム180を送信する(シーケンスSQ14)。その後、通信回路120は、ローカルネットワーク126を一巡後のI/Oリフレッシュフレーム180を受信すると、制御回路110を介して、完了通知をプロセッサ102へ出力する(シーケンスSQ16)。完了通知に応答して、プロセッサ102は、I/Oリフレッシュ処理210の受信処理を実行する。
【0082】
このように、I/Oリフレッシュフレーム180の送信処理の前後を含む一定期間を禁止期間200として設定し、I/Oリフレッシュフレーム180の送信要求以外の送信要求(この例では、イベントフレーム190の送信要求)を実質的に無効化することで、I/Oリフレッシュフレーム180を一定周期で繰返し送信することができる。なお、禁止期間200中に、イベントフレーム190の送信要求が発行された場合には、その禁止期間200が終了後すぐに、イベントフレーム190を送信するための起動指令が通信回路120へ与えられる。
【0083】
禁止期間200は、I/Oリフレッシュ処理210の実行開始タイミングより前のタイミング(ΔTだけ前)から設定される。つまり、制御回路110は、I/Oリフレッシュ処理210(第1処理)の実行タイミングより予め定められた時間ΔTだけ前もって禁止期間200を開始する。このΔTの長さは、先行して実行され得るイベントフレーム送信処理220によって発行されるイベントフレーム190の処理に要する時間の長さを考慮して決定される。
【0084】
図6は、本実施の形態に係るPLC1における通信フレームの送信に係る別の処理を説明するためのタイムチャートである。
図6には、高優先処理および低優先処理のうちいずれか一方のみを実行可能なプロセッサ102(すなわち、シングルコアまたは単一のプロセッサ)を採用した場合の処理例を示す。この例においても、周期的に実行される高優先処理の間に低優先処理が実行される。この合間に実行される低優先処理からのイベントフレーム190の送信要求(シーケンスSQ8)によっても、後続の高優先処理の送信処理が影響を受ける場合がある。そのため、高優先処理であるI/Oリフレッシュ処理210の実行開始タイミングより前のタイミング(ΔTだけ前)を含む禁止期間200が設定されることで、I/Oリフレッシュフレーム180の送信処理に生じ得る時間ゆらぎを低減できる。
【0085】
図5および
図6に示すように、プロセッサ102での処理実行とは独立して、制御回路110を用いて、I/Oリフレッシュフレーム180およびイベントフレーム190の送信タイミングなどを管理することで、送信タイミングに生じる時間ゆらぎを低減できる。これによって、同一のローカルネットワーク126上でイベントフレーム190が送信される場合であっても、I/Oリフレッシュフレーム180の送信周期を安定して一定に維持できる。
【0086】
<F.禁止期間の設定方法>
次に、
図5に示す禁止期間200を設定する方法の一例について説明する。
図7は、本実施の形態に係るPLC1における禁止期間の設定方法を説明するための模式図である。
【0087】
図7(A)を参照して、制御回路110は、プロセッサ102でのプログラムの実行タイミングを管理するスケジューラから、I/Oリフレッシュ処理210の実行開始タイミングt1および実行終了タイミングt2を取得する。また、制御回路110は、メモリ104に格納されているコンフィギュレーション108を参照して、I/Oリフレッシュ処理210が繰返し実行される周期の長さを取得する。禁止期間200を開始するΔTの長さは、任意の方法で予め設定される。
【0088】
このような時間に関するパラメータが取得または設定されることで、
図7(B)に示すように、I/Oリフレッシュ処理210の実行タイミングに関連付けて、禁止期間200が設定される。この禁止期間200の期間長さは、制御回路110に含まれるタイマ114に期間長さおよびタイミング(位相)などが設定されることで規定される。
【0089】
このように、制御回路110は、プロセッサ102でのI/Oリフレッシュ処理210(第1処理)およびイベントフレーム送信処理220(第2処理)の実行を管理するスケジューラから、I/Oリフレッシュ処理210(第1処理)の実行タイミングを取得することで、禁止期間200を設定してもよい。
【0090】
禁止期間200の期間長さ、開始タイミング、終了タイミングなどについては、予め計算された上で事前設定されてもよいし、プロセッサ102においてI/Oリフレッシュ処理210が1回~数回実行された結果に基づいて、動的に設定されてもよい。また、事前設定される場合であっても、I/Oリフレッシュ処理210の実行結果に応じて、そのタイミングの変動(ゆらぎ)などを考慮して、パラメータなどを適宜変更するようにしてもよい。
【0091】
禁止期間200の期間長さ、開始タイミング、終了タイミングなどを事前設定する場合には、PLC1で実行されるプログラムの開発やモニタなどを行うサポート装置上で事前に計算してもよいし、制御回路110に事前設定を行うためのロジックを含む演算回路を実装しておいてもよい。あるいは、プロセッサ102で実行されるシステムプログラム106によって、禁止期間200の期間長さ、開始タイミング、終了タイミングなどを事前計算するようにしてもよい。
【0092】
<G.禁止期間の通知>
次に、プロセッサ102において実行される処理に対して、制御回路110が設定する禁止期間200の通知について説明する。
【0093】
図5を参照して説明したように、基本的には、プロセッサ102において実行されるI/Oリフレッシュ処理210およびイベントフレーム送信処理220に対して、制御回路110が設定する禁止期間200を通知する必要はない。すなわち、I/Oリフレッシュ処理210およびイベントフレーム送信処理220は、それぞれの処理の実行結果に従って、I/Oリフレッシュフレーム送信要求およびイベントフレーム送信要求を発行すればよい。これらのフレーム送信要求を受信した制御回路110は、その受信したタイミングが禁止期間200内であるか否かに応じて、受信したフレーム送信要求を処理する。つまり、禁止期間200内に、I/Oリフレッシュフレーム送信要求ではないイベントフレーム送信要求を受信すると、禁止期間200が終了するまで、イベントフレーム送信要求に基づく起動指令を通信回路120へ与えることを延期する。
【0094】
このように、本実施の形態に係るPLC1においては、設定される禁止期間200をプロセッサ102において実行される処理(プログラム)に対して明示的に通知する必要はなく、これによって、プロセッサ102において実行される各プログラムについても、禁止期間200を考慮して作成する必要がないため、実装を容易化できる。
【0095】
但し、制御回路110が設定する禁止期間200をプロセッサ102において実行される各プログラムに対して明示的に通知するようにしてもよい。この場合には、例えば、制御回路110およびプロセッサ102がともにアクセス可能なバッファ領域などに、禁止期間200が設定中であるか否か(すなわち、禁止期間200の期間内であるか否か)を示すフラグなどを予め用意しておき、制御回路110がそのフラグの値を都度更新するとともに、プロセッサ102で実行される各プログラムがそのフラグの値に基づいてフレーム送信要求を発行するか否かを判断するような処理を実装すればよい。もちろん、このようなフラグを用いる構成に限定されず、任意の通知方法を採用できる。
【0096】
<H.第1変形例>
上述の実施の形態においては、プロセッサ102と制御回路110との組合せによって、通信回路120による通信フレームの送信処理を制御する構成について例示したが、プロセッサ102および制御回路110を2つのプロセッサまたはコアで実現してもよい。
【0097】
図8は、本実施の形態の第1変形例に係るPLC1Aの要部構成を示す模式図である。
図8を参照して、CPUユニット100Aは、プロセッサ103と、メモリ104と、通信回路120とを含む。CPUユニット100Aは、第1コア103Aおよび第2コア103Bを含む。
【0098】
第1コア103Aは、
図1に示すプロセッサ102に相当する機能、すなわち、I/Oリフレッシュ処理210およびイベントフレーム送信処理220を実行する。一方、第2コア103Bは、
図1に示す制御回路110に相当する機能、すなわち、第1コア103Aで実行されるI/Oリフレッシュ処理210およびイベントフレーム送信処理220からのフレーム送信要求を受けて、通信回路120を起動する処理を実行する。このとき、第2コア103Bは、上述したような禁止期間200を設定する。
【0099】
このように、第1コア103Aおよび第2コア103Bがそれぞれ異なる機能を提供することで、上述したような本実施の形態に係る禁止期間200の設定を含む、通信フレームの送信処理を実現する。
【0100】
なお、
図8には、単一のプロセッサ103に含まれる第1コア103Aおよび第2コア103Bを用いて、本実施の形態に係る禁止期間の設定処理を実現する構成について例示したが、これに限らず、第1および第2プロセッサを含む複数のプロセッサを実装するとともに、第1プロセッサが第1コア103Aの処理を担当し、第2プロセッサが第2コア103Bの処理を担当するようにしてもよい。
【0101】
図8に示すような構成は、例えば、汎用コンピュータに通信ボードなどを装着して、CPUユニット100に相当する構成を実現するような場合に好適である。
【0102】
<I.第2変形例>
上述においては、CPUユニット100とローカルネットワーク126を介して接続された1または複数の機能ユニット150に対して、通信フレーム(I/Oリフレッシュフレーム180およびイベントフレーム190)を送信する構成について主として説明した。しかしながら、フィールドネットワークを介して接続される1または複数の機能ユニット150に対しても、同様のスキームを適用可能である。
【0103】
図9は、本実施の形態の第2変形例に係るPLC1Bの要部構成を示す模式図である。
図9を参照して、PLC1BのCPUユニット100Bは、1または複数の機能ユニット150に接続されるローカルネットワーク126を制御する通信回路120Aと、リモートI/O装置(通信カプラユニット170および1または複数の機能ユニット150)に接続されるフィールドネットワーク128を制御する通信回路120Bとを含む。通信回路120Aおよび通信回路120Bに対して、制御回路110Bが起動指令を与える。
【0104】
このような構成においても、CPUユニット100Bのプロセッサ102は、I/Oリフレッシュ処理210およびイベントフレーム送信処理220を実行することで、I/Oリフレッシュフレーム送信要求およびイベントフレーム送信要求をそれぞれ発行する。制御回路110Bは、ローカルネットワーク126およびフィールドネットワーク128の別に、上述の禁止期間を設定するとともに、何らかのフレーム送信要求を受信すると、禁止期間の期間内であるか否かに応じて、受信したフレーム送信要求を処理する。基本的な処理は、上述の実施の形態と同様であるので、詳細な説明は繰返さない。
【0105】
このように、本実施の形態に係る禁止期間の設定処理は、CPUユニット100とローカルネットワーク126を介して接続されている機能ユニット150に対する通信フレームの送信処理だけではなく、フィールドネットワーク128を介して接続されている機能ユニット150に対する通信フレームの送信処理に対しても適用可能である。
【0106】
説明の便宜上、
図9には、ローカルネットワーク126およびフィールドネットワーク128の両方を備えるCPUユニット100を例示するが、フィールドネットワーク128のみを備えるCPUユニット100に対しても、同様に適用可能である。
【0107】
<J.利点>
本実施の形態に係るPLC1においては、I/Oリフレッシュフレームの送信周期(すなわち、I/Oリフレッシュ処理の実行周期)に対応付けて、I/Oリフレッシュフレーム以外の通信フレームの送信を禁止する禁止期間を設定する。このような禁止期間は、プロセッサ102とは独立した制御回路110によって設定される。これにより、プロセッサ102でのプログラム実行において生じる時間ゆらぎの影響を受けることなく、I/Oリフレッシュフレームの送信周期を保証できる。
【0108】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0109】
1,1A,1B PLC、100,100A,100B CPUユニット、101 演算処理部、102,103 プロセッサ、103A 第1コア、103B 第2コア、104 メモリ、106 システムプログラム、107 ユーザプログラム、108 コンフィギュレーション、110,110B 制御回路、112 要求キュー、114 タイマ、120,120A,120B,160 通信回路、126 ローカルネットワーク、128 フィールドネットワーク、150 機能ユニット、156 機能モジュール、158 I/Oインターフェイス、162,164 送受信ポート、166 送受信コントローラ、170 通信カプラユニット、180 I/Oリフレッシュフレーム、190 イベントフレーム、200 禁止期間、210 I/Oリフレッシュ処理、220 イベントフレーム送信処理。