JP6626314B2 - プログラマブル・ロジック・コントローラ - Google Patents

プログラマブル・ロジック・コントローラ Download PDF

Info

Publication number
JP6626314B2
JP6626314B2 JP2015207474A JP2015207474A JP6626314B2 JP 6626314 B2 JP6626314 B2 JP 6626314B2 JP 2015207474 A JP2015207474 A JP 2015207474A JP 2015207474 A JP2015207474 A JP 2015207474A JP 6626314 B2 JP6626314 B2 JP 6626314B2
Authority
JP
Japan
Prior art keywords
unit
cpu
value
extension
memory
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.)
Active
Application number
JP2015207474A
Other languages
English (en)
Other versions
JP2017079008A (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.)
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 JP2015207474A priority Critical patent/JP6626314B2/ja
Publication of JP2017079008A publication Critical patent/JP2017079008A/ja
Application granted granted Critical
Publication of JP6626314B2 publication Critical patent/JP6626314B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Programmable Controllers (AREA)

Description

本発明は、プログラマブル・ロジック・コントローラおよび制御方法に関する。
プログラマブル・ロジック・コントローラ(以下、PLCと称す)は、FA(Factory Automation)制御システムにおいて広く使用されているシーケンス制御装置であり、ラダープログラムと呼ばれる専用プログラムにしたがって動作する。操作者(オペレータ)は、リミットスイッチ、センサ、温度計などの入力機器や、電磁開閉器、ソレノイド、モータ、アクチュエータ、シリンダ、リレー、位置決めシステムなどの出力機器をPLCに接続し、ラダープログラムによってこれらの被制御機器を制御する。
オペレータ(ユーザ)は、パーソナルコンピュータ(以下、PCと称す)などのプログラム作成支援装置上でラダープログラムを作成し、PCとPLCを接続し、ラダープログラムをPLCの記憶部に記憶させる。PLCの記憶部にはデバイス情報等の各種データも記憶される。デバイス情報とは、入力機器からの入力状態、出力機器への出力状態およびラダープログラム上で設定される内部リレー(補助リレー)、タイマー、カウンタ、データメモリ等の状態を示す情報である。デバイスとは、デバイス情報を格納するために設けられたメモリ上の領域を指す名称である。PLCにプログラム作成支援装置を接続することで、PLCが保持しているデバイス情報(デバイスの値)をプログラム作成支援装置に表示させ、視認することもできる。
PLCは一般に基本ユニット(CPUユニット)と拡張ユニットにより構成される。CPUユニットと拡張ユニットは予め割り付けられたデバイスを通じてスキャン周期ごとに実行されるリフレッシュによってデバイス値を相互に交換する。このようなデバイスはデータメモリと呼ばれることもある。データメモリとは別に拡張ユニットにはバッファメモリが設けられる(特許文献1)。CPUユニットはラダープログラム中に記述された専用の命令語に基づくダイレクト通信によってバッファメモリにアクセスし、バッファ値を読み書きする。
特開2010−102475号公報
ところで、基本ユニットは複数の拡張ユニットを同時に制御するため、制御に伴う負荷が大きい。たとえば、基本ユニットは、センサを接続された拡張ユニットからセンサの出力値を取得し、その出力値に応じた演算を実行して目標座標を決定し、モーションユニットである拡張ユニットに目標座標を設定する。このように基本ユニットには制御の負荷が集中する。一方で、モーションフローなどのユーザプログラムを実行可能なモーションユニットが存在するが、そのようなモーションユニットは他の拡張ユニットのセンサの出力値を取得することができないため、出力値から目標座標を演算する演算処理を分担することができなかった。そこで、本発明は、基本ユニットが保持しているデバイス値を拡張ユニットに参照させることで当該デバイス値を用いて拡張ユニットにユーザプログラムを実行させることを目的とする。
本発明は、たとえば、
CPUユニットと前記CPUユニットと通信する拡張ユニットと前記CPUユニットと通信する入力ユニットとを有するプログラマブル・ロジック・コントローラであって、
前記CPUユニットは、
スキャン周期にしたがって繰り返し第一ユーザプログラムを実行する第一プログラム実行部と、
前記スキャン周期とは異なるユニット間同期周期を管理するCPUユニットタイマーと
前記第一ユーザプログラムにしたがって前記第一プログラム実行部により参照されるデバイス値を格納する第一デバイスメモリと、
前記拡張ユニットおよび前記入力ユニットと通信する第一通信部と
を有し、
前記拡張ユニットは、
前記ユニット間同期周期を管理し、前記CPUユニットタイマーと時刻同期した拡張ユニットタイマーと
前記CPUユニットと通信する第二通信部と、
前記CPUユニットの前記第一デバイスメモリに関連付けられており、前記CPUユニットから前記拡張ユニットへ出力されるデバイス値が、前記ニット間同期周期ごとに前記第一通信部および前記第二通信部を介してユニット間同期リフレッシュとして更新されることで、前記第一デバイスメモリのデバイス値と同期したデバイス値を保持する第二デバイスメモリと、
前記第二デバイスメモリに保持されたデバイス値を参照して第二ユーザプログラムを実行する第二プログラム実行部と
を有
前記入力ユニットは
前記ユニット間同期周期を管理し、前記CPUユニットタイマーと時刻同期した入力ユニットタイマーと
前記CPUユニットと通信する第三通信部と、
前記第一デバイスメモリに関連付けられており、前記拡張ユニットから前記CPUユニットへ入力されたデバイス値が、前記ユニット間同期周期ごとに前記第一通信部および前記第三通信部を介して前記ユニット間同期リフレッシュとして更新されることで、前記第一デバイスメモリのデバイス値と同期したデバイス値を格納する第三デバイスメモリと
を有し、
前記拡張ユニットの前記第二プログラム実行部は、前記ユニット間同期周期ごとに、前記入力ユニットの前記第三デバイスメモリに保持されたデバイス値が前記ユニット間同期リフレッシュによって前記CPUユニットが有する前記第一デバイスメモリに書き込まれたのち、前記第一デバイスメモリに書き込まれた当該デバイス値が前記ユニット間同期リフレッシュによって前記拡張ユニットの前記第二デバイスメモリに書き込まれることで、前記CPUユニットを経由して前記入力ユニットから転送されてきた当該デバイス値を用いて前記第二ユーザプログラムを実行することを特徴とするプログラマブル・ロジック・コントローラを提供する。
本発明によれば、基本、基本ユニットが保持しているデバイス値を拡張ユニットに参照させることで当該デバイス値を用いて拡張ユニットにユーザプログラムを実行させることが可能となる。
PLCシステムの一例を示す図 ユーザプログラムの一例を示す図 プログラム作成支援装置の一例を示す図 PLCの一例を示す図 スキャンタイムを説明するための図 アプリケーションの一例を示す図 基本ユニットの機能を示す図 プログラム実行機能を備えた拡張ユニットの機能を示す図 プログラム実行機能を備えていない拡張ユニットの機能を示す図 拡張ユニットにユーザプログラムを起動させるための処理を示すフローチャート 一括リフレッシュと同期リフレッシュとの関係を示す図 同期リフレッシュの一例を示すフローチャート 拡張ユニットにおいてデバイス値を参照してユーザプログラムを実行する処理を示すフローチャート 同期リフレッシュの対象となっている複数のデバイスにより構成されたデバイスセットの一例を示す図 ユーザインタフェースの一例を示す図 アプリケーションの一例を示すフローチャート 同期リフレッシュの一例を示す図
以下に本発明の一実施形態を示す。以下で説明される個別の実施形態は、本発明の上位概念、中位概念および下位概念など種々の概念を理解するために役立つであろう。また、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。
はじめにプログラマブル・ロジック・コントローラ(PLC、単にプログラマブルコントローラと呼ばれてもよい)を当業者にとってよりよく理解できるようにするために、一般的なPLCの構成とその動作について説明する。
図1は、本発明の実施の形態によるプログラマブル・ロジック・コントローラシステムの一構成例を示す概念図である。図1に示すように、このシステムは、ラダープログラムなどのユーザプログラムの編集を行うためのプログラム作成支援装置1と、工場等に設置される各種制御装置を統括的に制御するためのPLC2とを備えている。ユーザプログラムは、ラダー言語やモーションフローなどのグラフィカルプログラミング言語を用いて作成されてもよいし、C言語などの高級プログラミング言語を用いて作成されてもよい。以下では、説明の便宜上、ユーザプログラムはラダープログラムとする。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に備えられたメモリ内に記憶される。なお、ここではニモニックコードを基本ユニット3に送信するようにしているが、本発明はこれに限られず、例えばニモニックコードを更に中間コードに変換し、中間コードを基本ユニット3に送信するようにしてもよい。
なお、図1では示していないが、プログラム作成支援装置1の操作部8には、プログラム作成支援装置1に接続されたマウスなどのポインティングデバイスが含まれていてもよい。また、プログラム作成支援装置1は、USB以外の他の通信ケーブル9を介して、PLC2の基本ユニット3に対して着脱可能に接続されるような構成であってもよい。
図2は、ラダープログラムの作成時にプログラム作成支援装置1の表示部7に表示されるラダー図Ldの一例を示す図である。図2に示すように、PLC2を制御するためのラダープログラムは、プログラム作成支援装置1の表示部7にマトリックス状に表示される複数のセル18内に仮想デバイスのシンボル19を適宜配置して、視覚的なリレー回路を表すラダー図Ldを構築することにより作成される。
ラダー図Ldには、たとえば、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を含む構成であり、プログラム記憶部27と、編集ソフト記憶部28とを備えている。
ユーザは、編集ソフト記憶部28に記憶されている編集ソフトをCPU24に実行させて、操作部8を通じてラダープログラムを編集する。ここで、ラダープログラムの編集には、ラダープログラムの作成及び変更が含まれる。編集ソフトを用いて作成されたラダープログラムは、プログラム記憶部27に記憶される。また、ユーザは、必要に応じてプログラム記憶部27に記憶されているラダープログラムを読み出し、そのラダープログラムを、編集ソフトを用いて変更することができる。通信部26は、通信ケーブル9を介してプログラム作成支援装置1を基本ユニット3に通信可能に接続するためのものである。
図4は、PLC2の電気的構成について説明するためのブロック図である。図4に示すように、基本ユニット3には、CPU10、表示部5、操作部6、記憶装置12及び通信部14が備えられている。表示部5、操作部6、記憶装置12、及び通信部14は、それぞれCPU10に電気的に接続されている。記憶装置12は、RAMやROM、メモリカードなどを含んでもよく、ラダープログラムなどを記憶する。記憶装置12には、プログラム作成支援装置1から入力されたラダープログラムやユーザデータが上書きして記憶される。また、記憶装置12には基本ユニット用の制御プログラムも格納されている。図4が示すように基本ユニット3と拡張ユニット4とは拡張バスの一種であるユニット外部バス90を介して接続されている。なお、ユニット外部バス90に関する通信機能は通信部14の一部として実装されてもよい。
図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に接続された表示器(図示せず)等の外部機器とのデータ通信、システムのエラーチェック等の周辺サービスに関する処理全般を意味する。
このように、プログラム作成支援装置1はユーザの操作に応じたラダープログラムを作成し、作成したラダープログラムをPLC2に転送する。PLC2は、入出力リフレッシュ、ラダープログラムの実行およびEND処理を1サイクル(1スキャン)として、このサイクルを周期的、すなわちサイクリックに繰り返し実行する。これにより、各種入力機器(センサ等)からのタイミング信号に基づいて、各種出力機器(モータ等)を制御する。よって、PLC2は汎用のパーソナルコンピュータ(PC)とは全く異なる動きをする。
<PLCにより制御される被制御装置の例(アプリケーション)>
図6はPLCにより制御される被制御装置16の一例を示している。基本ユニット3には拡張ユニット4の一種であるモーションユニット4aと入力ユニット4bとが接続されている。この例ではサーボモータ42a、42bによって駆動されるコンベア46によりワーク47が搬送される。センサ44がワーク47を検知すると、サーボプレス43が稼働してワーク47に対してプレス加工を実行する。なお、サーボモータ42a、42bはそれぞれモーションユニット4aによって制御されるサーボアンプ41a、41bによって電力を供給される。サーボアンプ41cはモーションユニット4aからの指示に従ってサーボプレス43を稼働させる。
ある実施形態では、入力ユニット4bがセンサ44の検知信号を取得し、基本ユニット3が入力ユニット4bからセンサ44の検知結果を取得し、検知結果に基づきモーションユニット4aにサーボプレス43の稼働を指示する。たとえば、基本ユニット3は、センサ44によりワーク47が検知されたタイミングから何秒後にサーボプレス43を作動させるかを演算して求める。更に基本ユニットはサーボプレス装置全体の管理処理(プレス後品質確認処理、表示器との通信処理、安全センサ動作時の停止処理等)も行なう。そのため、基本ユニット3は演算負荷が重かった。また、モーションユニット4aは入力ユニット4bに接続されているセンサ44の検知結果を取得する方法が無かったため、基本ユニット3の演算処理を分担することができなかった。
本実施形態では、モーションユニット4aはユーザプログラムを実行するエンジンを備え、これにより演算処理の一部またはすべてを担当する。また、モーションユニット4aは基本ユニット3を介して入力ユニット4bのデバイス値(センサ44の検知結果)を取得することで演算処理を実行する。ここでは、拡張ユニット4の一例としてモーションユニット4aや入力ユニット4bを挙げているが、もちろん他の種類の拡張ユニットであってもよい。少なくとも一つの拡張ユニットはユーザプログラムを実行でき、かつ、基本ユニット3を介して他の拡張ユニットのデバイス値(バッファ値)を取得できれば十分である。
図6ではセンサ44に入力ユニット4bが接続されているが、基本ユニット3に直接的に接続されていてもよい。この場合、基本ユニット3は自己に接続されているセンサ44の検知結果をデバイス値としてデバイスに格納し、このデバイスに格納されているデバイス値をモーションユニット4aに提供する。このように、基本ユニット3はセンサ44の検知結果をモーションユニット4aに参照させる程度の処理を実行すればよく、演算処理についてはモーションユニット4aに実行させる。よって、基本ユニット3の演算負荷が軽減される。
<基本ユニットの機能>
図7は基本ユニット3の機能を示す図である。CPU10は記憶装置12のROM(EEPROM,HDD,SSDなど)に記憶されている制御プログラム36を実行することで、ラダー実行部30、デバイス管理部31、CPUユニットタイマー32、同期部33および拡張バス制御部34として機能する。ラダー実行部30は、プログラム作成支援装置1により作成されて転送されてきたユーザプログラムであるラダープログラム35を実行するエンジンである。ラダー実行部30はCPU10とは異なるASICなどにより実現されてもよい。デバイス管理部31は、デバイス値を格納するデバイスの一種であるデータメモリ38やリレー39を管理する機能である。データメモリ38はワードデバイスと呼ばれることもある。リレー39はビットデバイスやリレーデバイスと呼ばれることもある。データメモリ38には、上述したスキャン周期ごとにリフレッシュ(一括リフレッシュ)されるデータメモリと、スキャン周期よりも短いユニット間同期周期ごとにリフレッシュ(ユニット間同期リフレッシュ)されるデータメモリとがある。また、データメモリ38には、拡張ユニット4から受信した数ビットのデータが格納される入力データメモリと、基本ユニット3から拡張ユニット4に送信される数ビットのデータが格納される出力データメモリが存在する。リレー39も同様に、スキャン周期ごとにリフレッシュされるリレーと、スキャン周期よりも短いユニット間同期周期ごとにリフレッシュ(ユニット間同期リフレッシュ)されるリレーとがある。また、リレー39には、拡張ユニット4から受信した1ビットのデータが格納される入力リレーと、基本ユニット3から拡張ユニット4に送信される1ビットのデータが格納される出力リレーが存在する。設定情報37はプログラム作成支援装置1によって作成された情報であり、デバイス記憶部40cにおける各データメモリ38のアドレスや、各リレー39のアドレスなどの管理情報を含んでいる。また、設定情報37はデバイス記憶部40cに含まれているデバイスが一括リフレッシュされるものか、それともユニット間同期リフレッシュされるものかを管理する情報も含んでいる。CPUユニットタイマー32は、基本ユニット3における各種の動作の制御タイミングを決定するために利用されるクロックやカウンタである。CPUユニットタイマー32は必ずしも時刻を計時する必要はなく、時刻に相当するカウント値をカウントしてもよい。このようなカウント値も時刻情報の一種である。同期部33は、CPUユニットタイマー32の時刻情報と拡張ユニット4が備える拡張ユニットタイマーの時刻情報とを同期させる機能である。同期部33は、通信部14を介したメッセージ通信によって同期信号を拡張ユニット4に送信することで、CPUユニットタイマー32の時刻情報と拡張ユニット4が備える拡張ユニットタイマーの時刻情報とを同期させる。CPUユニットタイマー32と拡張ユニットタイマーとが時刻同期しているため、デバイス記憶部40cに格納されるデータの時間的な正確性が確保される。
記憶装置12はプログラム記憶部40a、パラメータ記憶部40bおよびデバイス記憶部40cを有している。プログラム記憶部40aは、基本ユニット3のファームウエアである制御プログラム36と、ユーザによりプログラミングされたラダープログラム35を記憶している。パラメータ記憶部40bは、プログラム作成支援装置1によって作成された設定情報37を記憶している。デバイス記憶部40cは、上述したデータメモリ38やリレー39を記憶している。データメモリ38やリレー39の幾つかは各拡張ユニット4に予め割り付けられている。
通信部14は、プログラム作成支援装置1と通信する通信回路と、拡張ユニット4と通信する拡張バスユニットとを含んでいる。拡張バス制御部34は、通信部14の拡張バスユニットを制御して他の拡張ユニットと通信するバスマスタとして機能する。
<拡張ユニットの機能>
図8はユーザプログラムの実行機能を備えた拡張ユニット4の機能を示す図である。CPU110は記憶装置112のROM(EEPROM,HDD,SSDなど)に記憶されている制御プログラム55を実行することで、機能制御部50、デバイス管理部51、拡張ユニットタイマー52および同期部53として機能する。なお、プログラム実行部54は、プログラム作成支援装置1により作成されて転送されてきたモーションフローなどのユーザプログラム56を実行するエンジンである。モーションフローにより記述されたユーザプログラム56はフロープログラムと呼ばれてもよいが、ここでは単にモーションフローと呼ぶことにする。プログラム実行部54はCPU110とは異なるASICなどにより実現されてもよい。機能制御部50は、プログラム実行部54により実行されるユーザプログラム56にしたがって被制御装置16を制御する。たとえば、機能制御部50は、位置決め制御、同期制御、速度制御またはトルク制御など被制御装置16に関する制御を実行する。デバイス管理部51は、デバイス値を格納するデバイスの一種であるバッファメモリ58を管理する機能である。デバイス管理部51はリフレッシュによって、基本ユニット3のデバイスに対してバッファメモリ58のバッファ値を書き込んだり、基本ユニット3から受け取ったデバイス値をバッファメモリ58に書き込んだりする。なお、基本ユニット3のデバイスとバッファメモリ58との関係は設定情報57によって管理されている。プログラム実行部54は、基本ユニット3のデバイスの読み出し命令をデバイス管理部51に送り、デバイス管理部51は、設定情報57を参照することで当該デバイスに関連付けられているバッファメモリ58を特定し、バッファ値を読み出してプログラム実行部54に渡す。たとえば、基本ユニット3のデバイスは、入力ユニット4bに接続されたセンサ44の検知結果を格納したデバイスである。このようにして、モーションユニット4aなどの拡張ユニット4は、入力ユニット4bなどの他の拡張ユニット4に割り付けられたデバイスのデバイス値を取得する。つまり、プログラム実行部54は、ユーザプログラム56に記述されている他の拡張ユニット4に割り付けられたデバイスのデバイス値を取得して、被制御装置16を制御するための演算処理を実行する。これにより従来は基本ユニット3で実行されていた演算処理を拡張ユニット4で実行できるようになる。つまり、演算処理の分散ないしは分担が実現される。設定情報57はプログラム作成支援装置1によって作成されたものであり、基本ユニット3のデバイスとバッファメモリ58との関係に加え、同期リフレッシュの対象を示す情報も保持している。拡張ユニットタイマー52は、拡張ユニット4における各種の動作の制御タイミングを決定するために利用されるクロックやカウンタである。拡張ユニットタイマー52は必ずしも時刻を計時する必要はなく、時刻に相当するカウント値をカウントしてもよい。このようなカウント値も時刻情報の一種である。同期部53は、拡張ユニットタイマー52の時刻情報をCPUユニットタイマー32の時刻情報に同期させる機能である。同期部53は、通信部114を介したメッセージ通信によって同期信号を基本ユニット3から受信することで、CPUユニットタイマー32の時刻情報と拡張ユニットタイマー52の時刻情報とを同期させる。このように、CPUユニットタイマー32と拡張ユニットタイマー52とが時刻同期しているため、バッファメモリ58に格納されるデータの時間的な正確性が確保される。
記憶装置112はプログラム記憶部60a、パラメータ記憶部60bおよびデバイス記憶部60cを有している。プログラム記憶部60aは、拡張ユニット4のファームウエアである制御プログラム55と、ユーザによりプログラミングされたユーザプログラム56を記憶している。パラメータ記憶部60bは、プログラム作成支援装置1によって作成された設定情報57を記憶している。デバイス記憶部60cは、上述したバッファメモリ58などを記憶している。
通信部114は、基本ユニット3と通信する拡張バスユニットとを含んでいる。CPU110は、通信部114内の拡張バスユニットを制御して基本ユニット3と通信させることで、通信部114をスレーブとして機能させる。また、CPU110はスレーブ制御部として機能している。
図9はユーザプログラムの実行機能を備えていない拡張ユニット4の機能を示す図である。このような拡張ユニット4の一例は上述した入力ユニット4bである。図8と共通する事項については同一の参照符号を付与することで説明の簡明化を図る。拡張ユニット4が入力ユニット4bである場合、機能制御部50は、センサ44である被制御装置16が出力する検知信号を監視している。検知信号のレベルがワーク47を検知したことを示すハイ(オン)になると、センサ44に割り付けられているバッファメモリ58のバッファ値を0から1に書き換える。なお、ワーク47を検知していないときの検知信号のレベルはロー(オフ)である。バッファメモリ58のバッファ値はリフレッシュまたはダイレクト通信によって基本ユニット3に伝達される。設定情報57によって、このバッファ値が同期リフレッシュの対象として指定されている場合、デバイス管理部51は、同期リフレッシュによってバッファ値を基本ユニット3に伝達する。
<拡張ユニットにおけるユーザプログラムの起動>
基本ユニット3はPLC2において各拡張ユニット4を統括的に制御するユニットである。そのため、拡張ユニット4におけるユーザプログラム56の実行開始(起動)についても基本ユニット3が拡張ユニット4に指示するものとする。
図10(A)は基本ユニット3から拡張ユニット4のユーザプログラム56を起動させる処理を示す図である。図10(B)は拡張ユニット4がユーザプログラム56を起動する処理を示す図である。S11において基本ユニット3のCPU10(ラダー実行部30)はラダープログラム35に記述されている命令語を順番に実行して行き、拡張ユニット4におけるユーザプログラム56の実行命令を実行する。ラダー実行部30は、ユーザプログラム56の実行要求を拡張バス制御部34にセットする。
S12で、CPU10(拡張バス制御部34)は通信部14を用いて拡張ユニット4とのメッセージ通信を実行する。このメッセージ通信によりユーザプログラム56の実行要求が拡張ユニット4に送信される。なお、メッセージ通信の内容はバイナリコマンドにより伝達されてもよい。
S13で拡張ユニット4のCPU110は通信部114を介してメッセージ通信によりユーザプログラム56の実行要求を受信する。たとえば、拡張ユニット4のCPU110はバイナリコマンドを解釈することで、ユーザプログラム56の実行を要求されていることを認識する。
S14でCPU110はユーザプログラム56の実行要求にしたがってユーザプログラム56をプログラム実行部54に実行するよう指示する。これによりプログラム実行部54はユーザプログラム56の実行を開始する。
S15でCPU110(プログラム実行部54)は通信部114を介してメッセージ通信によりユーザプログラム56の開始完了通知を基本ユニット3に送信する。たとえば、プログラム実行部54は、バススレーブとして動作している通信部114にバイナリコマンドに対する応答として開始完了通知をセットする。
S16でCPU10(拡張バス制御部34)は通信部14を用いて開始完了通知を受信する。S17で、ユーザプログラム56の開始の完了/未済を記憶するリレーデバイスに完了を示すデバイス値を書き込む。
このように拡張ユニット4のユーザプログラム56は基本ユニット3のラダープログラム35によって起動される。なお、ラダー実行部30は、ユーザプログラム56の実行命令語を実行すると即座に次の命令語を実行する。つまり、ラダー実行部30は、拡張ユニット4から開始完了通知があるまで、ラダープログラム35に記述されている次の命令語の実行を延期するわけではない。よって、ラダー実行部30は、無駄な時間を過ごすことなく、ラダープログラム35を効率よく実行できる。
<デバイスの同期リフレッシュ>
スキャンタイムTは一般に数ミリ秒であるが、モーションユニットなどの拡張ユニット4ではより短い周期で被制御装置16の位置を制御したいという要請がある。しかし、1つのスキャンタイムTで入出力デバイスのリフレッシュ(一括リフレッシュ)は1回だけ実行される。本実施例ではユニット間同期周期ごとにデバイスのリフレッシュを行う同期リフレッシュも採用される。
図11は一括リフレッシュと同期リフレッシュとの関係を示す図である。図11が示すように、一括リフレッシュにより基本ユニット3と拡張ユニット4との間で入出力デバイスのデバイス値が更新される。たとえば、入力ユニット4bである拡張ユニット4のセンサの検知結果は1つのスキャンタイムで一回だけ更新され、モーションユニット4aである他の拡張ユニット4へのデバイス値も1つのスキャンタイムで一回だけ更新される場合、高速な同期制御を実現することができない。そこで、基本ユニット3の内部制御周期と拡張ユニット4の内部制御周期とを同期させ、この制御周期ごとにデバイスをリフレッシュする同期リフレッシュについても本実施例では採用されている。なお、ユーザプログラムのうち、この制御周期に同期して実行されるプログラムはユニット間同期プログラムと呼ばれる。図11において同期リフレッシュは、ラダープログラム35の実行期間だけでなく、一括リフレッシュの実行期間やエンド処理の実行期間においても実行されてもよい。なお、同期リフレッシュの周期は、スキャンの周期よりも長い周期で行われてもよい。たとえば、スキャン処理が2回行われた後に、一度同期リフレッシュが行なわれてもよい。
図12(A)は基本ユニット3で実行される同期リフレッシュを示している。図12(B)は拡張ユニット4で実行される同期リフレッシュを示している。S21で基本ユニット3のCPU10(ラダー実行部30)はラダープログラム35にしたがって各種のデバイスのデバイス値を変更する。ラダー実行部30はラダープログラム35にしたがって取得したデバイス値をデバイス管理部31に渡すことで、デバイス値をデバイス記憶部40cのデバイスに書き込む。なお、これと並行してS22で拡張ユニット4のCPU110(デバイス管理部51)は拡張ユニット4の動作状態に応じてデバイス記憶部60c内のデバイスのデバイス値を変更する。
S23でCPU10(デバイス管理部31)は同期リフレッシュのタイミングが到来したかどうかを判定する。デバイス管理部31はCPUユニットタイマー32が所定時間を計時する度に同期リフレッシュをトリガーする。同期リフレッシュのタイミングが到来すると、S24に進む。S24でCPU10(デバイス管理部31)は拡張バス制御部34に同期リフレッシュのための通信を実行させる。デバイス管理部31は、設定情報37にしたがって同期リフレッシュの対象となっているデバイス値を拡張ユニット4から受信する。S26で、CPU10(デバイス管理部31)は拡張バス制御部34および通信部14を介して受信したデバイス値をデバイス記憶部40cに書き込む(入力リフレッシュ)。また、S24でデバイス管理部31は、設定情報37にしたがって同期リフレッシュの対象となっているデバイス値をデバイス記憶部40cから読み出して拡張バス制御部34にセットして拡張ユニット4へ送信する(出力リフレッシュ)。
S25で拡張ユニット4のCPU110(デバイス管理部51)は、通信部114を介して同期リフレッシュのための通信を実行する。デバイス管理部51は、設定情報57にしたがって同期リフレッシュの対象となっているデバイス値をデバイス記憶部60cから読み出して通信部114にセットして基本ユニット3へ送信する(入力リフレッシュ)。また、デバイス管理部51は、設定情報57にしたがって同期リフレッシュの対象となっているデバイス値を、通信部114を介して基本ユニット3から受信し、デバイス記憶部60cに書き込む(出力リフレッシュ)。なお、デバイス管理部51は、基本ユニット3のデバイス(CPUユニットデバイス)に記憶されているデバイス値をバッファメモリ58にいったん格納して保持する。
<拡張ユニットのユーザプログラムによる基本ユニットのデバイスの読み出し>
図13は拡張ユニットのユーザプログラムによる基本ユニットのデバイスの読み出しを示すフローチャートである。
S31でCPU110(プログラム実行部54)は、ユーザプログラム56に記述されている命令語にしたがってCPUユニットデバイスの読み出し要求をデバイス管理部51に渡す。S32でCPU110(デバイス管理部51)は、設定情報57にしたがって所望のCPUユニットデバイスに割り付けられているバッファメモリのアドレスを特定する。S33でCPU110(デバイス管理部51)は、特定したバッファメモリのアドレスからCPUユニットデバイスのデバイス値を読み出す。S34でCPU110(プログラム実行部54)は、読み出したデバイス値に対してユーザプログラム56にしたがった演算を実行する。
<同期リフレッシュの設定の取得>
同期リフレッシュに関する設定を示す設定情報57をプログラム作成支援装置1から拡張ユニット4に書き込む方法はいくつかある。一つ目は、プログラム作成支援装置1から通信部114を介して拡張ユニット4に書き込む方法である。二つ目は、プログラム作成支援装置1から通信部14を介して基本ユニット3に設定情報57を書き込み、基本ユニット3から拡張ユニット4に設定情報57を書き込む方法である。たとえば、拡張ユニット4のCPU110は設定情報57の読み出し要求を通信部114にセットしてメッセージ通信を実行する。基本ユニット3の拡張バス制御部34は通信部14を介して読み出し要求を受信すると、パラメータ記憶部40bに一時的に格納しておいた設定情報57を読み出し、レスポンスデータに搭載し、拡張バス制御部34にセットする。拡張バス制御部34は通信部14を制御してレスポンスデータを拡張ユニット4に送信する。拡張ユニット4のCPU110は通信部114を介してレスポンスデータを受信すると、レスポンスデータから設定情報57を抽出してパラメータ記憶部60bに書き込む。拡張ユニット4用の設定情報57は、基本ユニット3用の設定情報37と一緒にプログラム作成支援装置1から基本ユニット3に転送されるため、両者は整合している。仮に、両者を個別に転送すると、両者が整合していない時間が発生するため、この時間には正しい同期リフレッシュを実現できないだろう。したがって、設定情報の個別転送よりも、基本ユニット3を介する一括転送が有利であろう。
ところで、設定情報57は、同期リフレッシュの対象となる複数のデバイスを指定する。しかし、図14が示すように、同期リフレッシュの対象となる複数のデバイスはデバイス記憶部40cにおいて散在していることもある。この場合に、複数のデバイスを一つずつ基本ユニット3と拡張ユニット4との間で転送すると、通信ヘッダなどのオーバヘッドが増加し、転送効率が低下する。そこで、デバイス管理部31は設定情報37によって指定されている同期リフレッシュの対象となる複数のデバイスをデバイス記憶部40cから読み出して一つのデータの塊(出力系のデバイスセット61)を作成し、出力系のデバイスセット61を拡張ユニット4に転送する。拡張ユニット4のデバイス管理部51は出力系のデバイスセット61を受信すると、設定情報57を参照し、出力系のデバイスセット61を個別のデバイスに分離して、対応するバッファメモリに書き込む。また、デバイス管理部51は設定情報37によって指定されている同期リフレッシュの対象となる複数のデバイスをデバイス記憶部60cのバッファメモリ58から読み出して一つのデータの塊(入力系のデバイスセット61)を作成し、入力系のデバイスセット61を基本ユニット3に転送する。基本ユニット3のデバイス管理部31は入力系のデバイスセット61を受信すると、設定情報37を参照し、入力系のデバイスセット61を個別のデバイスに分離して、デバイス記憶部40b内の対応するデバイスに書き込む。このようにして入力系の同期リフレッシュと出力系の同期リフレッシュが実現される。このようにデバイスを一括して転送するため通信部14と通信部114との間でのオーバヘッドが削減され、通信時間が短縮される。なお、同期リフレッシュの実行中は、デバイス管理部31、51がそれぞれ他の何らかのプロセスからのデバイスへのアクセス(読み/書き)を禁止する。ある演算処理が複数のデバイスを参照して実行されるときに、一つ目のデバイスはリフレッシュ済みで、他のデバイスはリフレッシュが未済であると、各デバイスの取得時刻が異なってしまう。この場合、当該演算処理は正しい演算を実行できなくなってしまう。したがって、同期リフレッシュの実行中の読み/書きを禁止することで、各デバイスの同時性を維持できるようになる。
図15はプログラム作成支援装置1のCPU24が表示部7に表示するユーザインタフェース70の一例である。ユーザインタフェース70は、拡張ユニット4において同期リフレッシュの対象となるデバイスを指定するためのユーザインタフェースである。デバイス番号入力部72は、同期リフレッシュの対象となるデバイスの識別情報が入力される領域である。サイズ入力部73は、デバイスのサイズ(例:1ビット、16ビット、32ビット、64ビットなど)が入力される領域である。デバイス名入力部74はデバイス名が入力される領域である。もちろん、デバイスの特徴を指定するための他の入力部が追加されてもよい。ユーザは操作部8を通じてポインタ71を操作し、入力を希望するいずれかの領域を指定する。次に、ユーザは操作部8を通じてデバイス番号などを入力する。OKボタンが操作されると、CPU24はユーザインタフェース70で特定されたデバイスやアドレスの情報を含む設定情報37、57を作成し、基本ユニット3に転送する。なお、設定情報37、57は完全に同一のデータであってもよい。
<アプリケーション>
図6に示したアプリケーションに本実施形態を適用したときの拡張ユニット4の動作について説明する。図16はモーションユニット4aのCPU110が実行する処理を示すフローチャートである。
S41でCPU110(プログラム実行部54)はユーザプログラム56に記述されている命令語にしたがって機能制御部50およびサーボアンプ41a、41bを通じてサーボモータ42a、42bを一定速度で回転させる。これによりワーク47は一定速度で搬送されることになる。
S42でCPU110(プログラム実行部54)はユーザプログラム56に記述されている命令語にしたがって所定位置にワーク47が到着したかどうかを判定する。
図17が示すように、入力ユニット4bに接続されたセンサ44の検知結果(デバイス値)Xiはユニット間同期周期ごとに実行される同期リフレッシュによって入力ユニット4bから基本ユニット3に書き込まれる。同様に、基本ユニット3に書き込まれたセンサ44の検知結果は同期リフレッシュによってモーションユニット4aのバッファメモリ58に格納される。基本ユニット3は検知結果を格納している入力系のデバイスから出力系のデバイスにコピーし、出力系のデバイスに格納されているデバイス値をモーションユニット4aに転送してもよい。プログラム実行部54は、モーションフローに記述されている命令語にしたがって、センサ44の検知結果を格納しているデバイスの読み出し要求をデバイス管理部51に渡す。デバイス管理部51は読み出し要求の対象となっているデバイスに対応するバッファメモリ58のアドレスを設定情報57から取得し、取得したアドレスから検知結果を読み出し、プログラム実行部54に渡す。プログラム実行部54は、センサ44の検知結果がオンであれば所定位置にワーク47が到着したと判定し、一方で検知結果がオフであればワーク47がまだ到着していないと判定する。ワーク47が所定位置に到着する、CPU110はS43に進む。
S43でCPU110(プログラム実行部54)はユーザプログラム56に記述されている命令語にしたがって機能制御部50およびサーボアンプ41a、41bを通じてサーボモータ42a、42bを減速制御して停止させる。
S44で(プログラム実行部54)はユーザプログラム56に記述されている命令語にしたがって機能制御部50およびサーボアンプ41cを通じてサーボプレス43を稼働させる。これによりワーク47がプレス加工される。
このように本実施形態によればモーションユニット4aは基本ユニット3が保持しているデバイス値に基づいてモーションフローを実行できるようになる。たとえば、モーションユニット4aは基本ユニット3が入力ユニット4bから取得したセンサ44の検知結果に基づいてモーションフローを実行できるようになる。つまり、モーションユニット4aは基本ユニット3や他の拡張ユニット4の動作状態を取得してモーションフローを実行できるようになる。そのため、従来は基本ユニット3のラダープログラム35によって実行されていた演算処理の一部またはすべてを拡張ユニット4で実行されるモーションフローなどのユーザプログラム56によって実行することが可能となる。これにより、基本ユニット3の演算負荷を拡張ユニット4へ分散させることが可能となる。
ユーザは、センサ44の検知結果をダイレクト通信によって入力ユニット4bから取得し、さらにモーションユニット4aへダイレクト通信によって検知結果を書き込むようラダープログラム35を作成してもよい。しかし、これではユーザのプログラミングの負担が増加してしまう。本実施形態であれば、基本ユニット3のデバイスに書き込まれたセンサ44の検知結果が、リフレッシュによってモーションユニット4aのバッファメモリ58に書き込まれる。そのため、モーションフローを実行するプログラム実行部54がセンサ44の検知結果を参照できるようになっている。つまり、ユーザは同期リフレッシュの対象となるデバイスを予め設定すればよい。よって、ユーザのプログラミングの負担も軽減される。
<まとめ>
図7を用いて説明したように、基本ユニット3はラダー実行部30、デバイス記憶部40cおよび通信部14などを有している。ラダー実行部30はスキャン周期にしたがって繰り返し第一ユーザプログラム(例:ラダープログラム35)を実行する第一プログラム実行部として機能する。デバイス記憶部40cはラダープログラム35にしたがってラダー実行部30により参照されるデバイス値を格納する第一デバイスメモリとして機能する。通信部14は拡張ユニット4と通信する第一通信部として機能する。図8を用いて説明したように拡張ユニット4は、基本ユニット3と通信する通信部114、デバイス記憶部60cおよびプログラム実行部54などを有する。通信部114は第二通信部の一例である。ユーザプログラム56は第二ユーザプログラムの一例である。デバイス記憶部60cのデバイス値はスキャン周期とは異なる短いユニット間同期周期ごとに通信部14および通信部114を介して更新され、デバイス記憶部40cのデバイス値と同期したデバイス値となる。デバイス記憶部60cはデバイス記憶部40cのデバイス値と同期したデバイス値を格納する第二デバイスメモリとして機能する。プログラム実行部54はデバイス記憶部60cに格納されたデバイス値を参照してユーザプログラム56を実行する第二プログラム実行部として機能する。このように本実施形態によれば、基本ユニット3が保持しているデバイス値を拡張ユニット4に参照させることで当該デバイス値を用いて拡張ユニット4にユーザプログラム56を実行させることが可能となる。
基本ユニット3のデバイス記憶部40cは、他の拡張ユニット4から入力されたデバイス値を保持する入力デバイスと、基本ユニット3から拡張ユニット4へ出力されるデバイス値を保持する出力デバイスとを有していてもよい。拡張ユニット4のデバイス記憶部60cのバッファメモリ58は、拡張ユニット4から基本ユニット3へ入力されたデバイス値を保持する入力デバイスと基本ユニット3から拡張ユニット4へ出力されるデバイス値を保持する出力デバイスとして機能してもよい。この入力デバイスは、基本ユニット3のデバイス記憶部40cの入力デバイスに関連付けられている。また出力デバイスは、基本ユニット3の出力デバイスに関連付けられている。
図6を用いて説明したように、PLC2は、基本ユニット3と通信する他の拡張ユニット4である入力ユニットであって、デバイス値を格納する第三デバイスメモリ(例:バッファメモリ58)を有する入力ユニット4bをさらに有していてもよい。図17を用いて説明したように、入力ユニット4bのバッファメモリ58に格納されたデバイス値がユニット間同期リフレッシュによって基本ユニット3が有するデバイス記憶部40cに書き込まれる。同様に、基本ユニット3のデバイス記憶部40cに書き込まれた当該デバイス値がユニット間同期リフレッシュによって拡張ユニット4(モーションユニット4a)のデバイス記憶部60cに書き込まれる。モーションユニット4aのプログラム実行部54は、基本ユニット3を経由して入力ユニット4bから転送されてきたデバイス値を用いてユーザプログラム56を実行する。このように入力ユニット4bのデバイス値はユニット間同期リフレッシュによって基本ユニット3からモーションユニット4aに転送されてもよい。なお、デバイス記憶部60cのデバイスメモリはバッファメモリ58であってもよい。
設定情報37、57は、デバイス記憶部40cにおいて入力ユニット4bのデバイス値を格納するデバイスの識別情報と、入力ユニット4bのデバイス値が格納される拡張ユニット4のバッファメモリ58の識別情報とを対応付けて管理する管理情報であってもよい。このような管理情報はデバイス管理部31、51がそれぞれパラメータ記憶部40b、60bに格納して保持していてもよい。プログラム実行部54やデバイス管理部51は、設定情報57を参照することで、入力ユニット4bのデバイス値が格納されたバッファメモリ58のアドレスを特定し、当該バッファメモリ58から入力ユニット4bのデバイス値を取得してもよい。つまり、ユーザプログラム56においては入力ユニット4bのデバイス値のデバイスの識別情報をそのまま記述することが可能となり、当該デバイス値を格納しているバッファメモリ58の識別情報を記述する必要はない。よって、ユーザのプログラミングの負担が軽減されよう。
図7を用いて説明したようにデバイス記憶部40cは1ビットの情報を保持するリレーデバイス(例:リレー39)と、数ビットの情報を保持するデータメモリ38とを有していてもよい。また、図8を用いて説明したようにデバイス記憶部60cは1ビットの情報を保持するリレーデバイス(1ビット型のバッファメモリ58)と、数ビットの情報を保持するデータメモリ(16ビット、32ビットまたは64ビット型のバッファメモリ58)とを有していてもよい。
図10を用いて説明したように、基本ユニット3は、通信部14および通信部114を介して拡張ユニット4に対してユーザプログラム56の実行を指示する。これによりユーザプログラム56が基本ユニット3から起動されるようになる。
基本ユニット3は、ユニット間同期周期を管理するCPUユニットタイマー32を有していてもよい。また、拡張ユニット4は、ユニット間同期周期を管理し、CPUユニットタイマー32と時刻同期した拡張ユニット4タイマーを有していてもよい。基本ユニット3は、CPUユニットタイマー32により管理されている時刻に同期してユニット間同期リフレッシュを実行する。拡張ユニット4は、拡張ユニット4タイマーにより管理されている時刻に同期してユニット間同期リフレッシュを実行する。これにより、基本ユニット3が保持しているデバイス値と拡張ユニット4が保持しているデバイス値の取得時刻に関する同時性が確保されるようになろう。
図14や図15を用いて説明したように、ユニット間同期リフレッシュによりデバイス値を更新されるデバイスと、スキャン周期にしたがって実行される入出力リフレッシュよりデバイス値を更新されるデバイスとは予めリフレッシュ設定情報(設定情報37、57)によって区別されていてもよい。少なくとも、ユーザは、ユニット間同期リフレッシュによりデバイス値を更新されるデバイスを一括して指定することで、ラダープログラム35の記述を簡潔化することができる。上述したように、ラダープログラム35にダイレクト通信による命令語を記述することで、一括リフレッシュのタイミング以外の任意のタイミングで各デバイス値を更新することも可能である。しかし、各デバイス値ごとにこのような命令語を記述することは非常に面倒であった。たとえば、1つのスキャンタイムで100回のダイレクト通信による更新を実行しようとするとラダープログラム35内の100か所に更新のための命令語を記述する必要があり、非常にプログラミングの負担が重かった。本実施形態であれば、このような記述が不要となるため、ユーザのプログラミング負担が軽減する。
たとえば、ユーザプログラム56はモーションフローによるフロープログラムであってもよい。もちろん、基本ユニット3で実行されるユーザプログラムはラダー言語以外の言語(例:C言語)で記述されてもよいし、拡張ユニット4で実行されるユーザプログラム56もモーションフロー以外の言語(例:C言語)で記述されてもよい。
本実施形態は様々なアプリケーションに対して適用可能である。たとえば、図6、図16および図17を用いて説明したように、ワーク47にプレス加工を行うようなアプリケーションにも本実施形態は適用可能である。
図6や図17などを用いて説明したようなアプリケーションにも本実施形態は適用可能である。モーションユニット4aのデバイス記憶部60cは、スキャン周期よりも短いユニット間同期周期ごとに通信部14および通信部114を介して更新され、基本ユニット3のデバイス記憶部40cのデバイス値と同期したデバイス値を格納する。モーションユニット4aのプログラム実行部54はデバイス記憶部60cに格納されたデバイス値を参照してモーションフローを実行する。入力ユニット4bは、ワーク47の有無を検知するセンサ44を被制御装置16として接続されている。入力ユニット4bのバッファメモリ58は、センサ44のオン/オフを示すデバイス値を格納するリレーデバイスを有する第三デバイスメモリの一例である。入力ユニット4bの通信部114は、少なくともユニット間同期周期ごとに基本ユニット3と通信し、リレーデバイスに格納されているデバイス値を基本ユニット3に送信する第三通信部の一例である。基本ユニット3は、入力ユニット4bから書き込まれたデバイス値のうち、モーションユニット4aで必要とされるデバイス値を、デバイス記憶部40cのうち所定のデバイスに格納し、モーションユニット4aのデバイス記憶部60cのデバイスとユニット間同期リフレッシュさせる。モーションユニット4aは、デバイス記憶部60cのバッファメモリ58から入力ユニット4bのデバイス値を読み出し、当該デバイス値がワーク47を検出したことを示すまで、ワーク47を搬送する搬送機構を稼働させる。搬送機構はコンベア46やサーボモータ42a、42bなどである。モーションユニット4aは、当該デバイス値がワーク47を検出したことを示すと搬送機構を減速制御することでワーク47をプレス位置に停止させる。このようなアプリケーションにも本実施形態を適用することで、基本ユニット3が保持している入力ユニット4bのデバイス値をモーションユニット4aに参照させることが可能となる。つまり、モーションユニット4aは当該デバイス値を用いてモーションフローのユーザプログラム56を実行できるようになる。
また、図13などを用いて説明したように、本実施形態によれば、プログラマブル・ロジック・コントローラの制御方法も提供される。図10を用いて説明したように、基本ユニット3は、拡張ユニット4と通信して当該拡張ユニット4にユーザプログラム56を起動させる。拡張ユニット4は基本ユニット3からの起動指示に従ってユーザプログラム56を起動する。図12などを用いて説明したように、基本ユニット3と拡張ユニット4は、基本ユニット3に保持されているデバイス値をスキャン周期ごと、または、スキャン周期よりも短いユニット間同期周期ごとにリフレッシュすることで当該デバイス値を拡張ユニット4のバッファメモリ58に格納する。図13などを用いて説明したように、拡張ユニット4は、ユーザプログラム56に記述されている命令語にしたがってデバイス値を拡張ユニット4のバッファメモリ58から取得して当該命令語を実行する。このように本実施形態によれば、基本ユニット3が保持しているデバイス値を拡張ユニット4に参照させることで当該デバイス値を用いて拡張ユニット4にユーザプログラム56を実行させることが可能となる。

