JP7003842B2 - サポート装置およびサポートプログラム - Google Patents

サポート装置およびサポートプログラム Download PDF

Info

Publication number
JP7003842B2
JP7003842B2 JP2018104614A JP2018104614A JP7003842B2 JP 7003842 B2 JP7003842 B2 JP 7003842B2 JP 2018104614 A JP2018104614 A JP 2018104614A JP 2018104614 A JP2018104614 A JP 2018104614A JP 7003842 B2 JP7003842 B2 JP 7003842B2
Authority
JP
Japan
Prior art keywords
data
type
variable
information
program
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
JP2018104614A
Other languages
English (en)
Other versions
JP2019211823A (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.)
Omron Corp
Original Assignee
Omron 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 Omron Corp filed Critical Omron Corp
Priority to JP2018104614A priority Critical patent/JP7003842B2/ja
Priority to PCT/JP2019/018549 priority patent/WO2019230321A1/ja
Priority to EP19810087.7A priority patent/EP3805879A4/en
Priority to CN201980025084.5A priority patent/CN111954854B/zh
Priority to US17/043,722 priority patent/US20210026609A1/en
Publication of JP2019211823A publication Critical patent/JP2019211823A/ja
Application granted granted Critical
Publication of JP7003842B2 publication Critical patent/JP7003842B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/436Semantic checking
    • G06F8/437Type checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Automation & Control Theory (AREA)
  • Programmable Controllers (AREA)

Description

