JP2016224558A - プログラム作成支援装置、制御方法およびプログラム - Google Patents

プログラム作成支援装置、制御方法およびプログラム Download PDF

Info

Publication number
JP2016224558A
JP2016224558A JP2015107841A JP2015107841A JP2016224558A JP 2016224558 A JP2016224558 A JP 2016224558A JP 2015107841 A JP2015107841 A JP 2015107841A JP 2015107841 A JP2015107841 A JP 2015107841A JP 2016224558 A JP2016224558 A JP 2016224558A
Authority
JP
Japan
Prior art keywords
program
unit
simulation
language
execution
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
JP2015107841A
Other languages
English (en)
Other versions
JP6550269B2 (ja
Inventor
圭矢 下村
Yoshiya Shimomura
圭矢 下村
祐介 曽根田
Yusuke Soneta
祐介 曽根田
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 JP2015107841A priority Critical patent/JP6550269B2/ja
Publication of JP2016224558A publication Critical patent/JP2016224558A/ja
Application granted granted Critical
Publication of JP6550269B2 publication Critical patent/JP6550269B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Programmable Controllers (AREA)

Abstract

【課題】グラフィカルプログラミング言語により記述されるプログラムについてのシミュレータと高級プログラミング言語により記述されるプログラムについてのシミュレータとを連携させることで、ユーザのプログラム開発負担を軽減すること。【解決手段】ラダーシミュレータ51はグラフィカルプログラミング言語で記述された第1プログラムの実行をシミュレーションする。C言語シミュレータ54は高級プログラミング言語で記述された第2プログラムを実行する。デバイス記憶部53は第1プログラムにより設定されるデバイスの状態を記憶する。管理部57はラダーシミュレータ51とC言語シミュレータ54との間でデバイスの状態を受け渡す。【選択図】図7

Description

本発明は、プログラマブル・ロジック・コントローラ用のプログラムを作成するプログラム作成支援装置、プログラム作成支援装置で実行されるプログラムおよび制御方法に関する。
特許文献1が示すようにラダープログラムとC言語プログラムとを実行するプログラマブル・ロジック・コントローラ(PLC)が知られている。
特開2006−178818号公報
PLCで実行されるラダープログラムとC言語プログラムとは連携して動作することがあるが、従来は、それぞれ専用の編集ソフトウエアを使用してプログラム作成支援装置で作成されていた。また、各編集ソフトウエアにはPLCの動作を模擬するシミュレータが設けられており、ラダープログラムについてのシミュレーションとC言語プログラムとのシミュレーションとが個別に独立して実行されていた。ラダープログラムについてのシミュレータと、C言語プログラムとのシミュレータには連携機能がなかったため、従来は、相手方の動作を模擬するスタブなどを作成する必要があり、ユーザのプログラミングの負担が大きかった。
そこで、本発明は、ラダープログラムのようなグラフィカルプログラミング言語により記述されるプログラムについてのシミュレータとC言語のような高級プログラミング言語により記述されるプログラムについてのシミュレータとを連携させることで、ユーザのプログラム開発負担を軽減することを目的とする。
本発明は、たとえば、
プログラマブル・ロジック・コントローラで実行されるユーザプログラムを作成するプログラム作成支援装置であって、
グラフィカルプログラミング言語で記述されたユーザプログラムである第1プログラムの実行をシミュレーションする第1シミュレーション部と
高級プログラミング言語で記述されたユーザプログラムである第2プログラムを実行する第2シミュレーション部と、
前記第1プログラムにより設定されるデバイスの状態を記憶するデバイス記憶部と、
前記第1シミュレーション部と前記第2シミュレーション部を管理する管理部と
を有し、
前記管理部は、前記第1シミュレーション部と前記第2シミュレーション部との間で前記デバイスの状態を受け渡すことを特徴とする。
本発明によれば、ラダープログラムのようなグラフィカルプログラミング言語により記述されるプログラムについてのシミュレータとC言語のような高級プログラミング言語により記述されるプログラムについてのシミュレータとを連携させることで、ユーザのプログラム開発負担を軽減することが可能となる。
PLCシステムの一例を示す図 ユーザプログラムの一例を示す図 プログラム作成支援装置の一例を示す図 PLCの一例を示す図 スキャンタイムを説明するための図 PLCの機能を示す図 プログラム作成支援装置の機能を示す図 統合開発環境のユーザインタフェースの一例を示す図 統合シミュレーションにおける管理部の動作を示す図 統合シミュレーションにおけるラダーシミュレータの動作を示すフローチャート 統合シミュレーションにおけるC言語ミュレータの動作を示すフローチャート プログラム作成支援装置のコンバータに関する機能を示す図
以下に本発明の一実施形態を示す。以下で説明される個別の実施形態は、本発明の上位概念、中位概念および下位概念など種々の概念を理解するために役立つであろう。また、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。
はじめにプログラマブル・ロジック・コントローラ(PLC、単にプログラマブルコントローラと呼ばれてもよい)を当業者にとってよりよく理解できるようにするために、一般的なPLCの構成とその動作について説明する。
図1は、本発明の実施の形態によるプログラマブル・ロジック・コントローラシステムの一構成例を示す概念図である。図1に示すように、このシステムは、ラダープログラムなどのユーザプログラムの編集を行うためのプログラム作成支援装置1と、工場等に設置される各種制御装置を統括的に制御するためのPLC(プログラマブル・ロジック・コントローラ)2とを備えている。ユーザプログラムは、ラダー言語やモーションフローなどのグラフィカルプログラミング言語を用いて作成されてもよいし、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に表示されるラダー図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を含む構成であり、プログラム記憶部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に電気的に接続されている。CPU10は、必ずしも単一のCPUを指しているわけではなく、1つ以上の演算ユニットをまとめて記載しているにすぎない。たとえば、CPU10は、ラダープログラムを実行する『ラダー実行エンジン』(ASIC等)と、C言語プログラムを実行する『C言語実行エンジン』(汎用CPU等)を有していてもよい。記憶装置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は基本ユニット3のCPU10が制御プログラムを実行することで実現する機能を中心に示している。CPU10において第1実行部30は、グラフィカルプログラミング言語で記述されるユーザプログラムである第1プログラムを実行する演算ユニットである。第1実行部30は、たとえば、ラダープログラムを実行する『ラダー実行エンジン』(ASIC等)である。第1プログラムの一例としてラダープログラムを採用するが、他のグラフィカルプログラミング言語で記述されるユーザプログラムであってもよい。第1実行部30は、ラダープログラム(中間コード)43を実行形式のコードに変換する機能を備えていてもよい。第1実行部30の外部にこのような変換器が設けられていてもよい。第2実行部31は、高級プログラミング言語で記述されるユーザプログラムである第2プログラムを実行する演算ユニットである。第2実行部31は、たとえば、C言語プログラムを実行する『C言語実行エンジン』(汎用CPU等)である。第2プログラムの一例としてC言語プログラム44を採用するが、他の高級プログラミング言語で記述されるユーザプログラムであってもよい。なお、CPU10は第1実行部30と第2実行部31に相当する演算部を異なる複数のCPUコアとして備えていてもよいし、一方はCPU10のCPUコアが担当し、他方はASICなどで実装されてもよい。特に、第1実行部30がラダープログラムを実行する際には高速処理が要求されるため、高速処理対応のASICで実装し、第2実行部31が通信処理などを実行する際には高速処理は要求されないため、高機能CPUなどで実装してもよい。この場合、第1実行部30と第2実行部31はユニット内部バス32によって接続され、通信する。
記憶装置12には、基本ユニット3のシステムプログラム(ファームウエア)である制御プログラム40と、プログラム作成支援装置1から転送されてきたプロジェクト41などが記憶される。プロジェクト41には、プロジェクトデータ42、ラダープログラム(中間コード)43およびC言語プログラム(オブジェクトコード)44などが含まれている。プロジェクト41には、ラダープログラムのソースコードやC言語プログラムのソースコードが含まれていてもよい。プロジェクトデータ42は、拡張ユニット4についての設定データなどが含まれている。ラダープログラム(中間コード)43はプログラム作成支援装置1によりソースコードから生成された中間コード(ニーモニック)である。C言語プログラム(オブジェクトコード(実行コードや実行ファイルと呼ばれてもよい))44はプログラム作成支援装置1によりソースコードから生成された実行形式のコードである。
プロジェクト管理部33は、プログラム作成支援装置1から通信部14を介してプロジェクト41の書き込み要求を受信すると、プログラム作成支援装置1からプロジェクト41を受信して記憶装置12に格納する。また、プロジェクト管理部33は、プログラム作成支援装置1から読み出し要求を受信すると、読み出し対象として指定されたファイル(例:プロジェクト41の全体、ラダープログラム(中間コード)43のみ、C言語プログラム(オブジェクトコード)44のみ、C言語プログラムのソースファイルのみなど)を記憶装置12から読み出して、プログラム作成支援装置1に転送する。プロジェクト41の読み出し機能はプロジェクト41の再編集に有用である。
<プログラム作成支援装置1の機能>
上述したようにPLC2の中には、ラダープログラムを実行する『ラダー実行エンジン』(ASIC等)と、C言語プログラムを実行する『C言語実行エンジン』(汎用CPU等)が設けられている。一方、プログラム作成支援装置1には、1個の『PC用実行エンジン』(汎用CPU等)が設けられうる。本明細書において“シミュレーション”とは、PLC2内の『ラダー実行エンジン』と『C言語実行エンジン』といった2つの実行エンジンの機能を、『PC用実行エンジン』という1つの実行エンジンでシミュレートすることと言ってもよい。
図7はプログラム作成支援装置1が編集ソフトウエア50を実行することで実現するCPU24の機能を中心に記載している。編集ソフトウエア50は、記憶装置25の編集ソフト記憶部28に記憶されている。とりわけ、編集ソフトウエア50は、グラフィカルプログラミング言語によるプログラミング環境と高級プログラミング言語によるプログラミング環境とを統合した統合開発環境を提供するものである。従来はグラフィカルプログラミング言語と高級プログラミング言語とでそれぞれ別々の編集ソフトウエアが使用されていた。そのため、従来はグラフィカルプログラミング言語と高級プログラミング言語とでそれぞれ別々のプロジェクトが作成されて管理されていた。一方で、本実施例ではグラフィカルプログラミング言語と高級プログラミング言語とで1つのプロジェクトにより管理することが可能となる。つまり、1つのプロジェクトファイルによりC言語プログラムとラダープログラムとを管理できるようになる。
プログラム記憶部27には、プロジェクト41などが記憶されている。プログラム作成支援装置1が保持しているプロジェクト41とPLC2が保持しているプロジェクト41には、プロジェクトデータ42、ラダープログラム43、C言語プログラム44などが含まれる。プロジェクト41をPLC2に転送するときに一部のファイルが削除されてもよい。たとえば、PLC2にとってソースコードなどは必ずしも必要ではないため、これらは転送されなくてもよい。なお、ソースコードも転送しておくと、PLC2からソースコードを取得した別のプログラム作成支援装置1においてソースコードを再編集することが可能となる。プロジェクトデータ42はプロジェクト41を構成している複数のファイル名と、どのファイルがソースファイルであり、どのファイルが実行ファイルであるかなどを管理するためのデータを有している。また、プロジェクトデータ42は拡張ユニット4の設定データなどが含まれていてもよい。
図8は統合開発環境のユーザインタフェースの一例を示す図である。CPU24はユーザインタフェース70を表示部7に表示する。ワークスペース71は、ラダープログラム43の名称やC言語プログラム44の名称などを設定するための設定エリアである。CPU24は、ワークスペース71を通じてユーザにより入力されたプロジェクト41の名称、ラダープログラム43の名称、C言語プログラム44の名称、各実行ファイルの名称などをプロジェクトデータ42に格納する。ラダータブ72はラダープログラムを編集するためのタブである。C言語タブ73はC言語プログラムを編集するためのタブである。ユーザは操作部8を通じて各プログラムのソースファイルを編集する。CPU24はプロジェクト41を1つの統合ファイルとしてまとめてもよいし、複数のファイルに分割して管理してもよい。後者の場合、CPU24はC言語プログラム44をテキストファイルに保存してもよい。テキストファイルに保存されたC言語プログラム44はユーザにとって使い慣れたテキストエディタによる編集を可能とする。
CPU24は、ソースコードのコンパイラー(実行コードや中間コードへの変換器(複数の中間コードをリンクして実行コードを生成するリンカーなどが含まれてもよい))を有し、実行形式や中間形式のファイルを生成する。CPU24は通信部26を通じてPLC2に完成したプロジェクト41を転送する。
また、CPU24はシミュレータメニュー74を通じてシミュレーションの実行を指示されると、ラダープログラム43とC言語プログラム44の統合シミュレーションを開始する。なお、CPU24はPC用実行エンジンの一例である。統合シミュレーションにおいては、CPU24は、一ステップずつユーザの指示に応じてラダープログラム43とC言語プログラム44を実行してもよいし、ユーザの指示を待たずに連続的にラダープログラム43とC言語プログラム44を実行してもよい。どちらを実行するかは、シミュレータメニュー74を通じて選択される。
図7においてラダーシミュレータ51は、ラダープログラム43を実行するラダー実行部52と、ラダープログラム43によって使用されるデバイス(デバイスの状態)を記憶するデバイス記憶部53とを有している。ラダーシミュレータ51は、基本ユニット3の第1実行部30をエミュレーションする第1エミュレータを有していてもよい。第1エミュレータは、ニモニックコードを『ラダー実行エンジン』が実行できる実行コードに変換する機能を有するとともに、この実行コードを実行する機能を有する。つまり、第1エミュレータによって変換された実行コードは、PLC2内でラダー実行エンジンが実行する実行コードと同一のものである。ラダーシミュレータ51における「シミュレーション」とは、たとえば、少なくともPLC2への入力動作(及び/又は出力動作)を仮想的に再現するものをいう。たとえば、入力リレーのオン・オフ、入力デバイスへの数値入力などが一例である。
C言語シミュレータ54は、C言語プログラム44を実行するC言語実行部55とC言語プログラム44により定義されるデータを記憶するデータ記憶部56を有している。C言語シミュレータ54は、第2実行部31をエミュレーションする第2エミュレータを有していてもよい。なお、C言語シミュレータ54は、C言語プログラム44を『ラダー実行エンジン』が実行できるオブジェクトコードに変換する機能を有するとともに、C言語プログラム44を『PC用実行エンジン』が実行できるオブジェクトコードに変換する機能も有する。つまり、C言語シミュレータ54は、2種類のオブジェクトコードに変換することができ、一方のオブジェクトコードはPLC2に送られ、実際のPLC2の動作に用いられ、他方のオブジェクトコードはプログラム作成支援装置1におけるシミュレーションに用いられる。なお、C言語シミュレータ54は、2種類のコンパイラーを有しているといってもよい。
デバイス記憶部53とデータ記憶部56の実態は記憶装置25に確保されるものとする。管理部57は、ラダーシミュレータ51とC言語シミュレータ54を管理する機能であり、これらの間でデバイスの状態(例:デバイス値やC言語シンボルなど)を受け渡す。
従来は、ラダープログラム43とC言語プログラム44とはそれぞれ専用の編集ソフトウエアにより作成されて、シミュレーションされていた。ラダープログラム43とC言語プログラム44とでデバイスの値を受け渡すようなプログラムコードが存在していても、これを受け渡すことができなかった。つまり、シミュレーションにおいては、C言語プログラム44に対してラダープログラム43から引数などのデバイス値を受け渡すことができなかったため、ユーザは操作部8を通じてC言語プログラム44にデバイス値を入力する必要があった。デバイス値を入力するためのスタブが作成されることもあったが、これもユーザのプログラミング負担を増加させていた。なお、スタブは、本来はプログラムの実行結果に応じて動的に変化する変数であっても定数を返すことしかできない。そのため、スタブを利用するユーザはラダープログラム43とC言語プログラム44とが本当に連携して動作できるのかを確認できなかった。連携することが難しかった理由としては、ラダーシミュレータが確保する仮想メモリ空間と、C言語シミュレータが確保する仮想メモリ空間はそれぞれ独立していることがあげられる。そのため、両者は相互に相手方が確保したメモリ空間にはアクセスすることができず、デバイス値などを交換できなかった。
本実施例では、ラダーシミュレータ51とC言語シミュレータ54との通信を中継する管理部57が設けられている。管理部57は、デバイス記憶部53やデータ記憶部56について物理アドレスと論理アドレスとの対応関係を保持するテーブルを有していてもよい。たとえば、C言語プログラム44上で定義されているシンボルをラダー実行部52がラダープログラム43にしたがって参照しようとすると、そのシンボルの論理アドレスを物理アドレスに変換して、シンボルを読み出し、ラダー実行部52に渡す。逆に、ラダープログラム43上で定義されているデバイスをC言語実行部55がC言語プログラム44にしたがって参照しようとすると、そのデバイスの論理アドレスを物理アドレスに変換して、デバイス値を読み出し、C言語実行部55に渡す。なお、ラダーシミュレータ51とC言語シミュレータ54とが共通バスを介して接続されていてもよい。この場合、管理部57は、共通バスを介したデバイス記憶部53やデータ記憶部56へのアクセスを調停する。管理部57は、共通バスを介して情報を送受信するためのコマンドを必要に応じて発行してもよい。なお、管理部57は、デバイス記憶部53とデータ記憶部56とに記憶されている情報をラダーシミュレータ51とC言語シミュレータ54とで共有するための共有メモリを有していてもよい。たとえば、ラダーシミュレータ51からデータ記憶部56へのアクセス要求が発生すると、管理部57は、データ記憶部56からデータを共有メモリにコピーし、コピーしたデータをラダーシミュレータ51に渡す。同様に、C言語シミュレータ54からデバイス記憶部53へのアクセス要求が発生すると、管理部57は、デバイス記憶部53からデバイス値を共有メモリにコピーし、コピーしたデバイス値をC言語シミュレータ54に渡す。
ここで、C言語プログラム44からラダープログラム43のデバイスを読み書きするために以下のようなAPI(アプリケーションインタフェース)を用いてもよい。
●(読み) value = DeviceApi_Read(3, 100);
この命令は、デバイス種別が“3”に分類されるデバイスのうちデバイス番号“100”番のデバイスの値を読み出してvalueに代入するための命令である。なお、デバイス種別やデバイス番号はデバイスを識別するためのシンボルであり、識別情報である。
●(書き) DeviceApi_Write(5, 200, 123);
この命令は、デバイス種別が“5”に分類されるデバイスのうち、“200”番のデバイスに“123”という値を書き込むための命令である。このようなAPIを利用することで、C言語プログラム44はラダープログラム43のデバイスを読み書きすることが可能となる。上述したようにデバイスの実体はRAMなどの記憶装置25に存在する。管理部57は上記のようなフォーマットで指定されたデバイスへの読み書き命令をC言語シミュレータ54から受信し、指定されたデバイスの論理アドレス(デバイス記憶部53におけるデバイスのアドレス)を、記憶装置25におけるデバイスの物理アドレスに変換してアクセスし、デバイスの実態に対して値を読み書きする。このようなアクセスは代理アクセスと呼ばれてもよい。管理部57は、C言語プログラム44からデバイス記憶部53に代理アクセスする代理アクセス部と、ラダープログラム43からデータ記憶部56に代理アクセスする代理アクセス部とをそれぞれ有していてもよい。これらの代理アクセス部はデータやデバイスの論理アドレスを物理アドレスに変換し、データやデバイスに直接アクセスして情報を読み書きする。
なお、ラダーシミュレータ51とC言語シミュレータ54との間で受け渡されるデータとしては以下のデータがある。
・ラダーシミュレータ51におけるシミュレーションの実行結果
・C言語シミュレータ54におけるC言語プログラム44の実行結果
・引数
・C言語プログラム44を起動するための起動指示
・C言語プログラム44の実行完了と通知するための完了通知
<管理部の動作>
図9は管理部の動作を示すフローチャートである。管理部57は操作部8を通じて統合シミュレーションの開始を指示されると以下のステップを実行する。なお、この指示は、図7を用いて説明したように、シミュレータメニュー74を通じて入力される。
S1で管理部57は、ラダー実行部52を起動してラダープログラム43のシミュレーションを開始させる。S2で管理部57は、C言語実行部55を起動してC言語プログラム44のシミュレーションを開始させる。なお、S1とS2とはどちらが先に実行されてもよい。以下のステップにおいても実行結果が同一である限り、各ステップの実行順番は入れ替え可能である。
S3で管理部57はC言語実行部55からデバイスへのアクセスを要求されたかどうかを判定する。上述したようにC言語実行部55はデバイスに対して直接アクセスすることができない。そこで、C言語実行部55からデバイスへのアクセスを要求された場合、管理部57はS4に進む。なお、C言語実行部55からデバイスへのアクセスを要求されていない場合、管理部57はS4をスキップしてS5に進む。
S4で管理部57はC言語実行部55からアクセスを要求されたデバイスに対してアクセスする。デバイス値の読み出し要求であれば、管理部57はデバイス記憶部53に記憶されている当該デバイスのデバイス値を読み出し、C言語実行部55にデバイス値を渡す。デバイス値の書き込み要求であれば、管理部57はC言語実行部55から受け取ったデバイス値をデバイス記憶部53に保持されている当該デバイスに書き込む。
S5で管理部57はラダー実行部52からC言語シンボルへのアクセスを要求されたかどうかを判定する。上述したようにラダー実行部52はC言語シンボルに対して直接アクセスすることができない。そこで、ラダー実行部52からC言語シンボルへのアクセスを要求された場合、管理部57はS6に進む。なお、ラダー実行部52からC言語シンボルへのアクセスを要求されていない場合、管理部57はS6をスキップしてS7に進む。
S6で管理部57はラダー実行部52からアクセスを要求されたC言語シンボルに対してアクセスする。C言語シンボルの読み出し要求であれば、管理部57はデータ記憶部56に記憶されているC言語シンボルを読み出し、ラダー実行部52にC言語シンボルを渡す。C言語シンボルの書き込み要求であれば、管理部57はラダー実行部52から受け取ったC言語シンボルをデータ記憶部56に書き込む。
S7で管理部57は操作部8を通じて統合シミュレーションの停止を要求されたかどうかを判定する。統合シミュレーションの停止を要求された場合、管理部57は、ラダー実行部52とC言語実行部55をそれぞれ停止させる。統合シミュレーションの停止を要求されていなければ、管理部57はS3に戻る。
<ラダー実行部の動作>
図10はラダー実行部52の動作を示すフローチャートである。S11でラダー実行部52は管理部57によって起動されると、ラダープログラム43を実行する。ラダー実行部52は、ラダープログラム43から一命令ずつ読み出して実行する。
S12でラダー実行部52は読み出した命令がデバイスへのアクセス命令であるかどうかを判定する。読み出した命令がデバイスへのアクセス命令でない場合、ラダー実行部52はS14に進む。一方、読み出した命令がデバイスへのアクセス命令であれば、ラダー実行部52はS13に進む。S13でラダー実行部52はデバイス記憶部53に保持されている複数のデバイスのうちラダープログラム43によりアクセス対象として指定されたデバイスにアクセスする。アクセスには、デバイス値の書き込みと読み出しとがある。
S14でラダー実行部52は読み出した命令がC言語シンボルへのアクセス命令であるかどうかを判定する。読み出した命令がC言語シンボルへのアクセス命令でない場合、ラダー実行部52はS16に進む。一方、読み出した命令がC言語シンボルへのアクセス命令であれば、ラダー実行部52はS15に進む。S15でラダー実行部52はラダープログラム43によりアクセス対象として指定されたC言語シンボルに対して管理部57を通じて代理アクセスする。C言語シンボルの書き込み命令であれば、ラダー実行部52はC言語シンボルの書き込み命令を管理部57に渡す。C言語シンボルの読み出し命令であれば、ラダー実行部52はC言語シンボルの読み出し命令を管理部57に渡し、管理部57からC言語シンボルを受け取る。
S16でラダー実行部52は管理部57からシミュレーションの停止を要求されたかどうかを判定する。シミュレーションの停止を要求された場合、ラダー実行部52はラダープログラム43を停止する。シミュレーションの停止を要求されていなければ、ラダー実行部52はS11に戻る。
<C言語実行部の動作>
図11はC言語実行部55の動作を示すフローチャートである。S21でC言語実行部55は管理部57によって起動されると、C言語プログラム44を実行する。C言語実行部55は、C言語プログラム44から一命令ずつ読み出して実行する。
S22でC言語実行部55は読み出した命令がC言語シンボルへのアクセス命令であるかどうかを判定する。読み出した命令がC言語シンボルへのアクセス命令でない場合、C言語実行部55はS24に進む。一方、読み出した命令がC言語シンボルへのアクセス命令であれば、C言語実行部55はS23に進む。S23でC言語実行部55はC言語プログラム44によりアクセス対象として指定されたC言語シンボルに対して直接アクセスする。C言語シンボルの書き込み命令であれば、C言語実行部55はデータ記憶部56にC言語シンボルを直接書き込む。C言語シンボルの読み出し命令であれば、C言語実行部55はデータ記憶部56からC言語シンボルを直接読み出す。データ記憶部56は、C言語実行部55からアクセス可能なアドレス空間に確保されているため、C言語実行部55はC言語シンボルを直接的に読み書きできる。
S24でC言語実行部55は読み出した命令がデバイスへのアクセス命令であるかどうかを判定する。読み出した命令がデバイスへのアクセス命令でない場合、C言語実行部55はS26に進む。一方、読み出した命令がデバイスへのアクセス命令であれば、C言語実行部55はS25に進む。S25でC言語実行部55はC言語プログラム44によりアクセス対象として指定されたデバイスに対して管理部57を通じて代理アクセスする。デバイスの書き込み命令であれば、C言語実行部55はデバイスの書き込み命令を管理部57に渡す。デバイスの読み出し命令であれば、C言語実行部55はデバイスの読み出し命令を管理部57に渡し、管理部57からデバイス値を受け取る。
S26でC言語実行部55は管理部57からシミュレーションの停止を要求されたかどうかを判定する。シミュレーションの停止を要求された場合、C言語実行部55はC言語プログラム44を停止する。シミュレーションの停止を要求されていなければ、ラダー実行部52はS21に戻る。
<シミュレーションの高速化>
一般にPLC2のCPU10とプログラム作成支援装置1のCPU24とではオブジェクトコード(実行コード)のレベルで互換性が無い。そのため、ラダー実行部52やC言語実行部55はそれぞれPLC2のCPU10(第1実行部30や第2実行部31)をエミュレーションするエミュレータが必要となる。つまり、管理部57はC言語プログラム44を実行するためのスレッドやプロセスを生成し、エミュレータ上でC言語プログラム44を実行させる。しかし、エミュレータを介してプログラムを実行すると、プログラムの実行速度が低下する。とりわけ、PLC2ではラダープログラム43やC言語プログラム44が連携しながら高速に実行されるため、これらのシミュレーションも高速に実行される必要がある。そこで、ラダープログラム43やC言語プログラム44をプログラム作成支援装置1のCPU24のネイティブコードに変換し、シミュレーションを実行することで、シミュレーションの高速化を達成する。また、PLC2のCPU10をエミュレーションするエミュレータも省略可能となろう。
図12は、編集ソフトウエア50をCPU24が実行することで実現される機能の一例を示している。ここでは、ラダープログラム43とC言語プログラム44のうちC言語プログラム44について説明するが、ラダープログラム43に適用されてもよい。この場合の説明は、以下の説明におけるC言語プログラム44という文言をラダープログラム43に置き換えたものとなろう。
管理部57は操作部8を通じてシミュレーションの実行指示やプロジェクト41の転送指示を受け付ける。シミュレーションの実行指示を受け付けると、管理部57は、C言語プログラム44のソースコード60をシミュレータ用コンバータ61に渡す。シミュレータ用コンバータ61はCPU24のネイティブコードを生成可能なコンパイラーやリンカーなどを含む。シミュレータ用コンバータ61はソースコード60をコンバートし、CPU24で直接実行可能なオブジェクトコード(ネイティブコード)を生成し、C言語シミュレータ54に渡す。これにより、CPU10(C言語シミュレータ54)はC言語プログラム44を高速に実行できるようになる。
プロジェクト41の転送指示を受け付けると、管理部57は、C言語プログラム44のソースコード60をPLC用コンバータ62に渡す。PLC用コンバータ62はPLC2が備えるCPU10のネイティブコードを生成可能なコンパイラーやリンカーなどを含む。PLC用コンバータ62はソースコード60をコンバートし、CPU10で直接実行可能なオブジェクトコード(ネイティブコード)を生成し、プロジェクト転送部63に渡す。プロジェクト転送部63は、CPU10で直接実行可能なオブジェクトコードをプロジェクト41に登録し、通信部26を介してプロジェクト41をPLC2のプロジェクト管理部33に転送する。
<まとめ>
図7を用いて説明したように、ラダーシミュレータ51はグラフィカルプログラミング言語で記述されたユーザプログラムである第1プログラムの実行をシミュレーションする第1シミュレーション部の一例である。C言語シミュレータ54は高級プログラミング言語で記述されたユーザプログラムである第2プログラムを実行する第2シミュレーション部の一例である。デバイス記憶部53は第1プログラムにより設定されるデバイスの状態を記憶するデバイス記憶部の一例である。管理部57は第1シミュレーション部と第2シミュレーション部を管理する管理部の一例である。図7ないし図11を用いて説明したように、管理部57は、第1シミュレーション部と第2シミュレーション部との間でデバイスの状態を受け渡す。これにより、第1シミュレーション部と第2シミュレーション部とを動的に連携させることが可能となる。また、ラダープログラムのようなグラフィカルプログラミング言語により記述されるプログラムについてのシミュレータとC言語のような高級プログラミング言語により記述されるプログラムについてのシミュレータとを連携させることで、ユーザのプログラム開発負担を軽減する。従来は、各言語のプログラムについて個別にシミュレーションが実行されていたため、ユーザはスタブを作成したり、データを手入力したりするなど、ユーザのプログラム開発負担が多かった。また、ラダーシミュレータ51とC言語シミュレータ54はそれぞれ独立したアドレス空間内でプログラムを実行するため、相互に、アドレス空間を参照することができなかった。本実施例では、管理部57がラダーシミュレータ51とC言語シミュレータ54との間でデバイスの状態(デバイス値やC言語シンボルなど)を受け渡すため、ラダーシミュレータ51とC言語シミュレータ54が動的に連携することが可能となる。
なお、ラダーシミュレータ51はPLC2が備える第1実行部30(ラダー実行エンジン)をエミュレーションする第1エミュレータを有していてもよい。ラダーシミュレータ51は、第1エミュレータを介してラダープログラムに記述された命令語を解釈してシミュレーションを行う。一方、C言語シミュレータ54は、第1エミュレータを介さずにC言語プログラムに記述された命令語を解釈してシミュレーションを行ってもよい。PLC2はラダープログラム43を高速に実行するためにASIC等により構成された第1実行部30(ラダー実行エンジン)を有している。また、それとは別に汎用のCPU等により実装され、C言語プログラム44を実行する第2実行部31を有している。プログラム作成支援装置1は一般的なコンピュータであり、CPU24は汎用のCPUにより構成される。PLC2が備える第2実行部31も汎用のCPUにより構成される。したがって、プログラム作成支援装置1は、PLC2のCPU10で実行可能なオブジェクトコードと、プログラム作成支援装置1のCPU24で実行可能なオブジェクトを生成するため、CPU24は、第2実行部31をエミュレーションしなくてもよい。ただし、プログラム作成支援装置1は、一般的なコンピュータであるが故に、ラダープログラム43を実行するラダー実行エンジン(ASIC等)を備えてはいない。そのため、PLC2が備えるラダー実行エンジンをエミュレートする第1エミュレータがプログラム作成支援装置1には必要となる。
図7などを用いて説明したように、ラダーシミュレータ51とC言語シミュレータ54との間でデータ通信を実行するための共通バスが設けられてもよい。管理部57は、デバイスの状態を受け渡すためのコマンドを、共通バスを介してラダーシミュレータ51とC言語シミュレータ54とに発行する。これにより、ラダーシミュレータ51とC言語シミュレータ54は相互にデータを交換できるようになる。
管理部57は、ラダーシミュレータ51とC言語シミュレータ54との間でデータを共有するための共有メモリをさらに有していてもよい。管理部57は、この共有メモリを介してデバイスの状態を受け渡してもよい。このように共通バスの代わりに共有メモリが採用されてもよい。
管理部57は、ラダーシミュレータ51の実行結果をC言語シミュレータ54に受け渡してもよい。たとえば、ラダープログラム43を実行することで得られるデバイス値をC言語プログラム44に渡して、C言語プログラム44がそれを用いて演算を行ってもよい。
管理部57は、C言語シミュレータ54の実行結果をラダーシミュレータ51に受け渡してもよい。たとえば、C言語プログラム44はラダープログラム43と比較してテキスト処理や通信処理に向いているが、C言語プログラム44で得られたテキストデータをラダープログラム43に渡してもよい。上述したようにC言語プログラム44にデバイスを操作するAPIを用いた命令を記述しておくことで、C言語シミュレータ54におけるC言語プログラム44の実行結果(例:テキストデータや受信データなど)をラダープログラム43に渡すことが可能となる。
図12を用いて説明したように、C言語プログラム44のソースコードをPLC2が備えるCPU10用のネイティブコードに変換するPLC用コンバータ62が設けられてもよい。この場合、C言語シミュレータ54はCPU10をエミュレーションするエミュレータを有し、当該エミュレータはCPU10用のネイティブコードを実行する。また、プロジェクト転送部63は、シミュレーションに使用したネイティブコードをプロジェクト41に転送する。このように、エミュレータが存在する場合は、シミュレータ用コンバータ61を省略できる利点がある。
図12を用いて説明したように、C言語プログラム44のソースコードをプログラム作成支援装置1が備えるCPU24で直接実行可能なネイティブコードに変換するシミュレータ用コンバータ61が設けられてもよい。この場合、C言語シミュレータ54は、C言語プログラム44のネイティブコードを実行する。これにより、エミュレータを省略できるとともに、C言語プログラム44をより高速に実行できるようになる。
C言語シミュレータ54は、ラダーシミュレータ51がラダープログラム43のエンド処理を実行している間に、C言語プログラム44の実行をシミュレーションしてもよい。
管理部57は、ラダーシミュレータ51からC言語シミュレータ54に引数をコピーしてもよい。これによりラダーシミュレータ51上のラダープログラム43とC言語シミュレータ54上のC言語プログラム44とが引数を通じて相互に連携動作することが可能となる。
管理部57は、ラダーシミュレータ51において実行されているラダープログラム43にしたがってC言語シミュレータ54においてC言語プログラム44を起動してもよい。たとえば、ラダープログラム43が起動呼び出し用のデバイスに起動を意味する値を書き込む。管理部57は、C言語シミュレータ54から当該デバイスの参照要求があると、起動を意味する値をC言語シミュレータ54に渡す。C言語シミュレータ54は、デバイス値が起動を意味する値になっていることを認識すると、C言語プログラム44を起動する。
管理部57は、C言語シミュレータ54においてC言語プログラム44の実行が完了したことを示す完了通知をラダーシミュレータ51に伝達してもよい。たとえば、完了通知を保持するデバイス(完了通知デバイス)がデバイス記憶部53に確保されていてもよい。管理部57は、C言語シミュレータ54から完了通知を受信すると(完了通知を示すC言語シンボルに完了を示す値が格納されると)、完了通知デバイスに完了を意味するデバイス値を書き込む。これにより、C言語シミュレータ54においてC言語プログラム44は呼び出したC言語プログラム44が完了したことを認識できるようになろう。

Claims (14)

  1. プログラマブル・ロジック・コントローラで実行されるユーザプログラムを作成するプログラム作成支援装置であって、
    グラフィカルプログラミング言語で記述されたユーザプログラムである第1プログラムの実行をシミュレーションする第1シミュレーション部と
    高級プログラミング言語で記述されたユーザプログラムである第2プログラムを実行する第2シミュレーション部と、
    前記第1プログラムにより設定されるデバイスの状態を記憶するデバイス記憶部と、
    前記第1シミュレーション部と前記第2シミュレーション部を管理する管理部と
    を有し、
    前記管理部は、前記第1シミュレーション部と前記第2シミュレーション部との間で前記デバイスの状態を受け渡すことを特徴とするプログラム作成支援装置。
  2. 前記プログラマブル・ロジック・コントローラが備える前記第1プログラムの実行部をエミュレーションする第1エミュレータを有し、
    前記第1シミュレーション部は、前記第1エミュレータを介して前記第1プログラムに記述された命令語を解釈してシミュレーションを行う一方で、
    前記第2シミュレーション部は、前記第1エミュレータを介さずに前記第2プログラムに記述された命令語を解釈してシミュレーションを行うことを特徴とする請求項1に記載のプログラム作成支援装置。
  3. 前記第1シミュレーション部と前記第2シミュレーション部との間でデータ通信を実行するための共通バスをさらに有し、
    前記管理部は、前記デバイスの状態を受け渡すためのコマンドを前記共通バスを介して前記第1シミュレーション部と前記第2シミュレーション部とに発行することを特徴とする請求項1または2に記載のプログラム作成支援装置。
  4. 前記第1シミュレーション部と前記第2シミュレーション部との間でデータを共有するための共有メモリをさらに有し、
    前記管理部は、前記共有メモリを介して前記デバイスの状態を受け渡すことを特徴とする請求項1または2に記載のプログラム作成支援装置。
  5. 前記管理部は、前記第1シミュレーション部の実行結果を前記第2シミュレーション部に受け渡すことを特徴とする請求項1ないし4のいずれか1項に記載のプログラム作成支援装置。
  6. 前記管理部は、前記第2シミュレーション部の実行結果を前記第1シミュレーション部に受け渡すことを特徴とする請求項1ないし5のいずれか1項に記載のプログラム作成支援装置。
  7. 前記第2プログラムのソースコードを前記プログラマブル・ロジック・コントローラが備えるCPU用のネイティブコードに変換するコンバータをさらに有し、
    前記第2シミュレーション部は、前記プログラマブル・ロジック・コントローラが備える前記CPUをエミュレーションする第2エミュレータを有し、前記第2エミュレータは、前記CPU用のネイティブコードを実行することを特徴とする請求項1ないし6のいずれか1項に記載のプログラム作成支援装置。
  8. 前記第2プログラムのソースコードを前記プログラム作成支援装置が備えるCPUで直接実行可能なネイティブコードに変換するコンバータをさらに有し、
    前記第2シミュレーション部は、前記第2プログラムの前記ネイティブコードを実行することを特徴とする請求項1ないし6のいずれか1項に記載のプログラム作成支援装置。
  9. 前記第2シミュレーション部は、前記第1シミュレーション部が前記第1プログラムのエンド処理を実行している間に、前記第2プログラムを実行することを特徴とする請求項1ないし8のいずれか1項に記載のプログラム作成支援装置。
  10. 前記管理部は、前記第1シミュレーション部から前記第2シミュレーション部に引数をコピーすることを特徴とする請求項1ないし9のいずれか1項に記載のプログラム作成支援装置。
  11. 前記管理部は、前記第1シミュレーション部において実行されている前記第1プログラムにしたがって前記第2シミュレーション部において前記第2プログラムを起動することを特徴とする請求項1ないし10のいずれか1項に記載のプログラム作成支援装置。
  12. 前記管理部は、前記第2シミュレーション部において前記第2プログラムの実行が完了したことを示す完了通知を前記第1シミュレーション部に伝達することを特徴とする請求項1ないし11のいずれか1項に記載のプログラム作成支援装置。
  13. プログラマブル・ロジック・コントローラで実行されるユーザプログラムを作成するプログラム作成支援装置の制御方法であって、
    グラフィカルプログラミング言語で記述されたユーザプログラムである第1プログラムの実行のシミュレーションと、高級プログラミング言語で記述されたユーザプログラムである第2プログラムの実行とを開始するステップと、
    前記第1プログラムにより設定されるデバイスの状態を、前記第1プログラムの実行のシミュレーションと前記第2プログラムの実行との間で受け渡すことで、前記第1プログラムの実行のシミュレーションと前記第2プログラムの実行とを連携させるステップと
    を有することを特徴とするプログラム作成支援装置の制御方法。
  14. プログラマブル・ロジック・コントローラで実行されるユーザプログラムを作成するプログラム作成支援装置において実行されるプログラムであって、
    前記プログラム作成支援装置に、
    グラフィカルプログラミング言語で記述されたユーザプログラムである第1プログラムの実行のシミュレーションと、高級プログラミング言語で記述されたユーザプログラムである第2プログラムの実行とを開始するステップと、
    前記第1プログラムにより設定されるデバイスの状態を、前記第1プログラムの実行のシミュレーションと前記第2プログラムの実行との間で受け渡すことで、前記第1プログラムの実行のシミュレーションと前記第2プログラムの実行とを連携させるステップと
    を実行させることを特徴とするプログラム。
JP2015107841A 2015-05-27 2015-05-27 プログラム作成支援装置、制御方法およびプログラム Active JP6550269B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015107841A JP6550269B2 (ja) 2015-05-27 2015-05-27 プログラム作成支援装置、制御方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015107841A JP6550269B2 (ja) 2015-05-27 2015-05-27 プログラム作成支援装置、制御方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2016224558A true JP2016224558A (ja) 2016-12-28
JP6550269B2 JP6550269B2 (ja) 2019-07-24

Family

ID=57746590

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015107841A Active JP6550269B2 (ja) 2015-05-27 2015-05-27 プログラム作成支援装置、制御方法およびプログラム

Country Status (1)

Country Link
JP (1) JP6550269B2 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018220923A1 (ja) * 2017-05-30 2018-12-06 オムロン株式会社 プログラム開発支援装置、プログラム開発支援システム、プログラム開発支援方法、および、プログラム開発支援プログラム
JP2019032788A (ja) * 2017-08-10 2019-02-28 オムロン株式会社 情報処理装置、情報処理方法、および情報処理プログラム
JP2019032789A (ja) * 2017-08-10 2019-02-28 オムロン株式会社 情報処理装置、情報処理方法、および情報処理プログラム
JP2019036014A (ja) * 2017-08-10 2019-03-07 オムロン株式会社 情報処理装置、情報処理方法およびプログラム
JP2021015088A (ja) * 2019-07-16 2021-02-12 マツダ株式会社 エンジンの試験方法及び試験装置
CN113962063A (zh) * 2021-09-26 2022-01-21 长沙理工大学 一种Web3D虚拟单片机仿真实验方法及***
WO2022049885A1 (ja) * 2020-09-01 2022-03-10 株式会社日立産機システム 制御装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001282327A (ja) * 2000-03-31 2001-10-12 Omron Corp シミュレーションシステム及びシミュレータ並びに管理サーバ及び記録媒体
JP2002189507A (ja) * 2000-12-19 2002-07-05 Omron Corp コントローラ
JP2003162304A (ja) * 2001-11-27 2003-06-06 Mazda Motor Corp 設備制御のシミュレーション方法及びその装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001282327A (ja) * 2000-03-31 2001-10-12 Omron Corp シミュレーションシステム及びシミュレータ並びに管理サーバ及び記録媒体
JP2002189507A (ja) * 2000-12-19 2002-07-05 Omron Corp コントローラ
JP2003162304A (ja) * 2001-11-27 2003-06-06 Mazda Motor Corp 設備制御のシミュレーション方法及びその装置

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018220923A1 (ja) * 2017-05-30 2018-12-06 オムロン株式会社 プログラム開発支援装置、プログラム開発支援システム、プログラム開発支援方法、および、プログラム開発支援プログラム
CN110506242A (zh) * 2017-05-30 2019-11-26 欧姆龙株式会社 程序开发支持装置、程序开发支持***、程序开发支持方法以及程序开发支持程序
US11287789B2 (en) 2017-05-30 2022-03-29 Omron Corporation Program development support device, program development support system, program development support method, and non-transitory computer-readable recording medium
JP2019032788A (ja) * 2017-08-10 2019-02-28 オムロン株式会社 情報処理装置、情報処理方法、および情報処理プログラム
JP2019032789A (ja) * 2017-08-10 2019-02-28 オムロン株式会社 情報処理装置、情報処理方法、および情報処理プログラム
JP2019036014A (ja) * 2017-08-10 2019-03-07 オムロン株式会社 情報処理装置、情報処理方法およびプログラム
JP7052250B2 (ja) 2017-08-10 2022-04-12 オムロン株式会社 情報処理装置、情報処理方法、および情報処理プログラム
JP2021015088A (ja) * 2019-07-16 2021-02-12 マツダ株式会社 エンジンの試験方法及び試験装置
JP7293929B2 (ja) 2019-07-16 2023-06-20 マツダ株式会社 エンジンの試験方法及び試験装置
WO2022049885A1 (ja) * 2020-09-01 2022-03-10 株式会社日立産機システム 制御装置
CN113962063A (zh) * 2021-09-26 2022-01-21 长沙理工大学 一种Web3D虚拟单片机仿真实验方法及***

Also Published As

Publication number Publication date
JP6550269B2 (ja) 2019-07-24

Similar Documents

Publication Publication Date Title
JP6550269B2 (ja) プログラム作成支援装置、制御方法およびプログラム
JP5942446B2 (ja) サポート装置およびサポートプログラム
US8793678B2 (en) Hardware virtualization system
JP6289751B2 (ja) プログラム生成装置、プログラム生成方法及びプログラム生成プログラム
Marron et al. Embedding Scenario-based Modeling in Statecharts.
WO2019230321A1 (ja) サポート装置およびサポートプログラム
JP6954256B2 (ja) エンジニアリング装置、エンジニアリング装置の制御方法及びプログラム
JP5808922B2 (ja) 空調機制御インターフェース装置、空気調和機および空調機制御システム
JP2013242629A (ja) 制御装置、制御方法および命令セット
JP6135247B2 (ja) 情報処理装置および情報処理プログラム
JP2013084112A (ja) プログラマブルコントローラシステム、そのプログラミング装置、プログラマブルコントローラ、プログラム、デバッグ方法
JP2016224559A (ja) プログラム作成支援装置、制御方法およびプログラム
JP6484015B2 (ja) プログラマブル・ロジック・コントローラおよびその制御方法
WO2020246097A1 (ja) サポート装置およびサポートプログラム
JP2009252113A (ja) 情報処理装置、その制御方法及びコンピュータプログラム
JP4786164B2 (ja) プラント監視制御システム
JP5079166B1 (ja) シンボルテーブル生成方法、周辺機器との通信方法およびプログラマブルロジックコントローラ
JPH04149658A (ja) 情報処理装置
US11640153B2 (en) Control system, support device, and recording medium
JP7234810B2 (ja) サポート装置およびサポートプログラム
KR890008714A (ko) 시각언어를 사용하는 설계시스템
JP2017079005A (ja) プログラマブル・ロジック・コントローラ、制御方法、cpuユニットおよび拡張ユニット
JPH11282693A (ja) Mcuシミュレーション装置、そのシミュレーション方法及びそのシミュレーションプログラムを記録したコンピュータ読み取り可能な記録媒体
Rzońca et al. Interfacing inputs and outputs with IEC 61131-3 control software
JP2022139090A (ja) 開発支援装置、開発支援方法および開発支援プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180228

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181217

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190701

R150 Certificate of patent or registration of utility model

Ref document number: 6550269

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250