Claims (10)

  1. CPUユニットと前記CPUユニットと通信する拡張ユニットと前記CPUユニットと通信する入力ユニットとを有するプログラマブル・ロジック・コントローラであって、
    前記CPUユニットは、
    スキャン周期にしたがって繰り返し第一ユーザプログラムを実行する第一プログラム実行部と、
    前記スキャン周期とは異なるユニット間同期周期を管理するCPUユニットタイマーと
    前記第一ユーザプログラムにしたがって前記第一プログラム実行部により参照されるデバイス値を格納する第一デバイスメモリと、
    前記拡張ユニットおよび前記入力ユニットと通信する第一通信部と
    を有し、
    前記拡張ユニットは、
    前記ユニット間同期周期を管理し、前記CPUユニットタイマーと時刻同期した拡張ユニットタイマーと
    前記CPUユニットと通信する第二通信部と、
    前記CPUユニットの前記第一デバイスメモリに関連付けられており、前記CPUユニットから前記拡張ユニットへ出力されるデバイス値が、前記ニット間同期周期ごとに前記第一通信部および前記第二通信部を介してユニット間同期リフレッシュとして更新されることで、前記第一デバイスメモリのデバイス値と同期したデバイス値を保持する第二デバイスメモリと、
    前記第二デバイスメモリに保持されたデバイス値を参照して第二ユーザプログラムを実行する第二プログラム実行部と
    を有
    前記入力ユニットは
    前記ユニット間同期周期を管理し、前記CPUユニットタイマーと時刻同期した入力ユニットタイマーと
    前記CPUユニットと通信する第三通信部と、
    前記第一デバイスメモリに関連付けられており、前記拡張ユニットから前記CPUユニットへ入力されたデバイス値が、前記ユニット間同期周期ごとに前記第一通信部および前記第三通信部を介して前記ユニット間同期リフレッシュとして更新されることで、前記第一デバイスメモリのデバイス値と同期したデバイス値を格納する第三デバイスメモリと
    を有し、
    前記拡張ユニットの前記第二プログラム実行部は、前記ユニット間同期周期ごとに、前記入力ユニットの前記第三デバイスメモリに保持されたデバイス値が前記ユニット間同期リフレッシュによって前記CPUユニットが有する前記第一デバイスメモリに書き込まれたのち、前記第一デバイスメモリに書き込まれた当該デバイス値が前記ユニット間同期リフレッシュによって前記拡張ユニットの前記第二デバイスメモリに書き込まれることで、前記CPUユニットを経由して前記入力ユニットから転送されてきた当該デバイス値を用いて前記第二ユーザプログラムを実行することを特徴とするプログラマブル・ロジック・コントローラ。
  2. 前記第二デバイスメモリはバッファメモリであることを特徴とする請求項に記載のプログラマブル・ロジック・コントローラ。
  3. 前記第一デバイスメモリにおいて前記入力ユニットのデバイス値を保持するデバイスの識別情報と、前記入力ユニットのデバイス値が保持される前記拡張ユニットの前記バッファメモリの識別情報とを対応付けて管理する管理情報を保持する管理部をさらに有し、
    前記第二プログラム実行部は、前記管理情報を参照することで、前記入力ユニットのデバイス値が保持された前記バッファメモリを特定し、当該バッファメモリから前記入力ユニットのデバイス値を取得することを特徴とする請求項に記載のプログラマブル・ロジック・コントローラ。
  4. 前記第一デバイスメモリは1ビットの情報を保持するリレーデバイスと、数ビットの情報を保持するデータメモリとを有しており、
    前記第二デバイスメモリは1ビットの情報を保持するリレーデバイスと、数ビットの情報を保持するデータメモリとを有していることを特徴とする請求項1ないしのいずれか一項に記載のプログラマブル・ロジック・コントローラ。
  5. 前記CPUユニットは、前記第一通信部および前記第二通信部を介して前記拡張ユニットに対して前記第二ユーザプログラムの実行を指示することを特徴とする請求項1ないしのいずれか一項に記載のプログラマブル・ロジック・コントローラ。
  6. 前記ユニット間同期リフレッシュによりデバイス値を更新されるデバイスと、前記スキャン周期にしたがって実行される入出力リフレッシュよりデバイス値を更新されるデバイスとは予めリフレッシュ設定情報によって区別されていることを特徴とする請求項に記載のプログラマブル・ロジック・コントローラ。
  7. 前記第一ユーザプログラムはラダープログラムであり、前記第二ユーザプログラムはモーションフローであることを特徴とする請求項1ないしのいずれか一項に記載のプログラマブル・ロジック・コントローラ。
  8. 前記第二デバイスメモリは、前記スキャン周期ごとの一括リフレッシュおよび前記スキャン周期とは異なるユニット間同期周期ごとに前記第一通信部および前記第二通信部を介して更新され、前記第一デバイスメモリのデバイス値と同期したデバイス値を格納する請求項1ないしのいずれか一項に記載のプログラマブル・ロジック・コントローラ。
  9. 前記ユニット間同期周期は、前記スキャン周期よりも短いことを特徴とする請求項1ないしのいずれか一項に記載のプログラマブル・ロジック・コントローラ。
  10. CPUユニットと前記CPUユニットと通信する複数の拡張ユニットとを有するプログラマブル・ロジック・コントローラであって、
    前記CPUユニットは、
    スキャン周期にしたがって繰り返し第一ユーザプログラムを実行する第一プログラム実行部と、
    前記スキャン周期とは異なるユニット間同期周期を管理するCPUユニットタイマーと
    前記第一ユーザプログラムにしたがって前記第一プログラム実行部により参照されるデバイス値を格納する第一デバイスメモリと、
    前記複数の拡張ユニットと通信する第一通信部と
    を有し、
    前記複数の拡張ユニットのうちモーションユニットは、
    前記ユニット間同期周期を管理し、前記CPUユニットタイマーと時刻同期した拡張ユニットタイマーと
    前記CPUユニットと通信する第二通信部と、
    前記CPUユニットの前記第一デバイスメモリに関連付けられており、前記CPUユニットから前記モーションユニットへ出力されるデバイス値が、前記ニット間同期周期ごとに前記第一通信部および前記第二通信部を介してユニット間同期リフレッシュとして更新されることで、前記第一デバイスメモリのデバイス値と同期したデバイス値を保持する第二デバイスメモリと、
    前記第二デバイスメモリに保持されたデバイス値を参照してモーションフローを実行する第二プログラム実行部と有し、
    前記複数の拡張ユニットのうち入力ユニットは、
    ワークの有無を検知するセンサと、
    前記ユニット間同期周期を管理し、前記CPUユニットタイマーと時刻同期した入力ユニットタイマーと、
    前記CPUユニットと通信する第三通信部と、
    前記センサのオン/オフを示すデバイス値であって、前記第一デバイスメモリに関連付けられており、前記モーションユニットから前記CPUユニットへ入力されたデバイス値が、前記ユニット間同期周期ごとに前記第一通信部および前記第三通信部を介して前記ユニット間同期リフレッシュとして更新されることで、前記第一デバイスメモリのデバイス値と同期したデバイス値保持するリレーデバイスを有する第三デバイスメモリ
    有し、
    前記モーションユニットの前記第二プログラム実行部は、前記ユニット間同期周期ごとに、前記入力ユニットの前記第三デバイスメモリに保持されたデバイス値が前記ユニット間同期リフレッシュによって前記CPUユニットが有する前記第一デバイスメモリに書き込まれたのち、前記第一デバイスメモリに書き込まれた当該デバイス値が前記ユニット間同期リフレッシュによって前記モーションユニットの前記第二デバイスメモリに書き込まれることで、前記CPUユニットを経由して前記入力ユニットから転送されてきた当該デバイス値を用いて前記モーションフローを実行し、
    前記モーションユニットは、前記第二デバイスメモリから前記入力ユニットのデバイス値を読み出し、当該デバイス値がワークを検出したことを示すまで、前記ワークを搬送する搬送機構を稼働させ、当該デバイス値がワークを検出したことを示すと前記搬送機構を減速制御することを特徴とするプログラマブル・ロジック・コントローラ。
