JP6484015B2 - プログラマブル・ロジック・コントローラおよびその制御方法 - Google Patents

プログラマブル・ロジック・コントローラおよびその制御方法 Download PDF

Info

Publication number
JP6484015B2
JP6484015B2 JP2014244364A JP2014244364A JP6484015B2 JP 6484015 B2 JP6484015 B2 JP 6484015B2 JP 2014244364 A JP2014244364 A JP 2014244364A JP 2014244364 A JP2014244364 A JP 2014244364A JP 6484015 B2 JP6484015 B2 JP 6484015B2
Authority
JP
Japan
Prior art keywords
program
unit
logic controller
programmable logic
execution means
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
JP2014244364A
Other languages
English (en)
Other versions
JP2016110220A (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 JP2014244364A priority Critical patent/JP6484015B2/ja
Publication of JP2016110220A publication Critical patent/JP2016110220A/ja
Application granted granted Critical
Publication of JP6484015B2 publication Critical patent/JP6484015B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Programmable Controllers (AREA)

Description

本発明は、プログラマブル・ロジック・コントローラおよびその制御方法に関する。
特許文献1が示すようにプログラマブル・ロジック・コントローラ(PLC)の基本ユニットは、ラダープログラムなどのユーザプログラムを繰り返し周期的に実行する。なお、ラダープログラムの繰り返し実行周期はスキャンタイムと呼ばれる。1回のスキャンタイム内ではラダープログラムが1回実行される。
特許文献2によればラダープログラムとC言語のプログラムとを実行するマイクロプロセッサを備えたモーションコントローラが提案されている。特許文献2のマイクロプロセッサは、ラダープログラムからC言語のプログラムをコールしてラダープログラムの処理を中断し、C言語のプログラムが終了するとラダープログラムの処理を再開する。
特開2014−052672号公報 特開2006−178818号公報
特許文献2によれば、モーションコントローラにおいてラダープログラムからC言語のプログラムをコールすることが可能となる。しかし、C言語のプログラムが実行されている間はラダープログラムの処理が中断されているため、C言語のプログラムの実行時間が長くなると、ラダープログラムの再開が遅れ、いわゆるスキャンタイムが延びてしまう。仮にラダープログラムとC言語のプログラムを並列に実行できれば、スキャンタイムの延びも抑制できるようになろう。
そこで、本発明は、ラダープログラムのようなグラフィカルプログラミング言語により記述されたプログラムとC言語のような高級プログラミング言語により記述されたプログラムとを並列に実行可能とすることを目的とする。
本発明は、たとえば、
ユーザプログラムを繰り返し実行するプログラマブル・ロジック・コントローラであって、
グラフィカルプログラミング言語で記述されたユーザプログラムである第1プログラムを実行する第1実行手段と、
高級プログラミング言語で記述された第2プログラムを実行する第2実行手段と、
前記第1プログラムから前記第2プログラムが呼び出されたかどうかを示す呼出情報を記憶する情報記憶手段と
を有し、
前記第1実行手段は、前記第1プログラムに含まれている命令語であって前記第2プログラムを呼び出す命令語を実行すると、前記第1プログラムから前記第2プログラムが呼び出されたことを示すように前記呼出情報を変更し、
前記第2実行手段は、前記呼出情報が前記第1プログラムから前記第2プログラムが呼び出されたことを示すようになると、前記第2プログラムを実行するように構成されており、
本発明は、さらに、
前記第1実行手段は、前記第1プログラムに設定されたブレークポイントに応じて前記第1プログラムをブレークし、
前記第2実行手段は、前記第1プログラムがブレークしていても継続して前記第2プログラムを実行するように構成されていることを特徴とするプログラマブル・ロジック・コントローラを提供する。
ユーザプログラムを繰り返し実行するプログラマブル・ロジック・コントローラであって、
グラフィカルプログラミング言語で記述されたユーザプログラムである第1プログラムを実行する第1実行手段と、
高級プログラミング言語で記述された第2プログラムを実行する第2実行手段と、
前記第1プログラムから前記第2プログラムが呼び出されたかどうかを示す呼出情報を記憶する情報記憶手段と
を有し、
前記第1実行手段は、前記第1プログラムに含まれている命令語であって前記第2プログラムを呼び出す命令語を実行すると、前記第1プログラムから前記第2プログラムが呼び出されたことを示すように前記呼出情報を変更し、
前記第2実行手段は、前記呼出情報が前記第1プログラムから前記第2プログラムが呼び出されたことを示すようになると、前記第2プログラムを実行するように構成されており、
前記第2実行手段は、前記第2プログラムに設定されたブレークポイントに応じて前記第2プログラムをブレークし、
前記第1実行手段は、前記第2プログラムがブレークしていても継続して前記第1プログラムを実行するように構成されていることを特徴とするプログラマブル・ロジック・コントローラを提供する。
本発明によれば、グラフィカルプログラミング言語で記述されたユーザプログラムである第1プログラムを実行する第1実行手段と高級プログラミング言語で記述された第2プログラムを実行する第2実行手段とを備え、呼出情報を記憶する情報記憶手段を通じて呼び出しを可能とすることで、これらのプログラムを並列して実行できるようになる。
PLCシステムの一例を示す図 ユーザプログラムの一例を示す図 プログラム作成支援装置の一例を示す図 PLCの一例を示す図 スキャンタイムを説明するための図 ベースレス・ビルディングタイプのPLCの一例を示す図 同期型のプログラ実行と非同期型のプログラム実行とを示す図 基本ユニットの機能を示す図 プログラム作成支援装置の機能示す図 第1プログラムの実行処理を示すフローチャート 第2プログラムの実行処理を示すフローチャート グラフィカルプログラミング言語で記述された第1プログラムの一例を示す図 高級プログラミング言語で記述された第2プログラムの一例を示す図 デバックの設定処理の一例を示すフローチャート グラフィカルプログラミング言語で記述された第1プログラムの一例を示す図 高級プログラミング言語で記述された第2プログラムの一例を示す図 ユーザプログラムの他の例を示す図
以下に本発明の一実施形態を示す。以下で説明される個別の実施形態は、本発明の上位概念、中位概念および下位概念など種々の概念を理解するために役立つであろう。また、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。
はじめにプログラマブル・ロジック・コントローラ(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に備えられたメモリ内に記憶される。なお、ここではニモニックコードを基本ユニット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には基本ユニット用の制御プログラムも格納されている。図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)とは全く異なる動きをする。
<連結構造>
図6(A)はPLC2を構成する基本ユニット3、拡張ユニット4およびエンドユニット11が連結される前の状態を示している。この例では、基本ユニット3の右方向に1つ以上の拡張ユニット4が連結される。最も右に位置する拡張ユニット4にはエンドユニット11が連結される。エンドユニット11は、最も右に位置する拡張ユニット4の右側面を保護するものであり、バスの終端機能を備えていてもよい。なお、拡張ユニット4の前面にはダイレクトアクセススイッチ27が設けられてもよい。ダイレクトアクセススイッチ27が操作されると、操作されたことを示す信号が通信バスを介して拡張ユニット4から基本ユニット3に伝達される。基本ユニット3は、この信号を受信することで、拡張ユニット4のダイレクトアクセススイッチ27が操作されたことを認識し、所定の処理(テスト結果の表示など)を実行する。
図6(B)はPLC2を構成する基本ユニット3、拡張ユニット4およびエンドユニット11が連結された状態を示している。このPLC2はベースレスのビルディングタイプであるため、ベースを使用せずに、基本ユニット3、拡張ユニット4およびエンドユニット11が連結される。工場において制御盤に設置しやすくするために、PLC2の背面にはDINレールなどの基準レール13が取り付けられるようになっている。なお、基本ユニット3および拡張ユニット4の連結状態を維持するためにロック機構が採用されてもよい。
<グラフィカルプログラミング言語と高級プログラミング言語>
PLC2で実行されるユーザプログラムは伝統的にラダー言語やモーションフローなどのグラフィカルプログラミング言語でプログラミングされていた。しかし、取り外し可能なメモリカードの読み書き制御やローカルエリアネットワーク(LAN)との通信制御、データの圧縮処理などは、ラダー言語で記述するよりもC言語などの高級プログラミング言語の方がユーザにとって容易に記述しやすい。もちろん、これらをラダー言語でも記述できるが、非常に複雑な記述を要するため、プログラミング作業が膨大となる。よって、高級プログラミング言語の方がプログラミングし易い処理については、今後、グラフィカルプログラミング言語よりも高級プログラミング言語が選択されるようになると予想される。
それでもPLC2で実行されるプログラムの主体はラダープログラムのままと考えられ、C言語プログラムはラダープログラムから呼び出されるであろう。なお、ラダープログラム以外にも、ラダープログラムと関連をもたない独立性の高いプログラムから呼び出される場合もあるであろう。一般に、ラダープログラムは上述したスキャンタイム内で実行され、C言語プログラムはラダープログラムから呼び出されて実行される。C言語プログラムの実行中はラダープログラムの実行が中断されており、C言語プログラムが終了すると、ラダープログラムの実行が再開される。よって、C言語プログラムの実行時間が長くなると、それだけラダープログラムの再開が遅れ、スキャンタイムが延びてしまう。このように従来はラダープログラムとC言語プログラムとが同期して実行されていたため、これらを並列実行することができなかった。そこで、本実施形態では、ラダープログラムとC言語プログラムとを非同期で実行できるようにすることで、これらを並列実行可能にする。
図7(A)は、ラダープログラムとC言語プログラムとが同期して実行されることを示す概念図である。図7(A)において環は1つのスキャンタイムを示している。環のうち白抜き部分はラダープログラムが実行されている期間を示し、斜線部はC言語プログラムが実行されている期間を示している。つまり、1つのスキャンタイムではラダープログラムが開始されると、途中でC言語プログラムが呼び出されてラダープログラムが中断し、C言語プログラムが終了するとラダープログラムが再開される。C言語プログラムの実行期間が延長されると、全体としてスキャンタイムも長くなってしまう。
図7(B)は、本実施形態の概念を示している。本実施形態では、ラダープログラムとC言語プログラムとが非同期で実行される。ラダープログラムとC言語プログラムとは基本的に並列に実行されるため、C言語プログラムの実行期間が延長されても、ラダープログラムのスキャンタイムが長くならない。ただし、C言語プログラムの実行状態(実行中/非実行中)やC言語プログラムが要求する引数などは、PLC2のデバイス(基本ユニット3や拡張ユニット4などから参照可能なメモリの記憶領域)に記憶される。つまり、ラダープログラムとC言語プログラムはデバイスを介して引数などを伝達する。
<PLCの機能>
ここではPLC2に必要となる機能が基本ユニット3に実装されるものとして説明する。なお、ここで説明する機能は通信ユニットやモーションユニットなどの拡張ユニット4に実装されてもよい。
図8は基本ユニット3のCPU10が制御プログラムを実行することで実現する機能を中心に示している。なお、CPU10は第1実行部70と第2実行部71に相当する演算部を異なる複数のCPUコアとして備えていてもよいし、一方はCPU10のCPUコアが担当し、他方はASICなどで実装されてもよい。特に、第1実行部70がラダープログラムを実行する際には高速処理が要求されるため、高速処理対応のASICで実装し、第2実行部71が通信処理などを実行する際には高速処理は要求されないため、高機能CPUなどで実装してもよい。この場合、第1実行部70と第2実行部71はユニット内部バス91によって接続され、通信する。なお、ユニット内部バス91はユニット外部バス90と比較して高速である。
記憶装置12には、基本ユニット3のシステムプログラム(ファームウエア)である制御プログラム75と、プログラム作成支援装置1から転送されてきたラダープログラム76およびC言語プログラム77などを記憶している。呼び出し管理デバイス78は、C言語プログラム77がラダープログラム76から呼び出されているかどうかを示すデバイス値(フラグなど)を記憶する記憶領域である。引数デバイス79は、たとえば、ラダープログラム76からC言語プログラム77に渡す引数をデバイス値として記憶する記憶領域である。なお、これらをデバイスとして説明するが、デバイスに代えてバッファが採用されてもよい。
CPU10において第1実行部70は、グラフィカルプログラミング言語で記述されたユーザプログラムである第1プログラムを実行する演算ユニットである。第1プログラムの一例としてラダープログラム76を採用するが、他のグラフィカルプログラミング言語で記述されたユーザプログラムであってもよい。第1実行部70は、ラダープログラム76を実行形式のコードに変換する機能を備えていてもよい。第1実行部70の外部にこのような変換器が設けられていてもよい。第1実行部70は、ラダープログラム76に含まれている命令語であってC言語プログラム77を呼び出す命令語を実行すると、ラダープログラム76からC言語プログラム77が呼び出されたことを示すように呼び出し管理デバイス78のデバイス値(呼出情報)を変更する。このように呼び出し管理デバイス78のデバイス値を変更することで、ラダープログラム76からC言語プログラム77が呼び出される。なお、第1実行部70は、呼び出し管理デバイス78のデバイス値を変更した後は、ラダープログラム76における次の命令語をすぐに継続的に実行し、C言語プログラム77が終了することを待たない。これによりスキャンタイムが延びてしまうことを抑制できる。
第2実行部71は、高級プログラミング言語で記述された第2プログラムを実行する演算ユニットである。第2プログラムの一例としてC言語プログラム77を採用するが、他の高級プログラミング言語で記述されたユーザプログラムであってもよい。第2実行部71は、呼び出し管理デバイス78のデバイス値がラダープログラム76からC言語プログラム77が呼び出されたことを示すように変更されると、C言語プログラム77を実行する。なお、第2実行部71は、C言語プログラム77を実行する上で必要となる引数を、引数デバイス79のデバイス値を参照することで、取得する。なお、第2実行部71は、C言語プログラム77の実行結果もデバイスを通じてラダープログラム76に返してもよい。
なお、複数のC言語プログラム77が存在する場合、呼び出し管理デバイス78は、複数のC言語プログラム77のそれぞれに設けられてもよい。たとえば、5つのC言語プログラム77が存在すれば、5つの呼び出し管理デバイス78が設けられる。第2実行部71は、複数の呼び出し管理デバイス78のうちどれがオフ(非実行/終了)からオン(実行/開始)に変ったかを監視しており、デバイス値がオンに変わった呼び出し管理デバイス78に対応付けられているC言語プログラム77を実行する。
プロジェクト管理部72は、プログラム作成支援装置1からラダープログラム76やC言語プログラム77などをプロジェクトとして受信して、記憶装置12に格納する。デバイス制御部73は呼び出し管理デバイス78や引数デバイス79などへの書き込みと読み出しを管理する。なお、デバイス制御部73はいずれかのデバイスが不用意に書き換えられないように排他制御を実行してもよい。デバッグ制御部74は、ラダープログラム76とC言語プログラム77とをそれぞれ個別にデバッグするユニットである。デバッグ制御部74は、プログラム作成支援装置1などの外部のデバッグ装置と協働してデバッグを実行してもよい。
専用機能管理部80は、基本ユニット3や拡張ユニット4に備えられている専用機能(例:メモリカードの読み書き制御、イーサネット(登録商標)ソケットの制御など)を制御および管理するユニットである。専用機能管理部80は、C言語プログラム77を実行する第2実行部71からの指示にしたがって、専用機能を制御し、制御結果を第2実行部71に返す。指示や制御結果もデバイスを通じて伝達されてもよい。
<プログラム作成支援装置1の機能>
図9はプログラム作成支援装置1が編集ソフトウエア88を実行することで実現するCPU24の機能を中心に記載している。編集ソフトウエア88は、記憶装置25の編集ソフト記憶部25bに記憶されている。ラダープログラム記憶部25aには、ラダープログラム76、C言語プログラム77、定義ファイル85などがプロジェクトとして記憶されている。定義ファイル85は、たとえば、基本ユニット3や拡張ユニット4が備える専用機能のインタフェースを定義しており、C言語プログラム77によって参照されて取り込まれる。
ラダープログラム作成部81は、たとえば、表示部7にラダープログラムの編集ウインドウを表示し、操作部8から入力された指示にしたがってラダープログラム76を作成する。C言語プログラム作成部82は、たとえば、表示部7にC言語プログラムの編集ウインドウを表示し、操作部8から入力された指示にしたがってC言語プログラム77を作成する。C言語プログラム作成部82は、ソースコードのエディタとコンパイラー(実行形式への変換器)を有しており、定義ファイル85を参照しつつC言語プログラム77のソースコードを変換して実行形式のC言語プログラム77を作成する。プロジェクト転送部83は、ラダープログラム作成部81により作成されたラダープログラム76と、C言語プログラム作成部82により作成されたC言語プログラム77をPLC2に転送する。
デバッグ部84は、ラダープログラム76にブレークポイントを設定してPLC2にラダープログラム76のデバッグを指示したり、C言語プログラム77にブレークポイントを設定して、PLC2にC言語プログラム77のデバッグを指示したりするデバッガである。
<PLC2におけるフロー>
図10は第1実行部70が実行する処理を示すフローチャートである。S1で操作部6からラダープログラム76の実行が指示されると、CPU10(第1実行部70)は、ラダープログラム76の実行を開始する。S2で第1実行部70は、ラダープログラム76から一つずつ順番に命令語を読み出す。S3で第1実行部70は読み出した命令語がC言語プログラム77を呼び出すための命令語であるかどうかを判定する。読み出した命令語がC言語プログラム77を呼び出すための命令語でなければS4に進む。S4で第1実行部70は読み出した命令語を実行してS2に戻り、次の命令語を読み出す。一方で、読み出した命令語がC言語プログラム77を呼び出すための命令語であればS5に進む。S5で第1実行部70は、呼び出し管理デバイス78のデバイス値を、C言語プログラム77の実行を意味する値に変更する。呼び出し管理デバイス78がビットデバイスであれば、“1”はC言語プログラム77の実行を意味し、“0”はC言語プログラム77の非実行を意味する。S6で第1実行部70はラダープログラム76によって定義されている引数を引数デバイス79に設定する(格納する)。S5とS6とはほぼ同時に実行されてもよいし、S6が先に実行されてもよい。その後、S2に戻り、第1実行部70はラダープログラム76を中断せずに継続して実行し、次の命令語を読み出す。
このように第1実行部70は呼び出し管理デバイス78を通じてラダープログラム76からC言語プログラム77を呼び出す(起動する)ことができる。また、第1実行部70は引数も引数デバイス79を通じてC言語プログラム77に渡すことができるようになる。
図11は第2実行部71が実行する処理を示すフローチャートである。S11で第2実行部71は呼び出し管理デバイス78のデバイス値を参照する。S12で第2実行部71は第1実行部70(つまり、ラダープログラム76)からC言語プログラム77が呼び出されているかどうかを判定する。たとえば、第2実行部71は呼び出し管理デバイス78のデバイス値がC言語プログラム77を実行することを意味するデバイス値になっているかどうかを判定する。C言語プログラム77が呼び出されていれば、S13に進む。S13で第2実行部71は引数デバイス79を参照し、引数を示すデバイス値を取得する。S14で第2実行部71は引数にしたがってC言語プログラム77を実行する。なお、引数デバイス79がワードデバイスであれば、複雑なデータを引数として渡すことが可能となる。引数の数に応じて、複数の引数デバイス79が用意されてもよい。
<ラダープログラムの一例>
図12はラダープログラム76のうちC言語プログラム77を呼び出す命令語の一例を示す図である。この例ではデバイスの一つであるDM1000のデバイス値が100になると、MSTRTという命令語が実行される。MSTRTはメモリカードの読み込み処理を実行するC言語プログラム77(LOADMEMCARD)を呼び出すため命令語である。MSTRTは、たとえば、5つの引数をC言語プログラム77に渡すことができる。この例では完了フラグ、進捗状況、エラーフラグ、エラー番号および中断フラグがデバイスを通じてC言語プログラム77に渡される。完了フラグはMR000というデバイスに割り付けられており、C言語プログラム77が完了したかどうかを示す。進捗状況はEM100というデバイスに割り付けられており、メモリカードの読み込み処理が何%完了したかを示している。エラーフラグはMR001というデバイスに割り付けられており、メモリカードの読み込み処理中にエラーが発生したかどうかを示す。エラー番号はEM101というデバイスに割り付けられており、メモリカードの読み込み処理中に発生したエラーの種類を示す。中断フラグはMR002というデバイスに割り付けられており、メモリカードの読み込み処理がユーザによって中断されたかどうかを示す。
図12によれば、第1実行部70は完了フラグMR000がオンとなったことを検知すると、C言語プログラム77が完了したと認識し、エラーフラグMR001がオンかオフかに応じた処理を実行する。たとえば、エラーフラグMR001がオンであれば、第1実行部70はDM1000に999を代入するとともに、エラー番号をDM1001に代入し、エラー番号を表示部5に表示する。また、完了フラグMR000がオフであれば、第1実行部70は進捗状況EM100のデバイス値をDM10に代入し、表示部5に進捗状況を表示する。
図13はC言語プログラム77の一例を示す図である。P1の部分では、上述した5つの引数が定義されている。OPE_CMP(0)は完了フラグである。OPE_PRG(1)は進捗状況を示す変数である。OPE_ERR_FLG(2)はエラーフラグである。OPE_ERR_NO(3)はエラー番号を示す変数である。OPE_CANCEL(4)は中断フラグである。
P2の部分にはメモリカードをオープンするためのコードが含まれている。該当する名称のファイルが存在しなければ、第2実行部71は、エラー番号に−5を設定し、エラーフラグにはエラーの発生を意味する1を設定し、完了フラグにはC言語プログラム77の完了を示す1を設定する。
P3にはファイルサイズが最大バッファサイズを超えないかどうかを判定するコートが記載されている。この例では、ファイルサイズが最大バッファサイズを超えていると、第2実行部71はエラー番号に−6を設定し、エラーフラグを1に設定し、終了フラグを1に設定する。
P4には256バイトずつデータを読み込む処理が記載されている。この例では、ユーザまたはラダープログラムによって中断が指示されると、第2実行部71はC言語プログラム77を中断(例えばbreak)する。この例で、第2実行部71は、読み出しの完了したデータサイズiCurPosとファイルの全体サイズiSizeとから進捗状況(%)を算出し、進捗状況を示すOPE_PRGに代入している。
P5ではメモリカードをクローズし、完了フラグに1を設定するコードが記述されている。
このようにC言語プログラム77を実行する上で必要となる引数は引数デバイスを通じてラダープログラム76(第1実行部70)からC言語プログラム77(第2実行部71)に渡すことが可能となる。
<デバッグ>
図7(A)に示したようなラダープログラムとC言語プログラムとが同期して実行されるシステムでは、一方のプログラムを停止させると、他方のプログラムも停止させることになる。つまり、ラダープログラムを停止させずに実行させておき、それと並行してC言語プログラムについてデバッグを実行したり、また、C言語プログラムを実行しながらラダープログラムをデバッグしたりすることができなかった。
一方、図7(B)に示したように本実施の形態ではラダープログラムとC言語プログラムとが非同期で実行される。つまり、一方を実行したまま並列に他方のデバッグを実行することが用意である。そこで、デバッグの機能について説明する。
図14はデバッガ(デバッグ装置)の処理を示すフローチャートである。このではプログラム作成支援装置1がデバッグ装置として機能する。プログラム作成支援装置1とは別にデバッグ装置が実装されてもよい。
S15でプログラム作成支援装置1のデバッグ部84は、ラダープログラム76またはC言語プログラム77などのユーザプログラムを表示部7に表示する。S16でデバッグ部84は操作部8から入力された指示にしたがってユーザプログラムにブレークポイントを設定する。S17でデバッグ部84はブレークポイントを基本ユニット3のデバッグ制御部74に通知する。
デバッグ制御部74はデバッグ部84から通知されたブレークポイントをユーザプログラムに設定する。たとえば、デバッグ制御部74はユーザプログラムの一部を書き換えることでブレークポイントをユーザプログラムに設定する。デバッグ制御部74は、デバッグ部84からデバッグの開始を指示されると、書き換えたユーザプログラムであるラダープログラム76またはC言語プログラム77を第1実行部70または第2実行部71に実行させる。
第1実行部70は第2実行部71においてC言語プログラム77のデバッグが実行されている間も、ラダープログラム76を継続的に実行する。同様に、第2実行部71は第1実行部70においてラダープログラム76のデバッグが実行されている間も、C言語プログラム77を継続的に実行する。ブレークポイントに到達すると、ブレークイベントが発生する。
<グラフィカルプログラミング言語で記述されたユーザプログラム>
ここでは、グラフィカルプログラミング言語で記述されたユーザプログラムの他の例としてフロープログラムについて説明する。
図15はフロープログラムの一例を示している。フロープログラムは、モーションフローなどのフロー言語で記述され、たとえばモーションユニットなどの拡張ユニット4で使用されることがある。モーションユニットは、主に製品や検査対象物の位置決めを実行するユニットである。この例では、モーションユニットが原点への復帰と位置決め制御を実行するのと並行し、サブルーチンとして高級言語で記述されたプログラム(例:C言語で記述されたPREPARENEXT)が呼び出されて実行される。PREPARENEXTは、たとえば、段取り替え準備処理を実行するためのプログラムである。段取り替えとは、ラインを搬送される製品が変更されたり、工程内容が変更されたりしたときに必要となる段取り作業のことである。第2実行部71は、フロープログラムからサブルーチンとしてC言語プログラムを呼び出すが、C言語プログラムの終了を待たずにフロープログラムの次の命令語を実行する。
図16はフロープログラムから呼び出されるC言語プログラムの一例を示す図である。この例ではC言語プログラムはメモリカードの読み込み処理を実行するためのプログラムである。P10ではメモリカードを読み込むためのBOOL型の関数が定義されている。P11はC言語プログラムの使用部分であり、メモリカードを読み込むための関数を実行するためのコードが含まれている。P12では段取り替え処理のためのデータがモーションユニット内のバッファメモリに書き込まれている。たとえば、製造工程における製品がワークAからワークBに代えられると、モーションユニット内のバッファメモリには、メモリカードから読み出されたワークBのデータが書き込まれる。
<通信ユニットのプログラミング>
図17(A)は通信ユニット用のグラフィカルプログラミング言語で記述されたユーザプログラムの一例である。図17(B)は通信ユニット内で実行されるC言語プログラムの一例である。ここでは、C言語で記述された通信プログラムは通信データの圧縮処理を行うプログラムである。
図17(A)が示すようなGUIを通じてプログラム作成支援装置1では、通信プログラムを設定するためのプログラミングが実行される。このグラフィカルプログラミング言語で記述されたユーザプログラムは、コマンドの名称(圧縮データ通信)、通信形態(例:イベント)、開始デバイス、完了デバイス、サイズ、データデバイスなどを設定する。つまり、第1実行部70は、プログラム作成支援装置1から転送されてきたグラフィカルプログラミング言語で記述されたユーザプログラムを実行し、これらの設定データを第2実行部71で実行される通信プログラムに設定する。第2実行部71は、これらの特定のデバイスを監視し、設定データにしたがって通信プログラムを実行する。通信プログラム(第2実行部71)は開始デバイスであるUG1000をポーリングで監視し、そのデバイス値が0でなければデータを送信する。送信されるデータは、データデバイスであるUG1004以降のデバイス値で設定される。送信対象となるデータを格納しているデバイスの数はサイズデバイスであるUG1002で指定される。UG1001は送信対象のデータの送信が完了したかどうかを示している。
図17(B)において、P15は通信データを圧縮する圧縮アルゴリズムを呼び出すためのコード部分である。圧縮アルゴリズムはどのようなものが採用されてもよいため、記述していない。P16にはメモリカードから読み出したデータを圧縮し、データを送信するためのコードが記載されている。P17には開始デバイスであるUG1000が0でなければ、データの圧縮と送信を実行する、といったコードが記述されている。つまり、開始デバイスは上述した呼び出し管理デバイスとして機能している。
<まとめ>
以上説明したように、本実施形態は、ユーザプログラムを繰り返し実行するプログラマブル・ロジック・コントローラに適用可能である。たとえば、本実施形態は、PLC2の基本ユニット3や拡張ユニット4(たとえば通信ユニットやモーションユニット)などに適用可能である。とりわけ、本実施形態では、グラフィカルプログラミング言語で記述されたユーザプログラムである第1プログラム(ここでは一例としてラダープログラム76とした)を実行する第1実行部70と、高級プログラミング言語で記述された第2プログラム(ここでは一例としてC言語プログラム77とした)を実行する第2実行部71とが設けられている。つまり、第1プログラムと第2プログラムとは並列に実行可能である。このように非同期で第1プログラムと第2プログラムとを実行する場合、どのように第1プログラムから第2プログラムを呼び出すかについて工夫が必要となる。本実施形態では、ラダープログラム76からC言語プログラム77が呼び出されたかどうかを示す呼出情報を情報記憶手段(例:呼び出し管理デバイス78)が記憶する。さらに、第1実行部70は、ラダープログラム76に含まれている命令語であってC言語プログラム77を呼び出す命令語(例:MSTRT)を実行すると、ラダープログラム76からC言語プログラム77が呼び出されたことを示すように呼出情報(例:呼び出し管理デバイス78に記憶されているデバイス値)を変更する。第2実行部71は、呼び出し管理デバイス78のデバイス値がラダープログラム76からC言語プログラム77が呼び出されたことを示すデバイス値へと変更されると、C言語プログラム77を実行する。このように情報記憶手段である呼び出し管理デバイス78は、第1実行部70と第2実行部71との双方からアクセス可能であるため、呼出情報を簡易な構成により伝達できるようになる。このように、本実施形態では、グラフィカルプログラミング言語で記述されたユーザプログラムである第1プログラムを実行する第1実行部70と、高級プログラミング言語で記述された第2プログラムを実行する第2実行部71とが設けられているため、第1プログラムと第2プログラムを並列に実行することが可能となり、スキャンタイムが延びにくくなる。
図8を用いて説明したように、記憶装置12は、ラダープログラム76と、高級プログラミング言語で記述された複数のC言語プログラム77とを記憶するプログラム記憶手段として機能する。呼び出し管理デバイス78は、複数のC言語プログラム77に対して一対一で対応した複数の呼出情報を記憶してもよい。なお、複数の呼び出し管理デバイス78が設けられてもよい。この場合、呼び出し管理デバイス78とC言語プログラム77とが一対一で関連付けられることになろう。第2実行部71は、複数の呼出情報のうちいずれかの呼出情報がC言語プログラム77の呼び出しを示すようになると、当該呼出情報に対応したC言語プログラム77を実行する。このように高級プログラミング言語で記述された複数の第2プログラムが存在する場合であっても、それぞれの呼出情報を記憶することで、グラフィカルプログラミング言語で記述された第1プログラムは、複数の第2プログラムを区別して適切に呼び出すことが可能となる。
第1実行部70は、呼出情報を通じてC言語プログラム77の実行を第2実行部71に開始させると、C言語プログラム77の終了を待たずにラダープログラム76を継続して実行する。このように第1プログラムと第2プログラムとを並列実行することに加え、第1プログラムが第2プログラムの終了を待たずに実行を継続することで、スキャンタイムの延びをさらに削減できるようになろう。
図8を用いて説明したように引数デバイス79は第1実行部70と第2実行部71との双方からアクセス可能な記憶装置であるデバイスメモリの一例である。第1実行部70と第2実行部71は引数を、デバイスメモリを通じて交換する。このようにプログラマブル・ロジック・コントローラに特有の技術であるデバイスメモリを活用することで、第1プログラムと第2プログラムとの間で容易に引数を交換することが可能となる。
図14を用いて説明したように、第1実行部70は、ラダープログラム76に設定されたブレークポイントに応じてラダープログラム76をブレークする。第2実行部71は、ラダープログラム76がブレークしていても継続してC言語プログラム77を実行する。本実施形態では、第1プログラムと第2プログラムとを並列かつ非同期で実行可能としているため、第1プログラムをブレークしても、第2プログラムの実行を継続できるようになる。
図8や図14を用いて説明したように、デバッグ制御部74は、PLC2に接続されたプログラム作成支援装置1などのデバッグ装置からの指示に応じて、ラダープログラム76に設定されたブレークポイントでブレークが発生するようラダープログラム76を書き換えるプログラム書き換え手段として機能してもよい。これによりデバッグに必要な部分だけを書き換えればデバッグを実行できるようになるため、プログラム作成支援装置1からPLC2に対して第1プログラムの全体を転送する手間を省けるようになる。
第2実行部71は、C言語プログラム77に設定されたブレークポイントに応じてC言語プログラム77をブレークしても、第1実行部70は、継続してラダープログラム76を実行してもよい。つまり、本実施形態では、第2プログラムをブレークしても、第1プログラムの実行を継続できるようになる。
図8や図14を用いて説明したように、デバッグ制御部74は、PLC2に接続されたプログラム作成支援装置1などのデバッグ装置からの指示に応じて、C言語プログラム77に設定されたブレークポイントでブレークが発生するようC言語プログラム77を書き換えるプログラム書き換え手段として機能してもよい。これによりデバッグに必要な部分だけを書き換えればデバッグを実行できるようになるため、プログラム作成支援装置1からPLC2に対して第2プログラムの全体を転送する手間を省けるようになる。なお、デバッグ制御部74やデバッグ部84は、第1プログラムと第2プログラムとで別々に設けられてもよい。
図9などを用いて説明したように、ラダープログラム76とC言語プログラム77は、PLC2に接続可能なプログラム作成支援装置1において作成されてPLC2に転送されてもよい。なお、ラダープログラム76を作成するプログラム作成支援装置と、C言語プログラム77を作成するプログラム作成支援装置とは同一の装置であってもよいし、別の装置であってもよい。
図9に関して説明したように、C言語プログラム77などの第2プログラムは、プログラム作成支援装置1において、PLC2が備える機能(例:メモリカードの読み込み機能、位置制御機能、通信機能など)を制御するためのインタフェースを定義したファイル群(例:定義ファイル85)と高級プログラミング言語で記述されたソースプログラムとから実行形式のプログラムとして生成されてもよい。このように第2プログラムはプログラム作成支援装置1においてオブジェクトコードとして作成されてもよい。なお、基本ユニット3におけるメモリカードの読み込み機能やモーションユニットの位置制御機能、ネットワーク通信ユニットの通信機能についての制御プログラムは、グラフィカルプログラミング言語よりも高級プログラミング言語が向いている。つまり、高級プログラミング言語は、簡素で容易にこれらの制御プログラムを記述できるからである。
このように、プログラマブル・ロジック・コントローラが備える機能は、PLC2の基本ユニット3が備える機能(例:メモリカードの読み込み機能)または当該基本ユニット3に接続された拡張ユニットが備える機能(例:位置制御機能、通信機能など)であってもよい。つまり、本実施形態に記載された技術的思想は、一般に、プログラマブル・ロジック・コントローラに適用可能であり、より具体的には、基本ユニット3や拡張ユニット4に適用可能である。
上述した実施形態では基本ユニット3に第1実行部70と第2実行部71とが実装されるものとして説明した。しかし、拡張ユニット4に第1実行部70と第2実行部71とが実装されてもよい。また、第1実行部70と第2実行部71とは基本ユニット3の外部に設けられるユニット外部バス90を介さずに、基本ユニット3の内部に設けられるユニット内部バス91を介して通信可能に構成されてもよい。なお、拡張ユニット4に第1実行部70と第2実行部71とが実装される場合も、第1実行部70と第2実行部71とは拡張ユニット4の内部に設けられたユニット内部バス91を介して通信する。なお、第1実行部70と第2実行部71とがそれぞれ異なるユニットに存在すると、これらは外部バスを介して通信しなければならない。外部バスの通信状況によっては処理スピード遅延の虞もある。また、通信コマンドの生成や送信など処理の煩雑化を招くだろう。これはPLC2の全体として動作のボトルネックを招きかねない。よって、第1実行部70と第2実行部71とを同一の筐体内に設けることで、他の筐体への通信コマンドを生成する必要がなくなる。これは、通信処理を簡素化することになり、処理スピードが向上しよう。

Claims (15)

  1. ユーザプログラムを繰り返し実行するプログラマブル・ロジック・コントローラであって、
    グラフィカルプログラミング言語で記述されたユーザプログラムである第1プログラムを実行する第1実行手段と、
    高級プログラミング言語で記述された第2プログラムを実行する第2実行手段と、
    前記第1プログラムから前記第2プログラムが呼び出されたかどうかを示す呼出情報を記憶する情報記憶手段と
    を有し、
    前記第1実行手段は、前記第1プログラムに含まれている命令語であって前記第2プログラムを呼び出す命令語を実行すると、前記第1プログラムから前記第2プログラムが呼び出されたことを示すように前記呼出情報を変更し、
    前記第2実行手段は、前記呼出情報が前記第1プログラムから前記第2プログラムが呼び出されたことを示すようになると、前記第2プログラムを実行するように構成されており、
    前記第1実行手段は、前記第1プログラムに設定されたブレークポイントに応じて前記第1プログラムをブレークし、
    前記第2実行手段は、前記第1プログラムがブレークしていても継続して前記第2プログラムを実行するように構成されていることを特徴とするプログラマブル・ロジック・コントローラ。
  2. ユーザプログラムを繰り返し実行するプログラマブル・ロジック・コントローラであって、
    グラフィカルプログラミング言語で記述されたユーザプログラムである第1プログラムを実行する第1実行手段と、
    高級プログラミング言語で記述された第2プログラムを実行する第2実行手段と、
    前記第1プログラムから前記第2プログラムが呼び出されたかどうかを示す呼出情報を記憶する情報記憶手段と
    を有し、
    前記第1実行手段は、前記第1プログラムに含まれている命令語であって前記第2プログラムを呼び出す命令語を実行すると、前記第1プログラムから前記第2プログラムが呼び出されたことを示すように前記呼出情報を変更し、
    前記第2実行手段は、前記呼出情報が前記第1プログラムから前記第2プログラムが呼び出されたことを示すようになると、前記第2プログラムを実行するように構成されており、
    前記第2実行手段は、前記第2プログラムに設定されたブレークポイントに応じて前記第2プログラムをブレークし、
    前記第1実行手段は、前記第2プログラムがブレークしていても継続して前記第1プログラムを実行するように構成されていることを特徴とするプログラマブル・ロジック・コントローラ。
  3. 前記プログラマブル・ロジック・コントローラは、基本ユニットと、当該基本ユニットの機能を拡張するための拡張ユニットとを備え、
    前記基本ユニットは、前記第1実行手段および前記第2実行手段を備えることを特徴とする請求項1または2に記載のプログラマブル・ロジック・コントローラ。
  4. 前記第1行手段と前記第2行手段は、前記基本ユニットの外部に設けられるユニット外部バスを介さずに、前記基本ユニットの内部に設けられるユニット内部バスを介して通信可能に構成されていることを特徴とする請求項に記載のプログラマブル・ロジック・コントローラ。
  5. 前記プログラマブル・ロジック・コントローラは、基本ユニットと、当該基本ユニットの機能を拡張するための拡張ユニットとを備え、
    前記拡張ユニットは、前記第1実行手段および前記第2実行手段を備えることを特徴とする請求項1または2に記載のプログラマブル・ロジック・コントローラ。
  6. 前記第1プログラムと、高級プログラミング言語で記述された複数の第2プログラムとを記憶するプログラム記憶手段をさらに有し、
    前記情報記憶手段は、前記複数の第2プログラムに対して一対一で対応した複数の呼出情報を記憶しており、
    前記第2実行手段は、前記複数の呼出情報のうちいずれかの呼出情報が第2プログラムの呼び出しを示すようになると、当該呼出情報に対応した第2プログラムを実行することを特徴とする請求項1ないしのいずれか1項に記載のプログラマブル・ロジック・コントローラ。
  7. 前記第1実行手段は、前記呼出情報を通じて前記第2プログラムの実行を前記第2実行手段に開始させると、前記第2プログラムの終了を待たずに前記第1プログラムを継続して実行することを特徴とする請求項1ないしのいずれか1項に記載のプログラマブル・ロジック・コントローラ。
  8. 前記第1実行手段と前記第2実行手段との双方からアクセス可能な記憶装置であるデバイスメモリをさらに有し、
    前記第1実行手段と前記第2実行手段は引数を、前記デバイスメモリを通じて交換することを特徴とする請求項1ないしのいずれか1項に記載のプログラマブル・ロジック・コントローラ。
  9. 前記プログラマブル・ロジック・コントローラに接続されたデバッグ装置からの指示に応じて、前記第1プログラムに設定されたブレークポイントでブレークが発生するよう前記第1プログラムを書き換えるプログラム書き換え手段をさらに有することを特徴とする請求項に記載のプログラマブル・ロジック・コントローラ。
  10. 前記プログラマブル・ロジック・コントローラに接続されたデバッグ装置からの指示に応じて、前記第2プログラムに設定されたブレークポイントでブレークが発生するよう前記第2プログラムを書き換えるプログラム書き換え手段をさらに有することを特徴とする請求項に記載のプログラマブル・ロジック・コントローラ。
  11. 前記第1プログラムと前記第2プログラムは、前記プログラマブル・ロジック・コントローラに接続可能なプログラム作成支援装置において作成されて前記プログラマブル・ロジック・コントローラに転送されることを特徴とする請求項1ないし10のいずれか1項に記載のプログラマブル・ロジック・コントローラ。
  12. 前記第2プログラムは、前記プログラム作成支援装置において、前記プログラマブル・ロジック・コントローラが備える機能を制御するためのインタフェースを定義したファイル群と前記高級プログラミング言語で記述されたソースプログラムとから実行形式のプログラムとして生成されることを特徴とする請求項11に記載のプログラマブル・ロジック・コントローラ。
  13. 前記プログラマブル・ロジック・コントローラが備える機能は、前記プログラマブル・ロジック・コントローラの基本ユニットが備える機能または当該基本ユニットに接続された拡張ユニットが備える機能であることを特徴とする請求項12に記載のプログラマブル・ロジック・コントローラ。
  14. ユーザプログラムを繰り返し実行するプログラマブル・ロジック・コントローラの制御方法であって、
    第1実行手段が、グラフィカルプログラミング言語で記述された第1プログラムを実行する工程と、
    第2実行手段が、高級プログラミング言語で記述された第2プログラムを実行する工程と、
    情報記憶手段が、前記第1プログラムから前記第2プログラムが呼び出されたかどうかを示す呼出情報を記憶する工程と
    前記第1実行手段、前記第1プログラムに含まれている命令語であって前記第2プログラムを呼び出す命令語を実行すると、前記第1プログラムから前記第2プログラムが呼び出されたことを示すように前記呼出情報を変更する工程とを有し、
    前記第2プログラムを実行する工程は、前記第2実行手段、前記呼出情報が前記第1プログラムから前記第2プログラムが呼び出されたことを示すようになると、前記第2プログラムを実行する工程を有し、
    前記制御方法は、さらに、
    前記第1実行手段が、前記第1プログラムに設定されたブレークポイントに応じて前記第1プログラムをブレークする工程と、
    前記第2実行手段が、前記第1プログラムがブレークしていても継続して前記第2プログラムを実行する工程と
    を有することを特徴とするプログラマブル・ロジック・コントローラの制御方法。
  15. ユーザプログラムを繰り返し実行するプログラマブル・ロジック・コントローラの制御方法であって、
    第1実行手段が、グラフィカルプログラミング言語で記述された第1プログラムを実行する工程と、
    第2実行手段が、高級プログラミング言語で記述された第2プログラムを実行する工程と、
    情報記憶手段が、前記第1プログラムから前記第2プログラムが呼び出されたかどうかを示す呼出情報を記憶する工程と、
    前記第1実行手段が、前記第1プログラムに含まれている命令語であって前記第2プログラムを呼び出す命令語を実行すると、前記第1プログラムから前記第2プログラムが呼び出されたことを示すように前記呼出情報を変更する工程と、を有し、
    前記第2プログラムを実行する工程は、前記第2実行手段が、前記呼出情報が前記第1プログラムから前記第2プログラムが呼び出されたことを示すようになると、前記第2プログラムを実行する工程を有し、
    前記制御方法は、さらに、
    前記第2実行手段が、前記第2プログラムに設定されたブレークポイントに応じて前記第2プログラムをブレークする工程と、
    前記第1実行手段が、前記第2プログラムがブレークしていても継続して前記第1プログラムを実行する工程と
    を有することを特徴とするプログラマブル・ロジック・コントローラの制御方法。
JP2014244364A 2014-12-02 2014-12-02 プログラマブル・ロジック・コントローラおよびその制御方法 Active JP6484015B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014244364A JP6484015B2 (ja) 2014-12-02 2014-12-02 プログラマブル・ロジック・コントローラおよびその制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014244364A JP6484015B2 (ja) 2014-12-02 2014-12-02 プログラマブル・ロジック・コントローラおよびその制御方法

Publications (2)

Publication Number Publication Date
JP2016110220A JP2016110220A (ja) 2016-06-20
JP6484015B2 true JP6484015B2 (ja) 2019-03-13

Family

ID=56124076

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014244364A Active JP6484015B2 (ja) 2014-12-02 2014-12-02 プログラマブル・ロジック・コントローラおよびその制御方法

Country Status (1)

Country Link
JP (1) JP6484015B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7091986B2 (ja) 2018-10-05 2022-06-28 オムロン株式会社 制御システム、制御方法、および開発支援プログラム
JP7024679B2 (ja) * 2018-10-05 2022-02-24 オムロン株式会社 開発支援プログラム、開発支援装置、および開発支援方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10307607A (ja) * 1997-05-08 1998-11-17 Hitachi Ltd 主プロセッサ及びプログラマブルコントローラ
JP2006178818A (ja) * 2004-12-24 2006-07-06 Yaskawa Electric Corp モーションコントローラとエンジニアリングツール並びにc言語実行システム
JP4821717B2 (ja) * 2007-06-29 2011-11-24 富士電機株式会社 プログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステム
JP5771114B2 (ja) * 2011-10-12 2015-08-26 株式会社日立製作所 コントローラ、およびタスクとラダーの処理方法
JP5992776B2 (ja) * 2012-09-04 2016-09-14 株式会社キーエンス プログラマブルコントローラ、プログラム作成支援装置、プログラム及び基本ユニット

Also Published As

Publication number Publication date
JP2016110220A (ja) 2016-06-20

Similar Documents

Publication Publication Date Title
JP5942446B2 (ja) サポート装置およびサポートプログラム
US10228675B2 (en) Controlling one or more devices upon detecting abnormal behavior
JP6550269B2 (ja) プログラム作成支援装置、制御方法およびプログラム
US11022950B2 (en) Resilient failover of industrial programmable logic controllers
WO2024140416A1 (zh) 一种工业控制程序开发平台及方法
JP2014146070A (ja) 制御装置、制御方法、およびプログラム
JP6550268B2 (ja) プログラム作成支援装置、プログラムおよび判別方法
JP6484015B2 (ja) プログラマブル・ロジック・コントローラおよびその制御方法
KR101704751B1 (ko) 모듈 간의 타이밍 정보를 이용하는 멀티코어 시스템의 시뮬레이터, 및 그 시뮬레이션 방법
JP6695679B2 (ja) プログラマブル・ロジック・コントローラ、プログラム作成支援装置、プログラム作成支援方法およびプログラム
JP6362821B2 (ja) 制御装置、制御方法および命令セット
CN112639636B (zh) 开发支援装置、开发支援方法以及存储介质
JP2014199485A (ja) 情報処理装置および情報処理プログラム
KR101240703B1 (ko) Plc 네트워크 증설방법 및 이를 이용한 네트워크 증설시스템
JPH04149658A (ja) 情報処理装置
JP6626314B2 (ja) プログラマブル・ロジック・コントローラ
US9386130B2 (en) Method of communications in a network interconnecting at least two power generators, and corresponding interfacing device
US11579580B2 (en) Control system, control method, and non-transitory computer readable medium
JP2017079005A (ja) プログラマブル・ロジック・コントローラ、制御方法、cpuユニットおよび拡張ユニット
JP2003067010A (ja) ビット演算制御装置及びこれを備えるプログラマブルロジックコントローラ
JP2022139089A (ja) 開発支援装置、開発支援方法および開発支援プログラム
JP2016110393A (ja) プログラマブルコントローラ、プログラマブルコントローラの試験方法およびプログラム
CN117581197A (zh) 编程辅助方法、编程辅助用的程序以及编程辅助系统
JP2007128413A (ja) プログラマブルコントローラ
JPH1185518A (ja) 制御装置

Legal Events

Date Code Title Description
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: 20180620

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180706

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180822

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190215

R150 Certificate of patent or registration of utility model

Ref document number: 6484015

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250