Nothing Special   »   [go: up one dir, main page]

JP2016110458A - プログラマブル・ロジック・コントローラ、基本ユニット、制御方法およびプログラム - Google Patents

プログラマブル・ロジック・コントローラ、基本ユニット、制御方法およびプログラム Download PDF

Info

Publication number
JP2016110458A
JP2016110458A JP2014248402A JP2014248402A JP2016110458A JP 2016110458 A JP2016110458 A JP 2016110458A JP 2014248402 A JP2014248402 A JP 2014248402A JP 2014248402 A JP2014248402 A JP 2014248402A JP 2016110458 A JP2016110458 A JP 2016110458A
Authority
JP
Japan
Prior art keywords
unit
update
data
synchronization
basic unit
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
JP2014248402A
Other languages
English (en)
Other versions
JP2016110458A5 (ja
JP6535459B2 (ja
Inventor
知伸 北川
Tomonobu Kitagawa
知伸 北川
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.)
Keyence Corp
Original Assignee
Keyence 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 Keyence Corp filed Critical Keyence Corp
Priority to JP2014248402A priority Critical patent/JP6535459B2/ja
Publication of JP2016110458A publication Critical patent/JP2016110458A/ja
Publication of JP2016110458A5 publication Critical patent/JP2016110458A5/ja
Application granted granted Critical
Publication of JP6535459B2 publication Critical patent/JP6535459B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Programmable Controllers (AREA)

Abstract

【課題】PLCにおけるデバイスメモリのリフレッシュに関してユーザビリティを向上させる。【解決手段】PLCはスキャン毎にユーザプログラムを繰り返し実行する。第1更新部75はスキャンタイムのうちリフレッシュの期間で拡張ユニットが保持しているデータと基本ユニットが保持しているデータとをリフレッシュする。第2更新部76はスキャンタイムのうち定周期で拡張ユニットが保持しているデータと基本ユニットが保持しているデータとをリフレッシュする。【選択図】図7

Description

本発明は、プログラマブル・ロジック・コントローラ、基本ユニット、制御方法およびプログラムに関する。
一般にプログラマブル・ロジック・コントローラ(PLC)は基本ユニット(CPUユニットとも呼ぶ)と拡張ユニットを備えている(特許文献1)。基本ユニットと拡張ユニットは、通常のラダープログラムが実行されるタイミングと同期した、リフレッシュ期間と呼ばれる期間においてデータの交換(いわゆるリフレッシュ通信)を行う。
ところで、基本ユニットと拡張ユニットは、ユニット間同期処理によって相互に制御の同期をとることもできる。具体的には、1台又は複数台の拡張ユニットの内部処理と、基本ユニットにおける所定の処理(ラダー実行処理など)とを同期させて実行することもできる。
一般に、ユニット間同期処理において基本ユニットと拡張ユニットの間でデータ交換を行うためには、ユーザは別途、ユニット間同期用のラダープログラムの中に、ダイレクト通信の命令語を書き込まなければならない。ダイレクト通信の命令語とは、基本ユニットがその命令語を実行したタイミングで、基本ユニットと拡張ユニットの間でデータ交換される命令語である。このダイレクト通信の命令語があることで、毎スキャンで繰り返し実行されるリフレッシュ通信のタイミングを待たなくてもデータ交換されるため、ユニット間同期処理を用いた外部機器の高速制御などのメリットが得られる。
特開2004−052672号公報
しかし、ユニット間同期用のラダープログラム中にダイレクト通信の命令語を逐一記述することは、ユーザにとって煩雑な作業であり、手間が掛かるものである。例えば、ユニット間同期ではない、毎スキャンで繰り返し実行される通常のラダープログラム(いわゆる平場のラダープログラム)の記述の一部または全部をユニット間同期用のラダープログラムに流用する場合であっても、別途、ダイレクト通信の命令語を書き加えなければならず、結局のところ、プログラム変更の作業が必要になる。
そこで、毎スキャンで繰り返し実行されるリフレッシュ通信と同様に、ユニット間同期用のラダープログラムが実行されるタイミングと同期して、ユニット間同期の対象となっているデータを一括でデータ交換する方法(いわゆるユニット間同期リフレッシュ)が考えられる。このユニット間同期リフレッシュは、毎スキャン実行される通常のリフレッシュとは別概念のものであるため、ユニット間同期リフレッシュの対象となるデバイスとして、通常のリフレッシュの対象となるデバイスとは異なる専用デバイスが用意される。
しかし、基本ユニットと拡張ユニットとの間で共有すべきデータは数多く存在するため、ユニット間同期リフレッシュの期間でデータのすべてをユニット間で一致するように更新処理(リフレッシュ)を実行しようとすると、上述した専用デバイスを数多く用意しなければならない。その結果、専用デバイスを用いてユニット間同期用のラダープログラムを作成することは、ユーザにとって煩雑な作業であり、手間が掛かるものである。また、上述同様、平場のラダープログラムの記述の一部または全部をユニット間同期用のラダープログラムに流用する場合には、別途、通常のリフレッシュの対象となるデバイスを、ユニット間同期リフレッシュの対象となる専用デバイスに書き換えなければならず、この方法も結局のところ、プログラムの変更作業が必要になる。
また、ユニット間同期リフレッシュの対象となる専用デバイスの数が多い場合、ユニット間同期リフレッシュの期間が長くなってしまう。その結果、外部機器の高速制御などのユニット間同期処理のメリットが相殺されることになってしまう。もしこのようなデータの一部を、ユニット間同期リフレッシュの期間以外の期間で実行できるように選択できれば、リフレッシュ期間の増大を抑制できるであろう。そこで、本発明は、基本ユニットと拡張ユニットとの間で共有すべきデータの更新タイミングを選択可能なデバイスを用意することで、ユニット間同期処理のメリットが低下するのを防ぎながら、プログラムの変更作業の負担を軽減してユーザビリティを向上させることを目的とする。
本発明は、たとえば、
ユーザプログラムをスキャン毎に繰り返し実行する基本ユニットと、前記基本ユニットに接続される拡張ユニットとを有するプログラマブル・ロジック・コントローラであって、
前記拡張ユニットは、
外部機器が接続されるインターフェースと、
前記インターフェースを介した前記外部機器からの入力値または前記インターフェースを介した前記外部機器への出力値に関するデバイス値が格納され、前記基本ユニットとデータ共有するためのデバイスが割り付けられた記憶部と、
クロックを計数して時間を計測する拡張ユニットタイマと、
を備え、
前記基本ユニットは、
クロックを計数して時間を計測する基本ユニットタイマと、
前記拡張ユニットタイマと前記基本ユニットタイマのタイマ値を同期させる同期手段と、
スキャン毎のリフレッシュの期間内で前記拡張ユニットが保持しているデータと前記基本ユニットが保持しているデータとを一致させる第1更新手段と、
前記同期手段により前記拡張ユニットタイマのタイマ値と同期した前記基本ユニットタイマのタイマ値に基づいてスキャン中に定周期で実行される処理の期間内で前記拡張ユニットが保持しているデータと前記基本ユニットが保持しているデータとを一致させる第2更新手段と、
を備え、
前記ユーザプログラムに記述される前記拡張ユニットの前記デバイスは、前記第1更新手段による更新の対象および/または前記第2更新手段による更新の対象として設定可能に構成されることを特徴とするプログラマブル・ロジック・コントローラを提供する。
本発明によればユーザビリティを向上させることが可能になる。
PLCシステムの一例を示す図 ユーザプログラムの一例を示す図 プログラム作成支援装置の一例を示す図 PLCの一例を示す図 スキャンタイムを説明するための図 スキャンタイムと同期周期との関係を示す図 基本ユニットの機能を示す図 拡張ユニットの機能を示す図 プログラム作成支援装置の機能を示す図 スキャンタイムにおけるユニット間同期とリフレッシュを含む処理を示すフローチャート 拡張ユニットで実行される同期リフレッシュを示すフローチャート 同期リフレッシュと内部処理との時間的な関係を示す図 ダブルバッファ構成と複数の拡張ユニット間でのデータの送受信を示す図 ユニット間同期のタイミングに沿って実行されるスキャン処理を示すフローチャート ユニット間同期のタイミングに沿って実行されるスキャン処理を示すフローチャート 同期リフレッシュと一括リフレッシュとのいずれかを選択するためのGUIの一例を示す図
以下に本発明の一実施形態を示す。以下で説明される個別の実施形態は、本発明の上位概念、中位概念および下位概念など種々の概念を理解するために役立つであろう。また、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。
はじめにプログラマブル・ロジック・コントローラ(PLC、単にプログラマブルコントローラと呼ばれてもよい)を当業者にとってよりよく理解できるようにするために、一般的なPLCの構成とその動作について説明する。
図1は、本発明の実施の形態によるプログラマブル・ロジック・コントローラシステムの一構成例を示す概念図である。図1に示すように、このシステムは、ラダープログラムなどのユーザプログラムの編集を行うためのプログラム作成支援装置1と、工場等に設置される各種制御装置を統括的に制御するためのPLC(プログラマブル・ロジック・コントローラ)2とを備えている。PLC2は、CPUが内蔵された基本ユニット3と1つないし複数の拡張ユニット4を備えている。基本ユニット3に対して1つないし複数の拡張ユニット4が着脱可能となっている。基本ユニット3はCPUユニットと呼ばれることもある。
基本ユニット3には、表示部5及び操作部6が備えられている。表示部5には、基本ユニット3に取り付けられている各拡張ユニット4の動作状況などを表示することができ、表示部5の表示内容は、操作部6を操作することにより切り替えることができる。表示部5には、通常、PLC2内のデバイスの現在値(デバイス値)やPLC2内で生じたエラー情報などが表示される。なお、デバイスとは、デバイス値を格納するために設けられたメモリ上の領域を指す名称であり、デバイスメモリと呼ばれてもよい。デバイス値とは、入力機器からの入力状態、出力機器への出力状態およびユーザプログラム上で設定される内部リレー(補助リレー)、タイマ、カウンタ、データメモリ等の状態を示す情報である。
拡張ユニット4は、PLC2の機能を拡張するために用意されており、基本ユニット3に対して側方から取り付けられる。1つ目の拡張ユニット4は、基本ユニット3に対して側方から直接的に取り付けられる。2つ目以降の拡張ユニット4は、既に取り付けられている拡張ユニット4に対して、側方から直列的に取り付けられる。たとえば、基本ユニット3の右側面と拡張ユニット4の左側面とが連結面になっている。同様に、1つ目の拡張ユニット4の右側面の形状等は基本ユニット3の右側面とほぼ同じであるため、1つ目の拡張ユニット4の右側面に2つ目の拡張ユニット4の左側面が連結される。このような連結方式は、数珠つなぎ方式とかデイジーチェーン方式と呼ばれてもよい。各連結面にはコネクタが設けられており、通信や電力供給を行うためのバスもコネクタを介して連結される。このようにして、基本ユニット3と複数の拡張ユニット4が直列的に取り付けられると、各拡張ユニット4内に備えられた配線(例:バス)を介して、各拡張ユニット4が基本ユニット3に対して通信可能に接続される。各拡張ユニット4には、その拡張ユニット4の機能に対応する被制御装置16(図4)が接続され、これにより、各被制御装置16が拡張ユニット4を介して基本ユニット3に接続される。被制御装置16には、センサなどの入力装置や、アクチュエータなどの出力装置が含まれる。
プログラム作成支援装置1は、たとえば、携帯可能ないわゆるノートタイプやタブレットタイプのパーソナルコンピュータであって、表示部7及び操作部8を備えている。PLC2を制御するためのユーザプログラムの一例であるラダープログラムは、プログラム作成支援装置1を用いて作成され、その作成されたラダープログラムは、プログラム作成支援装置1内でニモニックコードに変換される。そして、プログラム作成支援装置1を、USB(Universal Serial Bus)などの通信ケーブル9を介してPLC2の基本ユニット3に接続し、ニモニックコードに変換されたラダープログラムをプログラム作成支援装置1から基本ユニット3に送ると、そのラダープログラムが基本ユニット3内でマシンコードに変換され、基本ユニット3に備えられたメモリ内に記憶される。
なお、図1では示していないが、プログラム作成支援装置1の操作部8には、プログラム作成支援装置1に接続されたマウスなどのポインティングデバイスが含まれていてもよい。また、プログラム作成支援装置1は、USB以外の他の通信ケーブル9を介して、PLC2の基本ユニット3に対して着脱可能に接続されるような構成であってもよい。
図2は、ラダープログラムの作成時にプログラム作成支援装置1の表示部7に表示されるラダー図17の一例を示す図である。図2に示すように、PLC2を制御するためのラダープログラムは、プログラム作成支援装置1の表示部7にマトリックス状に表示される複数のセル18内に仮想デバイスのシンボル19を適宜配置して、視覚的なリレー回路を表すラダー図17を構築することにより作成される。
ラダー図17には、たとえば、10列×N行(Nは任意の自然数)のセル18が配置されている。そして、各行のセル18内に、図2に示す左側から右側に向かって、時系列的に仮想デバイスのシンボル19を適宜配置することにより、視覚的なリレー回路を作成することができる。作成されるリレー回路は、1行で表される直列的なリレー回路であってもよいし、複数行に並列的に表されたリレー回路を互いに結合することにより作成された、並列的なリレー回路であってもよい。
図2に示すリレー回路は、入力装置からの入力信号に基づいてオン/オフされる3つの仮想デバイス(以下、「入力デバイス」と呼ぶ。)のシンボル19a,19b,19cと、出力装置の動作を制御するためにオン/オフされる仮想デバイス(以下、「出力デバイス」と呼ぶ。)のシンボル19dとが適宜結合されることにより構成されている。
各入力デバイスのシンボル19a,19b,19cの上方に表示されている文字(「R0001」、「R0002」及び「R0003」)は、その入力デバイスのデバイス名(アドレス名)21を表している。各入力デバイスのシンボル19a,19b,19cの下方に表示されている文字(「フラグ1」、「フラグ2」及び「フラグ3」)は、その入力デバイスに対応付けられたデバイスコメント22を表している。出力デバイスのシンボル19dの上方に表示されている文字(「原点復帰」)は、その出力デバイスの機能を表す文字列からなるラベル23である。
図2に示す例では、デバイス名「R0001」及び「R0002」にそれぞれ対応する2つの入力デバイスのシンボル19a,19bが直列的に結合されることにより、AND回路が構成されている。また、これらの2つの入力デバイスのシンボル19a,19bからなるAND回路に対して、デバイス名「R0003」に対応する入力デバイスのシンボル19cが並列的に結合されることにより、OR回路が構成されている。すなわち、このリレー回路では、2つのシンボル19a,19bに対応する入力デバイスがいずれもオンした場合、又は、シンボル19cに対応する入力デバイスがオンした場合にのみ、シンボル19dに対応する出力デバイスがオンされるようになっている。
図3は、図1のプログラム作成支援装置1の電気的構成について説明するためのブロック図である。図3に示すように、プログラム作成支援装置1には、CPU24、表示部7、操作部8、記憶装置25及び通信部26が備えられている。表示部7、操作部8、記憶装置25及び通信部26は、それぞれCPU24に対して電気的に接続されている。記憶装置25は、少なくともRAMを含む構成であり、ラダープログラム記憶部25aと、編集ソフト記憶部25bとを備えている。
ユーザは、編集ソフト記憶部25bに記憶されている編集ソフトをCPU24に実行させて、操作部8を通じてラダープログラムを編集する。ここで、ラダープログラムの編集には、ラダープログラムの作成及び変更が含まれる。編集ソフトを用いて作成されたラダープログラムは、ラダープログラム記憶部25aに記憶される。また、ユーザは、必要に応じてラダープログラム記憶部25aに記憶されているラダープログラムを読み出し、そのラダープログラムを、編集ソフトを用いて変更することができる。通信部26は、通信ケーブル9を介してプログラム作成支援装置1を基本ユニット3に通信可能に接続するためのものである。
図4は、PLC2の電気的構成について説明するためのブロック図である。図4に示すように、基本ユニット3には、CPU10、表示部5、操作部6、記憶装置12及び通信部14が備えられている。表示部5、操作部6、記憶装置12、及び通信部14は、それぞれCPU10に電気的に接続されている。記憶装置12は、RAMやROM、メモリカードなどを含んでもよく、ラダープログラムなどを記憶する。記憶装置12には、プログラム作成支援装置1から入力されたラダープログラムやユーザデータが上書きして記憶される。また、記憶装置12には基本ユニット用の制御プログラムも格納されている。
図5は、本発明の実施の形態に係るプログラマブルコントローラの基本ユニット3でのスキャンタイムの構成を示す模式図である。図5が示すように1つのスキャンタイムTは、入出力のリフレッシュを行うためのユニット間通信201、プログラム実行202、END処理204により構成されている。ユニット間通信201で、基本ユニット3は、ラダープログラムを実行して得られた出力データを基本ユニット3内の記憶装置12から外部機器などに送信するとともに、受信データを含めた入力データを基本ユニット3内の記憶装置12に取り込む。たとえば、基本ユニット3のデバイスに記憶されているデバイス値はリフレッシュによって拡張ユニット4のデバイスに反映される。同様に、拡張ユニット4のデバイスに記憶されているデバイス値はリフレッシュによって基本ユニット3のデバイスに反映される。なお、リフレッシュ以外のタイミングでデバイス値をユニット間で更新する仕組みが採用されてもよい。ただし、基本ユニット3のデバイスは基本ユニット3が随時書き換えており、同様に、拡張ユニット4のデバイスは拡張ユニット4が随時書き換えている。つまり、基本ユニット3のデバイスは基本ユニット3の内部の装置によって随時アクセス可能であり、同様に、拡張ユニット4のデバイスは拡張ユニット4の内部の装置によって随時アクセス可能になっている。基本ユニット3と拡張ユニット4との間では基本的にリフレッシュのタイミングにおいて相互にデバイス値を更新して同期する。プログラム実行202で、基本ユニット3は、更新された入力データを用いてプログラムを実行(演算)する。基本ユニット3はプログラムの実行によりデータを演算処理する。なお、END処理とは、プログラム作成支援装置1や基本ユニット3に接続された表示器(図示せず)等の外部機器とのデータ通信、システムのエラーチェック等の周辺サービスに関する処理全般を意味する。END処理は周辺処理と呼ばれることもある。
このように、プログラム作成支援装置1はユーザの操作に応じたラダープログラムを作成し、作成したラダープログラムをPLC2に転送する。PLC2は、入出力リフレッシュ、ラダープログラムの実行およびEND処理を1サイクル(1スキャン)として、このサイクルを周期的、すなわちサイクリックに繰り返し実行する。これにより、各種入力機器(センサ等)からのタイミング信号に基づいて、各種出力機器(モータ等)を制御する。よって、PLC2は汎用のパーソナルコンピュータ(PC)とは全く異なる動きをする。
<ユニット間同期>
ユニット間同期とは、基本ユニット3の内部処理の制御周期と拡張ユニット4の内部処理の制御周期とを同期させる処理のことである。基本ユニット3と拡張ユニット4はそれぞれタイマを有し、タイマ値に応じて内部処理の開始タイミングなどを決定する。基本ユニット3と拡張ユニット4が同じ周期のタイマを有することにより、両者の制御周期が同期する。なお、基本ユニット3の制御周期を基準として拡張ユニット4の制御周期を同期させる方法と、拡張ユニット4の制御周期を基準として基本ユニット3の制御周期を同期させる方法とがある。いずれにしても拡張ユニット4は、拡張ユニット4の制御周期にしたがって内部処理を実行する。つまり、内部処理の開始タイミングは拡張ユニット4の制御周期の開始タイミングに一致している。なお、同期処理はユーザプログラムであるラダープログラムのスキャンタイム内における特定の期間に実行されてもよいし、ラダープログラムに対して割り込むことで実行されてもよい。ここでは説明の便宜上、一定周期の割り込みによってユニット間同期が実行されるものとして説明する。割り込みを実行するための割り込みモジュールが基本ユニット3に設けられていてもよい。たとえば、図6(A)が示すように、スキャンタイムが5ミリ秒だとすると、ユニット間同期の同期周期は200マイクロ秒(us)に設定されることがある。この場合は、1つのスキャンタイム内で25回のユニット間同期が実行されることになる。なお、スキャンはスキャンモジュールによって制御されており、これとは並行してユニット間同期は同期モジュールによって実行されている。そのため、リフレッシュの期間(ユニット間通信201)、ラダープログラムを実行している期間(プログラム実行202)、END処理を実行している期間(END処理204)のいずれにおいてもユニット間同期が定周期で実行される。
上述した内部処理は内部機能が実行する処理のことである。拡張ユニット4はインターフェースを備え、当該インターフェースを介して外部機器である被制御装置16と接続されている。拡張ユニット4は外部機器から取得したデータに対して演算を実行して入力デバイス値を求め、入力デバイスに格納する。また、拡張ユニット4は出力デバイスのデバイス値に対して演算を実行して出力値を求め、外部機器に出力する。内部処理とはこれらの演算処理などである。なお、演算処理は、数式に基づく算出処理だけでなく、テーブルから値を取得するような処理も含まれる概念である。
<一括リフレッシュと同期リフレッシュ>
図5に示したように入出力リフレッシュは1つのスキャンタイムTにおいて一回だけ実行される(これを一括リフレッシュと呼ぶことにする。)。しかし、1つのスキャンタイムにおいて一回だけのリフレッシュを行うだけでは、十分ではないようなデータも存在する。このようなデータについてはデバイスに割り付けずに、バッファメモリに割り付け、バッファメモリに対してダイレクト通信を行うことで、データを読み書きすることが可能となる。しかし、この場合は、ラダープログラム内でダイレクト通信を実行するための命令を記述しておかなければならない。スキャンタイム(例:5ms)に対してずっと短い周期(例:200us)で更新される必要があるデータについてはラダープログラム内の多数の個所にデータの更新命令を記述しておかねばならず、ユーザビリティにかける面があった。また、「発明が解決しようとする課題」の欄に記述したような問題があった。
ところで、上述したようにユニット間同期(ユニット間同期プログラム)は非常に短い同期周期で繰り返し実行されるように設定されることがある。よって、図6(B)が示すように、ユニット間同期の際にデータをリフレッシュすれば、リアルタイム性の要求されるデータをフレッシュな状態に維持できるようになろう(これを同期リフレッシュと呼ぶことにする)。しかし、一括リフレッシュの対象となっていたすべてのデバイスについて同期リフレッシュを実行してしまうと、ユニット間同期に付随した同期リフレッシュによって平場のラダープログラムが中断される時間が長くなり(別の言い方をすると、同期リフレシュに伴って実行されるユニット間同期プログラムの記述量が制限されることになり)、基本ユニット3が拡張ユニット4を制御する上で不都合が生じる。これは、基本ユニット3がユニット間同期のタイミングでラダープログラムに対して割り込みを発生させ、同期リフレッシュを実行する必要があるからである。なお、リフレッシュの期間(ユニット間通信201)、ラダープログラムを実行している期間(プログラム実行202)、END処理を実行している期間(END処理204)のいずれにおいてもユニット間リフレッシュが定周期の割り込みで実行される。基本ユニット3に対して多数の拡張ユニット4が接続されていれば、その接続台数に概ね比例してリフレッシュ対象のデバイスの数も増加するため、中断時間も増加する。
そこで、複数あるデバイスをそれぞれ一括リフレッシュの対象とするか、同期リフレッシュの対象とするかを選択できれば、ラダープログラムが中断される時間を削減できるであろう。つまり、基本ユニット3と拡張ユニット4との間で共有すべきデータの更新タイミングを選択可能とすれば、ユーザは自己が共用する範囲の中断時間に収まるように各デバイスについて更新タイミングを選択できるようになり、ユーザビリティが向上することになろう。なお、一部のデバイスは一括リフレッシュの対象として設定可能とされるだけでなく、同期リフレッシュの対象として設定可能であってもよい。
なお、これまでユーザプログラムであるラダープログラム内でダイレクト通信によって更新されていたようなバッファメモリについても同期リフレッシュの対象とされてもよい。つまり、同期リフレッシュの対象として選択されたバッファメモリについては、ラダープログラム内ではダイレクト通信のコードを記述する必要がなくなる。つまり、同期リフレッシュの対象として選択されたバッファメモリについては一括リフレッシュの対象とされているデバイスと同様にラダープログラム内で扱うことが可能となる。ラダープログラムの作成が容易になる点でもユーザビリティが向上しよう。また、ラダープログラム内でダイレクト通信により更新されていたデバイスについても同様に同期リフレッシュの対象として選択することが可能となる。
<基本ユニットの機能>
図7は基本ユニット3の機能の一例を示すブロック図である。CPU10は制御プログラム77を実行することで様々な機能を実現する。なお、機能の一部はASICなどの論理回路によって実装されてもよい。
基本ユニット制御部70は基本ユニット3の各部を統括的に制御する機能である。たとえば、基本ユニット制御部70はスキャンの管理やユニット間リフレッシュなどのための割り込みの管理などを実行する。基本ユニット制御部70はCPU10が制御プログラム77を実行することで実現される機能である。プログラム実行部71は、主にラダープログラム78などを実行する機能である。プログラム実行部71はASICなどにより実装されると、制御の高速化を実現しやすい。デバイス制御部72は、デバイス80に対する読み書きを制御する機能である。デバイス制御部72は、たとえば、同期リフレッシュが実行されている間は、デバイス80の内容が他の手段によって書き換えられたり、読み出されたりしないように、排他・調停処理(禁止処理)を実行する。デバイス制御部72は、第2更新部76が同期リフレッシュを実行している間は、第2更新部76以外の手段による割り込みを禁止してもよい。なお、同期リフレッシュを開始したときにすでに発生している割り込みについては禁止されずに、そのまま実行される。
ユニット間同期部73は、予め定められた同期周期にしたがってユニット間同期プログラムを実行する。ユニット間同期プログラムは、平場のラダープログラムに対して割り込みをかけて実行されるプログラムであり、基本的に平場のラダープログラムよりも短い周期で実行される。ユニット間同期部73は、拡張ユニットタイマ119(図8)のタイマ値と基本ユニットタイマ88のタイマ値とを同期させるタイマ同期を実行する。タイマ同期を実行する機能はタイマ同期部としてユニット間同期部73から独立して設けられていてもよい。これは拡張ユニット4に関しても同様である。タイマ同期の周期はたとえば1000マイクロ秒などである。これにより、基本ユニット3の制御周期に対して拡張ユニット4の制御周期が同期する。一般に、ユニット間同期が実行されない場合、基本ユニット3の制御周期と拡張ユニット4の制御周期が徐々にずれて行き、基本ユニット3が拡張ユニット4を精度よく制御できなくなることがある。そのため、ユニット間同期プログラムを実行することで、基本ユニット3の制御周期と拡張ユニット4の制御周期が位相レベルで一致するようになる。基本ユニットタイマ88はクロックを計数して時間を計測するタイマまたはカウンタである。ユニット間同期部73は、基本ユニットタイマ88のタイマ値を基準とした同期周期にしたがってユニット間同期プログラムを実行する。ユニット間同期部73は、通信部14に接続された拡張バスを介して拡張ユニット4に対して同期タイミングを通知するための同期信号を送信する。通信部14には拡張バスによる通信を行うための通信機能やプログラム作成支援装置1と通信するための通信機能とが含まれているものとする。
更新部74は、基本ユニット3がデバイスに記憶しているデータと拡張ユニット4がデバイスに記憶しているデータとが一致するように相互に更新する機能である。たとえば、基本ユニット3から拡張ユニット4に転送されるデータは出力デバイスに格納される。拡張ユニット4から基本ユニット3に転送されるデータは入力デバイスに格納される。一般に、複数の出力デバイスはまとめて出力リフレッシュによって更新され、複数の入力デバイスはまとめて入力リフレッシュによって更新される。入力リフレッシュと出力リフレッシュは一括リフレッシュと同期リフレッシュの双方に存在する。第1更新部75は一括リフレッシュを実行する機能である。つまり、第1更新部75はスキャン毎のリフレッシュの期間内で拡張ユニット4が保持しているデータと基本ユニット3が保持しているデータとを一致させる。第2更新部76は同期リフレッシュを実行する機能である。つまり、第2更新部76はユニット間同期部73により拡張ユニットタイマ119のタイマ値と同期した基本ユニットタイマ88のタイマ値に基づいてスキャン中に定周期で実行される処理の期間内で拡張ユニット4が保持しているデータと基本ユニット3が保持しているデータとを一致させる。なお第2更新部76はスキャンタイム内のいずれの期間であっても割り込んで同期リフレッシュを実行しうる。
ユーザプログラムであるラダープログラム78に記述される拡張ユニット4のデバイスは、第1更新部75による更新の対象と第2更新部76による更新の対象とのうち少なくともいずれかの更新対象として設定可能に構成される。基本ユニット制御部70は、第1更新部75による更新の対象となるデータ/デバイスや第2更新部76による更新の対象となるデータ/デバイスを選択する選択手段として機能してもよい。つまり、基本ユニット制御部70はデバイスを更新する更新手段として、第1更新部75および第2更新部76のうち少なくとも一方を選択する選択手段として機能してもよい。たとえば、基本ユニット制御部70は、操作部6からの指示にしたがって各デバイスを一括リフレッシュの対象とするか、それとも同期リフレッシュの対象とするかを選択し、選択結果を設定データ79に保持する。つまり、設定データ79には、同期リフレッシュの対象となるデバイスやバッファメモリを指定する更新対象指定情報が含まれる。なお、一括リフレッシュの対象となるデバイスやバッファメモリについても更新対象指定情報として設定データ79に含まれてもよい。なお、プログラム作成支援装置1においてこのような設定データ79が作成され、ラダープログラム78とともに基本ユニット3に転送されてきてもよい。なお、同期リフレッシュの対象だけが選択可能とされ、一括リフレッシュの対象は選択不可能にされてもよい。また、一括リフレッシュの対象だけが選択可能とされ、同期リフレッシュの対象は選択不可能にされてもよい。
記憶装置12には制御プログラム77が記憶されている。制御プログラム77にはスキャンを実行するスキャンプログラムやユニット間同期を実行するユニット間同期プログラム、割り込みを実行する割り込みモジュールなどが含まれている。なお、ユニット間同期プログラムは、ユニット間同期処理によって拡張ユニットタイマ119(図8)のタイマ値と同期した基本ユニットタイマ88のタイマ値に基づいて実行される。記憶装置12はプログラム記憶部としても機能する。スキャンとはスキャンタイム内でユーザプログラムとEND処理とを周期的に繰り返し実行させることをいう。END処理には一括リフレッシュと周辺処理とが含まれる。スキャンタイムTはスキャンに要する時間であり、一定に設定されるケースと可変とされるケースがあるが、本実施形態ではそのどちらのケースにも適用可能である。
スキャン制御プログラムや同期プログラムもラダー言語により記述されていてもよい。ユーザプログラムの一種であるラダープログラム78はラダー言語により記述され、基本ユニット3の内部機能や拡張ユニット4の内部機能を制御するためのユーザプログラムである。設定データ79には基本ユニット3や拡張ユニット4の接続順序や内部機能を制御するために必要となるパラメータなどが含まれている。デバイス80は、たとえば、拡張ユニット4の内部機能に割り付けられたデータを機能する記憶領域であり、デバイスメモリと呼ばれることもある。ここではデバイス80は複数のデバイスの集合として記載されている。第1デバイス81は一括リフレッシュの対象として選択されているデバイスである。第2デバイス82は同期リフレッシュの対象として選択されているデバイスである。第1デバイス81の数は一般に第2デバイス82の数よりも多いが、これは逆であってもよい。第3デバイス83は、オプションであり、拡張ユニット4のバッファメモリUGに割り付けられたデバイスメモリである。第3デバイス83については、第1更新部75が一括リフレッシュしてもよいし、第2更新部76が同期リフレッシュしてもよい。第3デバイス83とバッファメモリUGの割り付け関係や、どちらのリフレッシュが適用されるかを示す情報についても設定データ79に保持されている。複数の第3デバイス83が設けられていてもよい。どちらのリフレッシュが適用されるかに応じて、更新部74では、第3デバイス83が第1デバイス81として扱われたり、第2デバイス82として扱われたりすることになる。
<拡張ユニットの機能>
図8は拡張ユニットの機能の一例を示すブロック図である。CPU110は記憶装置111に記憶されているシステムプログラム117を実行することで様々な機能を実現する。拡張ユニット制御部113は、第1デバイス118や第2デバイス120に書き込まれる基本ユニット3からの指示に応じて被制御装置16を制御する機能である。記憶装置111は、ROMやRAMなどを有し、記憶装置111における一部のメモリは書き換え可能な不揮発性メモリであってもよい。CPU110は被制御装置16と通信するためのインターフェース123を有している。ユニット間同期部114は、拡張バスおよび通信部112を介して基本ユニット3から送信される同期信号にしたがって拡張ユニット4における内部処理の制御周期を基本ユニット3の制御周期に同期させるものでる。拡張ユニットタイマ119はクロックを計数して時間を計測するタイマまたはカウンタである。ユニット間同期部114は、拡張ユニットタイマ119のタイマ値を基本ユニットタイマ88のタイマ値に一致させるように動作してもよい。なお、ユニット間同期部114は、第2更新部76における更新処理の遅延時間に応じて拡張ユニット4で実行される内部処理の開始を遅延(延期)させる延期部115を備えていてもよい。更新処理が完了していないにもかかわらず、拡張ユニット4が内部処理を開始してしまうと、最新のデバイス値が内部処理に反映されなくなってしまう。そこで、更新処理が完了するまで内部処理の開始タイミングを延期することで、内部処理は最新のデバイス値を利用できるようになる。
記憶装置111にはデバイス値を格納するデバイスやダイレクト通信の対象となるバッファなどの記憶領域が確保される。第1デバイス118は、一括リフレッシュされるデバイスである。第1デバイス118のデバイス値は、基本ユニット3の第1デバイス81と一致するデバイス値が格納される。第2デバイス120は、同期リフレッシュされるデバイスである。第2デバイス120のデバイス値は、基本ユニット3の第2デバイス82と一致するデバイス値が格納される。なお、第1デバイス81や第2デバイス120は複数のバッファにより実現されてもよい。第1バッファ121は、基本ユニット3とデバイス値を交換するためのバッファである。第2バッファ122は、拡張ユニット制御部113がデバイス値を入力したり、出力したりするためのバッファである。バッファ更新部116はオプションのユニットであり、1つのデバイスを複数のバッファにより実現するときに必要となる。第2デバイス120が出力デバイスである場合、バッファ更新部116は、基本ユニット3の第2デバイス82のデバイス値を第1バッファ121に格納し、第1バッファ121に格納されたデバイス値をさらに第2バッファ122に格納する。第2デバイス120が入力デバイスである場合、バッファ更新部116は、内部処理の結果であるデバイス値を第2バッファ122に格納し、第2バッファ122に格納されたデバイス値を第1バッファ121に格納し、第1バッファ121に格納されたデバイス値を基本ユニット3の第2デバイス82に転送する。このように第1バッファ121は同期リフレッシュの際に参照され、第2バッファ121は拡張ユニット4の内部処理によって参照される。このようなダブルバッファ構成を採用することで、第2デバイス120のデバイス値が確定してから、リフレッシュや内部処理に利用されるようになる。つまり、リフレッシュの途中でデバイス値が書き換えられてしまったり、内部処理の途中でデバイス値が書き換えられてしまったりすることが起きにくくなる。デバイス値には、一緒のタイミングで更新される必要がある複数のデバイス値の集合や(同時性)、更新の順序が決まっている複数のデバイス値の集合が存在する(順序性)。また、基本ユニット3と拡張ユニット4との間での伝達遅延時間がそれぞれほぼ同じになることを要求される複数のデバイス値の集合も存在する(伝達遅延時間の一定性)。たとえば、1つ目のデバイスには分母が格納され、2つ目のデバイスには分子が格納されており、この分母と分子とによって制御値が決定されることがある。このような制御値において、拡張ユニット制御部113が分母を取得した後で、分子が同期リフレッシュによって書き換えられてしまうと、分母と分子のペアが破たんし(いわゆる泣き別れ現象)、制御値が異常となる。よって、分母と分子のペアのように同時性を要求されるデバイスに関してはダブルバッファ構成が有効である。バッファ更新部116は、同時性を要求される複数のデバイス値が揃った後で第1バッファ121から第2バッファ122へ、または、第2バッファ122から第1バッファ121へバッファ更新を行うことで、複数のデバイス値の泣き別れを抑制できるようになる。なお、ダブルバッファ構成は順序性や伝達遅延時間の一定性を確保するためにも役立つ。バッファメモリUGは、通常はダイレクト通信によってアクセスされるメモリである。本実施形態では、複数のバッファメモリUGの1つ以上について第3デバイス83に割り付けられうる。第3デバイス83に割り付けられたバッファメモリUGは一括リフレッシュされたり、同期リフレッシュされたりするため、ダイレクト通信による更新が不要となる。
<プログラム作成支援装置の機能>
図9はプログラム作成支援装置1のCPU24が編集ソフトウエア86を実行することで実現する機能を示している。編集ソフトウエア86は、ラダープログラム78や設定データ79などをユーザが編集するために使用するプログラムである。
CPU24は編集ソフトウエア86を実行することで様々な手段として機能するが、ここでは代表的なものについて説明する。ラダープログラム作成部87は表示部7にラダープログラム78を作成および編集するためのユーザインタフェースを表示し、操作部8から入力される指示にしたがってラダープログラム78を作成し、記憶装置25に書き込む。設定データ作成部84は、設定データ79を作成するためのユーザインタフェースを表示部7に表示し、操作部8から入力される指示にしたがって設定データ79を作成し、記憶装置25に書き込む。たとえば、設定データ作成部84は、基本ユニット3に接続される複数の拡張ユニット4のデバイスを列挙したリストを表示部7に表示し、デバイスごとに一括リフレッシュの対象とするか、同期リフレッシュの対象となるかを選択する。なお、1つの拡張ユニット4あたりのデバイスの数が少ない場合、設定データ作成部84は、拡張ユニット4を単位として、一括リフレッシュの対象とするか、同期リフレッシュの対象となるかを選択してもよい。たとえば、設定データ作成部84は、基本ユニット3に接続される複数の拡張ユニット4を列挙したリストを表示部7に表示し、拡張ユニット4ごとに一括リフレッシュの対象とするか、同期リフレッシュの対象となるかを選択する。このように設定データ79には、各デバイスごとに一括リフレッシュの対象とするか、同期リフレッシュの対象となるかを示す情報が含まれていてもよい。プロジェクト転送部85は、ラダープログラム78および設定データ79などをプロジェクトデータとしてまとめ、通信部26を介して基本ユニット3に転送する。通信部26は、基本ユニット3と通信するためのUSBインターフェースやLANインターフェースを有している。
<フローチャート>
図10は基本ユニット3が実行する処理を示すフローチャートである。基本ユニット3がメンテナンスモード(プログラミングモード)からランモードに切り替えられると、CPU10は制御プログラム77にしたがって本フローチャートに係る処理を実行する。なお、本実施形態ではランモードにおいてユニット間同期処理が実行されるが、メンテナンスモードにおいてもユニット間同期処理が実行されるようにしてもよい。
S1でCPU10(第1更新部75)は一括リフレッシュを実行する。たとえば、第1更新部75は複数あるデバイスのうち設定データ79によって一括リフレッシュの対象として選択されているデバイスについて一括リフレッシュを実行する。
S2でCPU10(プログラム実行部71)はユーザプログラムであるラダープログラム78を開始する。以降、プログラム実行部71は、ラダープログラム78が終了するまで、制御プログラム77と並列にラダープログラム78を実行する。
S3でCPU10(ユニット間同期部73)はユニット間同期をトリガーするイベントが発生したかどうかを判定する。このイベントは割り込みモジュール(ユニット間同期部73または基本ユニット制御部70)などによって所定期間ごとに発生するものとする。たとえば、ユニット間同期部73は基本ユニットタイマ88のタイマ値が所定値増えるごとにユニット間同期を実行してもよい。ユニット間同期の通知は信号線などを通じて拡張ユニット4にも発生する。ユニット間同期のイベントが発生するとS4に進む。ユニット間同期のイベントが発生していなければ、ラダープログラム78が継続され、S8に進む。
S4でCPU10(ユニット間同期部73、プログラム実行部71)は、基本ユニットタイマ88のタイマ値に基づき定周期で発生する同期リフレッシュのための割り込みによってラダープログラムを中断する。たとえば、ユニット間同期部73は基本ユニットタイマ88のタイマ値に基づきプログラム実行部71にラダープログラムを中断するよう指示する。これによりプログラム実行部71はラダープログラムを中断する。なお、割り込み自体が中断の指示として認識されてもよい。
S5でCPU10(第2更新部76)は同期リフレッシュを実行する。第2更新部76は複数あるデバイスのうち設定データ79によって同期リフレッシュの対象として選択されているデバイスについて一括リフレッシュを実行する。
S6でCPU10(ユニット間同期部73)はユニット間同期プログラムを実行する。基本ユニット3のユニット間同期部73と拡張ユニット4のユニット間同期部114は拡張バスを通じて通信し、相互にタイマ値を一致させることで双方の制御周期を同期させる。
S7でCPU10(ユニット間同期部73、プログラム実行部71)はラダープログラム78を再開する。たとえば、ユニット間同期部73はプログラム実行部71にラダープログラムを再開するよう指示する。これによりプログラム実行部71はラダープログラムを再開する。
S8でCPU10(基本ユニット制御部70)はラダープログラム78が終了したかどうかを判定する。ラダープログラム78が終了していなければ、S3に戻る。ラダープログラム78が終了したのであれば、S9に進む。
S9でCPU10(基本ユニット制御部70)は上述したEND処理を実行する。これにより1つのキャンタイムが終了する。その後、次のスキャンを開始するために、S1に戻る。以降、ランモードからメンテナンスモードに切り替わるまで、図5に示したように、スキャンTにしたがって本フローチャートに係る処理が繰り返し実行される。
ここではラダープログラム78の実行中にユニット間同期が実行されるものとして説明したが、一括リフレッシュ(S1)中やEND処理(S9)中のいずれにおいてもユニット間同期は実行される。つまり、S1およびS9にはS3ないしS7に相当するステップが含まれている。ここで、S4、S7に記載のラダープログラムは一括リフレッシュとEND処理に読み替えられるものとする。
図11は拡張ユニット4が実行する処理を示すフローチャートである。ここでは一括リフレッシュについては省略している。なお、CPU110はシステムプログラム117にしたがって以下の処理を実行する。
S11でCPU110(ユニット間同期部114)はユニット間同期の通知が発生するのを待つ。拡張バスを通じてユニット間同期の通知を受信すると、S12に進む。
S12でCPU110(ユニット間同期部114、バッファ更新部116)は同期リフレッシュを実行する。バッファ更新部116は、第2デバイス120のうち入力デバイスに格納されているデバイス値を基本ユニット3に転送し、基本ユニット3から受信したデバイス値を出力デバイスに格納する。なお、ダブルバッファ構成が採用される場合、バッファ更新部116は、第1バッファ121と第2バッファ間でデバイス値の更新を行う。出力デバイスに関しては、基本ユニット3から受信したデバイス値が第1バッファ121に格納され、その後、第1バッファ121から第2バッファ122にコピーされる。拡張ユニット制御部113によって実行される内部処理は第2バッファ122に格納されているデバイス値を参照する。入力デバイスに関しては、拡張ユニット制御部113が実行する内部処理によって第2バッファ122に格納されたデバイス値が第1バッファ121にコピーされ、その後、第1バッファ121から基本ユニット3に転送される。
S13でCPU110(拡張ユニット制御部113)は第1デバイス118や第2デバイス120のうち入力デバイスからデバイス値を読み出し、デバイス値にしたがって内部処理を実行する。拡張ユニット制御部113は内部処理の実行結果を第1デバイス118や第2デバイス120のうち出力デバイス(とりわけ、出力デバイスの第2バッファ122)に格納する。
このようにユニット間同期のタイミングで同期リフレッシュを実行することで、一括リフレッシュを前提とした通信用プログラム(基本ユニットが拡張ユニットと通信するためのプログラム)を同期リフレッシュの対象となったデバイスについても適用できるようになる。従来技術では、一括リフレッシュの対象となっていなかったデバイスなどについて任意のタイミングで最新のデバイス値が必要になるときは、平場のラダープログラム(メインのラダープログラム)内でダイレクト通信によってデバイス値を更新する必要があった。しかし、これはユーザにとって面倒なプログラミング作業であった。一方で、本実施例によれば、一括リフレッシュの対象となっていなかったデバイスについても同期リフレッシュによって更新されるため、ダイレクト通信のためのコードが不要となり、一括リフレッシュを前提とした通信用プログラムを同期リフレッシュに関しても流用できるようになる。
<バッファメモリへの同期リフレッシュの適用>
なお、PLC2ではデバイスとは別にバッファメモリUGと呼ばれる記憶領域が存在する。デバイスはリフレッシュの対象となる記憶領域であり、バッファメモリUG(単にバッファと呼ばれることもある)はリフレッシュの対象とならず、ダイレクト通信によりアクセスされていた。このようなバッファメモリUGについても同期リフレッシュの対象として選択されてもよい。これにより、デバイスと比較してより複雑なコードが必要となっていたバッファメモリUGについても、同期リフレッシュにより、デバイスと同様なコードにより扱うことが可能となる。とりわけ、複数のバッファメモリUGに格納される値(バッファ値と呼ぶことにする)には、一緒のタイミングで更新される必要がある複数のバッファ値の集合や(同時性)、更新の順序が決まっている複数のバッファ値の集合が存在する(順序性)。たとえば、1つ目のバッファメモリには分母が格納され、2つ目のデバイスには分子が格納されており、この分母と分子とによって制御値が決定されることがある。このような制御値において、拡張ユニット制御部113が分母を取得した後で、分子が同期リフレッシュによって書き換えられてしまうと、分母と分子のペアが破たんし(泣き別れ)、制御値が異常となる。よって、分母と分子のペアのように同時性を要求されるバッファ値に関しては同期リフレッシュにおいて同時性や順序性を維持しつつ、更新される。また、伝達遅延時間の一定性が要求されるバッファメモリUGについても、第3デバイス83を割り付けて同期リフレッシュが適用されてもよい。これにより伝達遅延時間の一定性が確保されよう。なお、バッファメモリUGについてもダブルバッファ構成が採用されてもよい。なお、同期リフレッシュの対象となるバッファメモリUGおよび第3デバイス83については明細書の全体において第2デバイスと同様に扱われるものとする。つまり、第2デバイスに関する説明はそのままバッファメモリUGと第3デバイス83に適用される。また、バッファメモリUGおよび第3デバイス83が一括リフレッシュの対象として選択された場合、第1デバイスに関する説明はそのままバッファメモリUGと第3デバイス83に適用される。
<同期リフレッシュの対象となるデバイスの選択>
上述したようにユニット間同期はリフレッシュタイミングよりも短い周期(例:50us〜5ms)で実行されることがある。これは、基本ユニット3と拡張ユニット4との応答性(別の言い方をすれば、外部入力機器に対する基本ユニットの応答性、又は、基本ユニットに対する外部出力機器の応答性)のバラツキを小さくするためである。ユニット間同期を実行するタイミングで同期リフレッシュを実行するには、ユニット間同期の同期周期内で同期リフレッシュを完了しなければならない。よって、同期リフレッシュの対象となるデバイスの数はある程度制限される必要があるだろう。たとえば、一括リフレッシュの対象となっていたすべてのデバイスを同期リフレッシュの対象として選択してしまうと、ユニット間同期の周期を短くできなくなり、基本ユニット3と拡張ユニット4との応答性のバラツキを小さくすることが困難となろう。そこで、ユニット間同期の同期周期の長さを考慮して同期リフレッシュの対象が予め選択される。この選択は、プログラム作成支援装置1で実行されたり、または、基本ユニット3の操作部6を通じて実行されたりする。また、同期リフレッシュを割り込みプログラムにより実現し、選択されたデバイスについて同期リフレッシュが実行される。これは、スキャンタイムが長くなったりするなど、変動したりしても、安定的にユニット間同期と同期リフレッシュとを実現する。この場合、ユニット間同期は、スキャンタイム内のいずれの場所でも実行されうる。たとえば、ユニット間同期部73および第2更新部76は、ラダープログラムの実行期間だけでなく、一括リフレッシュの期間でもユニット間同期と同期リフレッシュを実行してもよい。定周期でユニット間同期と同期リフレッシュが実行されるようになり、基本ユニット3と拡張ユニット4との応答性のバラツキが小さくなろう。
なお、プログラム作成支援装置1の設定データ作成部84は、同期リフレッシュの対象となるデバイスやバッファメモリUGを選択するが、そもそもユニット間同期の対象となる拡張ユニット4を選択してもよい。これにより、ユニット間同期の対象となる拡張ユニット4の数が多く、ユニット間同期リフレッシュの対象になるデータの量が多い場合であっても、ユニット同期を実現しつつ、ユニット間同期の同期周期(例えば200μs)を短くすることができる。図16に例示するように、設定データ作成部84は、基本ユニット3に対して接続される複数の拡張ユニット4を列挙したリスト90などを表示し、操作部8から入力された指示に応じて、複数の拡張ユニット4のそれぞれについてユニット間同期の対象とするか否かを選択してもよい。たとえば、基本ユニット3と拡張ユニット4との応答性のバラツキを小さくする必要がある位置決めユニット(モーションユニット)についてはユニット間同期の対象として選択されてもよい。LAN通信ユニットなどはそれほどリアルタイム性を要求されないため、ユニット間同期の対象として選択されなくてもよい。なお、設定データ作成部84は、ユニット間同期に対応していない拡張ユニット4については強制的にユニット間同期の対象外を選択し、ユーザに対して選択の余地を与えなくてもよい。たとえば、設定データ作成部84はそのような拡張ユニットについてはグレーアウト表示し、操作部8による選択を不能にしてもよい。
設定データ作成部84は、ユニット間同期の対象として選択された拡張ユニットについては、さらに、占有デバイスなどの特定のデバイスのリフレッシュを一括リフレッシュの対象とするか、それとも同期リフレッシュの対象とするかを選択するためのGUIを表示部7に表示してもよい。占有デバイスとは、拡張ユニットごとに予め割り付けられたデバイスのことである。たとえば、基本ユニット3との間での通信量が多い拡張ユニット4についてはその占有デバイスを同期リフレッシュの対象とすることで、一括リフレッシュ用のプログラムコードを同期リフレッシュ用に流用することが容易になる。なお、設定データ作成部84は、ユニット間同期の周期を短くすることが必要な拡張ユニット4の占有デバイスについてはあえて同期リフレッシュの対象外として選択してもよい。このようなデバイスについてはユニット間同期のタイミングで同期リフレッシュを行わないため、同期周期を短くすることが可能となる。
<複数のデバイス値の泣き別れの抑制>
上述したように分子と分母とにより定まる比率などを正しく伝達するには、分子と分母とが同時性の要件を満たしてユニット間でリフレッシュされる必要がある。これを実現する手法としてすでにダブルバッファ構成について説明したが、他の排他調停方法が使用されてもよい。
上述したように、拡張ユニット4の内部処理は複数の出力デバイスの値を参照する。また、拡張ユニット4の内部処理は複数の処理結果を入力デバイス値に格納する。複数の出力デバイスの値には同時性を要求されるものがある。同様に、複数の入力デバイス値にも同時性を要求されるものがある。
そこで、図12が示すように、基本ユニット3の第2更新部76がこれのデバイスについて同期リフレッシュを完了するまで待ってから、拡張ユニット4は内部処理を開始する。つまり、図12に示すように、第1拡張ユニットおよび第2拡張ユニットのユニット間同期部114は、ユニット間同期によって同期リフレッシュのための割り込みが発生すると所定の待ち時間(リフレッシュ待ち時間と呼ばれてもよい)が経過するのを待ってから、拡張ユニット制御部113に内部処理を開始させる。なお、この待ち時間の間に、基本ユニット3の第2更新部76がデバイスやバッファメモリUGの同期リフレッシュを実行する。これにより、デバイス値が同期リフレッシュされている期間においては、拡張ユニット制御部113の内部処理がデバイス値を読み込んだり、書き込んだりしないようになり、泣き別れが発生しないようになる。このように拡張ユニット4のユニット間同期部114が同期リフレッシュと内部処理とを同期させることで、同期リフレッシュによるデバイスへのアクセスと、内部処理によるそのデバイスへのアクセスとが同時には発生しないようになる。つまり、拡張ユニット制御部113は待ち時間中のデバイスへのアクセスが排他または調停される。この排他・調停機能は、ユニット間同期部114に内蔵されてもよいが、拡張ユニット制御部113に内蔵されてもよい。排他・調停機能(禁止機能)は、同期周期の開始タイミングから所定の待ち時間を計時するタイマやカウンタを備えていてもよい。
なお、所定の待ち時間内に同期リフレッシュが完了しない場合や、そもそも所定の待ち時間を設けない場合などでは、同期リフレッシュが完了する前に内部処理が開始されてしまうことがあろう。この場合は、上述したダブルバッファ構成が有効である。つまり、同期リフレッシュは第1バッファ121に対して実行され、拡張ユニット4の内部処理による第1バッファ121へのアクセスは排他または調停される。つまり、同期リフレッシュによるアクセスよりも後に発生したアクセスは同期リフレッシュによるアクセスが完了するまで待たされることになる。同様に、拡張ユニット4の内部処理は第2バッファ122にアクセスし、同期リフレッシュによる第2バッファ122へのアクセスは排他または調停される。つまり、内部処理によるアクセスよりも後に発生した同期リフレッシュによるアクセスは内部処理によるアクセスが完了するまで待たされることになる。第1バッファ121と第2バッファ122のデバイス値の更新はバッファ更新部116によってユニット間同期タイミング(同期周期の開始タイミング)で実行される。これによって、複数のデバイス値の泣き別れが抑制される。上述したように、バッファメモリUGについてもダブルバッファ構成が採用されてもよい。
<デバイス値の伝達遅延時間>
デバイス値の伝達遅延時間については一定時間に制御されることが望ましいことがある。上述したようにユニット間同期は、基本ユニット3と拡張ユニット4との間における応答性のバラツキを小さくするために実行される。しかし、基本ユニット3の制御周期と拡張ユニット4の制御周期とを同期させるだけでは不十分なことがある。つまり、基本ユニット3と拡張ユニット4との間におけるデバイス値の伝達遅延時間が一定になれば、さらに応答性のバラツキが小さくなる。上述したように複数のデバイス値の泣き別れは、これらのデバイス値それぞれの伝達遅延時間が一致しないために発生することが多い。特に、これらのデバイス値に対する内部処理によるアクセスが非同期で発生することが原因となりやすい。
そこで、上述したように同期リフレッシュの実行タイミングと内部処理の実行タイミングとを同期させることで、デバイスに対する非同期アクセスが抑制され、伝達遅延時間のバラツキが小さくなる。なお、伝達遅延時間のバラツキを小さくするためには、上述したダブルバッファ構成も有効である。あるデバイスに対する同期リフレッシュによるアクセスと、拡張ユニット4の内部処理によるアクセスとが競合しなくなるため、基本ユニット3と内部処理による非同期アクセスが生じないようになる。よって、伝達遅延時間のバラツキが小さくなる。
図13はダブルバッファの動作を説明する図である。ここでは基本ユニット3に対して入力ユニットである第1拡張ユニットと出力ユニットである第2拡張ユニットが接続されているものとする。同期周期の開始時点では、第1拡張ユニットの第1バッファ121にはデバイス値としてX0が格納されており、第2バッファ122にはX1が格納されている。同様に、第2拡張ユニットの第1バッファ121にはデバイス値としてY0が格納されており、第2バッファ122にもY0が格納されている。
ユニット間同期のための割り込みが発生すると、第1拡張ユニットのバッファ更新部116は第2バッファ122のデバイス値を第1バッファ121にコピーする。なお、出力ユニットである第2拡張ユニットはこの時点でバッファ間のコピーを実行しなくてもよい。基本ユニット3の第2更新部76はまず、同期リフレッシュのうち入力リフレッシュを実行する。つまり、第2更新部76は第1拡張ユニットの第1バッファ121からデバイス値を読み出し、第1拡張ユニットに割り付けられた第2デバイスに82コピーする。
次に、第2更新部76は、同期リフレッシュのうち出力リフレッシュを実行する。つまり、第2更新部76は第2拡張ユニットの第1バッファ121からデバイス値を読み出し、第2拡張ユニットに割り付けられた第2デバイス82にコピーする。
割り込みが発生したタイミングから所定時間が経過すると、基本ユニット3のユニット間同期部73と第1拡張ユニットおよび第2拡張ユニットのユニット間同期部114がお互いの制御周期を位相レベルで一致させる。この同期処理が完了した時点、またはこの同期処理の開始時点に、第1拡張ユニットおよび第2拡張ユニットの拡張ユニット制御部113は、内部処理を開始する。図13では、同期処理の開始時点で内部処理が開始されるように制御されている。なお、第2拡張ユニットのバッファ更新部116は、内部処理の開始タイミングで第1バッファ121のデバイス値を第2バッファ122にコピーする。
その後、第1拡張ユニットの拡張ユニット制御部113は内部処理の結果に応じて第2バッファ122のデバイス値を更新する。第2拡張ユニットの拡張ユニット制御部113は第2バッファ122のデバイス値を参照し、デバイス値に応じて内部処理を実行する。
なお、入力リフレッシュを実行し、次に、ユニット間同期(ユニット間同期プログラム)や内部処理を実行し、最後に出力リフレッシュを実行することも考えられる。この場合、第1拡張ユニットと第2拡張ユニットとの間でデバイス値を伝達すると、2つの同期周期が必要になる。つまり、1つ目の同期周期において第1拡張ユニットから基本ユニット3にデバイス値を伝達し、その後、内部処理が実行されて、基本ユニット3からデバイス値が第2拡張ユニットに伝達される。第2拡張ユニットは次の同期周期においてデバイス値を参照し、内部処理を実行する。よって、2つの同期周期が必要になる。一方で、図13に示すように、入力リフレッシュを実行し、次に出力リフレッシュを実行し、最後にユニット間同期や内部処理を実行すると、1つの同期周期の遅延で済むといった利点がある。つまり、1つ目の同期周期において第1拡張ユニットから基本ユニット3にデバイス値が伝達され、その後、基本ユニット3からデバイス値が第2拡張ユニットに伝達され、そのデバイス値が内部処理よって参照可能となる。よって、1つの同期周期内で、第1拡張ユニットと第2拡張ユニットとがデバイス値を送受信できるようになる。ただし、内部処理は割り込みが発生したタイミングから所定の待ち時間が経過するまで待ってから実行される必要がある。
第1拡張ニットと第2拡張ユニットとが通信する必要がある事例としては位置決めユニットと、位置決めユニットにトリガーを与える入力ユニットとを含むPLC2が考えられる。より具体的には、入力ユニットのセンサでワーク(検査対象物)を検知すると、検知したことを示すデバイス値が基本ユニット3に伝達され、さらに位置決めユニットに伝達される。位置決めユニットはこのデバイス値に基づいてモータなどを起動し、位置決めを実行する。
このような複数の拡張ユニット間でのデバイス値の通信における遅延を短くするには、入力リフレッシュと出力リフレッシュを実行してからユニット間同期を実行する方が有利であろう。とりわけ、位置決めユニットのように高速動作が要求されるユニットが関与する、拡張ユニット間でのデバイス値の通信では、このような処理の順番が向いている。
<ビットデバイスとワードデバイスのリフレッシュ>
デバイスやバッファメモリには1ビットのデバイス値を記憶するものと、1ワードのデバイス値を記憶するものとがある。つまり、リフレッシュの対象となるものにはビット型のものやワード型のものが混在している。このような場合にも上述した順序性が必要となることがある。順序性の要件を満たす方法としては、デバイス値の送信側が送信すべきデバイス値をデバイスに格納すると、フラグをセットする。伝送路においては、デバイス値が先に伝送され、その後でフラグが伝送される。受信側は、フラグがセットされたことを認識すると、デバイスからデバイス値を読み出す。これにより、受信側はデバイス値を少ない遅延時間でもって読み出せるようになる。なお、フラグはビット型のデバイスで実現されうる。つまり、ワードデバイスに格納された伝送すべきワードデータ(ワードデバイス値)を先に転送し、フラグを格納したビットデバイスのデバイス値を後から転送することが要求されることがある。もし、フラグを先に転送してしまうと、古いワードデバイス値が読み出されてしまうことがあるからである。
ユニット間同期よりも高い優先度の割り込みが同期リフレッシュの実行中に発生することがある。この場合、入力デバイスに関してはワードデバイスが先に更新され、その後でビットデバイスが更新される。出力デバイスに関しても同様に順序性が要求される。この場合は、ビットデバイスが先に転送され、ワードデバイスが後に転送される。なお、基本ユニット3の基本ユニット制御部70や拡張ユニット4の拡張ユニット制御部113は、同期リフレッシュが実行されている期間での他の手段による割り込みを禁止してもよい。
なお、フラグとなるデバイスにダブルバッファ構成を適用してもよい。この場合、上述したビットデバイスとワードデバイスの更新順序が逆になる。ここでは、ビットデバイスとワードデバイスについて説明したが、ワードデバイスをビットデバイスとして使用するケースでも本実施例は適用可能である。つまり、本実施例は、ワードデバイスしか存在しないケースでもワードデバイス間の更新順序を維持するためにも使用可能である。
<内部処理の延期>
拡張ユニット4のユニット間同期部114は延期部115を備えていてもよい。同期リフレッシュが完了していないにもかかわらず、内部処理が開始されてしまうと、上述した泣き別れ問題が発生しうる。そこで、ユニット間同期部114は同期リフレッシュが所定の待ち時間で完了しなかったことを検知すると、内部処理の発生タイミングを延期させてもよい。なお、延期時間は動的に決定されてもよいし、静的に決定されていてもよい。前者では、ユニット間同期部114が同期リフレッシュの完了を検知すると、内部処理を開始させる。後者では、ユニット間同期部114が所定の延期時間の経過を待って、内部処理を開始させる。
同期リフレッシュの遅延は、フロー制御に伴うリトライなどが原因で発生することがある。このような場合に延期部115は有用であるが、代わりに上述したダブルバッファ構成が採用されてもよい。ダブルバッファ構成を採用することで、同時性の問題や順序性の問題、さらには伝達遅延時間のバラツキ問題も緩和される。
<一括リフレッシュやスキャンタイムを拡張ユニットの制御周期に同期させること>
上述した実施例はユニット間同期により基本ユニット3の制御周期と拡張ユニット4の制御周期とが整合されるが、一括リフレッシュやスキャンタイムはこれらとは非同期で実施されてもよい。しかし、ユニット間同期を実行するためには割り込みが必要となる。もし、拡張ユニット4の制御周期に対して、一括リフレッシュやスキャンタイムも同期させることができれば、割り込みが不要となろう。
図14は一括リフレッシュやスキャンタイムを拡張ユニットの制御周期に同期させる処理を示すフローチャートである。この処理は基本ユニット3のCPU10で実行される。
S15でCPU10(第1更新部75)は一括入力リフレッシュを実行する。一括入力リフレッシュとは、入力デバイスについての上述した一括リフレッシュである。S16でCPU10(プログラム実行部71)はラダープログラム78を実行する。S17でCPU10(第1更新部75)は一括出力リフレッシュを実行する。一括出力リフレッシュとは、出力デバイスについての上述した一括リフレッシュである。S18でCPU10(基本ユニット制御部70)はEND処理を実行する。END処理は周辺処理とも呼ばれ、外部インターフェースからのデータの取得やロギング処理によるデータの収集などである。END処理も同期周期に連動して実行されるようになる。S19でCPU10(ユニット間同期部73)はユニット間同期を実行するタイミングになったかどうかを判定する。ユニット間同期タイミングが到来すると、ユニット間同期部73は、ユニット間同期の対象として指定されている拡張ユニット4のユニット間同期部114と同期処理を実行し、お互いの制御周期を一致させる。その後、S15に戻る。つまり、ユニット間同期によって、基本ユニット3と拡張ユニット4の制御周期が一致するともに、拡張ユニット4の制御周期とスキャンタイミングも同期することになる。
このようにユニット間同期をトリガーとしてラダープログラム78のスキャンが実行されるため、スキャンタイムは拡張ユニット4の制御周期に対して同期することになる。なお、図14に示してフローチャートからわかるように、同期周期とスキャンタイムはほぼ同じ長さとなる。
図15は一括リフレッシュやスキャンタイムを拡張ユニットの制御周期に同期させる他の処理を示すフローチャートである。この処理は基本ユニット3のCPU10で実行される。図14と比較すると、同期リフレッシュも実行される点が特に異なっている。
S20でCPU10(第2更新部76)は同期リフレッシュを実行する。S21でCPU10(第1更新部75)は一括リフレッシュを実行する。一括リフレッシュには一括入力リフレッシュと一括出力リフレッシュとが含まれている。S22でCPU10(プログラム実行部71)はラダープログラム78を実行する。S23でCPU10(基本ユニット制御部70)はEND処理を実行する。S24でCPU10(ユニット間同期部73)は基本ユニットタイマ88のタイマ値に基づき、ユニット間同期を実行するタイミングになったかどうかを判定する。ユニット間同期タイミングが到来すると、ユニット間同期部73は、ユニット間同期の対象として指定されている拡張ユニット4のユニット間同期部114と同期処理を実行し、お互いの制御周期を一致させる。その後、S20に戻る。このようにユニット間同期に連動して同期リフレッシュと一括リフレッシュとが実行されてもよい。これにより割り込みプログラムを使用することなく、一括リフレッシュやスキャンタイムを拡張ユニットの制御周期に同期させることが可能となる。
なお、スキャンタイムは固定長のものと可変長のものとがある。プログラム作成支援装置1の設定データ作成部84は、固定長のスキャンタイムにしたがってラダープログラム78を実行することをユーザによって指示されたときは、さらに、スキャンタイムをユニット間同期によって同期させるか、同期させないかをユーザの指示にしたがって選択してもよい。どちらが選択されたかは設定データ79に格納される。基本ユニット3のCPU10は設定データ79を参照することで、どちらが選択されたかを認識に、選択された動作モードにしたがってスキャンを実行する。なお、スキャンタイムをユニット間同期によって同期させることが選択された場合、設定データ作成部84は、ユーザ指示にしたがって同期周期を設定してもよい。スキャンタイムをユニット間同期によって同期させることが選択されていない場合、設定データ作成部84は、ユーザ指示にしたがってスキャンタイムを設定してもよい。
<バッファメモリの同期リフレッシュ>
すでに所々で触れたように、デバイスだけでなく、バッファメモリUGについても同期リフレッシュが適用されてもよい。一般にデバイスはリフレッシュにより更新されるが、バッファメモリUGは更新されない。そのため、従来は、バッファメモリUGに関しては、必要に応じてラダープログラム78内でダイレクト通信を実行するための命令が記述される必要があった。なお、基本ユニット3は複数の占有デバイスを有しており、そのうちの幾つかが拡張ユニット4に対して割り付けられる。よって、拡張ユニット4のデバイスに対して割り付けられていない基本ユニット3のデバイス(第3デバイス83)については、バッファメモリUGを割り付けることでバッファメモリUGもリフレッシュすることが可能となる。これにより、バッファメモリUGについても同期リフレッシュの対象となる。
プログラム作成支援装置1の設定データ作成部84はユーザ指示に応じてバッファメモリUGに対応する第3デバイス83を選択する。たとえば、設定データ作成部84は、拡張ユニットごとの設定データを作成するために、デバイスのリストを表示部7に表示する。このリストには、各デバイスの識別情報、たとえば、デバイス番号(例:DM31000など)が列挙される。また、各デバイスの隣の欄には、対応するバッファメモリUGを指定するための欄が設けられてもよい。この欄には、バッファメモリUGの識別情報(例:UG2158など)が操作部8から入力される。なお、設定データ作成部84はバッファメモリUGに対応する第3デバイス83を一括リフレッシュの対象とするか、同期リフレッシュの対象とするかを、ユーザ指示に応じて選択する。設定データ作成部84はユーザによって選択されたリフレッシュの方式についても設定データ79に書き込む。
このように、バッファメモリUGが第3デバイス83に関連付けられるため、第2更新部76は設定データ79にしたがって、バッファメモリUGも第2デバイスとして同期リフレッシュを実行する。また、一括リフレッシュの対象として選択されたバッファメモリUGについては第1デバイスとして第1更新部75が一括リフレッシュを実行する。
バッファメモリUGに関しても上述した同期リフレッシュを実行することで同時性や順序性、伝達遅延時間の一定性などの問題が解決ないしは緩和される。
占有デバイスの同期リフレッシュとバッファメモリUGの同期リフレッシュが同期周期内のどのタイミングで実行されるかについて説明する。たとえば、第2更新部76は、入力デバイスについて同期リフレッシュを実行し、次に、入力バッファメモリについて同期リフレッシュを実行する。第2更新部76は、出力バッファメモリについて同期リフレッシュを実行し、次に、出力デバイスについて同期リフレッシュを実行する。このように入力系が先にリフレッシュされ、その後に、出力系がリフレッシュされてもよい。占有デバイスが先にリフレッシュされ、その後にバッファメモリがリフレッシュされてもよい。第2更新部76は、入力デバイスについて同期リフレッシュを実行し、次に、出力デバイスについて同期リフレッシュを実行する。さらに、第2更新部76は、出力バッファメモリについて同期リフレッシュを実行し、次に入力バッファメモリについて同期リフレッシュを実行する。最後に、ユニット間同期部73がユニット間同期を実行する。なお、上述したように拡張ユニット間での通信に関しては後者の事例の方が有利であろう。
ところでバッファメモリUGについてダイレクト通信で更新しようとすると、泣き別れ問題が発生することがあった。これはバッファメモリUGのサイズが32ビットなどに制限されているときに発生しうる。そこで、上述したダブルバッファ構成などの泣き別れ対策をバッファメモリUGにも適用することで、泣き別れ問題が緩和される。
<まとめ>
図1などを用いて説明したように、PLC2は、ユーザプログラムをスキャン毎に繰り返し実行する基本ユニット3と、基本ユニット3に接続される拡張ユニット4とを有する。図8などを用いて説明したように、拡張ユニット4は、
外部機器が接続されるインターフェース123と、インターフェース123を介した外部機器からの入力値またはインターフェース123を介した外部機器への出力値に関するデバイス値が格納され、基本ユニット3とデータ共有するためのデバイスが割り付けられた記憶部である記憶装置111と、クロックを計数して時間を計測する拡張ユニットタイマ119を有している。図7などを用いて説明したように、基本ユニット3は基本ユニットタイマ88、ユニット間同期部73、第1更新部75および第2更新部76を有している。ユニット間同期部73は拡張ユニットタイマ119のタイマ値と基本ユニットタイマ88のタイマ値を同期させる。第1更新部75はスキャン毎のリフレッシュの期間内で拡張ユニット4が保持しているデータと基本ユニット3が保持しているデータとを一致させる。第2更新部76はユニット間同期部73により拡張ユニットタイマ119のタイマ値と同期した基本ユニットタイマ88のタイマ値に基づいてスキャン中に定周期で実行される処理の期間内で拡張ユニット4が保持しているデータと基本ユニット3が保持しているデータとを一致させる。なお、ユーザプログラムであるラダープログラム78に記述される拡張ユニット4に割り付けられたデバイスは、第1更新部75による更新の対象および/または第2更新部76による更新の対象として設定可能に構成される。これによりユーザのプログラミングの負担が軽減され、ユーザビリティが向上する。
見方を変えれば、本実施例では、一括リフレッシュの対象に設定可能なデバイスや同期リフレッシュの対象に設定可能なデバイス、あるいは、一括リフレッシュの対象にも同期リフレッシュの対象にも設定可能なデバイスが用意されたことになる。その結果、平場のラダープログラム78の記述をユニット間同期プログラムにコピーした場合であっても、平場のラダープログラム78に記述されたデバイスを、ユニット間同期リフレッシュの対象に設定変更するだけで、リフレッシュが実行される。よって、プログラムの変更作業が軽減される。また、ユニット間同期リフレッシュの対象に含めるかどうかはユーザが自由に設定可能であるため、一部のデバイスをユニット間同期リフレッシュの対象から外すことで(図16には拡張ユニットに割り付けられた複数のデバイスを一括して対象に設定したり、対象外に設定したりする例が示されている。)、ユニット間同期リフレッシュ期間の増大を抑制することができる。
このように、デバイスは、第1更新部75による更新の対象として設定されてもよいし、第2更新部76による更新の対象として設定されてもよい。基本ユニット制御部70や設定データ作成部84は、デバイスを更新する手段として第1更新部75と第2更新部76とのうち少なくとも一方を選択する選択手段として機能してもよい。この更新部の選択は一括リフレッシュの対象とするか、それとも同期リフレッシュの対象とするかの選択に相当し、更新タイミングの選択にも相当しよう。このように基本ユニット3と拡張ユニット4との間で共有すべきデータの更新タイミングを選択可能とすることで、ユーザビリティを向上させることが可能となる。つまり、一括リフレッシュ期間だけでなく、ユーザプログラムが実行されている期間などの他の期間において同期リフレッシュが実行されるようになる。その結果、一括リフレッシュ期間が長くなりすぎるといったことは起きにくくなる。なお、いくつかのデバイスについては同期リフレッシュと一括リフレッシュの双方が適用されてもよい。
基本ユニット3は、基本ユニット3が有する内部機能の制御タイミングと拡張ユニット4の制御タイミングとを同期させる同期処理を実行するユニット間同期部73をさらに有している。ユニット間同期部73は、例えばタイマ等によって実現される。第2更新部76は、ユーザプログラムが実行されている期間内でユニット間同期部73が同期処理を実行するタイミングになると、拡張ユニット4が保持しているデータと基本ユニット3が保持しているデータとを一致させるよう同期リフレッシュを実行する。このようにユニット間同期のタイミングで同期リフレッシュが実行されるようになる。ユーザプログラム内でデバイスやバッファメモリのダイレクト通信を行うことも可能であるが、これはプログラムコード(ラダー図)の流用性が乏しく、また複雑なプログラミングが必要になる。一方で、ユニット間同期のタイミングで同期リフレッシュを実行すれば、一括リフレッシュ用のプログラムコードと同様の簡易なコードによってデバイスやバッファメモリの同期リフレッシュが可能となる。よって、ユーザのプログラミングに関する負担が軽減されよう。
図6や図10などを用いて説明したように、ユニット間同期部73は、ユニット間同期のタイミングが到来するとユニット間同期を実行する。これによりユーザプログラムの実行期間中であってもユニット間同期が実行されるため、基本ユニット3の制御タイミングと拡張ユニット4の制御タイミングとのずれを小さくすることが可能となる。また、ユーザプログラムの実行期間中においてユニット間同期に付随して同期リフレッシュが実行されるようになり、一括リフレッシュの期間を待つことなく、デバイスやバッファメモリを更新できるようになる。
図14や図15を用いて説明したように、基本ユニット3は、ユニット間同期をトリガー(トリガ)としてスキャンを実行してもよい。つまり、基本ユニット3は、拡張ユニット4に適用されている制御周期に対して第1更新部75が更新を実行するタイミングを同期させるユニット間同期部73をさらに有していてもよい。ユニット間同期部73は基本ユニット3の制御周期に対して拡張ユニット4に適用されている制御周期を同期させるものである。しかし、ユニット間同期部73は拡張ユニット4に適用されている制御周期に対して第1更新部75が更新を実行するタイミングを同期させるように動作してもよい。拡張ユニット4の内部処理は拡張ユニット4の制御周期に同期して実行される。また、デバイスやバッファメモリに格納されるデータは内部処理の動作に必要なものであったり、内部処理の結果であったりする。拡張ユニット4の制御周期にしたがってデータをリフレッシュすれば、データの伝達遅延時間が削減されよう。
基本ユニット3および拡張ユニット4はそれぞれデータを保持するメモリであるデバイスメモリを有し、デバイスメモリは、拡張ユニット4のデータを基本ユニット3へ伝達するための入力デバイスメモリと、基本ユニット3のデータを拡張ユニット4に伝達するための出力デバイスメモリとを含む。第1更新部75および第2更新部76は、拡張ユニット4のデバイスメモリに記憶されているデータを基本ユニット3のデバイスメモリへコピーすることで入力デバイスメモリのデータを更新するとともに、基本ユニット3のデバイスメモリに記憶されているデータを拡張ユニット4のデバイスメモリへコピーすることで出力デバイスメモリのデータを更新する。これにより入力デバイスや出力デバイスについて一括リフレッシュと同期リフレッシュとが実行されるようになる。このように第1更新部75および第2更新部76のリフレッシュ動作はよく似ているため、一括リフレッシュ用のコードを同期用のリフレッシュ用のコードとして流用しやすくなる。
入力デバイスメモリは拡張ユニット4が有する機能の状態を表すデータを記憶するものである。たとえば、拡張ユニット4の被制御装置16がセンサなどであれば、センサの検知結果(検知状態)を示すデバイス値が入力デバイスメモリに格納されることになる。出力デバイスメモリは拡張ユニット4が有する機能の制御するデータを記憶するものである。たとえば、拡張ユニット4の被制御装置16がモータなどであれば、そのモータの回転数などを示すデバイス値が出力デバイスメモリに格納されるようになる。
図6などを用いて説明したように、一括リフレッシュの期間において第1更新部75が出力デバイスメモリに保持されているデータを更新する。次に、第1更新部75が入力デバイスメモリに保持されているデータを更新する。その次にユーザプログラムが実行されている期間内において第2更新部76がデータを更新してもよい。出力デバイスメモリには内部処理によって参照されるデータや命令が格納されているため、一括リフレッシュの期間においては出力デバイスメモリが先にリフレッシュされてもよい。もちろん、入力デバイスメモリが先にリフレッシュされてもよい。
第2更新部76は、基本ユニット3に設けられ、データを保持するメモリであるデバイスメモリと、拡張ユニット4に設けられ、一括リフレッシュの対象とならないデータを保持するバッファメモリとの間でデータを一致させてもよい。このようにデバイスとバッファメモリとを対応付けることで、バッファメモリについてもあたかもデバイスであるかのようにリフレッシュ可能となる。
基本ユニット制御部70は、第2更新部76による更新の対象となるデータを指定する更新対象指定情報(設定データ79)を記憶する記憶装置12を有していてもよい。第2更新部76は、設定データ79によって指定されたデータをユーザプログラムが実行されている期間内で同期リフレッシュする。第1更新部75は、設定データ79によって指定されていないデータを一括リフレッシュの期間で一括リフレッシュする。このようにデバイスやバッファメモリについて適用されるリフレッシュのタイミングは設定データ79によって保持されてもよい。
設定データ作成部84に関して説明したように、設定データ79は、基本ユニット3に接続され、ユーザプログラムを作成して当該基本ユニット3に転送するプログラム作成支援装置上で作成された情報であってもよい。プログラム作成支援装置1の操作部8は基本ユニット3の操作部6よりも操作がしやすい。また、プログラム作成支援装置1の表示部7は基本ユニット3の表示部5よりも表示可能な情報量が多い。よって、デバイスやバッファメモリについて適用されるリフレッシュのタイミングを選択しやすくなるであろう。
第2更新部76がデータを更新している間は第2更新部76以外の他の手段による当該データの読み書きを排他または調停する排他・調停手段として基本ユニット制御部70やデバイス制御部72が機能してもよい。上述したように同期リフレッシュの実行中にデータが変更されてしまうと、同時性の問題が発生しうる。よって、他の手段によるデータの読み書きを排他または調停することで、同時性の問題を解決できるようになろう。
デバイス制御部72は、相互に更新の連動性を要求される複数のデータが第2更新部76によって更新されている期間においては第2更新部76以外の他の手段による当該複数のデータの読み書きを排他または調停してもよい。これにより同時性の問題が解決しよう。
デバイス制御部72は、それぞれ基本ユニット3と拡張ユニット4との間におけるデータの伝達時間(伝達遅延時間)をほぼ一定にすることが要求される複数のデータが第2更新部76によって更新されている期間においては第2更新部76以外の他の手段による当該複数のデータの読み書きを排他または調停してもよい。これにより複数のデバイス値についての伝達遅延時間のバラツキが小さくなろう。
デバイス制御部72は、それぞれ更新順序が定められている複数のデータが第2更新部76によって更新されている期間においては第2更新部76以外の他の手段による当該複数のデータの読み書きを排他または調停してもよい。たとえば、複数のデータは、ビット型のデータとワード型のデータであってもよい。第2更新部76は、基本ユニット3のビット型のデータとワード型のデータを拡張ユニット4へコピーするときはビット型のデータをコピーしてからワード型のデータをコピーしてもよい。また、第2更新部76は、拡張ユニット4のビット型のデータとワード型のデータを基本ユニット3へコピーするときはワード型のデータをコピーしてからビット型のデータをコピーしてもよい。これにより上述した順序性の問題が解決するであろう。なお、ワード型のデータの一部がビット型のデータとして使用されるケースにも本実施例は適用可能である。
拡張ユニット4は、第2更新部76における更新処理の遅延時間に応じて当該拡張ユニット4で実行される内部処理の開始を遅延させてもよい。同期リフレッシュの対象となるデバイスやバッファメモリの数が多くなったり、フロー制御によるデータの再送が多く発生したりすると、同期リフレッシュの時間が長くなる。その結果、所定の待ち時間を過ぎても同期リフレッシュが完了しなくなってしまう。同期リフレッシュが完了していないにもかかわらず、内部処理を開始してしまえば、上述した同時性の問題が発生しうる。よって、このよう場合は内部処理を遅延させて、同時性等の問題を解決してもよい。
デバイス制御部72は、第2更新部76がデータを更新している間は割り込み処理を禁止してもよい。同期リフレッシュの最中に割り込みが入ってしまうと、同時性の問題や伝達遅延時間のバラツキの問題などが発生しやすくなる。同期リフレッシュの最中は割り込みを禁止することで、同時性の問題や伝達遅延時間のバラツキの問題などが緩和されよう。
拡張ユニット4は、基本ユニット3に設けられている記憶装置12にデータを保持していてもよい。一般にデバイスやバッファメモリは基本ユニット3と拡張ユニット4との双方に設けられるために、リフレッシュが必要となる。しかし、拡張ユニット4の第1デバイス118や第2デバイス120が基本ユニット3の記憶装置12に設けられ、記憶装置12内でリフレッシュが実行されてもよい。これは、拡張ユニット4のデバイスメモリやバッファメモリがどこあるかは問題とならないことを意味する。このように、基本ユニット3のデバイスメモリやバッファメモリと拡張ユニット4のデバイスメモリやバッファメモリとが同一の記憶装置内に配置されていたとしても、上述した実施例は適用可能である。
ところで、基本ユニット3の記憶装置12は、ユーザプログラム(ラダープログラム78)と、拡張ユニット4の内部処理の実行タイミングと同期して実行される同期プログラム(制御プログラム77の一部)とを記憶するプログラム記憶手段として機能してもよい。これらはプログラム実行手段であるCPU10によって実行される。とりわけ、ラダープログラム78についてプログラム実行部71で実行される。第1デバイス81や第2デバイス82はユーザプログラムにおいて拡張ユニット4の内部処理に割り付けられている第1デバイスメモリの一例である。
PLC2の基本ユニット3または拡張ユニット4は、第1デバイスメモリに記憶されているデータと同一のデータを記憶するように制御される第2デバイスメモリを有している。第2デバイスメモリは、たとえば、記憶装置12に確保され、拡張ユニット4によってアクセスされる。または、第2デバイスメモリは、拡張ユニット4の記憶装置111に確保された第1デバイス118や第2デバイス120であってもよい。第1更新部75や第2更新部76は第1デバイスメモリに記憶されているデータと第2デバイスメモリに記憶されているデータとが一致するように更新処理を実行する更新手段として機能する。ただし、第1更新部75や第2更新部76は拡張ユニット4のCPU110によって実現されていてもよい。拡張ユニット4のユニット間同期部114は自己または拡張ユニット制御部113が管理する同期周期にしたがって基本ユニット3に割り込みを実行し、同期リフレッシュとユニット間同期を実行してもよい。なお、プログラム作成支援装置1の設定データ作成部84や基本ユニット3の操作部6などは、一括リフレッシュの期間と同期リフレッシュの期間とのうちのいずれの期間で更新処理を実行するかを設定する設定手段として機能する。設定データ79は、拡張ユニット4からアクセス可能な記憶装置12、記憶装置111に格納され、拡張ユニット制御部113やユニット間同期部114により読み出されてもよい。
基本ユニット3は、基本ユニット3の制御周期と拡張ユニット4の制御周期とを同期させるユニット間同期部73と、ユニット間同期部73が同期処理を実行する同期周期における所定期間において、拡張ユニット4が保持しているデータと基本ユニット3が保持しているデータとが一致するように更新する第2更新部75とを有する。第2更新部75は、相互に更新の連動性を要求される複数のデータまたは予め定められた更新順序にしたがって更新されることを要求される複数のデータを更新してもよい。これにより同時性の問題や順序性の問題などが緩和されよう。
なお、リアルタイム性が要求されないようなデータを扱う拡張ユニットについては、従来通り、一括リフレッシュされればよい。一方で、モーションユニット(位置決めユニット)などリアルタイム性や高速動作が要求される拡張ユニットについては、同期リフレッシュの対象とされてもよい。とりわけ、同期周期が短くなると、1つのスキャンタイムにおいて多数の回数にわたって同期リフレッシュが実行されることになる。よって、同期リフレッシュの対象となる拡張ユニットやそのデバイスが増えれば増えるほど、スキャンタイムが延びてしまったり、内部処理の開始が遅れてしまったりする。よって、同期周期がスキャンタイムより短い場合は、同期リフレッシュの対象を絞ることが望ましいだろう。これは、第2拡張ユニット4のデータのうち第2更新部76によって更新されるデータと第1更新部75によって更新されるデータとを選択する選択手段を設けることで、ユーザが同期リフレッシュの対象を絞ってもよい。
拡張ユニット4は、第2更新部76がデータの更新処理を完了した後で当該データを参照して内部処理を実行してもよい。これは、データの更新処理が完了する前にそのデータを内部処理が使用してしまうと同時性の問題などが発生するからである。なお、第2更新部76は、拡張ユニット4が内部処理を実行していない期間にデータの更新処理を実行してもよい。これにより同時性の問題が緩和されよう。
拡張ユニット4は、第2更新部76によって更新されるデータを記憶する第1バッファ121と、当該拡張ユニット4の内部処理によって参照されるデータを記憶する第2バッファ122とを備えていてもよい。この場合、バッファ更新部116は、ユニット間同期処理が実行されるときに第1バッファ121に記憶されているデータと第2バッファ122に記憶されているデータとが一致するように更新する第3更新手段として機能する。第2更新部76は、バッファ更新部116が更新処理を完了した後で、更新処理を実行する。たとえば、第2更新部76は、同期周期の開始タイミングから所定期間が経過してから同期リフレッシュを実行する。所定期間は、バッファ更新部116が更新処理を完了するのに十分な期間であり、予め設定される。
拡張ユニット4は、ユニット間同期部114による同期処理が遅延すると、内部処理の開始タイミングを延期する延期部115をさらに有していてもよい。同期処理の遅延は、伝送路でのエラー等、突発的な事象が原因となることが多い。そのため、常に一定期間を待たせるよりも、遅延時間に応じて内部処理を遅らせた方が有利であろう。
図14や図15を用いて説明したように、基本ユニット3は、ユニット間同期部73が同期処理を実行するタイミングになると、一括リフレッシュの期間に遷移してもよい。これにより、ユニット間同期により獲得された同期周期に対してスキャンの開始タイミングを整合させることが可能となる。
上述したように、基本ユニット3はユーザプログラムにおいて拡張ユニット4の内部処理に割り付けられているデバイスメモリを有している。また、基本ユニット3または拡張ユニット4は、デバイスメモリに記憶されているデータと同一のデータを記憶するように制御されるバッファメモリUGを有していてもよい。なお、基本ユニット3にバッファメモリUGが配置される場合、拡張ユニット4からこのバッファメモリUGはアクセスされ、データを読み書きされることになろう。第1更新部75や第2更新部76は、拡張ユニット4の制御周期に同期して、デバイスメモリに記憶されているデータとバッファメモリUGに記憶されているデータとが一致するように更新処理を実行してもよい。このようにバッファメモリUGをデバイスに割り付けることで、バッファメモリUGについてもあたかもデバイスのように一括リフレッシュや同期リフレッシュが適用可能となる。
上述したように複数の拡張ユニット4が基本ユニット3を介してデバイス値を送受信するときにも本発明は有利であろう。この場合、基本ユニット3は、少なくとも、基本ユニット3の制御周期と複数の拡張ユニット4の制御周期とを同期させるユニット間同期部73と、ユーザプログラムにおいて第1拡張ユニット4の内部処理に割り付けられており、当該第1拡張ユニット4から基本ユニット3に転送すべきデータを記憶する第1デバイスメモリと、ユーザプログラムにおいて第2拡張ユニット4の内部処理に割り付けられており、基本ユニット3から当該第2拡張ユニット4へ転送すべきデータを記憶する第2デバイスメモリとを有している。なお、図7では第1デバイス81や第2デバイス82はそれぞれ1つずつしか記載されていないが、これらは複数個あってもよい。よって、第1デバイスメモリや第2デバイスメモリとは、複数の第1デバイス81や複数の第2デバイス82に相当する。
第1拡張ユニット4は、第1デバイスメモリに記憶されているデータと同一のデータを記憶するように制御される第1バッファメモリを有していてもよい。第2拡張ユニット4は、第2デバイスメモリに記憶されているデータと同一のデータを記憶するように制御される第2バッファメモリを有していてもよい。図8には、第1デバイス118と第2デバイス120が例示されているが、これとは別にバッファメモリUGが記憶装置111に設けられている。図13が示すように、第1拡張ユニット4から入力されたデバイス値が基本ユニット3を介して第2拡張ユニット4に転送されてもよい。これを実現するために、第1更新部75または第2更新部76は、拡張ユニット4の制御周期に同期して、第1デバイスメモリに記憶されているデータと第1バッファメモリに記憶されているデータとが一致するように更新処理を実行し、次に、第2デバイスメモリに記憶されているデータと第2バッファメモリに記憶されているデータとが一致するように更新処理を実行する。なお、第1更新部75または第2更新部76は拡張ユニット4側に設けられていてもよい。第1拡張ユニット4は、第2更新部76が同期リフレッシュを完了した後で内部処理を開始する。同様に、第2拡張ユニット4は、第2更新部76が同期リフレッシュを完了した後で内部処理を開始する。これにより一つの同期周期の伝達遅延時間だけで複数の拡張ユニット間でのデバイス値の送受信が実現可能となる。

Claims (29)

  1. ユーザプログラムをスキャン毎に繰り返し実行する基本ユニットと、前記基本ユニットに接続される拡張ユニットとを有するプログラマブル・ロジック・コントローラであって、
    前記拡張ユニットは、
    外部機器が接続されるインターフェースと、
    前記インターフェースを介した前記外部機器からの入力値または前記インターフェースを介した前記外部機器への出力値に関するデバイス値が格納され、前記基本ユニットとデータ共有するためのデバイスが割り付けられた記憶部と、
    クロックを計数して時間を計測する拡張ユニットタイマと、
    を備え、
    前記基本ユニットは、
    クロックを計数して時間を計測する基本ユニットタイマと、
    前記拡張ユニットタイマと前記基本ユニットタイマのタイマ値を同期させる同期手段と、
    スキャン毎のリフレッシュの期間内で前記拡張ユニットが保持しているデータと前記基本ユニットが保持しているデータとを一致させる第1更新手段と、
    前記同期手段により前記拡張ユニットタイマのタイマ値と同期した前記基本ユニットタイマのタイマ値に基づいてスキャン中に定周期で実行される処理の期間内で前記拡張ユニットが保持しているデータと前記基本ユニットが保持しているデータとを一致させる第2更新手段と、
    を備え、
    前記ユーザプログラムに記述される前記拡張ユニットの前記デバイスは、前記第1更新手段による更新の対象および/または前記第2更新手段による更新の対象として設定可能に構成されることを特徴とするプログラマブル・ロジック・コントローラ。
  2. 前記デバイスは、前記第1更新手段による更新の対象および前記第2更新手段による更新の対象のいずれか一方に設定されることを特徴とする請求項1に記載のプログラマブル・ロジック・コントローラ。
  3. 前記デバイスを更新する更新手段として、前記第1更新手段および前記第2更新手段のうち少なくとも一方を選択する選択手段を備えることを特徴とする請求項1に記載のプログラマブル・ロジック・コントローラ。
  4. 前記基本ユニットは、前記ユーザプログラムと、前記同期手段により同期させた前記基本ユニットタイマのタイマ値に基づいて実行されるユニット間同期プログラムとを記憶するプログラム記憶部を備え、
    前記第2更新手段は、前記デバイスが前記ユニット間同期プログラムに記述されているときに、前記拡張ユニットが前記デバイスに保持しているデータと前記基本ユニットが保持しているデータとを一致させることを特徴とする請求項1に記載のプログラマブル・ロジック・コントローラ。
  5. 前記第2更新手段は、前記スキャン中において前記ユーザプログラムが実行されている期間であっても、前記拡張ユニットが保持しているデータと前記基本ユニットが保持しているデータとを一致させることを特徴とする請求項1に記載のプログラマブル・ロジック・コントローラ。
  6. 前記拡張ユニットタイマのタイマ値は、前記拡張ユニットの内部処理の開始タイミングとして使用され、
    前記拡張ユニットの内部処理は、前記外部機器からの入力値に基づいて前記デバイス値を演算する処理または前記デバイス値から前記外部機器への出力値を演算する処理であることを特徴とする請求項1ないし5のいずれか1項に記載のプログラマブル・ロジック・コントローラ。
  7. 前記第1更新手段は、前記同期手段によって前記拡張ユニットタイマのタイマ値と同期した前記基本ユニットタイマのタイマ値に基づくスキャン毎のリフレッシュの期間内で更新を実行することを特徴とする請求項1に記載のプログラマブル・ロジック・コントローラ。
  8. 前記基本ユニットおよび前記拡張ユニットはそれぞれデータを保持する記憶領域であるデバイスを有し、
    前記デバイスは、前記拡張ユニットのデータを前記基本ユニットへ伝達するための入力デバイスと、前記基本ユニットのデータを前記拡張ユニットに伝達するための出力デバイスとを含み、
    前記第1更新手段および前記第2更新手段は、前記拡張ユニットのデバイスに記憶されているデータであるデバイス値を前記基本ユニットのデバイスへコピーすることで前記入力デバイスのデータであるデバイス値を更新するとともに、前記基本ユニットのデバイスに記憶されているデータであるデバイス値を前記拡張ユニットのデバイスへコピーすることで前記出力デバイスのデータであるデバイス値を更新することを特徴とする請求項1ないし7のいずれか1項に記載のプログラマブル・ロジック・コントローラ。
  9. 前記入力デバイスは前記拡張ユニットが有する機能の状態を表すデータを記憶し、
    前記出力デバイスは前記拡張ユニットが有する機能を制御するデータを記憶することを特徴とする請求項8に記載のプログラマブル・ロジック・コントローラ。
  10. 前記リフレッシュの期間において前記第1更新手段が前記出力デバイスに保持されているデータと前記入力デバイスに保持されているデータを更新し、前記基本ユニットタイマのタイマ値に基づいてスキャン中に定周期で実行される処理の期間において前記第2更新手段が前記拡張ユニットに保持されているデータと前記基本ユニットに保持されているデータとを更新することを特徴とする請求項8または9に記載のプログラマブル・ロジック・コントローラ。
  11. 前記第2更新手段は、前記基本ユニットに設けられ、データを保持するメモリであるデバイスと、前記拡張ユニットに設けられ、前記リフレッシュの対象とならないデータを保持するバッファメモリとの間でデータを一致させることを特徴とする請求項1ないし7のいずれか1項に記載のプログラマブル・ロジック・コントローラ。
  12. 前記選択手段は、前記第2更新手段による更新の対象となるデータを指定する更新対象指定情報を記憶する記憶手段を有し、
    前記第2更新手段は、前記更新対象指定情報によって指定されたデータを更新し、
    前記第1更新手段は、前記更新対象指定情報によって指定されていないデータを前記リフレッシュの期間で更新することを特徴とする請求項3に記載のプログラマブル・ロジック・コントローラ。
  13. 前記更新対象指定情報は、前記基本ユニットに接続され、前記ユーザプログラムを作成して当該基本ユニットに転送するプログラム作成支援装置上で作成された情報であることを特徴とする請求項12に記載のプログラマブル・ロジック・コントローラ。
  14. 前記第2更新手段がデータを更新している間は前記第2更新手段以外の他の手段による当該データの読み書きを排他または調停する排他・調停手段をさらに有することを特徴とする請求項1ないし13のいずれか1項に記載のプログラマブル・ロジック・コントローラ。
  15. 前記排他・調停手段は、相互に更新の連動性を要求される複数のデータが前記第2更新手段によって更新されている期間においては前記第2更新手段以外の他の手段による当該複数のデータの読み書きを排他または調停することを特徴とする請求項14に記載のプログラマブル・ロジック・コントローラ。
  16. 前記排他・調停手段は、それぞれ前記基本ユニットと前記拡張ユニットとの間におけるデータの伝達時間を一定にすることが要求される複数のデータが前記第2更新手段によって更新されている期間においては前記第2更新手段以外の他の手段による当該複数のデータの読み書きを排他または調停することを特徴とする請求項14に記載のプログラマブル・ロジック・コントローラ。
  17. 前記排他・調停手段は、それぞれ更新順序が定められている複数のデータが前記第2更新手段によって更新されている期間においては前記第2更新手段以外の他の手段による当該複数のデータの読み書きを排他または調停することを特徴とする請求項14に記載のプログラマブル・ロジック・コントローラ。
  18. 前記複数のデータは、ビット型のデータとワード型のデータであり、
    前記第2更新手段は、前記基本ユニットのビット型のデータとワード型のデータを前記拡張ユニットへコピーするときはビット型のデータをコピーしてからワード型のデータをコピーし、前記拡張ユニットのビット型のデータとワード型のデータを前記基本ユニットへコピーするときはワード型のデータをコピーしてからビット型のデータをコピーすることを特徴とする請求項17に記載のプログラマブル・ロジック・コントローラ。
  19. 前記排他・調停手段は、前記第2更新手段がデータを更新している間は割り込み処理を禁止することを特徴とする請求項14ないし18のいずれか1項に記載のプログラマブル・ロジック・コントローラ。
  20. 前記拡張ユニットは、前記第2更新手段における更新処理の遅延時間に応じて当該拡張ユニットで実行される内部処理の開始を遅延させることを特徴とする請求項1ないし19のいずれか1項に記載のプログラマブル・ロジック・コントローラ。
  21. 前記拡張ユニットは、前記基本ユニットに設けられている記憶装置に前記データを保持していることを特徴とする請求項1ないし20のいずれか1項に記載のプログラマブル・ロジック・コントローラ。
  22. 前記拡張ユニットは、前記第2更新手段が前記データの更新処理が完了した後で当該データを参照して内部処理を実行することを特徴とする請求項1ないし21のいずれか1項に記載のプログラマブル・ロジック・コントローラ。
  23. 前記第2更新手段は、前記拡張ユニットが内部処理を実行していない期間に前記データの更新処理を実行することを特徴とする請求項1ないし22のいずれか1項に記載のプログラマブル・ロジック・コントローラ。
  24. 前記拡張ユニットは、
    前記第2更新手段によって更新される前記データを記憶する第1バッファと、
    当該拡張ユニットの内部処理によって参照されるデータを記憶する第2バッファと、
    前記同期手段が同期処理を実行するときに前記第1バッファに記憶されているデータと前記第2バッファに記憶されているデータとが一致するように更新する第3更新手段をさらに有し、
    前記第2更新手段は、前記第3更新手段が更新処理を完了した後で、更新処理を実行することを特徴とする請求項1に記載のプログラマブル・ロジック・コントローラ。
  25. 前記拡張ユニットは、
    前記同期手段による同期処理が遅延すると、前記拡張ユニットの内部処理の開始タイミングを延期する手段をさらに有することを請求項1に記載のプログラマブル・ロジック・コントローラ。
  26. 前記基本ユニットは、前記同期手段が同期処理を実行するタイミングになると、前記リフレッシュの期間に遷移することを特徴とする請求項1に記載のプログラマブル・ロジック・コントローラ。
  27. プログラマブル・ロジック・コントローラの拡張ユニットに接続され、ユーザプログラムをスキャン毎に繰り返し実行する基本ユニットであって、
    前記拡張ユニットは、
    外部機器が接続されるインターフェースと、
    前記インターフェースを介した前記外部機器からの入力値または前記インターフェースを介した前記外部機器への出力値に関するデバイス値が格納され、前記基本ユニットとデータ共有するためのデバイスが割り付けられた記憶部と、
    クロックを計数して時間を計測する拡張ユニットタイマと、
    を備えており、
    前記基本ユニットは、
    クロックを計数して時間を計測する基本ユニットタイマと、
    前記拡張ユニットタイマと前記基本ユニットタイマのタイマ値を同期させる同期手段と、
    スキャン毎のリフレッシュの期間内で前記拡張ユニットが保持しているデータと前記基本ユニットが保持しているデータとを一致させる第1更新手段と、
    前記同期手段により前記拡張ユニットタイマのタイマ値と同期した前記基本ユニットタイマのタイマ値に基づいてスキャン中に定周期で実行される処理の期間内で前記拡張ユニットが保持しているデータと前記基本ユニットが保持しているデータとを一致させる第2更新手段と、
    を備え、
    前記ユーザプログラムに記述される前記拡張ユニットの前記デバイスは、前記第1更新手段による更新の対象および/または前記第2更新手段による更新の対象として設定可能に構成されることを特徴とする基本ユニット。
  28. プログラマブル・ロジック・コントローラの拡張ユニットに接続され、ユーザプログラムをスキャン毎に繰り返し実行する基本ユニットの制御方法であって、
    前記拡張ユニットは、
    外部機器が接続されるインターフェースと、
    前記インターフェースを介した前記外部機器からの入力値または前記インターフェースを介した前記外部機器への出力値に関するデバイス値が格納され、前記基本ユニットとデータ共有するためのデバイスが割り付けられた記憶部と、
    クロックを計数して時間を計測する拡張ユニットタイマと、
    を備えており、
    前記制御方法は、
    クロックを計数して時間を計測する基本ユニットタイマと、前記拡張ユニットタイマと前記基本ユニットタイマのタイマ値を同期させる同期工程と、
    スキャン毎のリフレッシュの期間内で前記拡張ユニットが保持しているデータと前記基本ユニットが保持しているデータとを一致させる第1更新工程と、
    前記同期工程により前記拡張ユニットタイマのタイマ値と同期した前記基本ユニットタイマのタイマ値に基づいてスキャン中に定周期で実行される処理の期間内で前記拡張ユニットが保持しているデータと前記基本ユニットが保持しているデータとを一致させる第2更新工程と、
    を有し、
    前記ユーザプログラムに記述される前記拡張ユニットの前記デバイスは、前記第1更新工程による更新の対象および/または前記第2更新工程による更新の対象として設定可能に構成されることを特徴とする基本ユニットの制御方法。
  29. 請求項28に記載の制御方法の各工程をコンピュータに実行させるプログラム。
JP2014248402A 2014-12-08 2014-12-08 プログラマブル・ロジック・コントローラ、基本ユニット、制御方法およびプログラム Active JP6535459B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014248402A JP6535459B2 (ja) 2014-12-08 2014-12-08 プログラマブル・ロジック・コントローラ、基本ユニット、制御方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014248402A JP6535459B2 (ja) 2014-12-08 2014-12-08 プログラマブル・ロジック・コントローラ、基本ユニット、制御方法およびプログラム

Publications (3)

Publication Number Publication Date
JP2016110458A true JP2016110458A (ja) 2016-06-20
JP2016110458A5 JP2016110458A5 (ja) 2017-10-12
JP6535459B2 JP6535459B2 (ja) 2019-06-26

Family

ID=56124332

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014248402A Active JP6535459B2 (ja) 2014-12-08 2014-12-08 プログラマブル・ロジック・コントローラ、基本ユニット、制御方法およびプログラム

Country Status (1)

Country Link
JP (1) JP6535459B2 (ja)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018063612A (ja) * 2016-10-14 2018-04-19 オムロン株式会社 演算装置および制御システム
CN109324535A (zh) * 2017-07-31 2019-02-12 松下神视株式会社 控制单元、可编程控制器
KR20190089155A (ko) * 2018-01-18 2019-07-30 미쓰비시덴키 가부시키가이샤 Plc, 네트워크 유닛, cpu 유닛, 및 데이터 전송 방법
WO2020213853A1 (ko) * 2019-04-15 2020-10-22 엘에스일렉트릭(주) Plc 시스템 및 이의 입출력 리프레시 주기 제어방법
JP2020177712A (ja) * 2020-08-07 2020-10-29 株式会社キーエンス 外部設定機器
JP2021036479A (ja) * 2020-08-07 2021-03-04 株式会社キーエンス プログラマブルロジックコントローラおよびメインユニット
CN113544600A (zh) * 2019-03-15 2021-10-22 欧姆龙株式会社 控制系统、中继装置以及中继程序
US11188048B2 (en) 2018-10-23 2021-11-30 Keyence Corporation Programmable logic controller and main unit
US11467990B2 (en) 2018-10-15 2022-10-11 Mitsubishi Electric Corporation Programmable logic controller, external apparatus, method, and recording medium
JP7221465B1 (ja) * 2022-06-15 2023-02-13 三菱電機株式会社 制御システム、プログラマブルロジックコントローラ、可視化方法及びプログラム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003029809A (ja) * 2001-07-19 2003-01-31 Omron Corp Cpuユニット並びにプログラマブルコントローラ
JP2008251051A (ja) * 2008-07-07 2008-10-16 Okwave:Kk 管理サーバ
JP2008251052A (ja) * 2008-07-08 2008-10-16 Omron Corp I/oユニット及びプログラマブルコントローラシステム
JP2010198600A (ja) * 2009-02-02 2010-09-09 Omron Corp 産業用コントローラ
JP2014052672A (ja) * 2012-09-04 2014-03-20 Keyence Corp プログラマブルコントローラ、プログラム作成支援装置、プログラム及び基本ユニット
WO2014108999A1 (ja) * 2013-01-08 2014-07-17 富士電機株式会社 制御システム、マスタープログラマブルコントローラ、スレーブプログラマブルコントローラ、および、制御方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003029809A (ja) * 2001-07-19 2003-01-31 Omron Corp Cpuユニット並びにプログラマブルコントローラ
JP2008251051A (ja) * 2008-07-07 2008-10-16 Okwave:Kk 管理サーバ
JP2008251052A (ja) * 2008-07-08 2008-10-16 Omron Corp I/oユニット及びプログラマブルコントローラシステム
JP2010198600A (ja) * 2009-02-02 2010-09-09 Omron Corp 産業用コントローラ
JP2014052672A (ja) * 2012-09-04 2014-03-20 Keyence Corp プログラマブルコントローラ、プログラム作成支援装置、プログラム及び基本ユニット
WO2014108999A1 (ja) * 2013-01-08 2014-07-17 富士電機株式会社 制御システム、マスタープログラマブルコントローラ、スレーブプログラマブルコントローラ、および、制御方法

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018063612A (ja) * 2016-10-14 2018-04-19 オムロン株式会社 演算装置および制御システム
CN109324535A (zh) * 2017-07-31 2019-02-12 松下神视株式会社 控制单元、可编程控制器
KR20190089155A (ko) * 2018-01-18 2019-07-30 미쓰비시덴키 가부시키가이샤 Plc, 네트워크 유닛, cpu 유닛, 및 데이터 전송 방법
KR102016629B1 (ko) 2018-01-18 2019-08-30 미쓰비시덴키 가부시키가이샤 Plc, 네트워크 유닛, cpu 유닛, 및 데이터 전송 방법
US11467990B2 (en) 2018-10-15 2022-10-11 Mitsubishi Electric Corporation Programmable logic controller, external apparatus, method, and recording medium
US11188048B2 (en) 2018-10-23 2021-11-30 Keyence Corporation Programmable logic controller and main unit
CN113544600A (zh) * 2019-03-15 2021-10-22 欧姆龙株式会社 控制系统、中继装置以及中继程序
CN113544600B (zh) * 2019-03-15 2024-04-05 欧姆龙株式会社 控制系统、中继装置以及记录介质
WO2020213853A1 (ko) * 2019-04-15 2020-10-22 엘에스일렉트릭(주) Plc 시스템 및 이의 입출력 리프레시 주기 제어방법
US12001185B2 (en) 2019-04-15 2024-06-04 Ls Electric Co., Ltd. PLC system, and method for controlling input/output refresh period thereof
JP2020177712A (ja) * 2020-08-07 2020-10-29 株式会社キーエンス 外部設定機器
JP2021036479A (ja) * 2020-08-07 2021-03-04 株式会社キーエンス プログラマブルロジックコントローラおよびメインユニット
JP7221465B1 (ja) * 2022-06-15 2023-02-13 三菱電機株式会社 制御システム、プログラマブルロジックコントローラ、可視化方法及びプログラム
WO2023243012A1 (ja) * 2022-06-15 2023-12-21 三菱電機株式会社 制御システム、プログラマブルロジックコントローラ、可視化方法及びプログラム

Also Published As

Publication number Publication date
JP6535459B2 (ja) 2019-06-26

Similar Documents

Publication Publication Date Title
JP2016110458A (ja) プログラマブル・ロジック・コントローラ、基本ユニット、制御方法およびプログラム
US8346378B2 (en) Programmable controller
JP6626315B2 (ja) プログラマブル・ロジック・コントローラのモニタ装置及びプログラマブル・ロジック・コントローラ・システム
CN110456707B (zh) 控制装置
US10025281B2 (en) Control device and system program, and recording medium
US10180674B2 (en) Controller and control system
JP2016110458A5 (ja)
JP2016110460A (ja) プログラマブルコントローラ、プログラマブルコントローラの制御方法およびプログラム
JP5680466B2 (ja) 並列処理システム及び並列処理システムの動作方法
JP6772748B2 (ja) 演算装置および制御システム
JP6626313B2 (ja) プログラマブル・ロジック・コントローラ、拡張ユニット、制御方法、プログラム作成支援装置、プログラム作成支援方法およびプログラム
JP5549455B2 (ja) プログラマブルコントローラシステムおよびそのプログラム更新方法
JP6419400B1 (ja) Plc、ネットワークユニット、cpuユニット、及びデータ転送方法
JP4152079B2 (ja) プログラマブルコントローラの周辺装置
EP1367469A1 (en) Controller for machine
JP6626314B2 (ja) プログラマブル・ロジック・コントローラ
JP6516874B2 (ja) プログラマブルコントローラ及び同期制御プログラム
JP2007241570A (ja) プログラマブルコントローラ間通信のための共有メモリの設定方式
JP2021002113A (ja) 制御装置
JP4349687B2 (ja) プログラマブル・コントローラ
JPWO2014080457A1 (ja) プログラマブルコントローラ
JP5951123B2 (ja) 制御装置
JP5540928B2 (ja) プログラマブルコントローラシステムおよびそのアプリケーション起動方法
JP2007249560A (ja) プログラマブルコントローラにおけるcpuモジュール
JP2017079005A (ja) プログラマブル・ロジック・コントローラ、制御方法、cpuユニットおよび拡張ユニット

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170831

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170831

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180629

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180727

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180919

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190225

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190409

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190603

R150 Certificate of patent or registration of utility model

Ref document number: 6535459

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250