JP2015207474A 2015-10-21 2015-10-21 プログラマブル・ロジック・コントローラ Active JP6626314B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015207474A JP6626314B2 (ja) 2015-10-21 2015-10-21 プログラマブル・ロジック・コントローラ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015207474A JP6626314B2 (ja) 2015-10-21 2015-10-21 プログラマブル・ロジック・コントローラ

Publications (2)

Publication Number Publication Date
JP2017079008A JP2017079008A (ja) 2017-04-27
JP6626314B2 true JP6626314B2 (ja) 2019-12-25

Family

ID=58665423

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015207474A Active JP6626314B2 (ja) 2015-10-21 2015-10-21 プログラマブル・ロジック・コントローラ

Country Status (1)

Country Link
JP (1) JP6626314B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7400215B2 (ja) * 2019-05-23 2023-12-19 オムロン株式会社 制御装置、データ不能化プログラム、および制御システム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001075932A (ja) * 1999-09-08 2001-03-23 Canon Inc ライン制御装置、ライン制御方法及びラインシステム
JP4414050B2 (ja) * 2000-02-28 2010-02-10 株式会社キーエンス データ作成装置、データ作成方法、データ作成プログラムを記録した記録媒体および表示装置
JP2002006907A (ja) * 2000-06-26 2002-01-11 Omron Corp I/oユニット及びプログラマブルコントローラシステム
JP2004199670A (ja) * 2002-12-04 2004-07-15 Omron Corp データ収集装置及びデータ収集システム
JP5235609B2 (ja) * 2008-10-23 2013-07-10 三菱電機株式会社 特殊ユニット模擬プログラム作成装置、プログラマブルコントローラ模擬装置、および方法
JP2010198600A (ja) * 2009-02-02 2010-09-09 Omron Corp 産業用コントローラ
JP5794449B2 (ja) * 2010-03-15 2015-10-14 オムロン株式会社 プログラマブルコントローラ
JP5994862B2 (ja) * 2012-10-26 2016-09-21 株式会社安川電機 開発支援装置及び開発支援プログラム