本開示は、機械や設備などのデバイスを制御するために用いられるプログラマブルロジックコントローラ(Programmable Logic Controller:以下「PLC」とも称す)の使用および運用を支援するためのサポート装置、およびそのサポート装置を実現するためのサポートプログラムに関する。
機械や設備などのデバイスを制御するためのコントローラとしては、典型的には、PLCが用いられる。このようなPLCは、ユーザが制御対象のデバイスに応じてプログラムを自由に作成できるので汎用性が高く、広く普及している。従来のPLCでは、デバイスを制御するための入力データ、出力データ、内部計算用データなどは、記憶領域の予め定められた位置に格納されていた。これらのデータをプログラムにおいて利用(参照)する場合には、記憶領域の(絶対または相対)アドレスを特定する必要があった。
これに対して、プログラムの再利用性や共通処理化(共通モジュール化)などを考慮して、オブジェクト指向のプログラミングが可能となりつつある。具体的には、入力データ、出力データ、内部計算用データなどをデータ別に変数を用いて利用(参照)できるようなプログラミング環境が提供されつつある。このようなプログラミング環境によって生成されるプログラムは、従来のプログラムと対比する意味で、「変数プログラム」とも称される。
一方で、PLC本体の装置コストを低減するため、汎用的なデバイスが積極的に採用される傾向にある。このような汎用的なデバイスの採用に伴って、従来の製造メーカであるベンダ別の独自規格に代えて、複数のメーカがアライアンスを形成し、共通規格を導入するという動きが活発化している。これによって、ユーザから見れば、デバイスのベンダに依存することなく、統一的なシステムを構築できるというメリットが得られる。このような共通規格化の一例としては、デバイスを制御するデータ別の変数を共通化するなどが進行しつつある。
デバイスを制御するデータ別の変数を共通化する場合、変数が同じであってもデータの型が相違するケースがある。例えば、デバイスを供給するベンダが異なる場合、同じ変数であっても、ベンダ毎に当該変数のデータの型が相違する場合がある。これを、本明細書では、「デバイスがサポートするデータ型」が相違するともいう。
このような「デバイスがサポートするデータ型」が相違するとの背景のもと、プログラマはプログラミングにおいて、適切なデータ型を宣言するために、または適切なデータ型変換命令を記載するために、プログラマは、PLCを含むネットワーク内の個々のデバイスがサポートするデータ型を事前に把握する必要がある。このような「デバイスがサポートするデータ型」の把握には手間がかかり、プログラムの生産性向上のネックとなり得る。
特開2013-161106号公報(特許文献1)のサポート装置は、相手先のPLCの種別に依存することなく、より容易にPLC間でデータを遣り取りするために、プログラマブルロジックコントローラの種別に応じて、変数に対応してメモリ上に確保されるデータのデータ構造を適合化する。
特開2010-176377号公報(特許文献2)は、独自の言語仕様で開発されたPLCのアプリケーションプログラムを、J1SB3503(IEC61131-3)言語に準拠したプログラムへの変換するために、データの型変換命令を用いる。
特開2013-161106号公報 特開2010-176377号公報
しかしながら、特許文献1と特許文献2では、「デバイスがサポートするデータ型」の相違に基づくプログラミングの効率化の提案はなされていない。
本開示は、制御対象のデバイスの制御データのデータ型を考慮した制御プログラムの容易な開発を支援する環境の提供を目的とする。
本開示の一例に係るサポート装置は、対象を制御する制御装置で実行される実行可能プログラムを生成するサポート装置であって、対象を制御するデータの型別に、当該データの型と、プログラムの実行時に制御装置による当該データの型とデータの扱い方が同じとなり得る他のデータ型からなる複数のデータ型の情報を格納するためのデータ格納手段と、データ別の変数と、当該変数に対応するデータ型であって複数のデータ型のうちの1つ以上を定義する情報を生成する手段と、制御装置で実行される処理を、定義された変数を用いて記述した命令コードを生成する手段と、定義する情報および命令コードを用いて実行可能プログラムを生成する手段と、を備える。
実行可能プログラムを生成する手段は、命令コードが示す演算式が有する各変数に対応して定義された1つ以上のデータ型からなる型集合を生成し、演算式の型集合から、演算精度を保証するための基準に基き1つを選択し、演算結果のデータ型として決定するよう構成される。
この開示によれば、命令コードの記述に用いるデータ別の変数に、制御装置による当該データの扱い方が同じである1または複数のデータ型を定義することができる。また、データ別の変数に複数のデータ型が定義されるとしても、実行可能プログラムの生成時には、変数を含んで記述された演算式のデータ型を、演算精度が保証されるデータ型に決定することができる。これにより、制御対象のデバイスがサポートするデータ型に依存することなく、対象を制御するプログラムの開発が可能となる。
上述の開示において、対象を制御するデータの型別の複数のデータ型は、対象のベンダ毎に格納されて、ベンダ毎の複数のデータ型は、当該ベンダにより予め定められたデータ型と、当該予め定められたデータ型とデータの扱い方が同じとなり得る他のデータの型とを含む。
この開示によれば、複数のデータ型に対象のベンダに依存したデータ型を含ませることができる。
上述の開示において、定義する情報を生成する手段は、データ別の変数と、当該変数に対応するデータ型として対象のベンダに対応した複数のデータ型を定義する情報を生成するよう構成される。
この開示によれば、対象のベンダ毎に、複数のデータ型を定義することができる。
上述の開示において、サポート装置は、制御装置から、当該制御装置に接続される対象のベンダを特定する情報を受信する。
この開示によれば、サポート装置は、対象のベンダの情報を例えば実機の制御装置から受信することができる。
上述の開示において、定義する情報を生成する手段は、ユーザ操作に基き、データ別の変数に対応する1つ以上のデータ型を定義し、変数と、当該変数に関連付けて複数のデータ型をモニタに表示させるよう構成される。
この開示によれば、ユーザは、モニタの表示される複数のデータ型から、定義するべきデータ型を選択する操作をすることできる。
上述の開示において、データ型による上述の扱い方は、データサイズの大きさに基づく扱い方を含み、各データ型に対応して、扱われるデータサイズに基き当該データ型が他のデータ型に優先して変数に対応して設定される度合いを示す優先度を格納するための手段を、さらに備え、演算結果のデータ型を決定することは、型集合から、演算精度を保証するための基準に従う優先度を有したデータ型を選択し、演算結果のデータ型として決定することを含む。
この開示によれば、データ型に対応したデータサイズに基き演算結果のデータ型を決定することで、制御装置で演算を実施した場合における、演算結果における桁落ち、桁あふれなどの情報ロスを回避することができる。
上述の開示において、型集合を生成することは、演算式が有する演算子の種類に基き、当該式が有する変数に対応して定義された1つ以上のデータ型を含む型集合を生成することを含む。
この開示によれば、型集合を、演算式に含まれる演算子の種類に応じた内容に異ならせることができる。
本開示の一例によれば、対象を制御する制御装置で実行される実行可能プログラムを生成するサポートプログラムが提供される。サポートプログラムは、コンピュータに以下の手段として機能させる。コンピュータは、対象を制御するデータの型別に、当該データの型と、プログラムの実行時に制御装置による当該データの型とデータの扱い方が同じとなり得る他のデータ型からなる複数のデータ型の情報を格納するためのデータ格納手段を備える。
上記の手段は、データ別の変数と、当該変数に対応するデータ型であって複数のデータ型のうちの1つ以上を定義する情報を生成する手段と、制御装置で実行される処理を、定義された変数を用いて記述した命令コードを生成する手段と、定義する情報および命令コードを用いて実行可能プログラムを生成する手段と、を備え、実行可能プログラムを生成する手段は、命令コードが示す演算式が有する各変数に対応して定義された1つ以上のデータ型からなる型集合を生成し、演算式の型集合から、演算精度を保証するための基準に基き1つを選択し、演算結果のデータ型として決定するよう構成される。
この開示によるサポートプログラムがコンピュータにより実行されることで、命令コードの記述に用いるデータ別の変数に、制御装置による当該データの扱い方が同じである1または複数のデータ型を定義することができる。また、データ別の変数に複数のデータ型が定義されるとしても、実行可能プログラムの生成時には、変数を含んで記述された演算式のデータ型を、演算精度が保証されるデータ型に決定することができる。
本開示の一例によれば、制御対象のデバイスの制御データのデータ型を考慮した制御プログラムの容易な開発を支援する環境を提供することができる。
本発明の実施の形態に係るPLCシステムSYSの一例を示す模式図である。 本発明の実施の形態に係るPLCの処理ユニット10のハードウェア構成の一例を示す模式図である。 本発明の実施の形態に係るサポート装置200のハードウェア構成の一例を示す模式図である。 本発明の実施の形態に係るPLCの処理ユニット10に実装されるソフトウェア構成の一例を示す模式図である。 本発明の実施の形態に係るサポート装置200に実装されるソフトウェア構成の一例を示す模式図である。 本実施の形態に係るサポート装置200におけるプログラムの開発環境の一例を概略的に示す図である。 本実施の形態に係るプログラム開発の概略処理の一例を示すフローチャートである。 本実施の形態に係るソースプログラム271の一例を示す図である。 本実施の形態に係るエディタ情報277の一例を模式的に示す図である。 本実施の形態に係るデバイスのベンダごとのデータ型の対応情報294の一例を示す図である。 本実施の形態に係るデータ型同一視の原則の一例を説明する図である。 本実施の形態に係るプログラムを表示する画面の一例を示す図である。 本実施の形態に係る一括設定処理の一例を概略的に示す処理フローチャートである。 本実施の形態に係る変数化処理の一例を示すフローチャートである。 本実施の形態に係る個別設定処理の一例を示す処理フローチャートである。 本実施の形態に係る個別設定処理におけるデータ型候補の表示の一例を示す図である。 本実施の形態に係るコンパイル処理の一例を示すフローチャートである。 本実施の形態に係るコンパイル処理の一例を示すフローチャートである。 本実施の形態に係る式に対応したASTの一例を示す図である。 本実施の形態に係るコード解析処理におけるASTの変化の一例を示す図である。 本実施の形態に係るコード解析処理におけるASTの変化の一例を示す図である。 本実施の形態に係るコード解析処理におけるASTの変化の一例を示す図である。 本実施の形態に係るコード解析処理におけるASTの変化の一例を示す図である。 本実施の形態に係るコード解析処理におけるASTの変化の一例を示す図である。 本実施の形態に係るコード解析処理に適用される関数の一例を示す図である。 本実施の形態に係るコード解析処理に適用される関数の一例を示す図である。 本実施の形態に係るコード解析処理に適用される関数の一例を示す図である。 本実施の形態に係るランク表の一例を示す図である。 本実施の形態に係るコード解析処理に適用される関数の一例を示す図である。
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
<A.適用例>
まず、図6を参照して、本発明が適用される場面の一例について説明する。図6は、本実施の形態に係るサポート装置200におけるプログラムの開発環境の一例を概略的に示す図である。本実施の形態では、制御対象を制御する制御装置で実行される実行可能プログラムの開発を支援するサポート装置200が提供される。実行可能プログラムは、例えば制御対象を制御するための制御プログラムを含み得る。制御装置は、例えばプログラマブルロジックコントローラを含み得る。制御対象は、制御装置により制御されるアクチュエータ、検出センサーなどのデバイスに相当する。
サポート装置200は、制御プログラムなどのユーザプログラム、すなわち実行可能プログラムの開発を支援する環境としてプログラミングアプリケーション250を備える。サポート装置200は、ソースプログラム271を編集して生成するエディタ252および編集されたソースプログラム271をコンパイルして実行可能プログラム273に変換するコンパイラ254を備える。また、サポート装置200は、ソースプログラム271の編集時またはコンパイル時に利用されるデータを格納する領域および作業領域としてRAM(Random Access Memory),HDD(Hard Disc Drive)などにより構成されるなどのデータ格納部270を備える。
データ格納部270は、エディタ情報277を含む。エディタ情報277は、対象を制御するデータの型別に、当該データの型と、プログラムの実行時に制御装置による当該データの型とデータの扱い方が同じとなり得る他のデータ型からなる複数のデータ型の情報を有する。このデータの扱い方とは、データ型により規定されるデータサイズ、またはデータのメモリにおけるアライメントを含む。対象は、アクチュエータ、検出センサーなどの各種デバイスに相当する。
エディタ252はソースプログラム271を、ユーザ操作に従い編集する。ソースプログラム271の編集時に、エディタ252は対応するソースコード272が生成される。ソースプログラム271は、予め定められたプログラム言語(例えば国際規格IEC61131-3)に従って記述されたプログラムを含む。なお、プログラム言語の種類は、国際規格IEC61131-3に従う言語に限定されない。
ソースプログラムは、変数エディタ253を用いて記述される変数宣言部と、エディタ252を用いて記述されるコード部とを含む。変数エディタ253は、変数宣言部において、データ別の変数と、当該変数に対応するデータ型であって上記の複数のデータ型のうちの1つ以上を定義する情報を生成する手段に相当する。エディタ252は、コード部において、制御装置で実行される処理を、定義された変数を用いて記述した命令コードを生成する手段に相当する。より具体的には、エディタ252は、キーボードなどを介して受け付けたユーザ操作に従い演算式を表す命令コードを生成する。この演算式は、論理演算または算術演算を含み、演算式は演算子(オペレータ)と被演算子(オペランド)とを含む。さらに、演算子は、単項演算子または二項演算子などを含む。
コンパイラ254は、このような変数宣言部の定義情報およびコード部の命令コードを用いて実行可能プログラム273を生成する。具体的には、コンパイラ254は、変数宣言部の定義情報およびコード部の命令コードを含むソースプログラム271(より特定的にはソースコード272)を予め定められたプログラム言語の仕様に従いコンパイルすることにより、ソースプログラム271から制御装置のプロセッサにより実行可能なコードからなる実行可能プログラム273を生成する。
実行可能プログラム273は、転送モジュール211によりPLCなどの制御装置に転送(ダウンロードまたはアップロード)される。制御装置のプロセッサは、実行可能プログラム273を実行することにより、制御対象である各種デバイスを制御する。
コンパイラ254は、実行可能プログラムを生成する手段に相当する。コンパイラ254は、ソースプログラム271を走査して解析するために、字句解析部212、構文解析部213、意味解析部214およびコード解析部215を含む。さらに、コンパイラ254は、ソースプログラム271の解析結果に基き、ソースプログラム271から再配置可能コードを生成する再配置可能コード生成部216を含む。
コード解析部215は、ソースプログラム271のコード部に含まれる命令コードが示す演算式が有する変数に対応して変数宣言部で定義された1つ以上のデータ型を含む型集合を生成する手段を有する。具体的には、コード解析部215は、データ格納部270の規則278に従い、上記の演算式が有する変数に対応して変数宣言部で定義された1つ以上のデータ型を含む型集合を生成する。規則278は、上記の型集合を演算式が有する演算子の種類に基き、当該式が有する変数に対応して定義された1つ以上のデータ型を含む型集合を生成するための関数を含む。このような規則278に基くことで、型集合を、演算式の演算子が取り得るデータ型からなる型集合とすることができる。
また、コード解析部215は、演算式の型集合から、演算精度を保証するための基準に基き1つを選択し、演算結果のデータ型として決定する手段を有する。
ここで、データ型によるデータの扱い方は、データサイズの大きさに基づく扱い方を含み得る。サポート装置200は、データ格納部270に、各データ型に対応して、扱われるデータサイズに基き当該データ型が他のデータ型に優先して変数に対応して設定される度合いを示す優先度を格納したランク表289を有する。演算結果のデータ型を決定する場合、コード解析部215は、上記の型集合から、演算精度を保証するための基準に従う優先度を有したデータ型を選択し、演算結果のデータ型、すなわち演算式のデータ型として決定する。
本実施の形態に係るサポート装置200によれば、エディタ252は、対象を制御するデータ別の変数と、当該変数に対応するデータ型であって制御装置による当該データの取り扱い方が同じである1または複数のデータ型を定義する情報と、制御装置で実行される処理を、定義された変数を用いて記述した命令コードから、ソースプログラム271を生成する。したがって、命令コードの記述に用いるデータ別の変数に、制御装置による当該データの取り扱い方が同じである1または複数のデータ型を定義することができる。
これにより、対象のデバイスを供給するベンダにより当該デバイスの制御データのデータ型が相違する場合であっても、すなわち「デバイスがサポートするデータ型」の相違がある場合であっても、ソースプログラム271では、このようなデータ型の相違を、データ別の変数に複数のデータ型を定義することにより対処することができる。
また、コード解析部215は、上記に述べたように、命令コードが示す演算式に、演算精度が保証されるように、当該演算式の変数に対応するデータ型の型集合から演算結果のデータ型を決定することができる。これにより、データ別の変数に複数のデータ型が定義されるとしても、実行可能プログラム273の生成時には、ソースプログラム271に記述された各演算式のデータ型を、演算精度が保証されるデータ型に決定することができる。
これにより、制御装置によるプログラム実行時には、命令コードが示す演算式に従う演算は、当該演算式について決定された演算精度が保証されるデータ型に従い実施される。したがって、プログラム実行時に取得される演算結果には、桁落ち,桁あふれなどの情報のロスが発生するのを回避し得る。このことは、「デバイスがサポートするデータ型」の相違があるとしても、制御装置は演算の結果に基く制御データによりデバイスである対象を適切に制御することが可能になる。
本明細書において、「プログラム」は、変数プログラムに対応し、典型的には、シーケンスプログラムを含み得る。シーケンスプログラムは、例えば国際電気標準会議(International Electrotechnical Commission:IEC)によって規定された国際規格IEC61131-3に従って記述された1または複数の命令からなるプログラムを包含する。シーケンスプログラムには、シーケンス命令および/またはモーション命令を含む各種命令を含み得る。なお、シーケンスプログラムとしては、国際規格IEC61131-3に従って記述された命令に限らず、PLC(プログラマブルコントローラ)の製造メーカまたはベンダなどが独自に規定した命令を含むようにしてもよい。
本明細書において、「ユーザ」はプログラムを作成するプログラマを含む概念を示す。
本明細書において、「シーケンス命令」は、基本的には、デバイスを制御するための入力値、出力値、内部値などのパラメータを算出する1または複数の論理回路により記述される1または複数の命令を包含する用語である。本明細書において、「モーション命令」は、サーボモータなどのアクチュエータなどのデバイスに対して、位置、速度、加速度、加加速度、角度、角速度、角加速度、角加加速度などの当該デバイスを制御するためのパラメータを指令として算出するための1または複数の命令を包含する用語である。このような命令は、論理演算命令および算術演算命令を含み得る。
本明細書において、上記に述べたデバイスを制御するためのパラメータは、デバイスを制御するための制御データに対応する。本明細書においては、制御データは位置、速度、加速度、加加速度、角度、角速度、角加速度、角加加速度などを含み得る。変数プログラムにおいては、制御データ別に変数が割当てられて、上記の論理演算命令および算術演算命令などの算出命令の命令コードは、演算子と変数を用いて記述される。
本明細書において「データの扱い方」とは、PLCが予め定められたプログラミング言語の仕様に従いデータを適切に処理(演算、メモリにアクセス(読出、書込)などを含む)するためのデータの処理方法を示す。具体的には、「データの扱い方」は、例えば制御データのデータサイズ、メモリにアクセスする場合のメモリ上の位置の調整などのアライメント、データフォーマット(倍精度、単精度、固定小数点、浮動小数点など)などの基準に基いている。なお、「データの扱い方」の基準は、データサイズ、アライメント、データフォーマットに限定されない。本明細書において、このようなメモリは、物理的なメモリまたは論理的なメモリ(仮想的なメモリ)を含み得る。
本明細書において、「同一視可能なデータ型」とは、PLCによる「データの扱い方」が同一であるか否かという観点を示すものである。例えば、或るデータ型を有する制御データを、他のデータ型に変えた場合であっても、演算精度などを保証して他のデータ型を用いて制御データを適切に処理(演算、メモリにアクセス(読出、書込)などを含む)できる場合には、両データ型は「同一視可能なデータ型」であると言う。より具体的には、1のベンダが提供するデバイスの或る制御データが有するデータ型を、他のデータ型に変えた場合であっても、PLCが他のデータ型を用いて或る制御データを適切に処理(演算、メモリにアクセス(読出、書込)などを含む)することができる場合には、両データ型は「同一視可能なデータ型」を示す。
以下、本発明のより具体的な応用例として、本実施の形態に係るサポート装置200のより詳細な構成および処理について説明する。
<B.システム構成>
まず、本実施の形態に係るサポート装置が使用および運用を支援するPLCを含むシステムについて説明する。
図1は、本発明の実施の形態に係るPLCシステムSYSを示す模式図である。本実施の形態に係るPLCシステムSYSは、ネットワークNWを介してネットワーク接続された複数のPLC(PLC1,PLC2,PLC3)を含む。これらのPLCの種別は同じまたは異なっている。PLC1とPLC2との間、PLC2とPLC3との間、およびPLC3とPLC1との間では、ネットワークNWを介してデータを遣り取りする場合がある。
各PLCは、プログラムを実行する主体である処理ユニット10と、処理ユニット10などへ電力を供給する電源ユニット12と、フィールドからの信号を遣り取りするIO(Input/Output)ユニット14とを含む。IOユニット14は、処理ユニット10とシステムバス11を介して接続されている。典型的には、IOユニット14は、フィールド機器である検出センサー6から入力信号を取得し、また処理ユニット10でのプログラムの実行結果に応じてフィールド機器であるアクチュエータ7を駆動する。検出センサー6は例えばアクチュエータの制御量を検出する。検出センサー6およびアクチュエータ7は、PLCが制御する「対象」となるデバイスの一実施例であり、デバイスの種類は検出センサー6およびアクチュエータ7に限定されない。
サポート装置200は、PLCで実行されるプログラム(以下「実行可能プログラム」とも称す)を生成する機能とともに、接続先のPLCの運転状態や各種データの値などをモニタする機能を有している。さらに、サポート装置200は、ユーザによる実行可能プログラムの生成を支援するため、エディタ機能、コンパイル機能、デバック機能、シミュレーション機能などを有していてもよい。コンパイル機能は、ビルダ機能として提供されてもよい。
<C.ハードウェア構成>
次に、図1に示すPLCシステムSYSを構成するPLCおよびサポート装置200のハードウェア構成について説明する。
(c1:PLCのハードウェア構成)
図2は、本発明の実施の形態に係るPLCの処理ユニット10のハードウェア構成を示す模式図である。図2を参照して、処理ユニット10は、プロセッサ100と、チップセット102と、メインメモリ104と、不揮発性メモリ106と、システムタイマ108と、システムバスコントローラ120と、ネットワークコントローラ140と、USBコネクタ110とを含む。チップセット102と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。
プロセッサ100およびチップセット102は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、プロセッサ100は、チップセット102から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット102は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、プロセッサ100に必要な命令コードを生成する。さらに、チップセット102は、プロセッサ100での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
処理ユニット10は、メモリとして、メインメモリ104および不揮発性メモリ106を有する。
メインメモリ104は、揮発性の記憶領域であり、処理ユニット10への電源投入後にプロセッサ100で実行されるべき各種プログラムを格納する。メインメモリ104は、プロセッサ100による各種プログラムの実行時の作業用メモリとしても使用される。このようなメインメモリ104としては、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)といったデバイスが用いられる。
不揮発性メモリ106は、リアルタイムOS(Operating System)、システムプログラム、後述する実行可能プログラム273といった各種プログラム(モジュール)、システム設定パラメータおよびコンフィグ情報1061といったデータを不揮発的に格納する。コンフィグ情報1061は、PLCに接続されているデバイス毎に当該デバイスを制御するために用いるデータ(以下、制御データと称する)別の変数およびデータ型などを含む。
これらのプログラムやデータは、必要に応じて、プロセッサ100がアクセスできるようにメインメモリ104にコピーされる。
処理ユニット10は、通信インターフェイスとして、システムバスコントローラ120およびネットワークコントローラ140を有する。これらの通信インターフェイスは、出力データの送信および入力データの受信を行う。
システムバスコントローラ120は、システムバス11を介したデータの遣り取りを制御する。より具体的には、システムバスコントローラ120は、DMA(Dynamic MemoryAccess)制御回路122と、システムバス制御回路124と、バッファメモリ126とを含む。システムバスコントローラ120は、システムバスコネクタ130を介してシステムバス11と内部的に接続される。
ネットワークコントローラ140は、ネットワークNWを介した他のPLCとの間のデータの遣り取りを制御するために、DMA(Dynamic MemoryAccess)制御回路142と、ネットワーク制御回路144と、バッファメモリ146とを含む。
ネットワーク制御回路144は、ネットワークNWに接続される他のPLCとの間で、バッファメモリ146の出力データを送信する処理および入力データを受信してバッファメモリ146に格納する処理を行う。
USBコネクタ110は、サポート装置200と処理ユニット10とを接続するための通信インターフェイスである。典型的には、サポート装置200から転送される、処理ユニット10のプロセッサ100で実行可能なプログラムなどは、USBコネクタ110を介してPLCに取込まれる。
(c2:サポート装置のハードウェア構成)
図3は、本発明の実施の形態に係るサポート装置200のハードウェア構成の一例を示す模式図である。図3を参照して、サポート装置200は、典型的には、汎用のコンピュータで構成される。なお、メンテナンス性の観点からは、可搬性に優れたノート型のパーソナルコンピュータであってもよい。
図3を参照して、サポート装置200は、OSを含む各種プログラムを実行するCPU201と、BIOSや各種データを格納するROM(Read Only Memory)202と、CPU201でのプログラムの実行に必要なデータを格納するための作業領域を提供するメモリRAM203と、CPU201で実行されるプログラムなどを不揮発的に格納するハードディスク(HDD)204とを含む。
サポート装置200は、さらに、ユーザからの操作を受け付ける操作部に相当するキーボード205およびマウス206と、情報をユーザに表示するためのモニタ207とを含む。サポート装置200は、PLC(処理ユニット10)などと通信するための通信インターフェイス(IF)209を含む。
後述するように、サポート装置200で実行される各種プログラムは、CD-ROM300に格納されて流通する。このCD-ROM300に格納されたプログラムは、CD-ROM(Compact Disk-Read Only Memory)ドライブ208によって読取られ、ハードディスク(HDD)204などへ格納される。あるいは、上位のホストコンピュータなどからネットワークを通じてプログラムをダウンロードするように構成してもよい。
<D.ソフトウェア構成>
(d1:PLCのソフトウェア構成)
次に、PLC(処理ユニット10)が各種機能を提供するためのソフトウェア構成について説明する。
図4は、本発明の実施の形態に係るPLCの処理ユニット10に実装されるソフトウェア構成の一例を示す模式図である。図4に示すソフトウェアに含まれる命令コードは、適切なタイミングで読出され、処理ユニット10のプロセッサ100へ提供されて実行される。
図4を参照して、処理ユニット10には、リアルタイムOS190上にPLCでの処理に必要なプログラムが実装される。
リアルタイムOS190は、処理ユニット10のコンピュータアーキテクチャに応じて設計されており、プロセッサ100がPLCでの処理に必要なプログラムを実行するための基本的な実行環境を提供する。より具体的には、リアルタイムOS190は、複数のプログラムを時間の経過に従い切り替えて実行するための環境を提供する。リアルタイムOS190は、制御サイクル開始の割り込みが発生すると、プロセッサ100での実行対象を、割り込み発生時点で実行中のプログラムからスケジューラ160に切り替える。
本実施の形態に係る実行可能プログラムとしては、基本的には、ユーザ定義アプリケーション170が想定されている。ユーザ定義アプリケーション170は、サポート装置200によって生成され、サポート装置200から処理ユニット10へ転送される。なお、ユーザ定義アプリケーション170の実行に必要な一部のモジュール(あるいは、ライブラリ)については、処理ユニット10に予め格納されており、これらを適切なタイミングで呼び出して利用する形態(シンボリックリンク)を採用してもよい。この場合、サポート装置200は、一部のモジュールを含まない実行可能プログラムを生成することになる。あるいは、ユーザ定義アプリケーション170および命令実行モジュール180を含めて、実行可能プログラムとしてもよい。
より具体的には、処理ユニット10には、スケジューラ160と、ユーザ定義アプリケーション170と、入力処理モジュール172と、出力処理モジュール174と、通信処理モジュール176と、その他のシステムモジュール178と、命令実行モジュール180と、メモリマネジャー184とが実装される。
スケジューラ160は、ユーザ定義アプリケーション170、入力処理モジュール172、出力処理モジュール174、および通信処理モジュール176について、実行開始タイミングや処理中断を制御する。
ユーザ定義アプリケーション170は、ユーザがその制御目的に応じて作成する。すなわち、PLCシステムSYSを用いて制御する対象のライン(プロセス)などに応じて、任意に設計されるプログラムである。ユーザ定義アプリケーション170には、サポート装置200で生成される後述の実行可能プログラム273を含み得る。
ユーザ定義アプリケーション170は、シーケンス処理およびモーション演算などの特殊処理を含み得る。ユーザ定義アプリケーション170は、命令実行モジュール180と協働して、ユーザ定義アプリケーション170に含まれる処理を実現する。
命令実行モジュール180は、ユーザ定義アプリケーション170に定義された何らかのシーケンス命令あるいは何らかのファンクション命令が実行されるときに呼び出される。
入力処理モジュール172は、システムバスコントローラ120によって受信された入力データを、ユーザ定義アプリケーション170が使用するのに適した形式に再配置する。出力処理モジュール174は、ユーザ定義アプリケーション170の実行によって生成された出力データを、システムバスコントローラ120へ転送するのに適した形式に再配置する。
通信処理モジュール176は、ネットワークコントローラ140による他のPLCとの間の通信処理またはサポート装置200との通信を制御する。
その他のシステムモジュール178は、図4に個別に示したプログラム以外の、PLC1の各種機能を実現するための1つまたは複数のモジュールをまとめて示したものである。
メモリマネジャー184は、メインメモリ104に格納されるデータを管理する。
(d2:サポート装置のソフトウェア構成)
次に、サポート装置200が各種機能を提供するためのソフトウェア構成について説明する。
図5は、本発明の実施の形態に係るサポート装置200に実装されるソフトウェア構成の一例を示す模式図である。図5に示すソフトウェアに含まれる命令コードは、CPU201により読出されて実行される。
図5を参照して、サポート装置200には、OS240、プログラミングアプリケーション250およびネットワーク設定アプリケーション280が実装される。サポート装置200ではOS240が実行され、プログラミングアプリケーション250およびネットワーク設定アプリケーション280を実行可能な環境が提供される。本実施の形態に係るサポート装置200を実現するためのサポートプログラムは、少なくともプログラミングアプリケーション250を含む。
プログラミングアプリケーション250は、後述する変数エディタ253を有するエディタ252と、コンパイラ254と、デバッガ256と、GUI(Graphical User Interface)モジュール258と、シミュレータ260と、データ格納部270とを含む。プログラミングアプリケーション250に含まれるそれぞれのモジュールは、典型的には、CD-ROM300に格納された状態で流通して、サポート装置200にインストールされる。データ格納部270は、ROM202、RAM203またはHDD204などを含んで構成される。
エディタ252は、予め定められたプログラム言語の仕様に従いソースプログラムを作成するための入力および編集といった機能を提供する。より具体的には、エディタ252は、ユーザによるキーボード205やマウス206の操作内容を受付けて、受付けた操作内容に従いソースプログラム271を編集(作成)する機能に加えて、作成したソースプログラム271の保存機能を提供する。エディタ252によるソースプログラムの編集時に、エディタ252はGUIモジュール258を介して編集作業を支援するための情報をモニタ207に表示させる。
コンパイラ254は、予め定められたプログラム言語の仕様に従い、ソースプログラム271をコンパイルして、処理ユニット10のプロセッサ100で実行可能(オブジェクト)形式の実行可能プログラムを生成する機能を提供する。
デバッガ256は、実行可能プログラム(ソースプログラム)に対してデバッグを行うための機能を提供する。このデバッグの内容としては、ソースプログラムのうちユーザが指定した範囲を部分的に実行する、ソースプログラムの実行中における変数値の時間的な変化を追跡する、といった動作を含む。デバッガ256は、デバッグを支援するための情報をGUIモジュール258をモニタ207に表示させる。
シミュレータ260は、サポート装置200内にPLCの処理ユニット10でのプログラムの実行をシミュレーションする環境を構築する。
データ格納部270は、プログラミングアプリケーション250の各部により利用(読み書き)される各種情報を格納する。データ格納部270の格納される内容については、後述する。
ネットワーク設定アプリケーション280は、コンフィグレータ257と、データ格納部299とを含む。ネットワーク設定アプリケーション280に含まれるモジュールは、典型的には、CD-ROM300に格納された状態で流通して、サポート装置200にインストールされる。
コンフィグレータ257は、PLCシステムSYSのネットワーク構成を示すネットワーク情報293を取得し、取得したネットワーク情報293をデータ格納部299に格納する。ネットワーク情報293は、ネットワークNWに接続される各PLCから受信する(ダウンロードされる)コンフィグ情報を含む。なお、ネットワーク情報293が有するコンフィグ情報は、実機のPLCから受信する情報、または実機の情報ではない論理的(仮想的)な情報を含む。論理的な情報は、ユーザがキーボード205やマウス206を操作することによりエディタ252を介して入力する情報を含み得る。
(d3.プログラムの開発環境)
図6を再び参照して、サポート装置200におけるプログラムの開発環境を説明する。図6では、説明のために、プログラミングアプリケーション250のうち、エディタ252およびコンパイラ254が示されて他の部分の図示は省略されている。また、図6では、エディタ252およびコンパイラ254に関連づけて、データ格納部270および転送モジュール211が示される。図6では、データ格納部270のデータのち、エディタ252およびコンパイラ254と関連する、ソースプログラム271、ソースコード272、実行可能プログラム273、エディタ252にいるプログラム編集時に参照されるエディタ情報277、後述するランク表289、および予め定められたプログラム言語の仕様に従う各種の規則278が示されている。エディタ情報277の詳細は後述する。規則278は、デバイスを制御するプログラムなどを記述するための予め定められたプログラム言語の記述仕様などを含む各種の規則を含む。転送モジュール211は、実行可能プログラム273をPLCに転送(ダウンロードまたはアップロード)するように、通信IF209を制御する。
図6を参照して、エディタ252は、キーボード205またはマウス206を介して受付けるユーザ操作内容に従い記述されるソースプログラム271を編集(エディット)し、ソースプログラム271を予め定められたプログラム言語のソースコード272に変換する。エディタ252は、編集後のソースプログラム271およびソースコード272を、データ格納部270に格納する。
コンパイラ254は、予め定められたプログラム言語用のコンパイラを含む。具体的には、コンパイラ254は、字句解析部212、構文解析部213、意味解析部214、コード解析部215、および再配置可能コード生成部216を含む。これらは、規則278またはランク表289に従い、ソースプログラム271(より特定的にはソースコード272)をコンパイルし、PLCで実行することが可能なコードからなる実行可能プログラム273を生成する。
サポート装置200は、実行可能プログラム273を転送モジュール211によりPLCに転送する。PLCでは、プロセッサ100により実行可能プログラム273が実行されることにより、PLC間でのデータの遣り取り、または制御対象であるデバイスの制御が実施される。
<E.プログラム開発の処理>
図7は、本実施の形態に係るプログラム開発の概略処理の一例を示すフローチャートである。図7を参照して、サポート装置200では、ソースプログラム271を生成(変更)する場合に、まず、エディタ252が起動される。エディタ252は、ソースプログラム271のエディット(編集)処理を実施する(ステップS1)。具体的には、エディタ252は、キーボード205またはマウス206を介して受付けるユーザ操作内容に従い、ソースプログラム271を編集してモニタ207に表示するともに、ソースプログラム271に対応するソースコード272を生成する(ステップS1)。
ソースプログラム271はコンパイルする場合、サポート装置200はコンパイラ254を起動する。コンパイラ254は、ソースプログラム271(より特定的にはソースコード272)をコンパイルし、実行可能プログラム273を生成する(ステップS2)。コンパイル処理については、図17で後述する。
実行可能プログラム273をPLCに転送する場合、転送モジュール211は、実行可能プログラム273をPLCに転送するよう通信IF209を制御する(ステップS3)。
(e1.ソースプログラムの例示)
図8は、本実施の形態に係るソースプログラム271の一例を示す図である。図8を参照して、ソースプログラム271は、変数宣言部281とコード部282を含む。コード部282は、デバイスを制御する命令などを含む1または複数の命令コードとコメント部283を含む。コード部282は、例えば、デバイスを制御するための命令コードを含む。命令コードは、制御データの変数を用いて記述された1または複数の演算式(論理演算式または算術演算式)のコードを含む。コメント部283は、コンパイル対象から除外される記述内容であって、例えばデバッグなどのために利用される情報を含む。ここでは、コメント部283は、複数の演算式それぞれのセンテンスを指し示すための「文1」~「文3」が記述されている。
変数宣言部281には、コード部282で記述される変数284(より特定的には変数名などの識別子)と、各変数に関連付けて当該変数が割当てられる制御データのデータ型285が記述される。
(e2.エディタ情報)
図9は、本実施の形態に係るエディタ情報277の一例を模式的に示す図である。図10は、本実施の形態に係るデバイスのベンダごとのデータ型の対応情報294の一例を示す図である。図11は、本実施の形態に係るデータ型同一視の原則の一例を説明する図である。図9では、サポート装置200のデータ格納部270に格納されるエディタ情報277が、PLCが有するコンフィグ情報1061と関連付けて示される。図9では、コンフィグ情報1061として、PLCに接続される各デバイスに対応して、当該デバイスの制御データ別の変数と当該制御データの型とを関連付けて含む。なお、ここではコンフィグ情報1061は、デバイス毎に制御データ別の変数とデータ型の組を示したが、コンフィグ情報1061の種類は、これらに限定されない。
図9を参照して、エディタ情報277は、例えばデバイス情報群291、変数エディタ情報292、ネットワーク情報293、およびベンダ毎のデータ型の対応情報(以下、データ型対応情報と称する)294を含む。デバイス情報群291は、PLCシステムSYSに接続され得るデバイス毎にデバイス情報29を含む。
デバイス情報29は、当該デバイスの名称などのデバイス識別子241、当該デバイスのベンダの名称などのベンダ識別子242、および当該デバイスの各パラメータに対応のパラメータデータ243を含む。パラメータデータ243は、パラメータ名(param1、param2、・・・)と当該パラメータのデータ型を含む。なお、デバイス情報29に含まれる情報をこれらに限定されない。デバイス情報29は、ベンダ識別子242を含まない場合もある。デバイス情報群291は、ソースプログラム271のエディット時は変化しない、いわゆるスタティック情報である。
変数エディタ情報292は、エディット時に変数エディタ253により動的に生成される、いわゆるダイナミック情報である。ネットワーク情報293は、コンフィグ情報1061と同様の内容を示す情報である。ネットワーク情報293は、例えば、サポート装置200が実機のPLCから受信するコンフィグ情報1061、またはキーボード205またはマウス206から受付けるユーザの操作内容に基づくコンフィグ情報を含む。
対応情報294は、例えば各ベンダから提供される情報である。図10を参照して、対応情報294は、ベンダ毎にレコード290を含む。各ベンダのレコード290は、当該ベンダを識別するベンダ情報295と、当該ベンダが同一視可能なデータ型として指定したデータ型群296を含む。同一視可能なデータ型群296は、当該ベンダが提供するデバイスのパラメータ(制御データ)が有するデータ型297と、各データ型297に対応した類似のデータ型からなる類似データ型群298を含む。類似データ型群298は、対応のデータ型297と同一視可能な1つ以上の他のデータ型からなる。
同一視可能なデータ型群296のデータ型は、本実施の形態では、例えば図11に示す原則(1)と(2)の2つの条件を同時に満たしている。図11では、原則(1)と(2)のそれぞれに関連付けて、当該原則を満たすデータ型が例示されている。具体的には、原則(1)は、“同一視可能なデータ型どうしは、命令(ロジック)を実行するアーキテクチャ(PLC)において、データサイズ(占有するビット数)およびアライメントが同じでなければならない”ことを示す。
原則(1)の条件を満たす同一視可能なデータ型群296には、例えばUINT型(16ビット、アライメント2)およびWORD型(16ビット、アライメント2)が含まれる。この場合、UDINT型(32ビット、アライメント4)およびLWORD型(64ビット、アライメント4)は、UINT型(16ビット、アライメント2)およびWORD型(16ビット、アライメント2)との間では同一視可能なデータ型とはなり得ず(すなわち原則(1)を満たさず)、当該同一視可能なデータ型群296には、含まれない。
また、原則(2)は、“同一視可能なデータ型どうしは、対応する変数に対するプログラム上の操作において、ある一方の操作によって、予め定められたプログラム言語仕様上、不適切な値(メモリ)になることがあってはならない”ことを示す。
原則(2)の条件を満たす同一視可能なデータ型群296には、例えばUINT型およびWORD型が含まれる。また、例えばLTIME型およびLINT型は、そのデータフォーマトが同じでられば、両者は原則(2)の条件を満たす同一視可能なデータ型群296に含まれる。また、例えばLINT型およびLREAL型は原則(2)の条件を満たさない。つまり、LINT型は、浮動小数点数算術標準規格(IEEE(Institute of Electrical and Electronics Engineers)754)を含むデータフォーマットを適用することが、LREAL型は、当該浮動小数点数算術標準規格以外のデータフォーマットを適用することができないからである。
図11では、同一視可能なデータ型どうしが満たすべき原則として、原則(1)と原則(2)の2種類を例示したが、原則の種類は、これらに限定されない。また、これら原則を満たすデータ型として、UINT型、WORD型、UDINT型、LWORD型、LTIME型、LINT型、LREAL型などを例示したが、これらのデータ型に限定されない。
<F.エディット処理>
本実施の形態では、ソースプログラム271を編集するエディット処理として、主に、変数宣言部281の編集を説明する。コード部282の編集においては、エディタ252はキーボード205のユーザ操作に基づき命令コードを記述する。コード部282の編集は、従来の編集方法を用いることができるので、ここでは説明を繰返さない。
本実施の形態では、エディタ252は、変数宣言部281を編集する場合に変数エディタ253を起動する。変数エディタ253は、図11で示された原則に基づき、変数宣言部281において、各変数にデータ型285の候補を設定する。本実施の形態では、変数284の設定およびデータ型285の候補の設定をするために、変数エディタ253は一括設定処理または個別設定処理を実施する。一括設定処理は、変数エディタ253は、ネットワーク情報293による示される各デバイスについて、当該デバイスの全てのパラメータ(制御データ)に対して変数284とデータ型285を設定する。また、個別設定処理では、変数エディタ253は、ユーザが指定したデバイスの全てのパラメータ(制御データ)に対して変数284とデータ型285を設定する。
図12は、本実施の形態に係るプログラムを表示する画面の一例を示す図である。本実施の形態では、ユーザは、コード部282を記述する場合、変数宣言部281で宣言(記述)された変数名を用いて命令コードを記述する。図12のモニタ207の画面は、一括設定処理を起動するために操作されるボタン286および個別設定処理を起動するために操作されるボタン287を含む。
(f1.一括設定処理)
図13は、本実施の形態に係る一括設定処理の一例を概略的に示す処理フローチャートである。図14は、本実施の形態に係る変数化処理の一例を示すフローチャートである。図13および図14のフローチャートに従う処理は、図7のエディット処理(ステップS1)において実施される。エディット処理では、例えばエディタ252は、図12のようにモニタ207に編集中のプログラムを表示させる。
図12のボタン286が操作されて一括設定処理が起動されると、図9のエディタ情報277はデータ格納部270から読出されてモニタ207に表示され得る。ユーザは、モニタ207に表示されるエディタ情報277のネットワーク情報293が示す全てのデバイスに対応するデバイス情報が、デバイス情報群291中に含まれているかを判断する(ステップT1)。
含まれていない場合は(ステップT1でNO)、ユーザは、キーボード205などを操作して、デバイスのベンダが提供するデバイス情報を、既存のデバイス情報群291に追加する(ステップT3)。全てのデバイスのデバイス情報がデバイス情報群291中に含まれている場合は(ステップT1でYES)、変数エディタ253は、デバイスのパラメータ(制御データ)の変数化処理(ステップT7)を実施する。
図14のフローチャートを参照して、変数化処理を説明する。変数化処理では、変数エディタ253は、キーボード205の操作内容に基づき、変数化処理が、ネットワークに接続された全てのデバイスを対象にするか、またはユーザが指定するデバイスを対象にするかを判断する(ステップT70)。
変数エディタ253は、キーボード205を介したユーザの操作内容に基づき、全てのデバイスを対象に変数化処理を実施すると判断すると(ステップT70でYES)、変数エディタ253は、全てのデバイスのうちから1つ(以下、デバイスDという)をネットワーク情報293から選択する(ステップT71)。変数エディタ253は、選択されたデバイスDについて設定処理(ステップT72~T78)を実施する。
設定処理では、変数エディタ253は、デバイスDの識別子に基づきデバイス情報群291を検索する。その検索の結果に基づき、変数エディタ253は、デバイス情報群291からデバイスDに対応のデバイス情報29が取得できるか否かを判断する(ステップT72)。取得できる場合(ステップT72でYES)、すなわちデバイス情報群291にデバイスDのデバイス情報29が有る場合、取得されたデバイスDのデバイス情報29に含まれるパラメータ名(param1、param2、・・・)のそれぞれについて、変数名とデータ型を設定する処理(ステップT73~T77)を実施する。
具体的には、まず、デバイスDのデバイス情報29から1つのパラメータ(以下、パラメータpという)を選択する(ステップT73)。デバイス情報29からパラメータpに対応したベンダ(以下、ベンダVという)の識別子とデータ型(以下、データ型τという)を特定する。そして、対応情報294においてベンダVのレコード290を検索し、検索の結果に基づき、レコード290の類似データ型群298に当該データ型τに関連付けられたデータ型が有るか否かを判断する(ステップT74)。すなわち、データ型τと同一視可能な他のデータ型が有るか否かを判断する。
変数エディタ253は、同一視可能な他のデータ型はないと判断すると(ステップT74でNO)、パラメータpのパラメータ名とデータ型τを用いた表記データを、変数エディタ情報292に登録する(ステップT75a)。これにより、変数エディタ情報292には、例えば図9の表記2922または表記2924などが登録される。
一方、変数エディタ253は、同一視可能な他のデータ型が有ると判断すると(ステップT74でYES)、パラメータpのパラメータ名と、データ型τおよび類似データ型群298のデータ型(すなわち同一視可能な他のデータ型)を連結したデータ型集合表記を生成し(ステップT75)、生成したデータ型集合表記を変数エディタ情報292に登録する(ステップT76)。これにより、変数エディタ情報292には、例えば図9の表記2921または表記2923などが登録される。
変数エディタ253は、デバイスDのデバイス情報29を検索し、検索の結果に基づき、次のパラメータデータ243で示されるパラメータ(未だ処理されていないパラメータp)が有るか否かを判断する(ステップT77)。変数エディタ253は、次のパラメータpが有ると判断すると(ステップT77でYES)、ステップT73に戻り、次のパラメータpについてステップT74以降の処理を上述と同様に実施する。
一方、変数エディタ253は、次のパラメータpはないと判断すると(ステップT77でNO)、すなわちデバイスDのデバイス情報29に含まれる全てのパラメータpについて、その表記を変数エディタ情報292に登録完了した場合は、ステップT79に移行する。
ステップT79では、変数エディタ253は、デバイス情報群291を検索し、検索の結果に基づき、次のデバイス情報29(未だ設定処理がなされていないデバイス情報29)が有るか否かを判断する(ステップT79)。変数エディタ253は、次のデバイス情報29が有ると判断すると(ステップT79でYES)、ステップT71に戻り、次のデバイス情報29についてステップT72以降の設定処理を上述と同様に実施する。
ステップT79において、変数エディタ253は、次のデバイス情報29(未だ設定処理がなされていないデバイス情報29)は無いと判断すると(ステップT79でNO)、すなわちデバイス情報群291の全てのデバイス情報29について設定処理を実施したと判断すると、変数エディタ253は、変数エディタ情報292の内容をデータ格納部270のソースプログラム271の変数宣言部281に記述する(ステップT82)。このように変数宣言部281の記述を含むソースプログラム271が、例えば図12のようにモニタ207に表示される。
一方、変数エディタ253は、デバイス情報群291にデバイスDのデバイス情報29はないと判断すると(ステップT72でNO)、ネットワーク情報293から、デバイスDのパラメータpのパラメータ名(param1、param2、・・・)と各パラメータ名に対応のデータ型τを抽出し、各パラメータpについてパラメータ名とデータ型τとを用いた表記データを生成し、生成した表記データを変数エディタ情報292に登録する(ステップT78)。これにより、変数エディタ情報292には、例えば図9の表記2922または表記2924などが登録される。その後、ステップT79に移行する。
変数エディタ253は、キーボード205を介したユーザの操作内容に基づき、ユーザが選択したデバイスを対象に変数化処理を実施すると判断すると(ステップT70でNO、T80でYES)、変数エディタ253は、ユーザが選択したデバイスについて、上記に述べた設定処理(ステップT72~T78)を実施する(ステップT81)。その後、変数エディタ253は、ステップT82の処理を上述と同様に実施する。一方、変数エディタ253は、ユーザが選択したデバイスを対象に変数化処理を実施すると判断しない場合は(ステップT70でNO、T80でNO)、図13の元の処理に戻る。
上記に述べた図14の変数化処理によれば、例えばソースプログラム271の変数宣言部281には、設定処理により設定された変数284と、各変数284が割当てられる制御データのデータ型285が記述される。本実施の形態では、変数エディタ253は、予め定められた規則に従い、各変数284を一意に識別可能に生成する。
(f2.個別設定処理)
図15は、本実施の形態に係る個別設定処理の一例を示す処理フローチャートである。図16は、本実施の形態に係る個別設定処理におけるデータ型候補の表示例を示す図である。個別設定処理では、変数エディタ253は、変数宣言部281のパラメータ(変数)に、1または複数のデータ型(候補)のうちから、ユーザが選択したデータ型を設定(記述)する。図13を参照して、或るデバイスのパラメータ(変数)のデータ型を設定する処理を説明する。
ユーザは、キーボード205を操作することにより、デバイスDの変数vのデータ型τを選択する。変数エディタ253は、このような変数vのデータ型τの選択操作を受付ける(ステップT13)。
変数エディタ253は、受付けた操作内容に基づき、デバイス情報群291を検索する(ステップT15)。変数エディタ253は、検索の結果から、変数vに該当するベンダ識別子242がデバイス情報群291に有るか否かを判断する(ステップT17)。ベンダ識別子242がデバイス情報群291に無いと判断すると(ステップT17でNO)、変数エディタ253は、モニタ207の変数宣言部281の変数vのデータ型の候補として、データ型τのみを表示する(ステップT23)。
一方、変数エディタ253は、検索の結果から、変数vに該当するベンダ識別子242がデバイス情報群291に有ると判断すると(ステップT17でYES)、変数エディタ253は、対応情報294から当該ベンダ識別子242に一致するベンダ情報295に対応のデータ型297に、ユーザから受付けたデータ型τが有るか否かを判断する(ステップT19)。変数エディタ253は、データ型297にデータ型τが無いと判断した場合(ステップT19でNO)、変数vのデータ型の候補276として、データ型τのみを表示する(ステップT23)。その後、ステップT25に移行する。
また、変数エディタ253は、データ型297にデータ型τが有ると判断した場合(ステップT19でYES)、データ型297のデータ型τに対応する類似データ型群298に含まれる同一視可能なデータ型の一つ一つ、および、それらを連結したデータ型集合表記を候補275として、モニタ207の変数宣言部281に表示する(ステップT21)。ステップT23、T21における、候補276、275の表示例が図16に示される。
例えば、ユーザから受付けたデータ型τがUNITを示す場合、ステップT23では、変数エディタ253は、図16の候補276のように、ユーザから受付けたデータ型τ(すなわちUNIT)のみを表示する。これに対して、ステップT21では、変数エディタ253は、モニタ207のユーザの選択操作を受付けた位置にプロンプト279を表示しながら、プロンプト279に関連して候補275を表示する。候補275は、ユーザから受付けたデータ型τ(すなわちUNIT)と同一視可能なデータ型の一つ一つ(例えば、UNIT、WORD)、および、それらを連結したデータ型集合表記(例えば、UNIT WORD)の3つの候補を含む。
ユーザは、キーボード205を操作して、モニタ207に表示された候補275の3つの候補のうちから1つを選択する。変数エディタ253は、ユーザの選択操作を選択されたデータ型をプロンプト279の位置で表示する(ステップT24)。
変数エディタ253は、ステップT24またはステップT23で表示されたデータ型を、データ格納部270のソースプログラム271の変数宣言部281に記述する(ステップT25)。
このように、本実施の形態に係る個別設定処理では、変数エディタ253は、ユーザが変数宣言部281のパラメータ(変数)に対応のデータ型を設定するための操作を支援する情報として、対応情報294に基づいた1または複数のデータ型(候補)をモニタ207を介して提示する。
<G.コンパイル処理>
図17と図18は、本実施の形態に係るコンパイル処理の一例を示すフローチャートである。コンパイラ254は、エディット処理により編集されたソースプログラム271(より、特定的にはソースコード272)をコンパイルする。コンパイル処理は、ソースプログラム271のシンタックスエラーなどの検出、コード部282に記述された制御データのデータ型の決定などを含むが、シンタックスエラーなどの検出については従来の方法を用いることができるので、本実施の形態では、主に、データ型の決定を説明する。
図17(A)を参照して、コンパイル処理では、字句解析部212および構文解析部213は、ソースプログラム271を、コンパイルに適したデータ構造に変換する。このデータ構造として、例えばAST(abstract syntax tree、抽象構文木)を用いる。具体的には、字句解析部212は、ソースプログラム271を走査しながら解析し、解析の結果に基づき変数などの識別子を含む複数のトークンに分類し、分類されたトークンからなるトークン列を出力する。構文解析部213は、字句解析部212からのトークン列を解析し、解析の結果に基づきASTを生成する(ステップS21)。意味解析処理では、意味解析部214は、構文解析部213が出力するASTに基づき、ソースコード272をプログラム言語の記述仕様に適合するようにデータの型または命令コードからなる式の型を決定する(ステップS23)。再配置可能コード生成部216は、意味解析により得られた式のデータ型の情報に基づき従来と同様に、ソースプログラム271のソースコード272を再配置可能コードに変換する(ステップS25)。コンパイラ254は、再配置可能コード生成部216により生成された再配置可能コードを、実行可能プログラム273としてデータ格納部270に格納する。その後、図7の元の処理に戻る。この再配置可能コードは、実行可能プログラム273に相当する。
図17(B)を参照して、意味解析処理(ステップS23)は、シンボル解決処理(ステップS31)とコード解析処理(ステップS32)を含む。シンボル解決処理では、意味解析部214は、変数宣言部281で宣言された変数284をデータ格納部270の図示しないシンボルテーブルに登録し、コード部282に記述された識別子(変数)を、シンボルテーブルを用いてシンボルに置換する。
コード解析処理(ステップS32)では、コード解析部215は、コード部282に記述される各式を表現するASTを解析し、解析の結果に基づき当該式のデータ型を決定する。ここでは、ソースプログラム271の全体のASTは、コード部282に記述された各式に対応した部分ASTを含む。
図18を参照して、コード解析部215は、ソースプログラム271のASTに含まれる全ての式に対応したASTを解析処理したかを判断する(ステップS41)。全ての式に対応したASTを解析したと判断すると(ステップS41でYES)、コード解析処理を終了し、図17(B)の元の処理に戻る。
未解析の式に対応したASTがあると判断すると(ステップS41でNO)、コード解析部215は、ソースプログラム271のASTから解析していない次の式に対応したASTを抽出する(ステップS42)。コード解析部215は、抽出したASTを解析し、解析の結果に基き当該式のデータ型を決定する(ステップS43)。その後、ステップS41に戻る。
(g1.式の型解析処理)
コード解析部215による式の型を決定する処理(ステップS43)を説明する。コード解析部215は、例えば、ソースプログラム271に含まれ文1、文2および文3のそれぞれの演算式をどのデータ型で演算するかを決定する。図19は、本実施の形態に係る式に対応したASTの一例を示す図である。図20~図24は、本実施の形態に係るコード解析処理におけるASTの変化の一例を示す図である。図25、図26、図27および図29は、本実施の形態に係るコード解析処理に適用される関数の一例を示す図である。図28は、本実施の形態に係るランク表289の一例を示す図である。図25、図26、図27および図29の関数を含む規則278および図28のランク表289はデータ格納部270に格納されている。
(g1-1.ASTの構造)
図19の(A)、(B)および(C)は、ソースプログラム271に含まれ文1、文2および文3のそれぞれの式に対応したASTを示す。例えば、文1~文3は、演算子(オペレータ)として代入の演算子(:=)を用いて、右辺の演算式の結果(値)を左辺の変数(被演算子(オペランド))に代入する演算式を表している。ここでは、説明を簡単にするために、文2の単項演算、または文1,文3の2項演算を示すが、演算式はこれらに限定されない。
文1、文2および文3のそれぞれの式に対応したASTは階層構造を有する。階層構造は、演算子(:=)が割当られるノードN1と、その右辺に含まれる演算子が割当られるノードN2と、ノードに接続される被演算子である変数が割当られるリーフを含む。階層構造において、演算子(:=)が割当てられるノードN1はルートノードN1とも称し、ルートノードN1には下位層の(次位の)ノード(例えばノードN2)またはリーフL1が接続され、ノードN2にはリーフL2,L21,L22などが接続される。コード解析部215は、ASTを処理する場合、下位層から上位層に向かって処理を実施する。
(g1-2.リーフの型集合を算出)
まず、コード解析部215は、文1~文3の式に対応のASTのそれぞれについて、図25のL関数を用いて、全てのリーフに対応する型集合を算出する。本実施の形態では、型集合とは、データ型を元として含むデータ型の数学的な集合を示す。図25を参照して、L関数は、式に対応のASTの各リーフを引数として、リーフが取り得るデータ型の型集合を返すと定義される。したがって、コード解析部215は、図19(A)~(C)の文1~文3の式に対応のASTのそれぞれについて、L関数を用いて各リーフの型集合を算出することにより、図20(A)~(C)のASTを生成する。図20(A)~(C)のASTは、図19(A)~(C)のASTのリーフが、当該リーフの型集合に置換されたものである。
(g1-3.ノードの型集合を算出)
コード解析部215は、図20(A)~(C)のASTの一つの演算子とそれに付随するオペランドに対応する型集合を、図26のF関数、または図27のF関数を適用して算出する。コード解析部215は、この操作を、図20(A)~(C)の式に対応のASTのすべての演算子に対して行う。ASTに対応の式が複数の演算子を含む場合は、コード解析部215は、予め定められたプログラム言語の仕様で定める演算子の優先順位に従い各演算子に操作を適用する。
図26のF関数は、演算子が単項演算子である場合に適用される関数を示す。F関数は、単項演算子(θ)と当該演算子のノードに接続されるリーフ(オペランド)の型集合(A)を引数として、当該単項演算子が取れるデータ型のみを元とする型集合を返すと定義される。図20(B)の文2の下位層のノードN2の演算子は単項演算子である。したがって、コード解析部215は、図20(B)の文2の式に対応のASTのノードN2の単項演算子について、F関数を用いて当該単項演算子が取れるデータ型のみを元とする型集合を算出する。具体的には、コード解析部215は、図20(B)のノードN2の単項演算子を処理する場合、F関数に、引数として、単項演算子(θ)に“NOT”および型集合(A)に“UNIT WORD”をそれぞれ設定して、F関数を実行する。これにより、図26に示すようにF関数の演算結果として、図21(B)のようにノードN2の型集合(WORD)が取得される。
図27のF関数は、演算子が二項演算子である場合に適用される関数を示す。この関数は、二項演算子(θ)、当該二項演算子のノードに左に接続されるリーフのオペランド(すなわち左オペランド)の型集合(A)および当該二項演算子のノードに右に接続されるリーフのオペランド(すなわち右オペランド)の型集合(B)を引数として、当該二項演算子がオペランドに取り得るデータ型のみを元として含む型集合を返すと定義される。
関数の実行中は、図28のランク表289が参照される。ランク表289は、予め定められたプログラム記述言語の仕様に従い記述することが可能な複数のデータ型のランクが定義されている。図28のランク表289は、「データの扱い方」が基づく基準により、これら複数のデータ型が、他のデータ型よりも優先して変数のデータ型として設定される度合いを示す優先度に従い、ランク付けした情報を示す。本実施の形態では、優先度を決定する上記の基準は、例えば、データ型が取り得るデータサイズとしているが、当該基準はデータサイズに限定されない。
図20(A)の文1と図20(C)の文3において、下位層のノードN2の演算子はいずれも二項演算子である。したがって、コード解析部215は、図20(A)と図20(C)のASTのノードN2の二項演算子について、F関数を用いて当該二項演算子が取り得るデータ型のみを元とする型集合を算出する。
具体的には、コード解析部215は、図20(A)のノードN2の二項演算子を処理する場合、F関数に、引数として、二項演算子(θ)に“+”、型集合(A)に“UNIT”および型集合(B)に“UNIT WORD”をそれぞれ設定して、F関数を実行する。これにより、図27に示すようにF関数の演算結果の中間値M(A,B)として、二項演算子(θ)に基づき型集合(A)と型集合(B)から型集合(UNIT)が算出される。この中間値M(A,B)の型集合は1つの型のみを含むので、図28のランク表289を適用する必要はない。したがって、当該中間値M(A,B)の型集合が、F関数の最終の演算結果の型集合(UNIT)を示す。これにより、F関数を実行することで、図21(A)のようにノードN2の型集合(UNIT)が取得される。
また、コード解析部215は、図20(C)のノードN2の二項演算子を処理する場合、F関数に、引数として、二項演算子(θ)に“-”、型集合(A)に“LINT TIME”および型集合(B)に“SINT INT DINT LINT USINT UINT UDINT ULINT BYTE WORD DWORD LWORD REAL LREAL TIME”をそれぞれ設定して、F関数を実行する。これにより、図27に示すようにF関数の演算結果の中間値M(A,B)として、二項演算子(θ)に基づき型集合(A)と型集合(B)から型集合(LINT TIME SINT INT DINT USINT UINT UDINT ULINT BYTE WORD DWORD LWORD REAL LREAL TIME LINT ULINT REAL LREAL)が算出される。この中間値M(A,B)の型集合は複数の型を含むので、中間値M(A,B)に図28のランク表289が適用されて、より高い優先度のデータ型が選択される。これにより、F関数の最終の演算結果の型集合(LINT ULINT REAL LREAL TIME)が、図21(C)のようにノードN2の型集合として取得される。
このようにF関数を適用することで、二項演算子のオペランドのデータ型は、図28のランク表289におけるより高い優先度のデータ型に決定される。優先度がデータサイズを基準としている場合、二項演算子のオペランドに設定されるデータ型は、より大きなデータサイズを扱うことが可能なデータ型となるように決定される。これにより、例えばプログラム実行中に、当該二項演算子を用いた演算がPLCにより実行される場合、オペランドに設定されたデータ型が有する有効桁などのデータサイズが小さいことに起因した、演算結果または演算途中の結果における桁落ち、桁あふれなどの情報のロスト(情報落ち)を回避することが可能となる。
コード解析部215は、上記に述べたように下位層のノードN2の型集合を算出するこれにより、図20(A)~(C)のASTを、それぞれ図21(A)~(C)のASTに変換する。
次に上位層のノードN1の型集合を、F関数またはF関数を用いてノードN2と同様に算出する。図21(A)~図21(C)のノードN1の演算子はいずれも二項演算子(:=)である。したがって、コード解析部215は、図21(A)~図21(C)のASTのノードN1の二項演算子について、F関数を用いて当該二項演算子が取り得るデータ型のみを元とする型集合を算出する。
具体的には、コード解析部215は、図21(A)~図21(C)のASTのノードN1の二項演算子を処理する場合、F関数に、引数として、二項演算子(θ)に“:=”、型集合(A)にノードN1の左オペランドの型集合および型集合(B)にノードN1の右オペランドの型集合をそれぞれ設定して、F関数を実行する。これにより、図21(A)のノードN1の場合は、図22(A)のように型集合(UNIT)が取得されて、図21(B)のノードN1の場合は、図22(B)のように型集合(UNIT)が取得される。図21(C)のノードN1の場合は、図22(C)のように型集合(LINT ULINT REAL LREAL TIME)が取得される。
コード解析部215は、上記に述べたようにノードN1の型集合を算出するこれにより、図21(A)~(C)のASTを、それぞれ図22(A)~(C)の型集合に変換する。
(g1-4.式の型決定)
コード解析部215は、図22(A)~(C)に示される各式に対応のASTについて最終的に取得された型集合から、新たな型集合を図29のU関数を実行することにより取得する。図29のU関数は、図22(A)~(C)の型集合(A)を引数として、当該引数の型集合のうちの1つの元(データ型)のみを含む型集合を返すと定義される。図29を参照して、U関数は、実行されると、引数の型集合(A)が空集合であれば空集合を返すが、空集合でなければ、型集合(A)に含まれるデータ型のうち、図28のランク表289に定義された優先度に基き、最も低いランク(優先度)に該当するデータ型を返す。これにより、コード解析部215は、図22(A)~(C)のASTを、それぞれ図23(A)~(C)の型集合に変換する。
このようにU関数を適用することで、式の型(すなわち式の左辺のオペランドのデータ型)は、図28で定義されたランクにおいてより低い優先度のデータ型に決定される。これにより、文1~文3の式の算出値を示すオペランドの変数が、ソースプログラム271の他の式中でオペランドとして用いられた場合に、コード解析部215により当該他の式のASTに対してL関数またはF関数,F関数が実行されたときは、当該オペランドの変数のデータ型よりも優先度の高いデータ型を含む型集合を取得できる可能性を保証することできる。
コード解析部215は、U関数を実行することにより取得された図23(A)~(C)のASTの型集合を、それぞれ図24(A)~(C)の文1~文3に対応した式のデータ型に変換する。具体的には、コード解析部215は、図23(A)~(C)のASTの型集合が単元であれば、その元を当該ASTに対応の式のデータ型として決定し、そうでなければ(空集合であれば)、型不適合のエラーとして処理を終了する。
本実施の形態によれば、変数エディタ253は、ソースプログラム271のエディット時に、変数宣言部281において、デバイスベンダ毎のデータ型の対応情報294に基き、デバイスの制御データ(変数)別の同一視可能な1または複数のデータ型候補を定義する。エディット後のソースプログラム271のコンパイル時には、コンパイラ254は、ソースプログラム271中の各式について、当該式の変数に定義された1または複数のデータ型候補から、予め定められた規則(L関数、F関数、F関数およびU関数)、図28のランク表289に従い、演算精度を保証するように当該式のデータ型を決定する。これにより、PLCシステムSYSに含まれるデバイス毎にサポートし得るデータ型が異なるとしても、エディタ252およびコンパイラ254は、プログラマに対し、プログラミングにおいて適切なデータ型の宣言をサポートする機能、およびプログラ実行時のエラー(桁落ち、桁あふれ等の情報ロス)を回避し得るような実行可能コードの生成を支援する環境を提供することができる。
<H.エディタおよびコンパイラのプログラム>
本実施の形態では、サポート装置200のCPU201が必要なプログラムを実行することによって、エディタ252およびコンパイラ254による上記の処理を実行してもよい。当該プログラムは、HDD204などの記憶ユニットに記憶されていてもよい。CPU201が必要なプログラムを実行する際は、記憶ユニットに記憶された対象となるプログラムをRAM203に展開する。そして、CPU201は、RAM203に展開された当該プログラムを解釈及び実行することにより、エディタ252およびコンパイラ254の変数エディタ253、字句解析部212、構文解析部213、意味解析部214、コード解析部215および再配置可能コード生成部216の各要素の処理を実施する。
CPU201は、情報処理に応じてサポート装置200の各構成要素を制御する。上記の記憶ユニットは、例えば、HDD204に限定されず、ソリッドステートドライブ等の補助記憶装置を含み得る。このような記憶ユニットは、プログラムと、規則278およびエディタ情報277などのデータを格納し得る。
サポート装置200には、プログラムまたはデータは記憶媒体を介して提供され得る。このような記憶媒体は、コンピュータその他装置、機械等が記録されたプログラム等の情報を読み取り可能なように、当該プログラム等の情報を、電気的、磁気的、光学的、機械的または化学的作用によって蓄積する媒体である。本実施の形態では、このような記憶媒体は、例えばCD-ROM300を含む。また、サポート装置200は、このようなプログラムおよび/またはデータを、通信ネットワークを介して外部装置から受信することも可能である。
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
対象(6、7)を制御する制御装置(PLC1~PLC3)で実行される実行可能プログラム(273)を生成するサポート装置(200)であって、
前記対象を制御するデータの型別に、当該データの型と、前記プログラムの実行時に前記制御装置による当該データの型とデータの扱い方が同じとなり得る他のデータ型からなる複数のデータ型の情報(294)を格納するためのデータ格納手段(270)と、
データ別の変数と、当該変数に対応するデータ型であって前記複数のデータ型のうちの1つ以上を定義する情報(281)を生成する手段(253)と、
前記制御装置で実行される処理を、定義された変数を用いて記述した命令コード(282)を生成する手段(252)と、
前記定義する情報および前記命令コードを用いて前記実行可能プログラムを生成する手段(215、216)と、を備え、
前記実行可能プログラムを生成する手段は、
前記命令コードが示す演算式が有する各変数に対応して定義された1つ以上のデータ型からなる型集合を生成し、
前記演算式の前記型集合から、演算精度を保証するための基準に基き1つを選択し、演算結果のデータ型として決定するよう構成される、サポート装置。
[構成2]
前記対象を制御するデータの型別の前記複数のデータ型は、前記対象のベンダ毎に格納されて、
前記ベンダ毎の前記複数のデータ型は、当該ベンダにより予め定められたデータ型(297)と、当該予め定められたデータ型とデータの扱い方が同じとなり得る他のデータの型(298)とを含む、構成1に記載のサポート装置。
[構成3]
前記定義する情報を生成する手段は、
前記データ別の変数と、当該変数に対応するデータ型として前記対象のベンダに対応した前記複数のデータ型を定義する情報を生成するよう構成される、構成1または2に記載のサポート装置。
[構成4]
前記サポート装置は、
前記制御装置から、当該制御装置に接続される前記対象のベンダを特定する情報を受信する、構成3に記載のサポート装置。
[構成5]
前記定義する情報を生成する手段は、
ユーザ操作に基き、前記データ別の変数に対応する1つ以上のデータ型を定義し、
前記変数と、当該変数に関連付けて前記複数のデータ型をモニタ(207)に表示させるよう構成される、構成1から4のいずれか1項に記載のサポート装置。
[構成6]
前記データ型による前記扱い方は、データサイズの大きさに基づく扱い方を含み、
各データ型に対応して、扱われる前記データサイズに基き当該データ型が他のデータ型に優先して前記変数に対応して設定される度合いを示す優先度を格納するための手段(289)を、さらに備え、
前記演算結果のデータ型を決定することは、
前記型集合から、前記演算精度を保証するための基準に従う優先度を有したデータ型を選択し、演算結果のデータ型として決定することを含む、構成1から5のいずれか1項に記載のサポート装置。
[構成7]
前記型集合を生成することは、
前記演算式が有する演算子の種類に基き、当該式が有する変数に対応して定義された1つ以上のデータ型を含む型集合を生成することを含む、構成1から6のいずれか1項に記載のサポート装置。
[構成8]
対象(6、7)を制御する制御装置(PLC1~PLC3)で実行される実行可能プログラム(273)を生成するサポートプログラムであって、前記サポートプログラムは、コンピュータに以下の手段として機能させ、
前記コンピュータは、
前記対象を制御するデータの型別に、当該データの型と、前記プログラムの実行時に前記制御装置による当該データの型とデータの扱い方が同じとなり得る他のデータ型からなる複数のデータ型の情報(294)を格納するためのデータ格納手段(270)を備え、
前記手段は、
データ別の変数と、当該変数に対応するデータ型であって前記複数のデータ型のうちの1つ以上を定義する情報(281)を生成する手段(253)と、
前記制御装置で実行される処理を、定義された変数を用いて記述した命令コード(282)を生成する手段(252)と、
前記定義する情報および前記命令コードを用いて前記実行可能プログラムを生成する手段(215、216)と、を備え、
前記実行可能プログラムを生成する手段は、
前記命令コードが示す演算式が有する各変数に対応して定義された1つ以上のデータ型からなる型集合を生成し、
前記演算式の前記型集合から、演算精度を保証するための基準に基き1つを選択し、演算結果のデータ型として決定するよう構成される、サポートプログラム。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
6 検出センサー、7 アクチュエータ、200 サポート装置、300 CD-ROM、ROM 202、203 RAM、205 キーボード、206 マウス、207 モニタ、211 転送モジュール、212 字句解析部、213 構文解析部、214 意味解析部、215 コード解析部、216 再配置可能コード生成部、241 デバイス識別子、242 ベンダ識別子、243 パラメータデータ、250 プログラミングアプリケーション、252 エディタ、253 変数エディタ、254 コンパイラ、270 データ格納部、271 ソースプログラム、272 ソースコード、273 実行可能プログラム、277 エディタ情報、278 規則、279 プロンプト、280 ネットワーク設定アプリケーション、281 変数宣言部、282 コード部、283 コメント部、284,v 変数、285,297 データ型、286,287 ボタン、289 ランク表、290 レコード、291 デバイス情報群、292 変数エディタ情報、293 ネットワーク情報、294 対応情報、295 ベンダ情報、296 同一視可能なデータ型群、298 類似データ型群、1061 コンフィグ情報、L1,L2,L21,L22 リーフ、N1,N2 ノード、NW ネットワーク、SYS PLCシステム、V ベンダ、p パラメータ。

