(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-05
(45)【発行日】2024-01-16
(54)【発明の名称】単位時間当たりのデータを作成するコントローラ、方法、およびプログラム
(51)【国際特許分類】
G05B 19/05 20060101AFI20240109BHJP
G05B 23/02 20060101ALI20240109BHJP
【FI】
G05B19/05 J
G05B19/05 D
G05B23/02 301V
(21)【出願番号】P 2020000843
(22)【出願日】2020-01-07
【審査請求日】2022-09-16
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(73)【特許権者】
【識別番号】598076591
【氏名又は名称】東芝インフラシステムズ株式会社
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】谷川 晶子
【審査官】牧 初
(56)【参考文献】
【文献】特開2006-284462(JP,A)
【文献】特開2010-004264(JP,A)
【文献】特開2016-110459(JP,A)
【文献】特開平07-059176(JP,A)
【文献】米国特許出願公開第2010/0192001(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/00-19/46
G05B 23/00-23/02
G06F 13/00-13/42
G08C 13/00-25/04
H03J 9/00- 9/06
H04Q 9/00- 9/16
G01D 1/00-21/02
(57)【特許請求の範囲】
【請求項1】
プロセッサと、
記憶装置と、
内部時計とを備え、
前記記憶装置は、
上位監視装置へ伝送される単位時間当たりのデータが、取得された時間帯に対応付けられて書き込まれる複数の伝送エリアを有し、
前記プロセッサは、
前記データを、前記複数の伝送エリアのうち、取得された時間帯に対応付けられた伝送エリアに書き込むデータ書込モジュールと、
前記伝送エリアにデータが書き込まれた際、前記伝送エリアに対応付けられた時間帯と、前記伝送エリアに書き込まれたデータとの対を形成する対形成モジュールと、
前記内部時計の時刻が変更された場合、前記伝送エリアに対応付けられている時間帯を、前記内部時計の時刻の変更量に応じて変更し、前記変更された時間帯と対を形成しているデータが存在するのであれば、このデータを、前記変更された時間帯に対応付けられている伝送エリアに移動するデータ移動モジュールと、
を実行させるコントローラ。
【請求項2】
前記プロセッサはさらに、
前記内部時計の時刻が変更された場合、前記伝送エリアに対応付けられている時間帯を、前記内部時計の時刻の変更量に応じて変更し、前記変更された時間帯と対を形成しているデータが存在しないのであれば、前記変更された時間帯に対応付けられている伝送エリアに、無効値を示す情報を書き込む無効値書込モジュールを実行させる、請求項1に記載のコントローラ。
【請求項3】
前記データは、時間に関する情報を含まず、前記時間帯の長さは、前記単位時間と等しい、請求項1
または2に記載のコントローラ。
【請求項4】
単位時間当たりのデータをコントローラから上位監視装置へ伝送する方法であって、
前記コントローラが、
前記上位監視装置へ伝送される前記単位時間当たりのデータが、取得された時間帯に対応付けられて書き込まれる複数の伝送エリアを記憶装置に記憶させることと、
前記データを、前記複数の伝送エリアのうち、取得された時間帯に対応付けられた伝送エリアに書き込むことと、
前記伝送エリアにデータが書き込まれた際、前記伝送エリアに対応付けられた時間帯と、前記伝送エリアに書き込まれたデータとの対を形成することと、
前記コントローラの内部時計の時刻が変更された場合、前記伝送エリアに対応付けられている時間帯を、前記内部時計の時刻の変更量に応じて変更し、前記変更された時間帯と対を形成しているデータが存在するのであれば、このデータを、前記変更された時間帯に対応付けられている伝送エリアに移動することとを含む、方法。
【請求項5】
単位時間当たりのデータをコントローラから上位監視装置へ伝送するために、前記コントローラのプロセッサによって実行されるプログラムであって、
前記上位監視装置へ伝送される前記単位時間当たりのデータが、取得された時間帯に対応付けられて書き込まれる複数の伝送エリアを記憶装置に記憶させる機能、
前記データを、前記複数の伝送エリアのうち、取得された時間帯に対応付けられた伝送エリアに書き込む機能、
前記伝送エリアにデータが書き込まれた際、前記伝送エリアに対応付けられた時間帯と、前記伝送エリアに書き込まれたデータとの対を形成する機能、
前記コントローラの内部時計の時刻が変更された場合、前記伝送エリアに対応付けられている時間帯を、前記内部時計の時刻の変更量に応じて変更し、前記変更された時間帯と対を形成しているデータが存在するのであれば、このデータを、前記変更された時間帯に対応付けられている伝送エリアに移動する機能を、前記プロセッサに実現させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、単位時間当たりのデータを作成するコントローラ、方法、およびプログラムに関する。
【背景技術】
【0002】
従来、上下水道処理設備等に適用されている監視制御システムは、単位時間当たりのデータを作成するプログラマブルロジックコントローラ(以下、「PLC」とも称する)と、PLCが作成した単位時間当たりのデータを伝送する上位監視装置とから構成されている。
【0003】
この種の監視制御システムにおいて、PLCにおいてなされる単位時間当たりデータの作成は、PLCに備えられた内部時計の時刻に基づいて行われる。
【0004】
上位監視装置とPLCとの伝送が確立している場合は、定周期でPLCの時刻を上位監視装置の時刻に同期させる処理が行われている。
【先行技術文献】
【特許文献】
【0005】
【文献】特許第3046171号公報
【文献】特許第6207763号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、このような従来の監視制御システムでは、以下のような問題がある。
【0007】
すなわち、上位監視装置とPLCとの伝送が切断された状態が長時間継続し、再度接続を行った場合、上位監視装置の内部時計によって計時される日時と、PLCにおいて保持されているデータの日時とに大きな差異が発生することがある。PLCを長期間停止させ、再起動した場合も同じように、大きな差異が発生することがある。
【0008】
また、伝送データ量を削減するため、PLCから上位監視装置へ伝送されるデータには日付や時刻のいわゆる時間情報は付加されていない。
【0009】
したがって、上位監視装置の内部時計によって計時された日時と、PLCにおいて保持されているデータの日時とに大きな差異がある場合、上位監視装置では、伝送されたデータが、どの日時(あるいは、さらに時刻)に該当するか、判定することができない。
【0010】
本発明はこのような事情に鑑みてなされたものであり、上位監視装置の内部時計によって計時される日時と、コントローラにおいて保持されているデータの日時とに大きな差異が発生する場合であっても、上位監視装置に伝送されたデータが該当する日時を判定することが可能な、単位時間当たりのデータを作成するコントローラ、方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0011】
実施形態のコントローラは、プロセッサと、記憶装置と、内部時計とを備えている。記憶装置は、上位監視装置へ伝送される単位時間当たりのデータが、取得された時間帯に対応付けられて書き込まれる複数の伝送エリアを有している。プロセッサは、データを、複数の伝送エリアのうち、取得された時間帯に対応付けられた伝送エリアに書き込むデータ書込モジュールと、伝送エリアにデータが書き込まれた際、伝送エリアに対応付けられた時間帯と、伝送エリアに書き込まれたデータとの対を形成する対形成モジュールと、内部時計の時刻が変更された場合、伝送エリアに対応付けられている時間帯を、内部時計の時刻の変更量に応じて変更し、変更された時間帯と対を形成しているデータが存在するのであれば、このデータを、変更された時間帯に対応付けられている伝送エリアに移動するデータ移動モジュールとを実行させる。
【図面の簡単な説明】
【0012】
【
図1】
図1は、第1の実施形態のコントローラを含む監視制御システムの構成例を示すブロック図である。
【
図2】
図2は、第1の実施形態のコントローラであるPLCの電子回路構成例を示す機能ブロック図である。
【
図3】
図3は、伝送エリアの一例を示す一次元のデータ構造図である。
【
図4】
図4は、伝送エリアの一例を示す二次元のデータ構造図である。
【
図5】
図5は、内部時計の日付が5日進める変更がなされた場合におけるデータ移動の例を示す図である。
【
図6】
図6は、内部時計の日付が5日進める変更がなされた場合におけるデータ移動の例を示す図である。
【
図7】
図7は、第2の実施形態のコントローラであるPLCの電子回路構成例を示す機能ブロック図である。
【
図8】
図8は、PLCが1時間当たりのデータを作成する場合を説明する図である。
【
図9】
図9は、内部時計の時刻が進められたときに、PLCが1時間当たりのデータを作成する場合を説明する図である。
【
図10】
図10は、内部時計の時刻が時間幅よりも短く戻されたときに、PLCが1時間当たりのデータを作成する場合を説明する図である。
【
図11】
図11は、内部時計の時刻が時間幅よりも大きく戻されたときに、PLCが1時間当たりのデータを作成する場合を説明する図である。
【発明を実施するための形態】
【0013】
以下に、本発明の各実施形態について図面を用いて説明する。
【0014】
(第1の実施形態)
図1は、第1の実施形態のコントローラを含む監視制御システムの構成例を示すブロック図である。
【0015】
監視制御システム100は、例えば上下水道処理設備等に適用される。
【0016】
第1の実施形態のコントローラは、監視制御システム100に含まれ、例えばPLC10によって実現される。したがって、以下の説明では、第1の実施形態のコントローラを、PLC10として説明する。
【0017】
PLC10は、単位時間当たりのデータを作成し、作成したデータを、伝送路70を介して、同様に監視制御システム100に含まれている上位監視装置80へ伝送する。上位監視装置80では、PLC10から伝送されたデータを受信し、該当する日時のデータとして表示する。
【0018】
図2は、第1の実施形態のコントローラであるPLCの電子回路構成例を示す機能ブロック図である。
【0019】
PLC10の電子回路は、バス11によって互いに接続されたCPU12、記録媒体読取部14、伝送部15、メモリ20、記憶装置30、および内部時計40を備えている。
【0020】
メモリ20は、PLC10において動作するプログラムとして、データ書込モジュール21と、対形成モジュール22と、データ移動モジュール23と、無効値書込モジュール24とを記憶している。
【0021】
これらプログラムモジュール21~24は、メモリ20に予め記憶されていてもよいし、あるいはメモリカード等の外部記録媒体13から記録媒体読取部14を介してメモリ20に読み込まれて記憶されたものであってもよい。
【0022】
メモリ20にはさらに、データを記憶するエリアとして、データエリア29が確保されている。
【0023】
CPU12は、各プログラムモジュール21~24を実行可能な1つまたは複数のプロセッサの一例であって、各プログラムモジュール21~24に従い回路各部の動作を制御する。
【0024】
記憶装置30は、例えばSSD(Solid State Drive)やHDD(Hard Disk Drive)等からなり、PLC10によって取得された単位時間当たり(例えば、1時間当たり)のデータを記憶するための、所定数の伝送エリア32を備えている。ただし、データには、時間に関する情報は含まれていない。
【0025】
図3および
図4はそれぞれ、伝送エリアの一例を示すデータ構造図である。
【0026】
図3は、1時間当たりのデータを、1日分取得するために、1時間毎に区切られた各時間帯Tに対応付けられた24の伝送エリア32(0)~32(23)を例示している。例えば、伝送エリア32(0)は、0時台の時間帯Tに対応付けられ、0時台に取得されたデータが書き込まれ、伝送エリア32(1)は、1時台の時間帯Tに対応付けられ、1時台に取得されたデータが書き込まれるという具合である。もちろん、伝送エリア32の数は24に限定される訳ではない。
【0027】
また、
図3の例では、一次元構造を有する伝送エリア32が例示されているが、伝送エリア32の構造は、一次元構造に限定される訳ではなく、
図4に例示するように、二次元構造とすることもできる。
【0028】
図4は、1時間当たりのデータを、1週間分取得するために、X軸方向を「日」、Y軸方向を「時間」とした7×24の二次元構造を有する伝送エリア32(1,0)~(7,23)を例示している。
【0029】
また、複数の伝送エリア32では、データDが書き込まれる順番が決まっており、データDの書き込みは、データ書込モジュール21によって制御される。
【0030】
データ書込モジュール21は、
図3および
図4中に矢印で示されるような順番に従って、複数の伝送エリア32にデータDを書き込むように制御する。データ書込モジュール21はさらに、最後の伝送エリア32までデータDが書き込まれた後は、最初の伝送エリア32に戻って、データDを書き込むように制御する。
【0031】
例えば、
図3のような伝送エリア32の場合、最後の伝送エリア32(23)までデータDが書き込まれた後は、データ書込モジュール21は、図中※印で示されるように、最初の伝送エリア32(0)に戻り、また最初の伝送エリア32(0)から、矢印で示されるような順番に従って、以降の伝送エリア32(1)、(2)、・・・(23)に順にデータを上書きするように制御する。このようにして、
図3の例の場合、伝送エリア32(0)、(1)、・・・(23)に、1日分のデータDが書き込まれた後は、次の日のデータDによって上書きされる。
【0032】
図4において、データ書込モジュール21は、図中※1矢印に示されるように、当日の0時に対応するデータDを、1日目の0時に対応付けられた伝送エリア32(1,0)に書き込み、以降は、時間の経過に従って、例えば、1日目の1時に対応するデータDを伝送エリア32(1,1)に書き込み、1日目の2時に対応するデータDを伝送エリア32(1,2)に書き込むといった動作を継続し、1日目の23時に対応するデータDを伝送エリア32(1,23)に書き込むことによって、1日目の伝送エリア32(1,0)~(1,23)へのデータDの書き込みを完了する。日付が変わると、データ書込モジュール21は、図中※2矢印に示すように、7日目の伝送エリア32(7,0)~(7,23)に書き込まれているデータDを破棄し、1日目から6日目の各伝送エリア32に書き込まれているデータDを、伝送エリア32において、図中右側に(横軸に沿って)平行移動させることによって、時間(縦軸)を変えずに日付(横軸)だけを1日進める。例えば、6日目の伝送エリア32(6,0)~(6,23)に書き込まれているデータDをそれぞれ、7日目の伝送エリア32(7,0)~(7,23)へ進め、1日目から5日目の伝送エリア32に書き込まれているデータDも同様に、1日後の同じ時間における伝送エリア32へ進める。これによって、1日目の伝送エリア32(1,0)~(1,23)に書き込まれていたデータDは、2日目の伝送エリア32(2,0)~(2,23)へと移動される。そして、データが移動された1日目の伝送エリア32(1,0)~(1,23)に再び、前述したようにして当日のデータDが書き込まれる。
【0033】
データ書込モジュール21は、このような処理を繰り返すことによって、所定数の伝送エリア32への、順番に従ったデータDの書き込みを制御する。
【0034】
対形成モジュール22は、伝送エリア32にデータDが書き込まれた際、この伝送エリア32に対応付けられた時間帯Tと、伝送エリア32に書き込まれたデータDとの対を形成する。これを、
図3を用いて説明する。
【0035】
図3の例では、1時間毎のデータDを書き込むために、24の伝送エリア32(0)~(23)が設けられている。このような場合、内部時計40によって計時された0時00分から1時00分までの時間帯Tが「0」となり、この間に取得されたデータD0が、伝送エリア32(0)に書き込まれる。これによって、伝送エリア32(0)に、時間帯T「0」が対応付けられ、時間帯T「0」と、伝送エリア32(0)に書き込まれたデータ「D0」との対を形成するという具合である。
【0036】
図4の例では、1時間毎のデータDを1週間分書き込むために、7×24の伝送エリア32(1,0)~(7,23)が設けられている。このような場合、内部時計40によって計時された第1日目の0時00分から0時59分までの時間帯Tが(1,0)という2次元配列で表現され、この間に取得されたデータD0100が、伝送エリア32(1,0)に書き込まれる。これによって、伝送エリア32(1,0)に、時間帯T「1,0」が対応付けられ、時間帯T「1,0」と、伝送エリア32(1,0)に書き込まれたデータ「D0100」との対を形成するという具合である。
【0037】
データ移動モジュール23は、内部時計40の時刻が変更された場合、各伝送エリア32に対応付けられている各時間帯Tを、内部時計40の時刻の変更量に応じて変更する。そして、変更された時間帯T’と対を形成しているデータDが存在するのであれば、このデータDを、時間帯T’に対応付けられている伝送エリア32に移動する。これを、
図5を用いて説明する。
図5は、7つの時間帯T(日)および伝送エリア32(1)~(7)が設けられている例である。
【0038】
図5は、内部時計40の日付が4月25日から4月30日に5日進める変更がなされた場合に、データ移動モジュール23によってなされたデータ移動の例を示す図であり、
図5(a)には、変更前の伝送エリア32(1)~(7)に書き込まれているデータDが表され、
図5(b)には、変更後の伝送エリア32’ (1)~(7)に書き込まれるデータD’が表されている。
【0039】
内部時計40の時刻が変更される前は、
図5(a)に示すように、7つの伝送エリア32(1)、(2)、(3)、(4)、(5)、(6)、(7)に、時間帯「4/25」(「4月25日」を示す。以下同様)、「4/24」、「4/23」、「4/22」、「4/21」、「4/20」、「4/19」がそれぞれ対応付けられ、7つの伝送エリア32(1)、(2)、(3)、(4)、(5)、(6)、(7)にはそれぞれデータとして「a」、「b」、「c」、「d」、「e」、「f」、「g」が書き込まれている。
【0040】
この場合、対形成モジュール22によって、時間帯「4/25」とデータ「a」との対が形成される。同様に、時間帯「4/24」とデータ「b」、時間帯「4/23」とデータ「c」、時間帯「4/22」とデータ「d」、時間帯「4/21」とデータ「e」、時間帯「4/20」とデータ「f」、および時間帯「4/19」とデータ「g」もまたそれぞれ対が形成される。
【0041】
この状態において、内部時計40の日付が4月25日から4月30日に、5日進むように変更されると、データ移動モジュール23は、各伝送エリア32(1)、(2)、(3)、(4)、(5)、(6)、(7)に対応付けられている各時間帯T「4/25」、「4/24」、「4/23」、「4/22」、「4/21」、「4/20」、「4/19」それぞれに、変更量である5日を加える。これによって、変更後の時間帯T’は、
図5(b)に示すように、日付が5日進められ、「4/30」、「4/29」、「4/28」、「4/27」、「4/26」、「4/25」、「4/24」となる。
【0042】
図5(a)に示されているように、時間帯「4/25」とデータ「a」とは対をなしており、時間帯「4/24」とデータ「b」もまた対を形成している。したがって、
図5(b)に示すように、日付変更後の時間帯T’において、「4/25」に対応する伝送エリア32’(6)にデータ「a」が移動され、時間帯T’において「4/24」に対応する伝送エリア32’(7)にデータ「b」が移動される。
【0043】
一方、
図5(b)に示される時間帯T’に示される「4/30」、「4/29」、「4/28」、「4/27」、「4/26」は、
図5(a)の時間帯Tにはない。したがって、時間帯「4/30」、「4/29」、「4/28」、「4/27」、「4/26」と対を形成しているデータもない。
【0044】
このように、変更された時間帯T’と対を形成しているデータが存在しない場合、無効値書込モジュール24は、これら時間帯T’(この場合、「4/30」、「4/29」、「4/28」、「4/27」、「4/26」)に対応付けられている伝送エリア32’(この場合、伝送エリア32’(1)、(2)、(3)、(4)、(5))に、無効値を示す情報を書き込む。
【0045】
したがって、変更された時間帯T’のいずれにも、対を形成しているデータが存在しない場合、無効値書込モジュール24は、変更されたすべての時間帯T’に対応付けられている伝送エリア32’に、無効値を示す情報を書き込むことになる。これを
図6を用いて説明する。
【0046】
図6は、内部時計の日付が4月25日から5月2日に7日進める変更がなされた場合に、データ移動モジュール23によってなされたデータ移動の例を示す図であり、
図6(a)には、変更前の伝送エリア32に書き込まれているデータDが表され、
図6(b)には、変更後の伝送エリア32に書き込まれるデータD’が表されている。
【0047】
内部時計40の時刻が変更される前は、
図6(a)に示すように、
図5(a)と同様に、7つの伝送エリア32(1)、(2)、(3)、(4)、(5)、(6)、(7)に、時間帯「4/25」、「4/24」、「4/23」、「4/22」、「4/21」、「4/20」、「4/19」がそれぞれ対応付けられ、7つの伝送エリア32(1)、(2)、(3)、(4)、(5)、(6)、(7)にはそれぞれデータとして「a」、「b」、「c」、「d」、「e」、「f」、「g」が書き込まれている。
【0048】
したがって、対形成モジュール22によって、時間帯「4/25」とデータ「a」、時間帯「4/24」とデータ「b」、時間帯「4/23」とデータ「c」、時間帯「4/22」とデータ「d」、時間帯「4/21」とデータ「e」、時間帯「4/20」とデータ「f」、および時間帯「4/19」とデータ「g」の対が形成される。
【0049】
この状態において、内部時計40の日付が4月25日から5月2日に、7日進むように変更されると、データ移動モジュール23は、各伝送エリア32(1)、(2)、(3)、(4)、(5)、(6)、(7)に対応付けられている各時間帯T「4/25」、「4/24」、「4/23」、「4/22」、「4/21」、「4/20」、「4/19」それぞれに、変更量である7日を加える。これによって、変更後の時間帯T’は、
図6(b)に示すように、日付が7日進められ、「5/2」、「5/1」、「4/30」、「4/29」、「4/28」、「4/27」、「4/26」となる。
【0050】
図6(b)に示される時間帯T’に示される「5/2」、「5/1」、「4/30」、「4/29」、「4/28」、「4/27」、「4/26」は、
図6(a)の時間帯Tにはない。したがって、「5/2」、「5/1」、「4/30」、「4/29」、「4/28」、「4/27」、「4/26」と対を形成しているデータもない。
【0051】
このように、変更された時間帯T’と対を形成しているデータが存在しない場合、無効値書込モジュール24は、これら時間帯T’(この場合、「5/2」、「5/1」、「4/30」、「4/29」、「4/28」、「4/27」、「4/26」)に対応付けられている伝送エリア32’(この場合、伝送エリア32’(1)、(2)、(3)、(4)、(5)、(6)、(7))に、無効値を示す情報を書き込む。
【0052】
その結果、内部時計の日付が4月25日から5月2日に7日進める変更がなされた場合には、
図6(b)に示すように、すべての伝送エリア32’に無効値が書き込まれる。
【0053】
このように伝送エリア32’に書き込まれたデータまたは無効値を示す情報は、伝送部15によって、伝送路70を介して、上位監視装置80へ伝送される。
【0054】
これによって、上位監視装置80では、伝送エリア32に書き込まれたデータまたは無効値を示す情報を表示することができる。なお、無効値が書き込まれた伝送エリア32は、「データ無し」として表示される。
【0055】
上述したように、第1の実施形態のコントローラによれば、上述したように、上位監視装置80の内部時計によって計時される日時と、コントローラ(PLC10)において保持されているデータの日時とに大きな差異が発生する場合であっても、上位監視装置80に伝送されたデータがどの日時に該当するデータであるかを判定することが可能となる。
【0056】
(第2の実施形態)
第2の実施形態について説明する。第2の実施形態は、第1の実施形態の変形であるので、ここでは、重複説明を避け、第1の実施形態と異なる点について説明し、余の点については、第1の実施形態でなされた説明を参照されたい。
【0057】
図7は、第2の実施形態のコントローラであるPLCの電子回路構成例を示す機能ブロック図である。
【0058】
図7に示すPLC10Aは、
図2に示すPLC10と比較して、メモリ20が、データ書込モジュール21、対形成モジュール22、データ移動モジュール23、および無効値書込モジュール24を備えていることの代わりに、時間帯決定モジュール25、第1データ書込モジュール26、第2データ書込モジュール27、および無効値書込モジュール28を備えているという点が異なっている。
【0059】
時間帯決定モジュール25は、データDが取得された時間帯Tを、内部時計40に基づいて決定する。
【0060】
第1データ書込モジュール26は、同一の時間帯Tに取得されたデータDを、内部変数Δとして蓄積し、この時間帯Tが終了すると、内部変数Δとして蓄積されたデータを、対応する時間帯Tに対応付けられた伝送エリア32に書き込む。この動作を、
図8を用いて説明する。
【0061】
図8は、PLCが1時間当たりのデータを作成する場合を説明する図である。
【0062】
図8の上段は、内部時計40が示す現在時刻が6時58分であり、内部変数Δにデータ「15」が蓄積されている状態を示している。つまり、時間帯決定モジュール25によって、6時台に取得されたと決定されたデータの現在値が「15」であることを示している。
【0063】
図8の上段右側には、この時点までに伝送エリア32に書き込まれているデータDが示されている。伝送エリア32は、時間帯Tとして「0時」、「1時」、・・・「23時」が設定され、これら24の時間帯Tに対応して24の伝送エリア32(0)~(23)が設けられている。現在時刻が6時58分であることから、「0時」~「5時」の時間帯Tに対応する伝送エリア32(0)~(5)には、既に第1データ書込モジュール26によって、データDが書き込まれている。
【0064】
図8の下段は、内部時計40が示す現在時刻が1分間進んで6時59分となり、内部変数Δに蓄積されているデータが「15」から「17」に増加した状態を示している。また、6時59分で、「6時」台の時間帯Tが終了するので、第1データ書込モジュール26は、内部変数Δとして蓄積されているデータである「17」を、「6時」台に対応する時間帯Tに対応付けられた伝送エリア32(6)に書き込む。
【0065】
第1データ書込モジュール26は、内部変数Δに蓄積されたデータを、伝送エリア32(6)に書き込むと、内部変数Δの値をゼロにクリアし、次の時間帯Tである「7時」台に取得されたデータの蓄積のために使用される。
【0066】
第2データ書込モジュール27は、内部時計40の時刻が変更された場合に動作し、変更時の時刻を含む時間帯Tにおいて、変更時までに取得されたデータと、変更後の時刻を含む時間帯T’において、変更後の時刻から、この時間帯T’の終了までに取得されたデータとを合わせて、変更後の時刻を含む時間帯T’に対応付けられた伝送エリア32に書き込む。これを、
図9を用いて説明する。
【0067】
図9もまた、PLCが1時間当たりのデータを作成する場合を説明する図であるが、内部時計の時刻を進めるように変更された場合である。
【0068】
図9の上段は、内部時計40が示す現在時刻が5時50分であり、内部変数Δにデータ「15」が蓄積されている状態を示している。つまり、時間帯決定モジュール25によって、5時00分から5時50分までに取得されたと決定されたデータが「15」であることを示している。
【0069】
図9の上段右側には、5時50分の時点において伝送エリア32に書き込まれているデータDが示されている。現在時刻が5時50分であることから、「0時」~「4時」の時間帯Tに対応する伝送エリア32(0)~(4)には、既に第1データ書込モジュール26によって、データDが書き込まれている。
【0070】
この時点において、内部時計40の時刻が、5時50分から6時50分へと1時間進められたとする。そして、
図9の下段に示すように、その後、6時50分から6時59分までの間に、内部変数Δに蓄積されたデータが「2」増加して「17」になったとする。
【0071】
このように内部時計40の時刻が変更されると、第2データ書込モジュール27が動作し、変更時の時刻である5時50分を含む時間帯Tである「5時」台において、変更時である5時50分までに取得されたデータである「15」と、変更後の時刻である6時50分を含む時間帯Tである「6時」台において、変更後の時刻である6時50分から、この「6時」台の時間帯の終了である6時59分までに取得されたデータである「2」とを合わせた「17」を、変更後の時刻である6時50分を含む「6時」台の時間帯Tに対応付けられた伝送エリア32(6)にデータDとして書き込む。
【0072】
これによって、
図9の下段右側に示すように、「6時」台に対応付けられた伝送エリア32(6)にデータDとして「17」が書き込まれる。これによって、「4時」台に対応付けられた伝送エリア32(4)まではデータが書き込まれているものの、次の「5時」台に対応付けられた伝送エリア32(5)にはデータが書き込まれることなく、ブランクの伝送エリア32となって、その次の「6時」台に対応付けられた伝送エリア32(6)にデータが書き込まれることになる。
【0073】
このように、内部時計40の時刻が変更されたことによって、直前にデータが書き込まれた「4時」台の伝送エリア32(4)の次の時間順である「5時」台の伝送エリア32(5)ではない伝送エリア32(
図9の場合、「6時」台の伝送エリア32(6))にデータが書き込まれたのであれば、無効値書込モジュール28は、時間的に、直前にデータが書き込まれた伝送エリア32(
図9の場合、「4時」台の伝送エリア32(4))と、今回データが書き込まれた伝送エリア(
図9の場合、「6時」台の伝送エリア32(6))との間に位置する伝送エリア32(
図9の場合、「5時」台の伝送エリア32(5))に、無効値を示す情報を書き込む。
【0074】
なお、
図9の例は、ブランクの伝送エリア32が1つの例を示しているが、ブランクの伝送エリア32は、複数連続して存在することもあり得る。ブランクの伝送エリア32が複数連続して存在する場合であっても、無効値書込モジュール28は、ブランクの伝送エリア32に対して、無効値を示す情報を書き込む。
【0075】
【0076】
図10もまた、PLCが1時間当たりのデータを作成する場合を説明する図であるが、内部時計の時刻を戻すように変更された場合である。
【0077】
図10の上段は、内部時計40が示す現在時刻が6時10分であり、内部変数Δにデータ「3」が蓄積されている状態を示している。つまり、時間帯決定モジュール25によって、6時00分から6時10分までに取得されたと決定されたデータが「3」であることを示している。
【0078】
図10の上段右側には、この時点までに伝送エリア32に書き込まれているデータDが示されている。現在時刻が6時50分であることから、「0時」~「5時」の時間帯Tに対応する伝送エリア32(0)~(5)には、既に第1データ書込モジュール26によって、データDが書き込まれている。
【0079】
この時点において、内部時計40の時刻が、6時10分から5時50分へと20分戻されたとする。そして、
図10の下段に示すように、その後、5時50分から5時59分までの間に、内部変数Δに蓄積されたデータが「2」増加して「5」になったとする。
【0080】
このように内部時計40の時刻が変更されると、第2データ書込モジュール27が動作し、変更時の時刻である6時10分を含む時間帯Tである「6時」台において、変更時である6時10分までに取得されたデータである「3」と、変更後の時刻である5時50分を含む時間帯Tである「5時」台において、変更後の時刻である5時50分から、この時間帯T(この場合、「5時」台)の終了である5時59分までに取得されたデータである「2」とを合わせた「5」を、変更後の時刻である5時50分を含む時間帯Tである「5時」台に対応付けられた伝送エリア32(5)に書き込む。なお、
図10の上段右側に示すように、伝送エリア32(5)には、既にデータ「10」が書き込まれている。このように、所定の伝送エリア32(5)にデータDが既に書き込まれている場合には、第2データ書込モジュール27は、所定の伝送エリア32(5)にデータDを上書きする。これによって、時刻変更後は、
図10の下段右側に示すように、「5時」台に対応付けられた伝送エリア32(5)に「5」が上書きによって書き込まれる。
【0081】
次に、
図11を用いてさらに別の例について説明する。
【0082】
図11もまた、
図10と同様に、内部時計の時刻を戻すように変更されたときに、PLCが1時間当たりのデータを作成する場合を説明する図である。ただし、
図10の例では、内部時計40の時刻が、時間帯Tの長さよりも短い20分戻された例であるが、
図11は、内部時計40の時刻が、時間帯Tの長さよりも長い2時間10分戻された例である。
【0083】
図11の上段は、内部時計40が示す現在時刻が8時10分であり、内部変数Δにデータ「3」が蓄積されている状態を示している。つまり、時間帯決定モジュール25によって、8時00分から8時10分までに取得されたと決定されたデータが「3」であることを示している。
【0084】
図11の上段右側には、この時点までに伝送エリア32に書き込まれているデータDが示されている。現在時刻が8時10分であることから、「0時」~「7時」の時間帯Tに対応する伝送エリア32(0)~(7)には、既に第1データ書込モジュール26によって、データDが書き込まれている。
【0085】
この時点において、内部時計40の時刻が、8時10分から5時59分へと2時間11分戻されたとする。そして、
図11の下段に示すように、その後、5時59分の間に、内部変数Δに蓄積されたデータが「2」増加して「5」になったとする。
【0086】
このように内部時計40の時刻が変更されたことに伴い、第2データ書込モジュール27が動作し、変更時の時刻である8時10分を含む時間帯Tである「8時」台において、変更時である8時10分までに取得されたデータである「3」と、変更後の時刻である5時59分を含む時間帯Tである「5時」台において、変更後の時刻である5時59分から、この時間帯Tの終了である5時59分まで(すなわち、5時59分の間)に取得されたデータである「2」とを合わせた「5」を、変更後の時刻である5時59分を含む時間帯Tである「5時」台に対応付けられた伝送エリア32(5)に書き込む。なお、
図11の上段右側に示すように、伝送エリア32(5)には、既にデータ「10」が書き込まれている。このように、所定の伝送エリア32(5)にデータDが既に書き込まれている場合には、第2データ書込モジュール27は、所定の伝送エリア32(5)にデータDを上書きする。これによって、時刻変更後は、
図11の下段右側に示すように、「5時」台に対応付けられた伝送エリア32(5)に「5」が上書きによって書き込まれる。
【0087】
ところで、
図11の上段右側に示すように、「6時」台の伝送エリア32(6)と、「7時」台の伝送エリア32(7)とには、すでにデータD書き込まれている。しかしながら、内部時計40の時刻が戻されたことによって、
図11の下段右側に示すように、「5時」台の伝送エリア32(5)のデータDは「5」に上書きされた。したがって、このままの状態では、
図11の下段右側の伝送エリア32(6)、(7)に書き込まれているデータDは、伝送エリア32(5)に書き込まれているデータDよりも前に取得されたデータであるにも関わらず、伝送エリア32(5)に書き込まれているデータDよりも後に取得されたデータであると上位監視装置80において認識されることになる。このような矛盾を排除するために、無効値書込モジュール28は、内部時計40の時刻が戻されたことによって、既にデータDが書き込まれている伝送エリア32(
図11の場合、伝送エリア32(6)、(7))よりも時間的に前の伝送エリア32(
図11の場合、伝送エリア32(5))にデータが上書きされた場合には、既にデータが書き込まれている伝送エリア32(
図11の場合、伝送エリア32(6)、(7))に、無効値を示す情報を上書きする。
【0088】
上述したように、第2の実施形態のコントローラによれば、上位監視装置80の内部時計によって計時される日時と、コントローラ(PLC10A)において保持されているデータの日時とに大きな差異が発生する場合であっても、上位監視装置80に伝送されたデータDがどの日時に該当するデータであるかを判定することが可能となる。
【0089】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0090】
10・・PLC、11・・バス、12・・CPU、13・・外部記録媒体、14・・記録媒体読取部、15・・伝送部、20・・メモリ、21・・データ書込モジュール、22・・対形成モジュール、23・・データ移動モジュール、24・・無効値書込モジュール、25・・時間帯決定モジュール、26・・第1データ書込モジュール、27・・第2データ書込モジュール、28・・無効値書込モジュール、29・・データエリア、30・・記憶装置、32・・伝送エリア、40・・内部時計、70・・伝送路、80・・上位監視装置、100・・監視制御システム