Also Published As

Publication number Publication date
JP2017079008A (ja) 2017-04-27

Similar Documents

Publication Publication Date Title
JP6626315B2 (ja) プログラマブル・ロジック・コントローラのモニタ装置及びプログラマブル・ロジック・コントローラ・システム
US10496079B2 (en) Control device and control method
US10761884B2 (en) Control device for operating multiple types of programs in different execution formats
JP6465620B2 (ja) 制御システムおよび制御方法
CN109581976B (zh) 控制装置
US9753447B2 (en) Control unit, output control method and program
JP6535459B2 (ja) プログラマブル・ロジック・コントローラ、基本ユニット、制御方法およびプログラム
US10180674B2 (en) Controller and control system
JP2019016327A (ja) プログラマブル・ロジック・コントローラ、データ収集装置およびプログラム作成支援装置
CN109923483B (zh) 仿真装置以及仿真方法
EP2682830A1 (en) Control device and system program, and recording medium
JP6729746B2 (ja) 制御装置
JP2016110460A (ja) プログラマブルコントローラ、プログラマブルコントローラの制御方法およびプログラム
JP6626313B2 (ja) プログラマブル・ロジック・コントローラ、拡張ユニット、制御方法、プログラム作成支援装置、プログラム作成支援方法およびプログラム
US11287793B2 (en) Control device, control method for control device, information processing program, and recording medium
JP6626314B2 (ja) プログラマブル・ロジック・コントローラ
JP2007102632A (ja) シミュレーション装置
US11269313B2 (en) Controller and control system that stores data in current control cycle for output in next control cycle
US11092945B2 (en) Control device, control method, and non-transitory storage medium storing control program
JP6484015B2 (ja) プログラマブル・ロジック・コントローラおよびその制御方法
JP2010079355A (ja) 複数plc間の協調制御システム
JP6571377B2 (ja) 拡張ユニット、プログラマブル・ロジック・コントローラおよびその制御方法
JP2017079005A (ja) プログラマブル・ロジック・コントローラ、制御方法、cpuユニットおよび拡張ユニット
CN104570826A (zh) 用于再现自动化设备的程序进程的方法
JP2024073818A (ja) 制御システムおよび情報処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190701

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190628

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190827

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191129

R150 Certificate of patent or registration of utility model

Ref document number: 6626314

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250