Claims (8)

  1. 対象を制御する制御装置で実行される実行可能プログラムを生成するサポート装置であって、
    前記対象を制御するデータの型別に、当該データの型と、前記プログラムの実行時に前記制御装置による当該データの型とデータの扱い方が同じとなり得る他のデータ型からなる複数のデータ型の情報を格納するためのデータ格納手段と、
    データ別の変数と、当該変数に対応するデータ型であって前記複数のデータ型のうちの1つ以上を定義する情報を生成する手段と、
    前記制御装置で実行される処理を、定義された変数を用いて記述した命令コードを生成する手段と、
    前記定義する情報および前記命令コードを用いて前記実行可能プログラムを生成する手段と、を備え、
    前記実行可能プログラムを生成する手段は、
    前記命令コードが示す演算式が有する各変数に対応して定義された1つ以上のデータ型からなる型集合を生成し、
    前記演算式の前記型集合から、演算精度を保証するための基準に基き1つを選択し、演算結果のデータ型として決定するよう構成される、サポート装置。
  2. 前記対象を制御するデータの型別の前記複数のデータ型は、前記対象のベンダ毎に格納されて、
    前記ベンダ毎の前記複数のデータ型は、当該ベンダにより予め定められたデータ型と、当該予め定められたデータ型とデータの扱い方が同じとなり得る他のデータの型とを含む、請求項1に記載のサポート装置。
  3. 前記定義する情報を生成する手段は、
    前記データ別の変数と、当該変数に対応するデータ型として前記対象のベンダに対応した前記複数のデータ型を定義する情報を生成するよう構成される、請求項1または2に記載のサポート装置。
  4. 前記サポート装置は、
    前記制御装置から、当該制御装置に接続される前記対象のベンダを特定する情報を受信する、請求項3に記載のサポート装置。
  5. 前記定義する情報を生成する手段は、
    ユーザ操作に基き、前記データ別の変数に対応する1つ以上のデータ型を定義し、
    前記変数と、当該変数に関連付けて前記複数のデータ型をモニタに表示させるよう構成される、請求項1から4のいずれか1項に記載のサポート装置。
  6. 前記データ型による前記扱い方は、データサイズの大きさに基づく扱い方を含み、
    各データ型に対応して、扱われる前記データサイズに基き当該データ型が他のデータ型に優先して前記変数に対応して設定される度合いを示す優先度を格納するための手段を、さらに備え、
    前記演算結果のデータ型を決定することは、
    前記型集合から、前記演算精度を保証するための基準に従う優先度を有したデータ型を選択し、演算結果のデータ型として決定することを含む、請求項1から5のいずれか1項に記載のサポート装置。
  7. 前記型集合を生成することは、
    前記演算式が有する演算子の種類に基き、当該式が有する変数に対応して定義された1つ以上のデータ型を含む型集合を生成することを含む、請求項1から6のいずれか1項に記載のサポート装置。
  8. 対象を制御する制御装置で実行される実行可能プログラムを生成するサポートプログラムであって、前記サポートプログラムは、コンピュータに以下の手段として機能させ、
    前記コンピュータは、
    前記対象を制御するデータの型別に、当該データの型と、前記実行可能プログラムの実行時に前記制御装置による当該データの型とデータの扱い方が同じとなり得る他のデータ型からなる複数のデータ型の情報を格納するためのデータ格納手段を備え、
    前記以下の手段は、
    データ別の変数と、当該変数に対応するデータ型であって前記複数のデータ型のうちの1つ以上を定義する情報を生成する手段と、
    前記制御装置で実行される処理を、定義された変数を用いて記述した命令コードを生成する手段と、
    前記定義する情報および前記命令コードを用いて前記実行可能プログラムを生成する手段と、を備え、
    前記実行可能プログラムを生成する手段は、
    前記命令コードが示す演算式が有する各変数に対応して定義された1つ以上のデータ型からなる型集合を生成し、
    前記演算式の前記型集合から、演算精度を保証するための基準に基き1つを選択し、演算結果のデータ型として決定するよう構成される、サポートプログラム。
