Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP7622483B2 - 開発支援装置、開発支援方法および開発支援プログラム - Google Patents
[go: Go Back, main page]

JP7622483B2 - 開発支援装置、開発支援方法および開発支援プログラム - Google Patents

開発支援装置、開発支援方法および開発支援プログラム Download PDF

Info

Publication number
JP7622483B2
JP7622483B2 JP2021039325A JP2021039325A JP7622483B2 JP 7622483 B2 JP7622483 B2 JP 7622483B2 JP 2021039325 A JP2021039325 A JP 2021039325A JP 2021039325 A JP2021039325 A JP 2021039325A JP 7622483 B2 JP7622483 B2 JP 7622483B2
Authority
JP
Japan
Prior art keywords
variable
source code
variables
development support
control 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
JP2021039325A
Other languages
English (en)
Other versions
JP2022139090A (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 JP2021039325A priority Critical patent/JP7622483B2/ja
Priority to PCT/JP2021/034469 priority patent/WO2022190418A1/ja
Publication of JP2022139090A publication Critical patent/JP2022139090A/ja
Application granted granted Critical
Publication of JP7622483B2 publication Critical patent/JP7622483B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Program-control systems
    • G05B19/02Program-control systems electric
    • G05B19/04Program 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

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Programmable Controllers (AREA)

Description

本開示は、制御対象を制御する制御装置用の制御プログラムの開発を支援するための技術に関する。
様々な製造現場において、PLC(Programmable Logic Controller)等の制御装置が導入されている。この様な制御装置は、一種のコンピュータであり、製造装置や製造設備等の制御対象に応じて設計された制御プログラムが実行されることで、当該制御対象を制御することができる。一般的に、この様な制御プログラムは、コントローラとは別に用意された開発支援装置を用いて作成される。
この様な制御プログラムは、一般的に、予め宣言された変数を用いて記述される。例えば、特開2005-352612号公報(特許文献1)には、変数の検索性を高めることで制御プログラムの開発効率を高めることができるプログラム開発支援装置が開示される。特許文献1のプログラム開発支援装置では、所定の命令に対するオペランドを入力した場合に、キーワード(文字列)の指定に応じて、当該文字列を含む変数名の変数のみを一覧表示する絞り込みを行うことによって、変数の検索性が高められる。
特開2005-352612号公報
上記の制御プログラムのソースプログラムでは、変数を宣言するための定義リストが設けられており、当該定義リスト中で宣言された変数がソースコード内で使用可能となる。
一方で、当該制御プログラムの変更又は編集の際に、ソースコード内で削除された変数についても、定義リスト内に残されている場合には、制御プログラムの実行時に当該変数に対応するメモリ領域が確保される。このため、制御装置のメモリ領域を適切に確保する観点からは、不要な変数については定義リストから削除することが好ましい。
一方で、制御プログラムの実行時には、制御装置及び制御対象の間でネットワークが構築されて制御対象が制御されるため、必要な変数を削除してしまうと制御対象側で不都合が生じることも懸念される。
本開示は上述のような問題点を解決するためになされたものであって、ある局面における目的は、制御プログラム内で使用されていない不要な変数を生じさせないことが可能な開発支援装置を提供することである。他の局面における目的は、制御プログラム内で使用されていない不要な変数を生じさせないことが可能な開発支援方法を提供することである。さらなる他の局面における目的は、制御プログラム内で使用されていない不要な変数を生じさせないことが可能な開発支援プログラムを提供することである。
本開示の一例によれば、制御対象を制御する制御装置用の制御プログラムの開発を支援するための開発支援装置が提供される。開発支援装置は、エディタと、ビルダとを備える。エディタは、ユーザ操作に従って、制御プログラムのソースコードを生成および編集する。ビルダは、ソースコードおよび、当該ソースコードに含まれる命令要素が参照する変数を定義した変数宣言から、制御プログラムの実行コードを生成する。ビルダは、ソースコードに含まれる命令要素が参照する変数を抽出するとともに、抽出した変数のデータ型を推論することで、変数宣言を生成する変数宣言生成部を含む。
本開示によれば、ユーザ操作に従って記述されたソースコードのビルド時、当該ソースコードに含まれる命令要素が参照する変数について、当該変数を定義した変数宣言が生成される。これによると、生成された変数宣言では、ソースコード内で使用される変数のみが宣言され、ソースコード内で使用されない変数については宣言されない。その結果、変数宣言内に、ソースコードに含まれる命令要素から参照されない不要な変数を生じさせないことができる。
上述の開示において、開発支援装置は、ユーザと対話するインターフェイスをさらに備える。変数宣言生成部は、データ型を推論できない第1の変数をインターフェイスを介してユーザに通知する。変数宣言生成部は、インターフェイスを介した第1の変数のデータ型についてのユーザ入力に従って変数宣言を更新する。
この開示によれば、ソースコードに含まれる命令要素が参照する変数のうち、データ型を推論できない変数については、インターフェイスを用いてユーザ入力を求めることによって変数宣言を完成させることができる。そのため、制御装置では、変数宣言内のすべての変数の各々に対して、そのデータ型に従ったメモリ領域を確保することができる。
上述の開示において、変数宣言生成部はさらに、インターフェイスを介した第2の変数についてのユーザ入力に応じて第2の変数を変数宣言に追加する。
この開示によれば、ソースコードに含まれる命令要素が参照する変数以外の変数についてのユーザ入力を受け付けることができるため、例えば、命令要素からは参照されないものの、制御装置における制御プログラムの実行時に制御対象で使用される変数を宣言することができる。よって、制御装置では、当該変数を格納するためのメモリ領域を確保することができる。
上述の開示において、第2の変数は、制御プログラムの実行中に制御対象が使用する変数を含む。
この開示によれば、ネットワークを介して制御対象からアクセスされる変数を変数定義リストに含めることができるため、制御対象側に不都合が生じることを抑制することができる。
上述の開示において、変数宣言生成部は、命令要素の処理内容に基づいて、当該命令要素が参照する変数のデータ型を推論する。
この開示によれば、ソースコード内で使用される変数を宣言するための変数宣言を適切に生成することができる。
本開示の他の例によれば、制御対象を制御する制御装置用の制御プログラムの開発を支援するための開発支援方法が提供される。開発支援方法は、ユーザ操作に従って、前記制御プログラムのソースコードを生成および編集するステップと、前記ソースコードおよび、前記ソースコードに含まれる命令要素が参照する変数を定義した変数宣言から前記制御プログラムの実行コードを生成するステップとを備える。前記実行コードを生成するステップは、前記ソースコードに含まれる命令要素が参照する変数を抽出するステップと、抽出した変数のデータ型を推論することで、前記変数宣言を生成するステップとを含む。
本開示のさらに他の例によれば、制御対象を制御する制御装置用の制御プログラムの開発を支援するための開発支援プログラムが提供される。開発支援プログラムは、コンピュータに、ユーザ操作に従って、前記制御プログラムのソースコードを生成および編集するステップと、前記ソースコードおよび、前記ソースコードに含まれる命令要素が参照する変数を定義した変数宣言から前記制御プログラムの実行コードを生成するステップとを実行させる。実行コードを生成するステップは、前記ソースコードに含まれる命令要素が参照する変数を抽出するステップと、抽出した変数のデータ型を推論することで、前記変数宣言を生成するステップとを含む。
本開示によれば、ユーザ操作に従って記述されたソースコードのビルド時、当該ソースコードに含まれる命令要素が参照する変数について、当該変数を定義した変数宣言が生成される。これによると、生成された変数宣言では、ソースコード内で使用される変数のみが宣言され、ソースコード内で使用されない変数については宣言されない。その結果、変数宣言内に、ソースコードに含まれる命令要素から参照されない不要な変数を生じさせないことができる。
本開示によれば、制御対象を制御する制御装置用の制御プログラム内に使用されていない不要な変数を生じさせないことができる。
実施の形態に係る開発支援装置が適用されるFAシステムの構成の一例を示す概略図である。 開発支援装置のハードウェア構成の一例を示す模式図である。 開発支援装置の機能構成の一例を示す図である。 開発支援装置における制御プログラムの開発環境の一例を概略的に示す図である。 開発支援装置における制御プログラム開発の概略処理の一例を示すフローチャートである。 図5に示したビルド処理の一例を示すフローチャートである。 ソースコードの第1例を説明する概念図である。 ソースコードの第2例を説明する概念図である。 ソースコードの第3例を説明する概念図である。 ソースコードの第4例を説明する概念図である。 表示部における変数定義リストの表示例を示す図である。
以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品及び構成要素には同一の符号を付してある。それらの名称及び機能も同じである。従って、これらについての詳細な説明は原則的には繰り返さない。
<A.適用例>
図1は、本実施の形態に係る開発支援装置が適用されるFA(Factory Automation)システム10の構成の一例を示す概略図である。まず、図1を参照して、FAシステム10のシステム構成について説明する。
FAシステム10は、1つ以上の開発支援装置100と、1つ以上の制御装置(コントローラ)200と、制御装置200によって制御される外部機器300とを備える。
開発支援装置100は、例えば、ノート型またはデスクトップ型のPC(Personal Computer)、タブレット端末、スマートフォン、または、その他の情報処理装置である。
開発支援装置100には、開発支援プログラム50がインストールされている。開発支援プログラム50は、制御装置200用の制御プログラム210の開発を支援するためのアプリケーションである。開発支援プログラム50は、たとえば、オムロン社製の「Sysmac Studio」である。ユーザは、開発支援プログラム50上で制御装置200用の制御プログラムを設計し、設計した制御プログラム210をコントローラにダウンロードすることができる。あるいは、開発支援装置100は、制御装置200からデータ等をアップロードすることも可能である。
制御装置200および外部機器300は、開発支援装置100が接続可能なネットワークNW1に接続されている。ネットワークNW1には、Ethernet(登録商標)等が採用される。制御装置200は、例えば、PLCによって構成される。
制御装置200および外部機器300は、ネットワークNW2に接続されている。ネットワークNW2には、データの到達時間が保証される、定周期通信を行うフィールドネットワークを採用することが好ましい。このような定周期通信を行うフィールドネットワークとしては、OPC UA(登録商標)等が知られている。
外部機器300は、生産工程を自動化するための種々の産業用機器、各種センサ類、および、HMI(Human Machine Interface)機器等によって構成される。外部機器300は、ネットワークNW1またはNMW2に接続されるデバイス300A~300Cと、機器301A~301Cとを含む。機器301A~301Cは、デバイス300A~300CによってネットワークNW1,NW2を介して制御装置200と通信接続される。これにより、制御装置200で実行される制御プログラムによって、機器301A~301Cを制御することができる。即ち、外部機器300は、制御プログラムによって制御される「制御対象」に対応する。
図1の例では、機器301Aと接続されるデバイス300Aは、OPCUAが適用されたネットワークNW2と接続されるものとする。又、機器301Bと接続されるデバイス300B、および、機器301Cと接続されるデバイス300Cは、EtherNETが適用されたネットワークNW1と接続されるものとする。
<B.開発支援装置のハードウェア構成>
図2を参照して、開発支援装置100のハードウェア構成について説明する。図2は、開発支援装置100のハードウェア構成の一例を示す模式図である。
開発支援装置100は、一例として、汎用的なコンピュータアーキテクチャに準じて構成されるコンピュータからなる。開発支援装置100は、CPU(Central Processing Unit)やMPU(Micro-Processing Unit)などのプロセッサ102と、主メモリ104と、通信インターフェイス111と、I/O(Input/Output)インターフェイス114と、表示インターフェイス117と、不揮発性の記憶装置120とを含む。これらのコンポーネントは、内部バス125を介して互いに通信可能に接続されている。
プロセッサ102は、記憶装置120に格納されている開発支援プログラム50を主メモリ104に展開して実行することで、制御プログラム210(図1参照)の開発ツールを起動する。記憶装置120は、開発支援プログラム50の他にも、各種のデータおよびプログラム60を格納する。制御プログラム210のソースプログラムは、主メモリ104または記憶装置120に記憶される。
通信インターフェイス111は、他の通信機器との間でネットワークを介してデータを遣り取りする。当該他の通信機器は、例えば、図1に示された制御装置200および外部機器300、および、図示しないサーバ等を含む。開発支援装置100は、通信インターフェイス111を介して、当該他の通信機器から、開発支援プログラム50などの各種プログラムをダウンロード可能なように構成されてもよい。
I/Oインターフェイス114は、操作部115に接続され、操作部115からのユーザ操作を示す信号を取り込む。操作部115は、典型的には、キーボード、マウス、タッチパネル、タッチパッドなどからなり、ユーザからの操作を受け付ける。操作部115は、開発支援装置100と一体的に構成されてもよいし、開発支援装置100とは別に構成されてもよい。
表示インターフェイス117は、表示部118と接続され、プロセッサ102などからの指令に従って、表示部118に対して、画像を表示するための画像信号を送出する。表示部118は、LCD(Liquid Crystal Display)や有機EL(Electro Luminescence)ディスプレイ等によって構成され、ユーザに対して各種情報を提示する。表示部118は、開発支援装置100と一体的に構成されてもよいし、開発支援装置100とは別に構成されてもよい。
なお、図2には、CPU等のプロセッサ102がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOSを並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。また、上述の説明においては、開発支援装置100がすべての処理を実行する形態について例示したが、これに限らず、複数の装置が連携して上述したような機能を提供するようにしてもよい。さらに、一部または全部の機能をサーバ上のいわゆるクラウドと称される計算リソースを利用して実現してもよい。
<C.開発支援装置の機能構成>
次に、図3を参照して、開発支援装置100の機能構成について説明する。図3は、開発支援装置100の機能構成の一例を示す図である。
開発支援装置100には、OS240、プログラミングアプリケーション250およびネットワーク設定アプリケーション280が実装される。開発支援装置100では、OS240が実行され、プログラミングアプリケーション250およびネットワーク設定アプリケーション280を実行可能な環境が提供される。本実施の形態に係る開発支援装置100を実現するための開発支援プログラムは、少なくともプログラミングアプリケーション250を含む。
プログラミングアプリケーション250は、エディタ252と、ビルダ254と、デバッガ256と、GUI(Graphical User Interface)モジュール258と、シミュレータ260と、データ格納部270とを含む。プログラミングアプリケーション250に含まれるそれぞれのモジュールは、典型的には、CD-ROMに格納された状態で流通して、開発支援装置100にインストールされる。データ格納部270は、記憶装置120を含んで構成される。
エディタ252は、予め定められたプログラミング言語の仕様に従いソースコードを作成するための入力および編集といった機能を提供する。ソースコードは、典型的には、IEC61131-3に規定された、LD(ラダーダイアグラム:Ladder Diagram)、IL(インストラクションリスト:Instruction List)、ST(ストラクチャードテキスト:Structured Text)、FBD(ファンクションブロックダイアグラム:Function Block Diagram)、SFC(シーケンシャルファンクションチャート:Sequential Function Chart)等の任意の言語にて記述することができる。
ソースコードは、いずれの言語でも「変数」を用いて記述される。「変数」とは、制御プログラム210において扱われるデータに与えられた識別子である。典型的には、「変数」は、制御装置200や制御装置200の制御対象の状態を表すデータである。言い換えると、「変数」とは、制御装置200や制御対象の状態に連動して値が変化するデータのことをいう。「変数」の概念は、1つの値を表すデータ、配列として表されるデータ、構造体として表されるデータ、制御プログラム210に規定されうる種々のデータを含み得る。
エディタ252は、ユーザによる操作部115の操作内容を受け付けて、受け付けた操作内容に従ってソースコードを生成する機能と、生成したソースコードを保存する機能とを提供する。また、エディタ252は、ユーザ操作に従って、ソースコードを編集する機能を提供する。エディタ252によるソースコードの生成または編集時、エディタ252は、GUIモジュール258を介して編集作業を支援するための情報を表示部118に表示させる。
ビルダ254は、予め定められたプログラミング言語の仕様に従い、ソースコードをビルドして、制御装置200で実行可能な形式の実行コード(制御プログラム210)を作成する機能を提供する。
デバッガ256は、ソースコードに対してデバッグを行うための機能を提供する。このデバッグの内容としては、ソースコードのうちユーザが指摘した範囲を部分的に実行する、ソースコードの実行中における変数値の時間的な変化を追跡する、といった動作を含む。デバッガ256は、デバッグを支援するための情報をGUIモジュール258を介して表示部118に表示させる。
シミュレータ260は、開発支援装置100内に、制御装置200(PLC)でのプログラムの実行をシミュレーションする環境を構築する。
データ格納部270は、プログラミングアプリケーション250の各部により利用(読み書き)される各種情報を格納する。データ格納部270に格納される内容については後述する。
ネットワーク設定アプリケーション280は、コンフィグレータ257と、データ格納部299とを含む。ネットワーク設定アプリケーション280に含まれるモジュールは、典型的には、CD-ROMに格納された状態で流通して、開発支援装置100にインストールされる。
コンフィグレータ257は、FAシステム10のネットワーク構成を示すネットワーク情報293を取得し、取得したネットワーク情報293をデータ格納部299に格納する。ネットワーク情報293は、ネットワークに接続される各制御装置200(PLC)から受信する(ダウンロードされる)コンフィグ情報を含む。なお、ネットワーク情報293が有するコンフィグ情報は、実機の制御装置200から受信する情報、または実機の情報ではない論理的(仮想的)な情報を含む。論理的な情報は、ユーザが操作部115を操作することによりエディタ252を介して入力する情報を含み得る。
<D.制御プログラムの開発環境>
次に、図4を参照して、開発支援装置100における制御プログラムの開発環境を説明する。図4は、開発支援装置100における制御プログラムの開発環境の一例を概略的に示す図である。
図4では、説明のために、プログラミングアプリケーション250のうち、エディタ252およびビルダ254が示されて他の部分の図示は省略されている。また、図4では、エディタ252およびビルダ254に関連づけて、データ格納部270、GUIモジュール258および転送モジュール211が示される。
図4では、データ格納部270のデータのうち、エディタ252およびビルダ254と関連する、ソースコード271、変数定義リスト272および実行コード273が示されている。
ソースコード271は、制御装置200で実行される処理を、変数を用いて記述した命令部を含む。命令部は、変数を用いて記述された命令要素を含む。「命令要素」とは、ソースコード271の命令部を記述する要素を総称するものであり、例えば、演算子、ファンクションブロック、ファンクション、オペランドを含む。ソースコード271は、複数の命令要素を互いに繋いだ回路態様で表示可能なプログラミング言語で記述することができる。以下では、典型例としてLDで記述されたソースコードを対象とする。
変数定義リスト272は、ソースコード271に含まれる命令要素が参照する変数を定義した変数宣言である。変数定義リスト272は、変数ごとに、少なくとも、変数名と、当該変数のデータ型とを宣言することで作成される。
転送モジュール211は、実行コード273を制御装置200(PLC)に転送(ダウンロードまたはアップロード)するように、通信インターフェイス111を制御する。
GUIモジュール258は、ビルダ254とユーザとの対話を実現するように、表示インターフェイス117およびI/Oインターフェイス114を制御する。GUIモジュール258は、ユーザと対話するための「インターフェイス」の一実施例に対応する。
図4を参照して、エディタ252は、操作部115を介して受け付けるユーザ操作に従って記述されるソースプログラムを編集(エディット)することにより、ソースプログラムを予め定められたプログラム言語のソースコード271に変換する。エディタ252は、生成されたソースコード271をデータ格納部270に格納する。
ビルダ254は、予め定められたプログラム言語用のコンパイラおよびリンカーを含む。コンパイラは、ソースコード271を複数のファイルに分割し、ファイル単位でコンパイルすることにより、複数のオブジェクトファイルを作成する。リンカーは、作成された複数のオブジェクトファイルを結合することにより、実行コード273を生成する。実行コード273は、制御装置200のプロセッサにより実行可能なコードからなり、データ格納部270に格納されるソースコード271および変数定義リスト272を用いて生成される。具体的には、ビルダ254は、解析部212、変数宣言生成部215および実行コード生成部216を含む。これらの部は、ソースコード271をビルドし、制御装置200で実行することが可能な実行コード273を生成する。
開発支援装置100は、実行コード273を転送モジュール211により制御装置200(PLC)に転送する。制御装置200では、制御プログラム210用に、変数定義リスト272で宣言された変数を格納するためのメモリ領域が確保される。このとき、各変数について、そのデータ型に従った容量を有するメモリ領域が確保される。
外部機器300(デバイス300A~300C)は、ネットワークNW1またはNW2によるデータ通信により、メモリ領域の変数にアクセス可能である。制御装置200内部のプロセッサによって実行コード273が実行されることにより、複数の制御装置200間でのデータの遣り取り、および、制御対象である外部機器300の制御が実施される。
<E.制御プログラム開発の処理>
図5は、開発支援装置100における制御プログラム開発の概略処理の一例を示すフローチャートである。
図5を参照して、開発支援装置100では、ソースコード271を生成または編集する場合に、まず、エディタ252が起動される。エディタ252は、ソースコード271のエディット(編集)処理を実行する(ステップS1)。具体的には、エディタ252は、操作部115を介して受け付けるユーザ操作に従ってソースコード271を生成する。エディタ252は、ソースコード271を表示部118に表示する。
次に、ソースコード271をビルドする場合、開発支援装置100は、ビルダ254を起動する。ビルダ254は、ソースコード271をビルドし、実行コード273を生成する(ステップS2)。ビルド処理については、図6で後述する。
実行コード273を制御装置200に転送する場合、転送モジュール211は、実行コード273を制御装置200に転送するように通信インターフェイス111を制御する(ステップS3)。
<ビルド処理>
図6は、図5に示したビルド処理(S2)の一例を示すフローチャートである。
図6を参照して、ビルダ254は、エディット処理(S1)により編集されたソースコード271をビルドする。ビルド処理において、解析部212は、ソースコード271を解析し、ビルドに適したデータ構造に変換する(ステップS21)。このデータ構造として、例えばAST(abstract syntax tree、抽象構文木)が用いられる。具体的には、解析部212は、最初に、字句解析処理として、ソースコード271を走査しながら解析し、解析結果に基づき変数などの識別子を含むトークンに分類し、分類されたトークンからなるトークン列を生成する。次に、解析部212は、構文解析処理として、生成されたトークン列を解析し、解析結果に基づきASTを生成する。さらに解析部212は、意味解析処理として、ASTに基づき、ソースコード271をプログラム言語の記述仕様に適合するようにデータの型または命令コードからなる式の型を決定する。
変数宣言生成部215は、ソースコード271に含まれる命令要素が参照する変数を定義した変数宣言である変数定義リスト272を生成する。具体的には、変数宣言生成部215は、最初に、ソースコード271に含まれる命令要素が参照する変数を抽出する(ステップS22)。次に、変数宣言生成部215は、抽出した変数のデータ型を推論する(ステップS23)。変数宣言生成部215は、推論したデータ型を用いて各変数を定義することにより、変数定義リスト272を生成する(ステップS24)。
<変数宣言生成処理>
以下では、図7から図10を参照して、変数宣言生成部215における変数のデータ型の推論処理(図6のS23)および変数定義リスト272の生成処理(図6のS24)について説明する。
図7には、ソースコード271の第1例を説明する概念図が示される。図7には、制御プログラムの一例であるラダープログラムによって記述されるラダー回路と、当該ラダー回路に基づいて生成された変数定義リスト272が示される。
図7に示すように、ラダープログラムは、入力側母線421と出力側母線422との間に回路要素と接続線とを用いた論理回路を梯子状に描いたラダー回路420により表現される。回路要素は「命令要素」の一実施例に対応する。
図7の例では、ラダー回路420は、変数aの値に応じてオン/オフされる接点425と、オン/オフ結果を変数bとして出力するコイル426とを含む。ラダー回路420は、接点425およびコイル426といった回路要素を互いに接続線423で繋ぐことで記述される。例えば、変数bは他のラダー回路(図示せず)の接点を開閉する変数としてさらに用いられる。あるいは、変数aは、他のラダー回路(図示せず)のコイルの出力値である。このようなラダー回路の階層的な組合せによって、制御装置200が外部機器300を制御するための処理を記述することができる。
変数宣言生成部215は、ラダー回路420に含まれる回路要素(命令要素)が参照する変数を抽出する。図7に示す第1例では、接点425が参照する変数aと、コイル426が参照する変数bとが抽出される。
変数宣言生成部215は、抽出した変数aおよび変数bの各々のデータ型を推論する。変数のデータ型は、当該変数を参照する回路要素にて実行される処理の内容に基づいて推論することができる。図7の例では、変数aを入力とする接点425は、変数aの値に応じてオン/オフされることから、変数aのデータ型は「BOOL」と推論することができる。変数bを出力するコイル426はオン/オフ結果を出力することから、変数bのデータ型は「BOOL」と推論することができる。
変数宣言生成部215は、推論した結果に基づいて、変数aおよび変数bの各々について、変数名およびデータ型を宣言した変数定義リスト272を生成する。
図8には、ソースコード271の第2例を説明する概念図が示される。図8には、図7と同様に、ラダー回路の一例と、当該ラダー回路に基づいて生成された変数定義リスト272が示される。
図8の例では、ラダー回路420は、変数aの値に応じてオン/オフされる接点425と、オン/オフ結果を変数bとして出力するコイル426と、ファンクション427とを含む。ファンクションとは、制御プログラム210を構成するPOU(Program Organization Unit)と呼ばれる基本的な構成要素である。ファンクションは、同一入力に対して常に同じ値を出力する要素である。ファンクション427は、その入力部に関連付けられている変数の値に基づいて、ファンクション427に規定されている処理を実行する。当該実行結果は、ファンクション427の出力に関連付けられている変数に反映される。
変数宣言生成部215は、ラダー回路420に含まれる回路要素(命令要素)が参照する変数を抽出する。図8に示す第2例では、接点425が参照する変数aと、コイル426が参照する変数bと、ファンクション427が参照する変数aおよび変数cとが抽出される。
変数宣言生成部215は、抽出した変数a、変数bおよび変数cの各々のデータ型を推論する。変数aおよび変数bはそれぞれ、図7に示した方法によって、データ型が「BOOL」であると推論することができる。変数cについては、ファンクション427に規定されている処理内容に基づいて推論することができる。
具体的には、図8の例では、ファンクション427は、データ転送命令である「MOVE」ファンクションを規定した命令要素である。「MOVE」ファンクションは、入力部(In)が受け付けた変数(入力引数)の値を、出力部(Out)に関連付けられた変数(出力引数)に転送する処理を実行するように規定されている。
「MOVE」ファンクションの入力引数のデータ型は「ANY」であるため、どのようなデータ型の変数も入力部(In)に入力することができる。言い換えると、「MOVE」ファンクション単体では、入力部(In)に入力される変数のデータ型を推論することができない。ただし、図8の例では、入力引数となる変数aが他の回路要素(接点425)でも参照されているため、当該他の回路要素で得られた推論結果に基づいて、変数aのデータ型を推論することができる。
「MOVE」ファンクションでは、通常、入力引数と出力引数との間で、変数のデータ型が一致している。したがって、入力引数である変数aのデータ型が「BOOL」と推論された場合には、出力引数である変数cのデータ型も「BOOL」であると推論することができる。
変数宣言生成部215は、推論した結果に基づいて、変数aおよび変数bの各々について、変数名およびデータ型を宣言した変数定義リスト272を生成する。
なお、図8の例とは反対に、「MOVE」ファンクションにおいて、出力引数となる変数のデータ型が推論された場合においても、入力引数となる変数のデータ型も推論することができる。ただし、入力引数および出力引数のうちの一方の変数のデータ型が推論できない場合には、他方の変数のデータ型も推論することができない。
図9には、ソースコード271の第3例を説明する概念図が示される。図9には、図7と同様に、ラダー回路の一例と、当該ラダー回路に基づいて生成された変数定義リスト272が示される。
図9の例では、ラダー回路420は、ファンクション428を含む。変数宣言生成部215は、ファンクション428が参照する変数dおよび変数eを抽出しし、抽出した変数dおよび変数eの各々のデータ型を推論する。
図9の例では、ファンクション428は、データ型の変換命令である「INT_TO_BCD_BYTE」ファンクションを規定した命令要素である。ファンクション428のシンボル「INT_TO_BCD_BYTE」において、「TO」の左側は入力引数となる変数のデータ型を規定し、「TO」の右側は出力引数となる変数のデータ型を規定している。即ち、「INT_TO_BCD_BYTE」ファンクションは、整数型(INT)のデータを、バイト型(BYTE)のBCD(2進化10進表示:binary coded decimal notation)データに変換するための命令を規定している。
したがって、変数宣言生成部215は、入力引数となる変数dのデータ型は「INT」であると推論するとともに、出力引数となる変数eのデータ型は「BYTE」であると推論することができる。変数宣言生成部215は、推論した結果に基づいて、変数dおよび変数eの各々について、変数名およびデータ型を宣言した変数定義リスト272を生成する。
図10には、ソースコード271の第4例を説明する概念図が示される。図10には、図7と同様に、ラダー回路の一例と、当該ラダー回路に基づいて生成された変数定義リスト272が示される。
図10の例では、ラダー回路420は、ファンクション429を含む。変数宣言生成部215は、ファンクション429が参照する変数「DINT#30」、変数fおよび変数gを抽出し、抽出した変数「DINT#30」、変数fおよび変数gの各々のデータ型を推論する。
図10の例では、ファンクション429は、算術演算(図10では乗算「*」)の実行命令を規定した命令要素である。ファンクション429は、2つの入力部(In1,In2)と、1つの出力部(Out)とを有しており、2つの入力引数を乗算し、その乗算結果である出力引数を出力するように規定されている。
算術演算では、複数の入力引数について、変数のデータ型を混在させないことが一般的である。また、複数の入力引数と、これらの演算結果である出力引数とは、変数のデータ型が同じである。したがって、算術演算ファンクションにおいては、複数の入力引数および出力引数のうちのいずれか1つの引数について変数のデータ型が既知であれば(もしくは推論できれば)、残りの引数についても変数のデータ型を推論することができる。
図10の例では、第1の入力部(In1)に入力される変数「DINT#30」は、「DINT」(倍精度整数)型の変数である。したがって、変数宣言生成部215は、第2の入力部(In2)に入力される変数fも「DINT」型の変数であると推論することができる。変数宣言生成部215はさらに、出力部(Out)から出力される変数gも「DINT」型の変数であると推論することができる。
変数宣言生成部215は、推論した結果に基づいて、変数fおよび変数gの各々について、変数名およびデータ型を宣言した変数定義リスト272を生成する。
図6のフローチャートに戻って、変数のデータ型の推論結果に基づいて変数定義リスト272を生成すると、変数宣言生成部215は、変数定義リスト272が完成したか否かを判定する(S25)。ステップS25では、変数宣言生成部215は、ソースコード271に記述されている複数の変数の全てについて、データ型が宣言されているか否かを判定する。全ての変数についてデータ型が宣言されている場合、S25ではYES判定とされる。
一方、ソースコード271に記述されている複数の変数の一部について、データ型が宣言されていない場合には、S25ではNO判定とされる。例えば、図8で述べたように、「MOVE」ファンクションにおいて、入力引数および出力引数のうちの一方の変数のデータ型が推論できない場合には、他方の変数のデータ型も推論することができない。このような場合、変数定義リスト272内にデータ型が宣言されていない変数が含まれるため、S25ではNO判定とされる。
ソースコード271に記述されている複数の変数の全てについてデータ型が宣言されていない場合(S25のNO判定時)には、変数宣言生成部215は、ステップS24で生成した変数定義リスト272を、表示部118を介してユーザに提示する(S26)。変数宣言生成部215は、以下に説明するように、GUIモジュール258を用いてユーザと対話することにより、ユーザ操作に従って変数定義リスト272を完成させる。
<ユーザとの対話>
図11は、表示部118における変数定義リスト272の表示例を示す図である。図11の例では、変数定義リスト272は、変数ごとに少なくとも変数名およびデータ型を表したテーブル形式で表示されている。なお、変数定義リスト272は他の形式で表示されてもよい。
変数定義リスト272には、ソースコード271に記述されている複数の変数の各々について、図6のステップS23の処理において推論されたデータ型が記入されている。ただし、データ型を推論できなかった変数については、データ型の記入欄が空欄となっている。なお、該当する記入欄を空欄とすることに代えて、当該記入欄を他の記入欄よりも目立つ態様で示すようにしてもよい。
図11の例では、変数hのデータ型が推論できないため、変数hのデータ型の記入欄が空欄となっている。この場合、GUIモジュール258は、表示部118を用いて、変数hのデータ型が不明である旨をユーザに通知するとともに、変数fのデータ型の入力をユーザに求める。GUIモジュール258は、例えば、「変数hのデータ型が不明です。データ型を入力してください。」というメッセージ500を表示部118に表示する(図6のS27)。
GUIモジュール258は、表示部118にメッセージ500を表示した状態で、所定時間の間、当該メッセージに応答したユーザ入力を受け付ける待機状態となる(S28)。所定時間内にGUIモジュール258がユーザ入力を受け付けた場合(S29のYES判定時)には、変数宣言生成部215は、ユーザ入力に従って変数定義リスト272を書き換えることにより、変数定義リスト272を更新する(S30)。例えば、図11の変数定義リスト272内の空欄に対して、変数hのデータ型を指定するユーザ入力がなされた場合には、変数定義リスト272は、指定された変数hのデータ型を含めた内容に更新される。
ユーザ入力に従って変数定義リスト272を更新すると、ステップS25に戻って、変数宣言生成部215は、変数定義リスト272が完成したか否かを判定する。上述したように、変数宣言生成部215は、ソースコード271に記述されている複数の変数の全てについて、データ型が宣言されているか否かを判定する。全ての変数についてデータ型が宣言されている場合、S25ではYES判定とされる。
変数定義リスト272が完成していると判定されると(S25のYES判定時)、変数宣言生成部215は、変数定義リスト272をデータ格納部270に格納する(S31)。
実行コード生成部216は、データ格納部270に格納されているソースコード271および変数定義リスト272に基づいて、実行コード273を生成する(S32)。S32では、実行コード生成部216は、解析部212における意味解析により得られた式のデータ型の情報と、変数定義リスト272とに基づいて、ソースコード271を実行コード273に変換する。実行コード生成部216は、生成された実行コード273をデータ格納部270に格納する。その後、図5の処理に戻る。
以上説明したように、本実施の形態では、ユーザ操作に従って記述されたソースコード271のビルド処理(S2)において、ソースコード271に含まれる命令要素が参照する変数について、当該変数を定義した変数定義リスト272が生成される。これによると、生成された変数定義リスト272では、ソースコード271内で使用される変数のみが宣言されることになる。すなわち、ソースコード271内で使用されない変数については、変数定義リスト272では宣言されない。その結果、変数定義リスト272内に、ソースコード271に含まれる命令要素から参照されない変数(以下、「不使用変数」とも称する)を生じさせないことができる。
ここで、エディット処理(S1)において、ユーザ操作に従ってソースコード271内の一部の命令要素が削除されたケースを想定する。このケースでは、当該命令要素が参照する変数(例えば「変数A」と表記する)が、ソースコード271内において不使用変数となる場合がある。一方、変数Aが定義リスト272内で宣言されていれば、ソースコード271と変数定義リスト272とから構成されるソースプログラムをビルドすると、制御装置200のメモリ領域には、変数A(不使用変数)を格納するための領域が確保されることになる。
本実施の形態によれば、上記のケースにおいて、ソースコード271のビルド時に生成される変数定義リスト272は、不使用変数となった変数Aが除去された内容に更新されている。よって、ソースコード271の編集によって不要となった変数が変数定義リスト272内に蓄積されることを防ぐことができる。
なお、ソースコード271内で使用される変数のうち、データ型を推論できない変数については、GUIモジュール258を用いてユーザ入力を求めることによって変数定義リスト272を完成させることができる。そのため、制御装置200では、変数定義リスト272で宣言されたすべての変数の各々に対して、そのデータ型に従ったメモリ領域を確保することができる。
<変形例>
上述した実施の形態では、GUIモジュール258が、ソースコード271に含まれる命令要素が参照する変数のうち、そのデータ型を推論できない変数について、データ型についてのユーザ入力を受け付ける構成について説明したが、GUIモジュール258はさらに、命令要素が参照する変数以外の変数についてのユーザ入力を受け付ける構成とすることができる。
上記構成によると、ソースコード271内の命令要素からは参照されないものの、制御装置200における制御プログラム210の実行時に外部機器300(制御対象)で使用される変数を宣言することができる。よって、制御装置200では、当該変数を格納するためのメモリ領域を確保することができる。
このような変数には、ネットワークNW1,NW2を介して外部機器300からアクセスされる変数を含めることができる。例えば、ネットワークNW2によって制御装置200と接続されるデバイス300Aでは、制御プログラム210の実行時において、当該ネットワークの定周期通信によって定期的に読み出す変数が定められている。デバイス300Aは、定周期通信によって当該変数にアクセスして、当該変数の値を制御装置200から取得する。当該変数の値は、機器301Aにおいて、状態量のモニタ等のために使用される。
また、ネットワークNW1によって制御装置200と接続されるデバイス300Bでは、制御装置200から読み出す変数と、デバイス300B内での変数との対応関係(リンク)を規定するデータリンク設定が作成されている。デバイス300Bは、データリンク設定にしたがって、制御装置200の変数にアクセスして、当該変数の値を取得する。取得した変数の値は、機器301Bにおいて、上述と同様に使用することができる。
<付記>
上述したような本実施の形態および変形例は、以下のような技術思想を含む。
[構成1]
制御対象(300)を制御する制御装置(200)用の制御プログラム(210)の開発を支援するための開発支援装置(100)であって、
ユーザ操作に従って、前記制御プログラムのソースコード(271)を生成および編集するエディタ(252)と、
前記ソースコードおよび、前記ソースコードに含まれる命令要素が参照する変数を定義した変数宣言(272)から前記制御プログラムの実行コード(273)を生成するビルダ(254)とを備え、
前記ビルダは、前記ソースコードに含まれる命令要素が参照する変数を抽出するとともに、抽出した変数のデータ型を推論することで、前記変数宣言を生成する変数宣言生成部(215)を含む、開発支援装置。
[構成2]
前記ユーザと対話するインターフェイス(258)をさらに備え、
前記変数宣言生成部(215)は、データ型を推論できない第1の変数を前記インターフェイスを介して前記ユーザに通知するとともに、前記インターフェイスを介した前記第1の変数のデータ型についてのユーザ入力に従って前記変数宣言を更新する、構成1に記載の開発支援装置。
[構成3]
前記変数宣言生成部(215)はさらに、前記インターフェイス(258)を介した第2の変数についてのユーザ入力に応じて前記第2の変数を前記変数宣言に追加する、構成2に記載の開発支援装置。
[構成4]
前記第2の変数は、前記制御プログラム(210)の実行中に前記制御対象(300)が使用する変数を含む、構成3に記載の開発支援装置。
[構成5]
前記変数宣言生成部(215)は、前記命令要素の処理内容に基づいて、前記命令要素が参照する変数のデータ型を推論する、構成1から4のいずれか1項に記載の開発支援装置。
[構成6]
制御対象(300)を制御する制御装置(200)用の制御プログラム(210)の開発を支援するための開発支援方法であって、
ユーザ操作に従って、前記制御プログラムのソースコード(271)を生成および編集するステップと、
前記ソースコードおよび、前記ソースコードに含まれる命令要素が参照する変数を定義した変数宣言(272)から前記制御プログラムの実行コード(273)を生成するステップとを備え、
前記実行コードを生成するステップは、
前記ソースコードに含まれる命令要素が参照する変数を抽出するステップと、
抽出した変数のデータ型を推論することで、前記変数宣言を生成するステップとを含む、開発支援方法。
[構成7]
制御対象(300)を制御する制御装置(200)用の制御プログラム(210)の開発を支援するための開発支援プログラムであって、
前記開発支援プログラムは、コンピュータに、
ユーザ操作に従って、前記制御プログラムのソースコード(271)を生成および編集するステップと、
前記ソースコードおよび、前記ソースコードに含まれる命令要素が参照する変数を定義した変数宣言(272)から前記制御プログラムの実行コード(273)を生成するステップとを実行させ、
前記実行コードを生成するステップは、
前記ソースコードに含まれる命令要素が参照する変数を抽出するステップと、
抽出した変数のデータ型を推論することで、前記変数宣言を生成するステップとを含む、開発支援プログラム。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
10 FAシステム、50 開発支援プログラム、60 各種データ・プログラム、100 開発支援装置、102 プロセッサ、104 主メモリ、111 通信インターフェイス、114 I/Oインターフェイス、115 操作部、117 表示インターフェイス、118 表示部、120 記憶装置、200 制御装置、210 制御プログラム、212 解析部、215 変数宣言生成部、216 実行コード生成部、250 プログラミングアプリケーション、252 エディタ、254 ビルダ、256 デバッガ、257 コンフィグレータ、258 GUIモジュール、260 シミュレータ、270,299 データ格納部、271 ソースコード、272 変数定義リスト、273 実行コード、293 コンフィグ情報、280 ネットワーク設定アプリケーション、300 外部機器、300A~300C デバイス、301A~301C 機器、420 ラダー回路、421 入力側母線、422 出力側母線、423 接続線、425 接点、426 コイル、427~429 ファンクション、a~i 変数、NW1,NW2 ネットワーク。

Claims (7)

  1. 制御対象を制御する制御装置用の制御プログラムの開発を支援するための開発支援装置であって、
    ユーザ操作に従って、前記制御プログラムのソースコードを生成および編集するエディタと、
    前記ソースコードおよび、前記ソースコードに含まれる命令要素が参照する変数を定義した変数宣言から、前記制御プログラムの実行コードを生成するビルダとを備え、
    前記ビルダは、前記ソースコードに含まれる前記命令要素が参照する前記変数を抽出するとともに、抽出した前記変数のデータ型を推論することで、前記変数宣言を生成する変数宣言生成部を含む、開発支援装置。
  2. ーザと対話するインターフェイスをさらに備え、
    前記変数宣言生成部は、データ型を推論できない第1の変数を前記インターフェイスを介して前記ユーザに通知するとともに、前記インターフェイスを介した前記第1の変数のデータ型についてのユーザ入力に従って前記変数宣言を更新する、請求項1に記載の開発支援装置。
  3. 前記変数宣言生成部はさらに、前記インターフェイスを介した第2の変数についてのユーザ入力に応じて前記第2の変数を前記変数宣言に追加する、請求項2に記載の開発支援装置。
  4. 前記第2の変数は、前記制御プログラムの実行中に前記制御対象が使用する変数を含む、請求項3に記載の開発支援装置。
  5. 前記変数宣言生成部は、前記命令要素の処理内容に基づいて、前記命令要素が参照する変数のデータ型を推論する、請求項1から4のいずれか1項に記載の開発支援装置。
  6. 制御対象を制御する制御装置用の制御プログラムの開発を支援するための開発支援方法であって、
    ユーザ操作に従って、前記制御プログラムのソースコードを生成および編集するステップと、
    前記ソースコードおよび、前記ソースコードに含まれる命令要素が参照する変数を定義した変数宣言から前記制御プログラムの実行コードを生成するステップとを備え、
    前記実行コードを生成するステップは、
    前記ソースコードに含まれる前記命令要素が参照する前記変数を抽出するステップと、
    抽出した前記変数のデータ型を推論することで、前記変数宣言を生成するステップとを含む、開発支援方法。
  7. 制御対象を制御する制御装置用の制御プログラムの開発を支援するための開発支援プログラムであって、
    前記開発支援プログラムは、コンピュータに、
    ユーザ操作に従って、前記制御プログラムのソースコードを生成および編集するステップと、
    前記ソースコードおよび、前記ソースコードに含まれる命令要素が参照する変数を定義した変数宣言から前記制御プログラムの実行コードを生成するステップとを実行させ、
    前記実行コードを生成するステップは、
    前記ソースコードに含まれる前記命令要素が参照する前記変数を抽出するステップと、
    抽出した前記変数のデータ型を推論することで、前記変数宣言を生成するステップとを含む、開発支援プログラム。
JP2021039325A 2021-03-11 2021-03-11 開発支援装置、開発支援方法および開発支援プログラム Active JP7622483B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021039325A JP7622483B2 (ja) 2021-03-11 2021-03-11 開発支援装置、開発支援方法および開発支援プログラム
PCT/JP2021/034469 WO2022190418A1 (ja) 2021-03-11 2021-09-21 開発支援装置、開発支援方法および開発支援プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021039325A JP7622483B2 (ja) 2021-03-11 2021-03-11 開発支援装置、開発支援方法および開発支援プログラム

Publications (2)

Publication Number Publication Date
JP2022139090A JP2022139090A (ja) 2022-09-26
JP7622483B2 true JP7622483B2 (ja) 2025-01-28

Family

ID=83227809

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021039325A Active JP7622483B2 (ja) 2021-03-11 2021-03-11 開発支援装置、開発支援方法および開発支援プログラム

Country Status (2)

Country Link
JP (1) JP7622483B2 (ja)
WO (1) WO2022190418A1 (ja)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003501742A (ja) 1999-06-07 2003-01-14 マイクロソフト コーポレイション 中間言語内のオペランド・タイプの推定
US20060048095A1 (en) 2004-08-31 2006-03-02 Microsoft Corporation Local type alias inference system and method
JP2012118715A (ja) 2010-11-30 2012-06-21 Fuji Electric Co Ltd Plcシステム、その開発支援装置、プログラム
JP2012234272A (ja) 2011-04-28 2012-11-29 Fuji Electric Co Ltd プログラマブルコントローラ・システム、その支援装置
JP2013156786A (ja) 2012-01-30 2013-08-15 Hitachi Automotive Systems Ltd ソフトウェアの構造可視化プログラムおよびシステム
JP2014048856A (ja) 2012-08-31 2014-03-17 Hitachi Automotive Systems Ltd ソフトウェア検証用プログラムおよびソフトウェア検証システム
JP2015215865A (ja) 2014-04-24 2015-12-03 富士電機株式会社 プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ
JP2019159361A (ja) 2018-03-07 2019-09-19 オムロン株式会社 サポート装置およびサポートプログラム
JP2019211823A (ja) 2018-05-31 2019-12-12 オムロン株式会社 サポート装置およびサポートプログラム
JP2020201635A (ja) 2019-06-07 2020-12-17 オムロン株式会社 サポート装置およびサポートプログラム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04317133A (ja) * 1991-04-16 1992-11-09 Fuji Xerox Co Ltd プログラム変換装置
JPH0540631A (ja) * 1991-08-06 1993-02-19 Fuji Xerox Co Ltd 型推論装置
JPH05143310A (ja) * 1991-11-22 1993-06-11 Hokuriku Nippon Denki Software Kk データ部自動生成エデイタ
JP4379687B2 (ja) * 2003-07-25 2009-12-09 オムロン株式会社 シミュレーション支援ツールおよびラダープログラムの検証システムならびにプログラム製品
JP2011070393A (ja) * 2009-09-25 2011-04-07 Fuji Xerox Co Ltd 情報処理システム及び通信装置
JP6922431B2 (ja) * 2017-05-31 2021-08-18 オムロン株式会社 プログラム開発支援装置、プログラム開発支援方法、および、プログラム開発支援プログラム

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003501742A (ja) 1999-06-07 2003-01-14 マイクロソフト コーポレイション 中間言語内のオペランド・タイプの推定
US20060048095A1 (en) 2004-08-31 2006-03-02 Microsoft Corporation Local type alias inference system and method
JP2012118715A (ja) 2010-11-30 2012-06-21 Fuji Electric Co Ltd Plcシステム、その開発支援装置、プログラム
JP2012234272A (ja) 2011-04-28 2012-11-29 Fuji Electric Co Ltd プログラマブルコントローラ・システム、その支援装置
JP2013156786A (ja) 2012-01-30 2013-08-15 Hitachi Automotive Systems Ltd ソフトウェアの構造可視化プログラムおよびシステム
JP2014048856A (ja) 2012-08-31 2014-03-17 Hitachi Automotive Systems Ltd ソフトウェア検証用プログラムおよびソフトウェア検証システム
JP2015215865A (ja) 2014-04-24 2015-12-03 富士電機株式会社 プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ
JP2019159361A (ja) 2018-03-07 2019-09-19 オムロン株式会社 サポート装置およびサポートプログラム
JP2019211823A (ja) 2018-05-31 2019-12-12 オムロン株式会社 サポート装置およびサポートプログラム
JP2020201635A (ja) 2019-06-07 2020-12-17 オムロン株式会社 サポート装置およびサポートプログラム

Also Published As

Publication number Publication date
WO2022190418A1 (ja) 2022-09-15
JP2022139090A (ja) 2022-09-26

Similar Documents

Publication Publication Date Title
EP2169547B1 (en) Compilation model for programmable logic controllers (PLC).
CN103814333B (zh) 用于对可编程控制装置编程和配置的方法和设备
CN107710149B (zh) 利用连接性模型生成plc代码的方法和系统
US20090089671A1 (en) Programmable controller programming with embedded macro capability
CN101763043B (zh) 用于自动化协同框架的方法和系统
CN111142466B (zh) 工程装置、工程装置的控制方法和存储介质
EP4073626B1 (en) Method and system for generating engineering diagrams in an engineering system
EP4328683A1 (en) Method and system for generating user recommendations to aid generation of an engineering project
Jamro et al. An approach to SysML modeling of IEC 61131-3 control software
US20010037362A1 (en) Automation system for solving a technical-process task and corresponding method
WO2018047620A1 (ja) 実行可能プログラム作成装置、実行可能プログラム作成方法、および、実行可能プログラム作成プログラム
JP7622483B2 (ja) 開発支援装置、開発支援方法および開発支援プログラム
US12530522B2 (en) Method and system for generating an automation engineering project in a technical installation using multidisciplinary approach
Wang et al. Formal modelling of PLC systems by BIP components
JP7631921B2 (ja) 開発支援装置、開発支援方法および開発支援プログラム
CN114416099A (zh) 一种基于信息物理系统的模型集成方法及相关组件
Han et al. Domain‐specific translation tool from structured text to C source code with code readability enhancement in programmable logic controllers
CN115702413A (zh) 用于创建和执行用于控制自动化系统的控制程序的方法以及自动化系统
EP4636515A1 (en) Development assistance device, development assistance method, and development assistance program
Frank et al. Transformation of IEC 61131-3 onto an Embedded Platform Using LLVM
JP7600787B2 (ja) 開発支援装置、開発支援方法、及び、開発支援プログラム
Lamberský et al. Development of Simulink blockset for embedded system with complex peripherals
Vänninen Accelerating the commissioning of PLCs using 3D simulations
CN115934062A (zh) 一种工业控制程序开发平台及方法
CN117492716A (zh) 一种基于OpenPLC的龙芯2K1000平台的实现方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240820

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20241003

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20241119

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20241230

R150 Certificate of patent or registration of utility model

Ref document number: 7622483

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150