JPWO2019142288A1 - Plc、ネットワークユニット、cpuユニット、及びデータ転送方法 - Google Patents

Plc、ネットワークユニット、cpuユニット、及びデータ転送方法 Download PDF

Info

Publication number
JPWO2019142288A1
JPWO2019142288A1 JP2018538900A JP2018538900A JPWO2019142288A1 JP WO2019142288 A1 JPWO2019142288 A1 JP WO2019142288A1 JP 2018538900 A JP2018538900 A JP 2018538900A JP 2018538900 A JP2018538900 A JP 2018538900A JP WO2019142288 A1 JPWO2019142288 A1 JP WO2019142288A1
Authority
JP
Japan
Prior art keywords
data
unit
transfer
shared memory
area
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.)
Granted
Application number
JP2018538900A
Other languages
English (en)
Other versions
JP6419400B1 (ja
Inventor
克洋 安念
克洋 安念
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP6419400B1 publication Critical patent/JP6419400B1/ja
Publication of JPWO2019142288A1 publication Critical patent/JPWO2019142288A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/056Programming the PLC
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/054Input/output
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/12Programme control other than numerical control, i.e. in sequence controllers or logic controllers using record carriers
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/408Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by data handling or data format, e.g. reading, buffering or conversion of data
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/13Plc programming
    • G05B2219/13015Semi automatic, manual automatic

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Human Computer Interaction (AREA)
  • Manufacturing & Machinery (AREA)
  • Programmable Controllers (AREA)

Abstract

ネットワークユニット(200)の受信データ書き込み部(262)は、第1スレーブ局(1001)と第2スレーブ局(1002)とから受信した受信データのうち、データの同時性を保証するデータを、書き込みが可能であることを示すフラグがセットされた場合に第1データ領域(211)に記録し、受信データのうちリアルタイム性を保証するデータを第2データ領域(212)に記録する。CPUユニット(100)の第1転送部(142)は、第1の転送周期で、かつ、読み出しが可能であることを示すフラグがセットされた場合に第1データ領域(211)のデータを第1記憶部(111)に転送する。CPUユニット(100)の第2転送部(143)は、第2の転送周期で、第2データ領域(212)のデータを第2記憶部(112)に転送する。

Description

本発明は、PLC、ネットワークユニット、CPUユニット、及びデータ転送方法に関する。
FA(Factory Automation)制御システムにおいて使用されているPLC(Programmable Logic Controller)では、PLC全体を制御するCPU(Central Processing Unit)ユニットと、機能ユニットのひとつであり、ネットワークを介して他の機器からデータを受信するネットワークユニットとが共有メモリを使用して相互にデータをやり取りする。
ネットワークユニットが共有メモリのデータを更新している最中に、CPUユニットが共有メモリからデータを読み出すと、CPUユニットが読み出したデータは、ネットワークユニットが前回のサイクルタイムで受信し、すでに共有メモリに書き込まれていたデータと、ネットワークユニットが今回のサイクルタイムで受信したデータとが混在したものとなる。ネットワークユニットが受信するデータは一定のかたまりで意味を持つことがあり、この場合、一度に読み出すべきデータが同時に読み出されること、即ち、データの同時性を保証することができない。
この問題を解消するため、特許文献1には、フラグを使用して、CPUユニットと機能ユニットが共有メモリのデータの読み書きを同時に行わないように排他制御することが記載されている。
従来の排他制御の一例として、以下のようにフラグを使用する制御方式がある。共有メモリに対するアクセスの状態を、ネットワークユニットが書き込み可能な状態「0」、CPUユニットが読み出し可能な状態「1」、CPUユニットが読み出し中の状態「2」の3つに区分する。これらの3つの区分の状態を表すフラグの値を、「0」から「1」へ、「1」から「2」へ、「2」から「0」へと変更する。CPUユニットとネットワークユニットは、フラグの値が共有メモリにアクセス可能なことを示す場合に、共有メモリにアクセスする。
特開2004−265001号公報
上述の3値のフラグを使用する場合、「0」で表されるネットワークユニットが書き込み可能な状態の前の状態は、「2」で表されるCPUユニットが読み出し中の状態である。即ち、CPUユニットがデータを共有メモリから読み出した後でなければ、ネットワークユニットは共有メモリに書き込むことができない。
ここで、CPUユニットのサイクルタイムは、ネットワークユニットのサイクルタイムと異なる場合が多い。CPUユニットのサイクルタイムがネットワークユニットのサイクルタイムより長い場合には、CPUユニットの共有メモリからの読み出しの間隔は、ネットワークユニットの共有メモリへの書き込みの間隔に対して長くなる。ネットワークユニットは、CPUユニットの読み出しを待って、共有メモリに書き込むことになるため、ネットワークが共有メモリに書き込めないタイミングが生じてしまう。
さらに、ネットワークユニットの受信バッファの容量は限られたものであり、同一スレーブ局からの受信データは最新の1件しか保持できない場合がある。このため、ネットワークユニットが共有メモリに書き込めない期間に、ネットワークユニットがスレーブ局からデータを受信した場合、受信バッファ内の以前に受信されたデータが新たに受信されたデータで上書きされる。
この結果、ネットワークユニットは、上書きされたデータを共有メモリに書き込むことができず、CPUユニットは上書きされたデータを取得することができない。よって、CPUユニットがネットワークユニットから取得するデータの一部が抜けてしまう。
こうした状況を避けるため、ネットワークユニットが、受信バッファが上書きされる前に、受信バッファのデータを他の記憶領域に退避させるといった方法も考えられるが、ネットワークユニット側の構成が複雑になってしまう。
本発明は、上記実情に鑑みてなされたものであり、データの同時性を維持しつつ、簡易な方法でCPUユニットがネットワークユニットから取得するデータの欠落を低減することを目的とする。
上記目的を達成するため、本発明に係るPLCは、CPUユニットと、ネットワークユニットと、CPUユニットとネットワークユニットが読み書き可能な共有メモリと、を含む。共有メモリは、第1データ領域と第2データ領域とを含む。ネットワークユニットの受信データ書き込み部は、ネットワークを介して接続された機器から受信した受信データのうちデータの同時性を保証するデータを、第1データ領域に書き込みが可能であることを示すフラグがセットされた場合に第1データ領域に記録し、受信データのうちリアルタイム性を保証するデータを第2データ領域に記録する。CPUユニットの第1転送部は、第1の転送周期で、かつ、第1データ領域から読み出しが可能であることを示すフラグがセットされた場合に、データの同時性を保証するデータを第1データ領域から読み出し、CPUユニットの記憶部に転送する。CPUユニットの第2転送部は、第1の転送周期とは異なる第2の転送周期で、リアルタイム性を保証するデータを第2データ領域から読み出し、記憶部に転送する。
本発明に係るPLCでは、ネットワークユニットは、受信データのうちデータの同時性を保証するデータを、第1データ領域に書き込みが可能であることを示すフラグがセットされた場合に第1データ領域に記録し、受信データのうちリアルタイム性を保証するデータを第2データ領域に記録する。CPUユニットは、リアルタイム性を保証するデータを、データの同時性を保証するデータの第1の転送周期とは異なる第2の転送周期で、第2データ領域から記憶部に転送する。
このような構成を備えることで、データの同時性を保証するデータについては同時性を維持しつつ、リアルタイム性を保証するデータについては、データの欠落を低減することができる。
本発明の実施の形態1に係るPLCの構成を示すブロック図 実施の形態1に係るCPUユニットの設定テーブルに登録される情報の例を示す図 実施の形態1の第1フラグにセットされる値の例を示す図 実施の形態1に係るネットワークユニットの設定テーブルに登録される情報の例を示す図 実施の形態1のネットワークユニットの受信データ書き込み処理のフローチャート 実施の形態1のCPUユニットの第1転送処理のフローチャート 実施の形態1のCPUユニットの第2転送処理のフローチャート 実施の形態1に係るネットワークユニット、共有メモリ、CPUユニットの間でデータが転送される様子を示す図 実施の形態2に係るPLCの構成を示すブロック図 実施の形態2のネットワークユニットの受信データ書き込み処理のフローチャート 実施の形態2のCPUユニットの第2転送処理のフローチャート 実施の形態2における、ネットワークユニット、共有メモリ、CPUユニットの間でデータが転送される様子を示す図
(実施の形態1)
以下、本発明の実施の形態1に係るPLC1を説明する。
図1に示すように、PLC1は、マスタ局として機能し、ネットワーク1000を介して接続された第1スレーブ局1001と第2スレーブ局1002とを管理する。PLC1は、PLC1全体を制御するCPUユニット100と、第1スレーブ局1001と第2スレーブ局1002と通信するネットワークユニット200とを含む。
図1では図示していないが、CPUユニット100とネットワークユニット200は電源ユニットとともに、ベースユニットに装着され、電源ユニットから供給された電源によって動作する。CPUユニット100とネットワークユニット200とは共有バス300によって接続され、相互に通信する。
第1スレーブ局1001の例としては、スイッチ、センサ、表示灯等の入出力機器、アクチュエータ、ドライバ等の制御機器、パーソナルコンピュータといった情報通信機器がある。第2スレーブ局1002も同様である。第1スレーブ局1001は、本発明の第1の機器の一例である。第2スレーブ局1002は、本発明の第2の機器の一例である。
CPUユニット100は、第1スレーブ局1001と第2スレーブ局1002から取得した入力データを使用して演算を行い、演算結果に基づいて、第1スレーブ局1001と第2スレーブ局1002とを管理する。以下、第1スレーブ局1001を例に説明するが、第2スレーブ局1002についても同様である。
CPUユニット100が演算に使用する入力データは、例えば、第1スレーブ局1001に接続されているスイッチがオンしたことを示す情報、スイッチがオフしたことを示す情報である。まず、第1スレーブ局1001は、入力データをネットワークユニット200に送信する。ネットワークユニット200は第1スレーブ局1001から受け取った入力データを、後述の共有メモリ210を介して、CPUユニット100に供給する。
CPUユニット100は、取得した入力データを使用して、演算を行い、演算結果から、第1スレーブ局1001を制御するための制御データを出力する。CPUユニット100が出力する制御データは、例えば、第1スレーブ局1001に接続されているアクチュエータの駆動を指示する情報、アクチュエータの停止を指示する情報である。このようにして、PLC1は、第1スレーブ局1001を管理する。
実施の形態1では、本発明のデータの同時性を保証するデータとして、ネットワークユニット200が第1スレーブ局1001と第2スレーブ局1002から受信するデータのうち、データの同時性を保証するデータの範囲を設定する。具体的には、データの同時性を保証するデータを、第1スレーブ局1001から受信するデータとする。第1スレーブ局1001から受信するデータについては、データの同時性を保証できるよう、共有メモリ210のアクセスの排他制御を行う。以下、第1スレーブ局1001から受信するデータを第1の範囲のデータと呼ぶことがある。
また、本発明のリアルタイム性を保証するデータとして、ネットワークユニット200が第1スレーブ局1001と第2スレーブ局1002から受信するデータのうち、データの同時性を保証しないデータの範囲を設定する。具体的には、リアルタイム性を保証するデータを、第2スレーブ局1002から受信するデータとする。第2スレーブ局1002から受信するデータについては、共有メモリ210のアクセスの排他制御を行わない。第2スレーブ局1002から受信するデータについては、取得データの欠落を低減するよう、共有メモリ210からの読み出しタイミングを、第1の範囲のデータの読み出しタイミングとは異ならせる。以下、第2スレーブ局1002から受信するデータを第2の範囲のデータと呼ぶことがある。
CPUユニット100は、各種データを記憶する内部メモリ110と、後述する設定ツール301と通信をするための設定ツールインタフェース120と、共有バス300を介した通信のための共有バスインタフェース130と、CPUユニット100全体を制御する演算部140とを含む。各部はバス190を介して接続されている。
内部メモリ110は、ROM(Read Only Memory)、RAM(Random Access Memory)、メモリカード等を含む。内部メモリ110は、第1記憶部111と、第2記憶部112と、設定テーブル113と、ユーザプログラム114とを有する。
第1記憶部111と第2記憶部112とは、CPUユニット100によるサイクリック処理により、後述のネットワークユニット200の共有メモリ210から読み出されるデータを格納する領域である。
設定テーブル113は、共有メモリ210内において、第1の範囲のデータが格納されている領域を示す情報と、第2の範囲のデータが格納されている領域を示す情報とを含む。設定テーブル113は、後述する第1転送処理と第2転送処理に使用される。設定テーブル113は、設定ツール301をユーザが操作することにより内部メモリ110に格納される。また、設定テーブル113に格納された情報は、後述するネットワークユニット200の受信データ書き込み処理にも使用される。このため、CPUユニット100は、ネットワークユニット200の起動時に、設定テーブル113に格納された情報をネットワークユニット200に提供する。
図2Aに、設定テーブル113に登録される情報の例を示す。設定テーブル113には、第1の範囲のデータである第1スレーブ局1001から受信するデータの格納先が、第1データ領域211であることを示す情報と、第2の範囲のデータである第2スレーブ局1002から受信するデータの格納先が、第2データ領域212であることを示す情報とが登録されている。
ユーザプログラム114は、ラダーロジックのプログラムを含み、PLC1が管理対象とする第1スレーブ局1001と第2スレーブ局1002を制御するためのプログラムである。ユーザプログラム114に含まれる命令は、第1スレーブ局1001と第2スレーブ局1002から受信データを入力としてオンまたはオフし、オンの状態になった命令が実行される。ユーザプログラム114の命令の実行により、例えば、入力値を使用した演算、演算値の出力等が行われる。ユーザプログラム114は、不図示のプログラム作成支援装置を用いて作成される。プログラム作成支援装置は、パーソナルコンピュータに専用プログラムをインストールした装置である。プログラム作成支援装置で作成されたユーザプログラム114は、PLC1のCPUユニット100にアップロードされ、内部メモリ110に格納される。
設定ツールインタフェース120は、CPUユニット100が、設定ツール301と通信するための通信インタフェースである。設定ツールインタフェース120は、演算部140の制御に従って動作する。
共有バスインタフェース130は、CPUユニット100が共有バス300を介してネットワークユニット200と通信するための通信インタフェースである。共有バスインタフェース130は、演算部140の制御に従って動作する。
演算部140は、MPU(Micro-processing Unit)を含み、プログラムを実行して、各種演算、CPUユニット100の各部の制御を行う。演算部140は、プログラム実行部141、第1転送部142、第2転送部143を有する。
プログラム実行部141は、第1記憶部111と第2記憶部112に格納されたデータを使用して、ユーザプログラム114を繰り返し実行する。プログラム実行部141が、ユーザプログラム114を実行する周期をCPUユニット100の制御周期、または、サイクルタイムという。プログラム実行部141は、CPUユニット100の制御周期で、ユーザプログラム114内のオンした命令を順次処理していく。プログラム実行部141は、ユーザプログラム114の命令を全て実行し終えると、ユーザプログラム114の実行を停止する。プログラム実行部141は、次の制御周期で、再びユーザプログラム114の実行を開始する。
第1転送部142は、第1スレーブ局1001から送信されたデータを、設定テーブル113に基づいて共有メモリ210から読み出し、内部メモリ110の指定された領域に転送する。ここでは、第1記憶部111が指定された領域である。転送先を指定する方法として、設定ツール301であらかじめ設定しておく方法とユーザプログラム114で指定する方法がある。第1転送部142は、CPUユニット100の制御周期と同じ周期である第1の転送周期で動作する。なお、CPUユニット100の演算能力上、最も短い周期よりも大きい範囲であれば、第1の転送周期は、ユーザが後述する設定ツール301を用いて変更することも可能である。
第2転送部143は、第2スレーブ局1002から送信されたデータを、設定テーブル113に基づいて共有メモリ210から読み出し、内部メモリ110の指定された領域に転送する。ここでは、第2記憶部112が指定された領域である。転送先を指定する方法として、設定ツール301であらかじめ設定しておく方法とユーザプログラム114で指定する方法がある。第2転送部143は、CPUユニット100の制御周期より短い第2の転送周期で動作する。第2の転送周期は、ユーザが後述する設定ツール301を用いて設定する。
ネットワークユニット200は、ネットワークユニット200とCPUユニット100のいずれもが読み書きが可能な共有メモリ210と、各種データを記憶する内部メモリ220と、共有バス300を介してCPUユニット100と通信するための共有バスインタフェース230と、第1スレーブ局1001と第2スレーブ局1002と通信するためのネットワークインタフェース240と、第1スレーブ局1001と第2スレーブ局1002とから受信したデータを一時的に保持するための受信バッファ250と、ネットワークユニット200全体の制御を実行する演算部260と、後述する設定ツール301と通信するための設定ツールインタフェース270とを含む。各部はバス290を介して接続されている。
共有メモリ210は、RAMを含み、第1データ領域211と、第2データ領域212と、第1フラグ213とを有する。第1データ領域211には、第1スレーブ局1001から受信されたデータが格納される。第2データ領域212には、第2スレーブ局1002から受信されたデータが格納される。
第1フラグ213には、第1データ領域211の書き込み可否と読み出し可否を示す値をセットする。第1フラグ213にセットされる値は以下のとおりである。図2Bに示すように、ネットワークユニット200が第1データ領域211に書き込み可能な状態では、第1フラグ213には“0”がセットされる。CPUユニット100が第1データ領域211から読み出し可能な状態では、第1フラグ213には“1”がセットされる。CPUユニット100が第1データ領域211から読み出し中である状態では、第1フラグ213には“2”がセットされる。第1フラグ213は、CPUユニット100またはネットワークユニット200がセットする。
内部メモリ220は、ROM、RAM、メモリカード等を含む。内部メモリ220は、設定テーブル221を有する。設定テーブル221は、後述する受信データ書き込み処理に使用される。設定テーブル221は、第1スレーブ局1001と第2スレーブ局1002から受信したデータを格納する領域を示す情報を含む。設定テーブル221には、ネットワークユニット200の起動時にCPUユニット100から提供された情報が格納されている。具体的には、設定テーブル113に格納されている情報がCPUユニット100からネットワークユニット200に提供される。
図2Cに、設定テーブル221に登録される情報の例を示す。設定テーブル221は、第1スレーブ局1001から送信されたデータの格納先として、ネットワークユニット200の共有メモリ210の第1データ領域211を示す情報が登録されている。さらに、設定テーブル221には、第2スレーブ局1002から送信されたデータの格納先として、共有メモリ210の第2データ領域212を示す情報が登録されている。
ネットワークインタフェース240は、演算部260の制御に従って、第1スレーブ局1001と第2スレーブ局1002に対して、決められたタイミングでデータの送信を要求する。ネットワークインタフェース240は、第1スレーブ局1001と第2スレーブ局1002とから受信したデータを受信バッファ250に書き込む。
受信バッファ250は、ネットワークユニット200が受信したデータを一時的に保持する。受信バッファ250には、ネットワークユニット200が受信したデータと、当該データの送信元を示す情報とが順次記録される。受信バッファ250は、送信元のスレーブ局毎に割り当てられた領域を含む。具体的には、ネットワークユニット250が第1スレーブ局1001から受信したデータは、受信バッファ250の第1スレーブ局1001のために割り当てられた領域に格納される。ネットワークユニット250が第2スレーブ局1002から受信したデータは、受信バッファ250の第2スレーブ局1002のために割り当てられた領域に格納される。ネットワークユニット250がいずれかのスレーブ局からデータを受信すると、受信バッファ250の当該スレーブ局のために割り当てられた領域に格納されているデータが上書きされる。
演算部260は、データ受信部261、受信データ書き込み部262を含む。
データ受信部261は、ネットワークインタフェース240に第1スレーブ局1001と第2スレーブ局1002にデータの送信を要求する制御信号を決められたタイミングで送信させる。データ受信部261は、ネットワークインタフェース240に第1スレーブ局1001と第2スレーブ局1002から受信したデータを受信バッファ250に格納させる。
受信データ書き込み部262は、受信バッファ250に保持されたデータを、設定テーブル221に基づいて、共有メモリ210に記録する。図2Cに示す例では、受信データ書き込み部262は、第1フラグ213を確認し、第1フラグの値が0である場合に、第1スレーブ局1001から受信したデータを第1データ領域211に記録する。このとき、第1データ領域211にすでに記録されているデータは上書きされる。また、受信データ書き込み部262は、第1フラグ213の値に関係なく、第2スレーブ局1002から受信したデータを第2データ領域212に記録する。このとき第2データ領域212にすでに記録されているデータは上書きされる。受信データ書き込み部262は、ネットワークユニット200の制御周期で動作する。
設定ツール301は、専用のアプリケーションプログラムをインストールしたパーソナルコンピュータを含む。ユーザは、設定ツール301とCPUユニット100とを通信ケーブルで接続し、設定ツール301を操作して、CPUユニット100の内部メモリ110に、図2Aに示す設定テーブル113を格納する。
本実施の形態では、第1スレーブ局1001から送信されるデータは、一定のかたまりで意味を持ち、データの同時性を保証することが望ましいデータであるものとする。データの同時性を保証することが望ましいデータの例としては、サイズの大きいデータ、桁数の大きい数字データなどが挙げられる。第2スレーブ局1002から送信されるデータは、データの同時性を保証する必要がないデータとする。例えば、第2スレーブ局1002からは、気温、気圧等といった、ロギングで使用され、リアルタイムで取得することが望ましいデータ(リアルタイム性を保証するデータ)がネットワークユニット200に送信されうる。
まず、ネットワークユニット200の受信データ書き込み部262が第1スレーブ局1001と第2スレーブ局1002から受信したデータを、共有メモリ210に書き込む受信データ書き込み処理を説明する。受信データ書き込み部262は、受信データ書き込み処理をネットワークユニット200の制御周期で実行する。
図3に示すように、ネットワークユニット200の受信データ書き込み部262は、第1フラグ213の値が“0”であるか否かを判別する(ステップS11)。受信データ書き込み部262は、第1フラグ213の値が“0”であると判別すると(ステップS11;Yes)、受信バッファ250に格納されているデータのうち第1スレーブ局1001から受信したデータを、第1データ領域211に書き込む(ステップS12)。その後、受信データ書き込み部262は、第1フラグ213の値を“1”に変更し(ステップS13)、ステップS14の処理を実行する。
一方、ステップS11で、受信データ書き込み部262は、第1フラグ213の値が“0”でないと判別すると(ステップS11;No)、ステップS14の処理を実行する。
ステップS14において、受信データ書き込み部262は、受信バッファ250に格納されているデータのうち第2スレーブ局1002から受信したデータを、第2データ領域212に書き込む(ステップS14)。
続いて、CPUユニット100が、共有メモリ210のデータを読み出して、内部メモリ110に転送する処理を説明する。
まず、第1転送部142が第1データ領域211から内部メモリ110にデータを転送する第1転送処理を説明する。第1転送部142は、CPUユニット100の制御周期で第1転送処理を実行する。
図4Aに示すように、第1転送部142は、CPUユニット100の制御周期で第1転送処理を実行する。まず、第1転送部142は、ネットワークユニット200の第1フラグ213の値を読み出し、第1フラグ213の値が“1”であるか否かを判別する(ステップS21)。第1転送部142は、第1フラグ213の値が“1”であると判別すると(ステップS21;Yes)、第1フラグ213の値を“2”に変更する(ステップS22)。その後、第1転送部142は、ネットワークユニット200の第1データ領域211に格納されているデータを読み出し、内部メモリ110の第1記憶部111に転送する(ステップS23)。具体的には、第1転送部142は、第1データ領域211に格納されているデータを第1記憶部111にコピーする。
その後、第1転送部142は、第1フラグ213の値を“0”に変更する(ステップS24)。これにより、ネットワークユニット200が再び共有メモリ210の第1データ領域211に書き込み可能になる。以上が第1転送部142の第1転送処理である。
次に、第2転送部143が第2データ領域212から内部メモリ110にデータを転送する第2転送処理を説明する。第2転送部143は、CPUユニット100の制御周期より短い周期で第2転送処理を実行する。以下、第2転送部143が第2転送処理を開始する周期を第2の転送周期とする。
図4Bに示すように、第2転送部143は、第2データ領域212に格納されているデータを読み出し、内部メモリ110の第2記憶部112に転送する(ステップ31)。第2データ領域212にはフラグが設定されていないため、第2転送処理は以上である。
上記の処理により、共有メモリ210の第1データ領域211に格納されたデータは、CPUユニット100の第1記憶部111に転送される。共有メモリ210の第2データ領域212に格納されたデータは、CPUユニット100の第2記憶部112に転送される。
図5を参照して、上記の受信データ書き込み処理、第1転送処理、第2転送処理の実行により、ネットワークユニット200が第1スレーブ局1001と第2スレーブ局1002から受信したデータがどのようにCPUユニット100に転送されるかを説明する。
時刻t1の時点で、ネットワークユニット200の受信バッファ250には、第1スレーブ局1001から受信されたデータS1001_1と、第2スレーブ局1002から受信されたS1002_1が格納されているものとする。第1スレーブ局1001と第2スレーブ局1002からは決められたタイミングでデータが送信されており、図5の例では、時刻t1、t4、t6、t8、t11、t13、t15、t18の各時点において、受信バッファ250のデータは、新たな受信データで上書きされているものとする。
また、第2の転送周期は、ネットワークユニット200の制御周期とほぼ同じとなるよう設定されている。なお、第2の転送周期と、ネットワークユニット200の制御周期とは非同期である。
時刻t1において、受信データ書き込み部262は、第1フラグ213の値が“0”なのでデータS1001_1を第1データ領域211に書き込む。併せて、受信データ書き込み部262はデータS1002_1を第2データ領域212に書き込む。続いて、受信データ書き込み部262は、第1フラグ213の値を“1”に変更する。
時刻t2において、第1転送部142は、第1フラグ213の値が“1”なので、第1フラグ213の値を“2”に変更し、第1データ領域211のデータを読み出し、第1記憶部111に転送する。よって、第1記憶部111には、データS1001_1が格納される。その後、第1転送部142は第1フラグ213の値を“0”に変更する。
時刻t3において、第2転送部143は、第2データ領域212のデータを読み出し、第2記憶部112に転送する。よって、第2記憶部112にはデータS1002_1が格納される。
時刻t4において、受信データ書き込み部262は、第1フラグ213の値が“0”であるので、データS1001_2を読み出し、第1データ領域211に書き込む。併せて、受信データ書き込み部262はデータS1002_2を読み出し、第2データ領域212に書き込む。続いて、受信データ書き込み部262は、第1フラグ213の値を“1”に変更する。
時刻t5において、第2転送部143は、第2データ領域212のデータを読み出し、第2記憶部112に転送する。よって、第2記憶部112にはデータS1002_2が格納される。なお、時刻t5はCPUユニット100の制御周期ではないため、第1転送部142は、第1データ領域211のデータを第1記憶部111に転送しない。
時刻t6において、受信データ書き込み部262は、第1フラグ213の値が“1”なので、第1データ領域211にデータS1001_3を書き込まず、第2データ領域212にだけデータS1002_3を書き込む。
時刻t7において、第2転送部143は、第2データ領域212のデータを読み出し、第2記憶部112に転送する。よって、第2記憶部112にはデータS1002_3が格納される。なお、時刻t7は、CPUユニット100の制御周期ではないため、第1転送部142は、第1データ領域211のデータを第1記憶部111に転送しない。
時刻t8において、受信データ書き込み部262は、第1フラグ213の値が“1”であるため、データS1001_4を第1データ領域211に書き込まず、データS1002_4だけを読み出して第2データ領域212に書き込む。
時刻t9において、第1転送部142は、第1フラグ213の値が“1”なので、第1フラグ213の値を“2”に変更し、第1データ領域211のデータを読み出し、第1記憶部111に転送する。よって、第1記憶部111には、データS1001_2が格納される。その後、第1転送部142は、第1フラグ213の値を“0”に変更する。
時刻t10において、第2転送部143は、第2データ領域212のデータを読み出し、第2記憶部112に転送する。よって、第2記憶部112にはデータS1002_4が格納される。なお、時刻t10は、CPUユニット100の制御周期ではないため、第1転送部142は、第1データ領域211のデータを第1記憶部111に転送しない。時刻t11以降については説明を省略するが、受信データ書き込み部262、第1転送部142、第2転送部143は同様に処理を継続する。
上記のとおり、受信データ書き込み部262は、第1データ領域211に書き込み可能な場合に、第1スレーブ局1001から受信したデータを読み出し、第1データ領域211に書き込む。第1転送部142は、CPUユニット100が第1データ領域211から読み出し可能な場合に、第1データ領域211から読み出したデータを内部メモリ110の第1記憶部111に転送する。従って、第1スレーブ局1001から受信されたデータについては、データの同時性が保証される。
また、受信データ書き込み部262は、第2データ領域212の読み書きの状態にかかわらず、第2スレーブ局1002から受信したデータを第2データ領域212に書き込む。さらに、第2転送部143は、CPUユニット100の制御周期より短い周期で、かつ、第2データ領域212の読み書きの状態にかかわらず、共有メモリ210の第2データ領域212のデータを読み出し、第2記憶部112に転送する。この場合、データの同時性は保証されないものの、ネットワークユニット200が第2スレーブ局1002から受信したデータの大部分を、第2データ領域212に転送することが可能となる。
図5に示す例では、ネットワークユニット200が全ての制御周期において第2スレーブ局1002から受信したデータを、CPUユニット100の第2記憶部112に転送することができている。これは、第2の転送周期を、ネットワークユニット200の制御周期とほぼ同じに設定したためである。
第2の転送周期を、ネットワークユニット200の制御周期の期間より長くした場合、第2スレーブ局1002から送信されたデータの一部については転送されない事態が発生しうると考えられる。このため、第2の転送周期を、CPUユニット100の制御周期より短くした上で、第2転送部143が第2データ領域212から第2記憶部112へデータを転送する時間を確保しつつ、ネットワークユニット200の制御周期の期間に合わせることが望ましい。
第2の転送周期を、CPUユニット100の制御周期より短くすることにより、転送されるデータの抜けが生じたとしても、その数は少ないと考えられる。このように、CPUユニット100に転送されるデータの抜けを低減することができる。
上記の実施の形態1では、リアルタイム性を保証するデータとして設定した第2スレーブ局1002から供給されたデータについては、データの同時性を保証することができない。
(実施の形態2)
実施の形態2では、第2の範囲のデータについても、データの同時性を保証する構成を説明する。実施の形態2に係るPLC2は、実施の形態1のPLC1と同様に、CPUユニット100とネットワークユニット200を有する。以下、実施の形態1と異なる点を中心に説明する。
実施の形態2では、データの同時性を保証するデータを、第1スレーブ局1001から受信するデータとする。実施の形態1と同様に、第1スレーブ局1001から受信するデータについては、データの同時性を保証できるよう、共有メモリ210のアクセスの排他制御を行う。以下、第1スレーブ局1001から受信するデータを第1の範囲のデータと呼ぶことがある。
また、リアルタイム性を保証するデータを、第2スレーブ局1002から受信するデータとする。第2スレーブ局1002から受信するデータについては、データの同時性を保証しつつ、取得データの欠落を低減する。このため、第2スレーブ局1002から受信するデータについては、共有メモリ210のアクセスの排他制御を行い、共有メモリ210からの読み出しタイミングを、第1の範囲のデータの読み出しタイミングとは異ならせる。以下、第2スレーブ局1002から受信するデータを第2の範囲のデータと呼ぶことがある。
図6に示すように、PLC2では、ネットワークユニット200の共有メモリ210は、第2フラグ214をさらに含む。第2フラグ214には、第2データ領域212のアクセスの排他制御のためのフラグである。第2フラグ214にセットする値は、第1フラグ213と同様である。図2Bに示すように、ネットワークユニット200が第2データ領域212に書き込み可能な状態では、第1フラグ213には“0”がセットされる。CPUユニット100が第2データ領域212から読み出し可能な状態では、第2フラグ214には“1”がセットされる。CPUユニット100が第1データ領域211から読み出し中である状態では、第2フラグ214には“2”がセットされる。
図7を参照して、ネットワークユニット200の受信データ書き込み部262が、第1スレーブ局1001と第2スレーブ局1002から受信したデータを、共有メモリ210に書き込む処理を説明する。受信データ書き込み部262は、ネットワークユニット200の制御周期で下記の処理を実行する。
図7に示すように、ネットワークユニット200の受信データ書き込み部262は、第1フラグ213の値が“0”であるか否かを判別する(ステップS41)。受信データ書き込み部262は、第1フラグ213の値が“0”であると判別すると(ステップS41;Yes)、受信バッファ250に格納されているデータのうち第1スレーブ局1001から受信したデータを第1データ領域211に書き込む(ステップS42)。その後、受信データ書き込み部262は、第1フラグ213の値を“1”に変更し(ステップS43)、ステップS44の処理を実行する。
一方、ステップS41で、受信データ書き込み部262は、第1フラグ213の値が“0”でないと判別すると(ステップS41;No)、ステップS44の処理を実行する。ステップS44において、受信データ書き込み部262は、第2フラグ214の値が“0”であるか否かを判別する(ステップS44)。
受信データ書き込み部262は、第2フラグ214の値が“0”であると判別すると(ステップS44;Yes)、受信バッファ250に格納されているデータのうち第2スレーブ局1002から受信したデータを第2データ領域212に書き込む(ステップS45)。その後、受信データ書き込み部262は、第2フラグ214の値を”1”に変更する(ステップS46)。
一方、ステップS44で、受信データ書き込み部262は、第1フラグ213の値が“0”でないと判別すると(ステップS44;No)、受信バッファ250のデータを第2データ領域212に書き込むことなく受信データ書き込み処理を終了する。
CPUユニット100の第1転送部142が実行する第1転送処理は、実施の形態1の図4Aに示したフローと同様であるので、ここでは説明を省略する。
以下、図8を参照しながら、第2転送部143が、共有メモリ210に格納されたデータを読み出し、内部メモリ110に転送する第2転送処理を説明する。第2転送部143は、CPUユニット100の制御周期より短い第2の転送周期で第2転送処理を実行する。
まず、第2転送部143は、第2フラグ214の値が“1”であるか否かを判別する(ステップS51)。第2転送部143は、第2フラグ214の値が“1”であると判別すると(ステップS51;Yes)、第2フラグ214の値を“2”に変更する(ステップS52)。その後、第2転送部143は、ネットワークユニット200の第2データ領域212に格納されているデータを読み出し、内部メモリ110の第2記憶部112に転送する(ステップS53)。具体的には、第2転送部143は、第2データ領域212に格納されているデータを第2記憶部112にコピーする。
その後、第2転送部143は、第2フラグ214の値を“0”に変更する(ステップS54)。これにより、ネットワークユニット200が再び共有メモリ210の第2データ領域212に書き込み可能になる。
一方、ステップS51で、受信データ書き込み部262は、第2フラグ214の値が“1”でないと判別すると(ステップS51;No)、受信バッファ250のデータを第2データ領域212に書き込むことなく第2転送処理を終了する。
続いて、図9を参照して、上記の受信データ書き込み処理、第1転送処理、第2転送処理の実行により、ネットワークユニット200が第1スレーブ局1001と第2スレーブ局1002から受信したデータがどのように転送されるかを説明する。
時刻t1の時点で、ネットワークユニット200の受信バッファ250には第1スレーブ局1001と第2スレーブ局1002から受信されたデータS1001_1、S1002_1が格納されているものとする。第1スレーブ局1001と第2スレーブ局1002からは決められたタイミングでデータが送信されており、図9の例では、時刻t1、t4、t6、t8、t11、t13、t15、t18の各時点において、受信バッファ250のデータは、新たな受信データで上書きされているものとする。
また、図5の例と同じく、第2転送部143が転送処理を開始する第2の転送周期は、ネットワークユニット200の制御周期とほぼ同じになるように設定されている。なお、第2の転送周期と、ネットワークユニット200の制御周期とは非同期である。
時刻t1において、受信データ書き込み部262は、第1フラグ213の値が“0”なので、データS1001_1を第1データ領域211に書き込み、第1フラグ213の値を“1”に変更する。併せて、受信データ書き込み部262は、第2フラグ214の値が“0”なのでデータS1002_1を第2データ領域212に書き込む。続いて、受信データ書き込み部262は、第2フラグを“1”に変更する。
時刻t2において、第1転送部142は、第1フラグ213の値が“1”なので、第1フラグ213の値を“2”に変更し、第1データ領域211のデータを読み出し、第1記憶部111に転送する。よって、第1記憶部111には、データS1001_1が格納される。その後、第1転送部142は、第1フラグ213の値を“0”に変更する。
時刻t3において、第2転送部143は、第2フラグ214の値が“1”なので、第2フラグ214の値を“2”に変更し、第2データ領域212のデータを読み出し、第2記憶部112に転送する。よって、第2記憶部112にはデータS1002_1が格納される。その後、第2転送部143は、第2フラグ214の値を“0”に変更する。
時刻t4において、受信データ書き込み部262は、第1フラグ213の値が“0”なので、データS1001_2を第1データ領域211に書き込み、第1フラグ213の値を“1”に変更する。併せて、受信データ書き込み部262は、第2フラグ214の値が“0”なので、データS1002_2を第2データ領域212に書き込む。続いて、受信データ書き込み部262は、第2フラグを“1”に変更する。
時刻t5において、第2転送部143は、第2フラグ214の値が“1”なので、第2フラグ214の値を“2”に変更し、第2データ領域212のデータを読み出し、第2記憶部112に転送する。よって、第2記憶部112にはデータS1002_2が格納される。その後、第2転送部143は、第2フラグ214の値を“0”に変更する。なお、時刻t5は、CPUユニット100の制御周期ではないため、第1転送部142は、第1データ領域211のデータを第1記憶部111に転送しない。
時刻t6において、第1フラグ213の値が“1”であるため、受信データ書き込み部262は、第1データ領域211にデータS1001_3を書き込まない。受信データ書き込み部262は、第2フラグ214の値が“0”なので、データS1002_3を第2データ領域212に書き込む。続いて、受信データ書き込み部262は、第2フラグを“1”に変更する。
時刻t7において、第2転送部143は、第2フラグ214の値が“1”なので、第2フラグ214の値を“2”に変更し、第2データ領域212のデータを読み出し、第2記憶部112に転送する。よって、第2記憶部112にはデータS1002_3が格納される。その後、第2転送部143は、第2フラグ214の値を“0”に変更する。なお、時刻t7は、CPUユニット100の制御周期ではないため、第1転送部142は、第1データ領域211のデータを第1記憶部111に転送しない。
時刻t8において、受信データ書き込み部262は、第1フラグ213の値が“1”であるため、第1データ領域211にデータS1001_4を書き込まない。受信データ書き込み部262は、第2フラグ214の値が“0”なので、データS1002_4を第2データ領域212に書き込む。続いて、受信データ書き込み部262は、第2フラグを“1”に変更する。
時刻t9において、第1転送部142は、第1フラグ213の値が“1”であるため、第1フラグ213の値を“2”に変更し、第1データ領域211のデータを読み出し、第1記憶部111に転送する。よって、第1記憶部111には、データS1001_2が格納される。その後、第1転送部142は、第1フラグ213の値を“0”に変更する。
時刻t10において、第2転送部143は、第2フラグ214の値が“1”なので、第2フラグ214の値を“2”に変更し、第2データ領域212のデータを読み出し、第2記憶部112に転送する。よって、第2記憶部112にはデータS1002_4が格納される。その後、第2転送部143は、第2フラグ214の値を“0”に変更する。
なお、時刻t10は、CPUユニット100の制御周期ではないため、第1転送部142は、第1データ領域211のデータを第1記憶部111に転送しない。時刻t11以降については説明を省略するが、受信データ書き込み部262、第1転送部142、第2転送部143は同様に処理を継続する。
実施の形態2においては、第1データ領域211、第2データ領域212のそれぞれについて第1フラグ213、第2フラグ214を使用して、共有メモリ210の読み書きの制御を行ったため、第1スレーブ局1001から送信されたデータ、第2スレーブ局1002から送信されたデータのいずれについてもデータの同時性が保証される。
さらに、図9に示す例では、実施の形態1と同様に、ネットワークユニット200が全ての制御周期において第2スレーブ局1002から受信したデータを、CPUユニット100に転送することができた。これは、第2の転送周期を、ネットワークユニット200の制御周期とほぼ同じに設定したためである。
第2の転送周期を、ネットワークユニット200の制御周期の期間より長くした場合、第2スレーブ局1002から送信されたデータの一部については転送されない事態が発生しうると考えられる。このため、第2の転送周期を、CPUユニット100の制御周期より短くした上で、第2転送部143の第2データ領域212から第2記憶部112への転送のための時間を確保しつつ、ネットワークユニット200の制御周期の期間に合わせた期間とすることが望ましい。
実施の形態2においては、第2スレーブ局1002から受信したデータについても第2フラグ214を使用して、共有メモリ210の第2データ領域212の読み書きを制限するため、実施の形態1の構成よりも、受信データ書き込み部262が第2データ領域212に書き込むことができない場合が多くなることが予想される。しかしながら、実施の形態2においても、第2スレーブ局1002からの受信データの転送周期を、第1スレーブ局1001からの受信データの転送周期より短くしているため、第2スレーブ局1002から受信したデータの抜けを低減することが可能である。
(変形例1)
実施の形態1及び2では、第1スレーブ局1001から受信したデータをデータの同時性を保証するデータである第1の範囲のデータとし、第2スレーブ局1002から受信したデータをリアルタイム性を保証するデータである第2の範囲のデータと設定したが、これらのデータの範囲は任意に決めることができる。例えば、第1の範囲のデータを複数のスレーブ局A、B、Cから受信したデータとし、第2の範囲のデータを他の複数のスレーブ局D、E、Fから受信したデータと設定してもよい。
あるいは、データの同時性を保証するデータである第1の範囲のデータと、リアルタイム性を保証するデータである第2の範囲のデータを送信するスレーブ局の一部が重複してもよい。例えば、第1の範囲のデータをスレーブ局A、B、Cから受信したデータとし、第2の範囲のデータをスレーブ局A、D、Eから受信したデータと設定してもよい。この場合、第1の範囲のデータについてだけ排他制御を行っていたとして、スレーブ局Aから受信するデータについて、第1の範囲のデータと第2の範囲のデータとを併合、修正することで、データの同時性を保証しつつ、データの欠落を低減することが可能である。
また、あるいは、データの同時性を保証するデータである第1の範囲のデータを送信するスレーブ局の全部とリアルタイム性を保証するデータである第2の範囲のデータを送信するスレーブ局の全部とが重複してもよい。この場合も、第1の範囲のデータと第2の範囲のデータとを併合、修正することで、全てのスレーブ局について、データの同時性を保証しつつ、データの欠落を低減することが可能である。
(変形例2)
また、同一のスレーブ局から受信したデータの一部を、データの同時性を保証するデータである第1の範囲のデータとし、その他の範囲をリアルタイム性を保証するデータである第2の範囲のデータと設定してもよい。例えば、スレーブ局Aから、温度の計測値と、湿度の計測値とが送信されている。また、スレーブ局Aの機器は、温度の変化にはあまり影響を受けず、湿度の変化に大きな影響を受ける機器である。この場合、温度の計測値については第1の範囲のデータに含め、湿度の計測値については第2の範囲に含めてもよい。ネットワークユニット200は、スレーブ局Aの受信データのヘッダ情報に基づいて、温度の計測値と、湿度の計測値とを振り分けて共有メモリに記録する。このようにして、第2の範囲のデータである湿度の計測値の抜けを低減することができ、スレーブ局Aの機器の状態を監視するのに有効である。
(変形例3)
また設定する範囲の数は、2つに限られない。第1の範囲のデータ、第2の範囲のデータ、第3の範囲のデータを設定してもよい。この場合、共有メモリ210には、さらに、第3データ領域を確保する。共有メモリのすべてのデータ領域にフラグを設定してもよいし、一部にフラグを設定してもよい。CPUユニット100の内部メモリ110には、さらに、第3記憶部を確保する。あるいは、設定する範囲の数が4つ以上の場合も同様である。
(変形例4)
上述の実施の形態1、2では、共有メモリ210の第2データ領域212を常に使用する例を説明したが、共有メモリ210の第2データ領域212を使用するか否かを設定し、使用しないと設定した場合には、共有メモリ210の第1データ領域211だけを使用してもよい。
この場合、設定ツール301により、CPUユニット100の設定テーブル113、ネットワークユニット200の設定テーブル221にそれぞれネットワークユニット200の共有メモリ210の第2データ領域212の使用の可否を示す情報を登録すればよい。ネットワークユニット200は、受信データ書き込み処理において、設定テーブル221に登録された第2データ領域212の使用の可否を示す情報に基づいて、第2データ領域212に書き込む、または、書き込まないようにすればよい。また、CPUユニット100は、第2転送処理において、設定テーブル113に登録された第2データ領域212の使用の可否を示す情報に基づいて、第2データ領域212のデータの転送を行う、または、データの転送を行わないようにすればよい。
(変形例5)
実施の形態1、2では、共有メモリ210と、CPUユニット100の内部メモリ110は、それぞれ第1の範囲のデータと第2の範囲のデータをそれぞれ格納する領域を有していなくてもよい。図1に示す例では、これらの領域は、第1データ領域211、第2データ領域212、第1記憶部111、第2記憶部112である。しかし、共有メモリ210、内部メモリ110にこのような領域を設けなくてもよい。例えば、ネットワークユニット200は、受信したデータのヘッダ情報に基づいて、そのデータの送信元を示す情報とともに、受信したデータを共有メモリ210に書き込む。CPUユニット200は、共有メモリ210から、送信元情報とともに受信データを読み出し、読み出した送信元情報と受信データとを、内部メモリ110に書き込めばよい。
本発明は、広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
1,2 PLC、100 CPUユニット、110 内部メモリ、111 第1記憶部、112 第2記憶部、113 設定テーブル、114 ユーザプログラム、120 設定ツールインタフェース、130 共有バスインタフェース、140 演算部、141 プログラム実行部、142 第1転送部、143 第2転送部、190 バス、200 ネットワークユニット、210 共有メモリ、211 第1データ領域、212 第2データ領域、213 第1フラグ、214 第2フラグ、220 内部メモリ、221 設定テーブル、230 共有バスインタフェース、240 ネットワークインタフェース、250 受信バッファ、260 演算部、261 データ受信部、262 受信データ書き込み部、270 設定ツールインタフェース、290 バス、300 共有バス、301 設定ツール、1000 ネットワーク、1001 第1スレーブ局、1002 第2スレーブ局

Claims (10)

  1. CPUユニットと、ネットワークユニットと、前記CPUユニットとネットワークユニットが読み書き可能な共有メモリと、を含むPLCであって、
    前記共有メモリは、第1データ領域と、第2データ領域と、を含み、
    前記ネットワークユニットは、
    ネットワークを介して接続された機器から受信した受信データのうちデータの同時性を保証するデータを、前記第1データ領域に書き込みが可能であることを示すフラグがセットされた場合に前記第1データ領域に記録し、前記受信データのうちリアルタイム性を保証するデータを前記第2データ領域に記録する受信データ書き込み部、
    を有し、
    前記CPUユニットは、
    記憶部と、
    第1の転送周期で、かつ、前記第1データ領域から読み出しが可能であることを示すフラグがセットされた場合に、前記データの同時性を保証するデータを前記第1データ領域から読み出し、前記記憶部に転送する第1転送部と、
    前記第1の転送周期とは異なる第2の転送周期で、前記リアルタイム性を保証するデータを前記第2データ領域から読み出し、前記記憶部に転送する第2転送部と、
    を有する、
    PLC。
  2. 前記第1の転送周期は、前記CPUユニットのサイクルタイムであり、
    前記第2の転送周期は、前記第1の転送周期より短い、
    請求項1に記載のPLC。
  3. 前記第1データ領域に対して排他制御を行い、
    前記第2データ領域に対して排他制御を行わない、
    請求項1または2に記載のPLC。
  4. 前記第1データ領域と前記第2データ領域に対して排他制御を行う、
    請求項1または2に記載のPLC。
  5. 前記データの同時性を保証するデータは、第1の機器から受信したデータであり、
    前記リアルタイム性を保証するデータは、前記第1の機器とは異なる第2の機器から受信したデータである、
    請求項1から4のいずれか1項に記載のPLC。
  6. PLCに含まれ、前記PLCに含まれるCPUユニットと共有メモリを介してデータの授受を行うネットワークユニットであって、
    前記共有メモリは、CPUユニットへ第1の転送周期で転送可能であり、かつ、データの同時性を保証するデータを記憶する第1データ領域と、前記CPUユニットへ第2の転送周期で転送可能であり、かつ、リアルタイム性を保証するデータを記憶する第2データ領域と、を含み、
    前記第1データ領域に書き込みが可能であることを示すフラグがセットされた場合に、ネットワークを介して接続された機器から受信したデータのうち前記データの同時性を保証するデータを前記第1データ領域に記録し、
    前記機器から受信したデータのうち前記リアルタイム性を保証するデータを前記第2データ領域に記録する、
    ネットワークユニット。
  7. PLCに含まれ、前記PLCに含まれるネットワークユニットと共有メモリを介してデータの授受を行うCPUユニットであって、
    記憶部と、
    第1の転送周期で、かつ、前記共有メモリから読み出しが可能であることを示すフラグがセットされた場合に、前記共有メモリに格納されているデータのうちデータの同時性を保証するデータを読み出し、読み出したデータを前記記憶部に転送する第1転送部と、
    前記第1の転送周期とは異なる第2の転送周期で、前記共有メモリに格納されているデータのうちリアルタイム性を保証するデータを読み出し、読み出したデータを前記記憶部に転送する第2転送部と、
    を含む、
    CPUユニット。
  8. 前記第1転送部は、前記CPUユニットのサイクルタイム毎に、前記共有メモリから前記データの同時性を保証するデータを前記記憶部に転送し、
    前記第2転送部は、前記CPUユニットのサイクルタイムより短い周期で、前記共有メモリから前記リアルタイム性を保証するデータを前記記憶部に転送する、
    請求項7に記載のCPUユニット。
  9. PLCのCPUユニットとネットワークユニットとの間で前記CPUユニットと前記ネットワークユニットが読み書き可能な共有メモリを介してデータを転送するデータ転送方法であって、
    前記ネットワークユニットが、前記共有メモリに書き込みが可能であることを示すフラグがセットされた場合に、ネットワークを介して接続された機器から受信した受信データのうちデータの同時性を保証するデータを、前記共有メモリに記録するステップと、
    前記ネットワークユニットが、前記受信データのうちリアルタイム性を保証するデータを前記共有メモリに記録するステップと、
    前記CPUユニットが、第1の転送周期で、かつ、前記共有メモリから読み出しが可能であることを示すフラグがセットされた場合に、前記共有メモリから前記データの同時性を保証するデータを読み出して前記CPUユニットの記憶部に転送するステップと、
    前記CPUユニットが、前記第1の転送周期とは異なる第2の転送周期で、前記共有メモリから前記リアルタイム性を保証するデータを読み出して前記記憶部に転送するステップと、
    を含むデータ転送方法。
  10. 前記第1の転送周期は、前記CPUユニットのサイクルタイムであり、
    前記第2の転送周期は、前記第1の転送周期より短い、
    請求項9に記載のデータ転送方法。
JP2018538900A 2018-01-18 2018-01-18 Plc、ネットワークユニット、cpuユニット、及びデータ転送方法 Active JP6419400B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2018/001390 WO2019142288A1 (ja) 2018-01-18 2018-01-18 Plc、ネットワークユニット、cpuユニット、及びデータ転送方法

Publications (2)

Publication Number Publication Date
JP6419400B1 JP6419400B1 (ja) 2018-11-07
JPWO2019142288A1 true JPWO2019142288A1 (ja) 2020-01-23

Family

ID=64098814

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018538900A Active JP6419400B1 (ja) 2018-01-18 2018-01-18 Plc、ネットワークユニット、cpuユニット、及びデータ転送方法

Country Status (6)

Country Link
US (1) US10656615B2 (ja)
JP (1) JP6419400B1 (ja)
KR (1) KR102016629B1 (ja)
CN (1) CN110278716B (ja)
DE (1) DE112018000092T5 (ja)
WO (1) WO2019142288A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6563155B1 (ja) * 2018-10-15 2019-08-21 三菱電機株式会社 プログラマブルロジックコントローラ、外部機器、方法、及びプログラム
JP6988863B2 (ja) * 2019-08-08 2022-01-05 横河電機株式会社 プロトコルコンバータ、データ伝送方法、データ伝送プログラム、及び、データ伝送システム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5157775A (en) * 1989-12-15 1992-10-20 Eastman Kodak Company Dual port, dual speed image memory access arrangement
JPH0973417A (ja) * 1995-09-04 1997-03-18 Mitsubishi Electric Corp 多重メモリ制御方法
CN1166134C (zh) * 1999-05-12 2004-09-08 华为技术有限公司 用于atm交换结构中的流水线式共享存储器读写方法
JP2004265001A (ja) * 2003-02-28 2004-09-24 Omron Corp プロセスコントロール機器及びcpuユニット
JP2007249560A (ja) * 2006-03-15 2007-09-27 Fuji Electric Systems Co Ltd プログラマブルコントローラにおけるcpuモジュール
JP2008083761A (ja) * 2006-09-26 2008-04-10 Matsushita Electric Works Ltd ロボットコントローラおよびロボット
KR101277426B1 (ko) 2009-03-23 2013-06-20 미쓰비시덴키 가부시키가이샤 A/d 변환 장치 및 프로그래머블 컨트롤러 시스템
JP6265058B2 (ja) 2014-06-19 2018-01-24 富士電機株式会社 ネットワーク伝送システム、そのマスタノード、スレーブノード
KR102188061B1 (ko) * 2014-07-29 2020-12-07 삼성전자 주식회사 메모리 장치, 메모리 시스템 및 메모리 장치의 동작방법
JP6470955B2 (ja) 2014-12-08 2019-02-13 株式会社キーエンス プログラマブルコントローラ及びプログラマブルコントローラの拡張ユニット
JP6535459B2 (ja) 2014-12-08 2019-06-26 株式会社キーエンス プログラマブル・ロジック・コントローラ、基本ユニット、制御方法およびプログラム
DE102015103809B3 (de) * 2015-03-16 2016-07-07 Intel IP Corporation Verfahren und Vorrichtung zum Schützen eines Datentransportblocks gegen Speicherfehler und Übertragungsfehler
JP2016194839A (ja) 2015-04-01 2016-11-17 富士電機株式会社 制御装置および通信インタフェース回路
KR102652293B1 (ko) * 2016-03-03 2024-03-29 에스케이하이닉스 주식회사 메모리 관리방법
CN106155596B (zh) * 2016-08-03 2020-01-17 深圳市文鼎创数据科技有限公司 数据写入方法及装置

Also Published As

Publication number Publication date
US20190377314A1 (en) 2019-12-12
KR20190089155A (ko) 2019-07-30
US10656615B2 (en) 2020-05-19
CN110278716B (zh) 2020-10-27
JP6419400B1 (ja) 2018-11-07
KR102016629B1 (ko) 2019-08-30
DE112018000092T5 (de) 2019-10-02
CN110278716A (zh) 2019-09-24
WO2019142288A1 (ja) 2019-07-25

Similar Documents

Publication Publication Date Title
CN110161984B (zh) 控制装置、控制***、控制方法以及存储介质
JP4766252B2 (ja) プログラマブルコントローラおよび通信ユニット
US10877803B2 (en) Control apparatus, control method and non-transitory storage medium
JP6419400B1 (ja) Plc、ネットワークユニット、cpuユニット、及びデータ転送方法
KR101446882B1 (ko) Plc 통신모듈에서 메시지 처리방법
WO2017036101A1 (zh) 一种更新寄存器的方法及装置
JP2018128845A (ja) マルチプロセッサシステム
JP6161396B2 (ja) 演算装置
US20220156006A1 (en) System and method for exchanging messages
CN114780460A (zh) 一种dma控制器和方法
JP2008226111A (ja) 2重化コントローラシステム、その稼動系コントローラ
KR100464257B1 (ko) 통신장치의 3단 통신 버퍼
JP7067260B2 (ja) 制御装置及びデータ記録方法
KR101805866B1 (ko) 소프트웨어 디파인드 라디오를 위한 전자 장치 및 그 스케줄링 방법
JP2000099452A (ja) Dma制御装置
JP7076654B1 (ja) プログラマブルコントローラの通信ユニット、受信データ記憶方法及びプログラム
KR100584583B1 (ko) 직렬 버스 제어 장치 및 방법
JP2007249560A (ja) プログラマブルコントローラにおけるcpuモジュール
JP2021064166A (ja) メモリ制御装置、および制御方法
CN107850873B (zh) 双重化过程控制装置
JP4633378B2 (ja) 昇降機制御情報伝送制御回路
JP4854598B2 (ja) データ転送制御装置
KR20220070536A (ko) 데이터를 제공하기 위한 방법, 컴퓨터 프로그램, 전자 저장 매체 및 장치
JP2020119012A (ja) 通信制御装置
JPH1029477A (ja) 電子制御装置及びその制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180725

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20180725

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20180831

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181009

R150 Certificate of patent or registration of utility model

Ref document number: 6419400

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250