JP2018104614A 2018-05-31 2018-05-31 サポート装置およびサポートプログラム Active JP7003842B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2018104614A JP7003842B2 (ja) 2018-05-31 2018-05-31 サポート装置およびサポートプログラム
PCT/JP2019/018549 WO2019230321A1 (ja) 2018-05-31 2019-05-09 サポート装置およびサポートプログラム
EP19810087.7A EP3805879A4 (en) 2018-05-31 2019-05-09 SUPPORT DEVICE AND SUPPORT PROGRAM
CN201980025084.5A CN111954854B (zh) 2018-05-31 2019-05-09 支持装置以及计算机可读取存储介质
US17/043,722 US20210026609A1 (en) 2018-05-31 2019-05-09 Support device and non-transitory computer-readable recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018104614A JP7003842B2 (ja) 2018-05-31 2018-05-31 サポート装置およびサポートプログラム

Publications (2)

Publication Number Publication Date
JP2019211823A JP2019211823A (ja) 2019-12-12
JP7003842B2 true JP7003842B2 (ja) 2022-01-21

Family

ID=68697592

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018104614A Active JP7003842B2 (ja) 2018-05-31 2018-05-31 サポート装置およびサポートプログラム

Country Status (5)

Country Link
US (1) US20210026609A1 (ja)
EP (1) EP3805879A4 (ja)
JP (1) JP7003842B2 (ja)
CN (1) CN111954854B (ja)
WO (1) WO2019230321A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022139090A (ja) * 2021-03-11 2022-09-26 オムロン株式会社 開発支援装置、開発支援方法および開発支援プログラム
JP7132557B1 (ja) 2021-09-01 2022-09-07 アドバンスデザインテクノロジー株式会社 デバイス制御システム
WO2023152835A1 (ja) * 2022-02-09 2023-08-17 ファナック株式会社 プログラマブルロジックコントローラと通信を行うロボットの制御装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005050312A (ja) 2003-06-26 2005-02-24 Microsoft Corp ソフトウェア開発インフラストラクチャ
JP2010176377A (ja) 2009-01-29 2010-08-12 Meidensha Corp Plcのプログラム変換ツール
JP2013161106A (ja) 2012-02-01 2013-08-19 Omron Corp サポート装置およびサポートプログラム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000112737A (ja) * 1998-10-01 2000-04-21 Seiko Epson Corp プログラム作成装置
WO2001077882A1 (en) * 2000-04-07 2001-10-18 Healthmedia, Inc. System and method for generating computer source code
JP4301919B2 (ja) * 2003-11-07 2009-07-22 株式会社デジタル エディタ装置、コンピュータをエディタ装置として機能させるためのプログラム、および記録媒体
JP4454455B2 (ja) * 2004-09-28 2010-04-21 株式会社デジタル エディタ装置、コンピュータをエディタ装置として機能させるためのプログラム、そのプログラムを格納した記録媒体、制御システム、および表示器
JP2007213417A (ja) * 2006-02-10 2007-08-23 Canon Inc プログラムコード生成装置、方法、及びコンピュータプログラム
DE112007000543T5 (de) * 2006-03-07 2009-03-26 Kabushiki Kaisha Yaskawa Denki, Kitakyushu-Shi Programmiereinrichtung und automatisches Datenstruktur-Identifizierungsverfahren
WO2008061557A1 (en) * 2006-11-20 2008-05-29 Freescale Semiconductor, Inc. System, apparatus and method for translating data
CN101776877A (zh) * 2009-01-12 2010-07-14 鸿富锦精密工业(深圳)有限公司 可编程逻辑控制器程序编辑系统及方法
WO2011089688A1 (ja) * 2010-01-20 2011-07-28 三菱電機株式会社 プログラマブルコントローラシステムおよび開発システム
CN102540953A (zh) * 2010-12-24 2012-07-04 深圳市合信自动化技术有限公司 可编程逻辑控制器的数据处理方法及可编程逻辑控制器
CN107341010B (zh) * 2017-06-26 2019-12-13 华中科技大学 一种C/C++与COStream混合编程方法和可视化编译系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005050312A (ja) 2003-06-26 2005-02-24 Microsoft Corp ソフトウェア開発インフラストラクチャ
JP2010176377A (ja) 2009-01-29 2010-08-12 Meidensha Corp Plcのプログラム変換ツール
JP2013161106A (ja) 2012-02-01 2013-08-19 Omron Corp サポート装置およびサポートプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JOHN, Karl-Heinz ほか 著, PLCOPEN JAPAN 訳,IEC61131-3を用いたPLCプログラミング,シュプリンガー・フェアラーク東京株式会社,2006年07月29日,p. 55-82,ISBN 4-431-71209-7

Also Published As

Publication number Publication date
CN111954854B (zh) 2024-07-16
EP3805879A4 (en) 2022-03-02
WO2019230321A1 (ja) 2019-12-05
EP3805879A1 (en) 2021-04-14
JP2019211823A (ja) 2019-12-12
CN111954854A (zh) 2020-11-17
US20210026609A1 (en) 2021-01-28

Similar Documents

Publication Publication Date Title
JP7003842B2 (ja) サポート装置およびサポートプログラム
CN110271009B (zh) 基于plc仿机器人指令实现机械手示教功能方法
EP1855194B1 (en) Synchronization of a graphical program and a robot program
CN104067186A (zh) 支援装置、记录有支援程序的记录介质及生成可执行程序的方法
CN102955460A (zh) 一种数控系统主站对io端子从站的控制系统
CN109799971B (zh) 一种文件生成装置和方法
JP6550269B2 (ja) プログラム作成支援装置、制御方法およびプログラム
WO2024140416A1 (zh) 一种工业控制程序开发平台及方法
SNOW III AUTOMATION OF MODULE SET INDEPENDENT REGISTER-TRANSFER LEVEL DESIGN.
US11126408B2 (en) Incremental code generation method
CN103207771A (zh) 一种plc程序执行器ip核
Sadolewski et al. Compiler and virtual machine of a multiplatform control environment
Pohl et al. vMAGIC—automatic code generation for VHDL
Chow Intermediate representation: The increasing significance of intermediate representations in compilers
Manso et al. Algorithmi IDE-Integrated learning environment for the teaching and learning of algorithmics
Vaugon et al. Programming microcontrollers in ocaml: the ocapic project
Tolvanen et al. Metamodeling for medical devices: Code generation, model-debugging and run-time synchronization
Wang et al. Formal modelling of PLC systems by BIP components
Chodorowski et al. IEC 61131-3 compliant PLC structure based on FPGA multi-core solution
Obster et al. Development and execution of PLC programs on real-time capable mobile devices
Lugato et al. Model-Driven Engineering for High Performance Computing Applications
Bertolotti et al. Embedded software development: the open-source approach
Magnenat et al. Scripting the swarm: event-based control of microcontroller-based robots.
Rzońca et al. Interfacing inputs and outputs with IEC 61131-3 control software
CN113705004B (zh) 一种适合dsp的实时系统行为级软件仿真方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201211

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211102

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211116

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211213

R150 Certificate of patent or registration of utility model

Ref document number: 7003842

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150