JP2022139087A - 開発支援装置、開発支援方法、及び、開発支援プログラム - Google Patents

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

Info

Publication number
JP2022139087A
JP2022139087A JP2021039322A JP2021039322A JP2022139087A JP 2022139087 A JP2022139087 A JP 2022139087A JP 2021039322 A JP2021039322 A JP 2021039322A JP 2021039322 A JP2021039322 A JP 2021039322A JP 2022139087 A JP2022139087 A JP 2022139087A
Authority
JP
Japan
Prior art keywords
variable
variables
development support
control program
list
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.)
Pending
Application number
JP2021039322A
Other languages
English (en)
Inventor
良典 比嘉
Yoshinori Higa
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
Omron Tateisi Electronics Co
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, Omron Tateisi Electronics Co filed Critical Omron Corp
Priority to JP2021039322A priority Critical patent/JP2022139087A/ja
Priority to CN202180094743.8A priority patent/CN116917818A/zh
Priority to EP21930276.7A priority patent/EP4307060A1/en
Priority to US18/279,258 priority patent/US20240143287A1/en
Priority to PCT/JP2021/034614 priority patent/WO2022190428A1/ja
Publication of JP2022139087A publication Critical patent/JP2022139087A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • 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
    • G05B19/056Programming the PLC
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Landscapes

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

Abstract

【課題】制御対象を制御する制御装置用の制御プログラムから削除可能な変数を適切に抽出する。【解決手段】開発支援装置100は、制御対象300を制御する制御装置200用の御プログラム210のソースコードで使用する変数を宣言する変数定義リスト内の変数からソースコードで不使用である第1の変数を抽出するとともに、制御プログラム210の実行状態において制御対象300が使用する第2の変数を特定するための情報を取得する。開発支援装置100は、第1の変数のうちの第2の変数に非該当である第3の変数を変数定義リストから削除可能と判定する。【選択図】図1

Description

本開示は、制御対象を制御する制御装置用の制御プログラムの開発を支援するための技術に関する。
FA(Factory Automation)システムに代表される様々な製造現場において、PLC(Programmable Logic Controller)等の制御装置が導入されている。このような制御装置は、一種のコンピュータであり、製造装置や製造設備等の制御対象に応じて設計された制御プログラムが実行されることで、当該制御対象を制御することができる。一般的に、制御プログラムは、コントローラとは別に用意された開発支援装置を用いて作成される。
このような制御プログラムは、一般的に、予め宣言された変数を用いて記述される。例えば、特開2005-352612号公報(特許文献1)には、変数の検索性を高めることで制御プログラムの開発効率を高めることができるプログラム開発支援装置が開示される。特許文献1のプログラム開発支援装置では、所定の命令に対するオペランドを入力した場合に、キーワード(文字列)の指定に応じて、当該文字列を含む変数名の変数のみを一覧表示する絞り込みを行うことによって、変数の検索性が高められる。
特開2005-352612号公報
上記の制御プログラムのソースプログラムでは、変数を宣言するための定義リストが設けられており、当該定義リスト中で宣言された変数がソースコード内で使用可能となる。
一方で、当該制御プログラムの変更又は編集の際に、ソースコード内で削除された変数についても、定義リスト内に残されている場合には、制御プログラムの実行時に当該変数に対応するメモリ領域が確保される。このため、制御装置のメモリ領域を効率的に使用する観点からは、不要な変数については定義リストから削除することが好ましい。
一方で、制御プログラムの実行時には、制御装置及び制御対象の間でネットワークが構築されて制御対象が制御されるため、必要な変数を削除してしまうと制御対象側に影響を与えることも懸念される。
本開示は上述のような問題点を解決するためになされたものであって、ある局面における目的は、制御対象を制御する制御装置用の制御プログラム内の削除可能な不要な変数を適切に抽出することが可能な開発支援装置を提供することである。他の局面における目的は、制御プログラム内の削除可能な不要な変数を適切に抽出することが可能な開発支援方法を提供することである。更なる他の局面における目的は、制御プログラム内の削除可能な不要な変数を適切に抽出することが可能な開発支援プログラムを提供することである。
本開示の一例によれば、制御対象を制御する制御装置用の制御プログラムの開発を支援するための開発支援装置が提供される。開発支援装置は、記憶部と、抽出部と、取得部と、判定部とを備える。記憶部は、制御プログラムのソースコード及び当該ソースコードで使用する複数の変数を宣言する第1のリストを記憶する。抽出部は、第1のリスト内の複数の変数からソースコードで不使用である第1の変数を抽出する。取得部は、制御プログラムの実行状態において、複数の変数のうちの制御対象が使用する第2の変数を特定するための情報を取得する。判定部は、抽出部による抽出結果と、取得部によって取得された情報とに基づいて、第1の変数のうちの第2の変数に非該当である第3の変数を第1のリストから削除可能と判定する。
この開示によれば、開発支援装置は、制御プログラムのソースコードでの不使用変数から、制御対象で使用される第2の変数を除外して、第1のリストから削除可能な変数を判定することができる。その結果、削除すると外部機器側に影響を与える変数を除外して、制御プログラムから削除可能な変数を適切に抽出することができる。
上述の開示において、制御対象は、ネットワークによって制御装置と接続されるとともに、制御プログラムの実行中に、予め作成された第2のリストに示された変数を制御装置から読み出すように構成されていてもよい。取得部は、制御対象から直接、又は、制御装置を介して制御対象から、第2のリストに示された変数を特定する情報を取得するようにしてもよい。
この開示によれば、制御プログラムの実行時に作成されているリスト(第2のリスト)を用いて、制御対象が使用する第2の変数を特定する情報を簡易に取得できる。
上述の開示において、制御対象は、ネットワークによって制御装置と接続されるとともに、制御プログラムの実行中に当該ネットワークを経由して制御対象にアクセスして複数の変数の一部の変数を読み出すように構成されてもよい。制御装置は、制御プログラムの実行中に制御対象から読み出された変数名をアクセス情報として保持する。取得部は、制御プログラムの実行時にアクセス情報を制御装置から情報として取得してもよい。
この開示によれば、制御対象が使用する第2の変数について、リストを用いて特定できない場合にも、制御装置に保持されるアクセス情報を用いて特定することができる。
上述の開示において、開発支援装置は、第3の変数を第1のリストから削除する変数削除部を更に備えてもよい。
この開示によれば、判定部によって削除可能と判定された第3の変数が削除された内容に、第1のリストを自動的に更新することができる。
上述の開示において、開発支援装置は、ユーザの操作を入力するためのインターフェイス部を更に備えてもよい。抽出部、取得部、及び、判定部は、インターフェイス部に対する、不要変数の削除処理を起動する第1の操作の入力に応じて動作してもよい。インターフェイス部は、判定部によって抽出された第3の変数を第1のリストから削除するか否かをユーザに求めるメッセージを出力してもよい。変数削除部は、インターフェイス部に対する、メッセージに応じた第3の変数の削除を指示する第2の操作の入力に応じて動作してもよい。
この開示によれば、ユーザ操作に応じて起動された不要変数の削除処理において、判定部によって削除可能と判定された第3の変数を、ユーザによる確認後に第1のリストから削除することができる。
上述の開示において、第1の操作が入力されると、制御装置及び開発支援装置の間で制御プログラムのバージョンの同期が確保された後に、抽出部、取得部、及び、判定部を動作させてもよい。
この開示によれば、ソースプログラム内の変数と、制御装置で実行される制御プログラム内の変数とが一致していることを確認して、第1のリストから削除可能な変数を抽出することができる。
本開示の他の例では、コンピュータによって実行される、制御対象を制御する制御装置用の制御プログラムの開発支援方法が提供される。開発支援方法は、制御プログラムのソースコードで使用される複数の変数を宣言するリストからソースコードで不使用である第1の変数を抽出するステップと、制御プログラムの実行状態において、複数の変数のうちの制御対象が使用する第2の変数を特定するための情報を取得するステップと、抽出するステップでの抽出結果と、取得するステップで取得された情報とに基づいて、第1の変数のうちの第2の変数に非該当である第3の変数をリストから削除可能と判定するステップとを備える。
本開示の更に他の例では、制御対象を制御する制御装置用の制御プログラムの開発支援プログラムが提供される。開発支援プログラムは、コンピュータに、制御プログラムのソースコードで使用される複数の変数を宣言するリストからソースコードで不使用である第1の変数を抽出するステップと、制御プログラムの実行状態において、複数の変数のうちの制御対象が使用する第2の変数を特定するための情報を取得するステップと、抽出するステップでの抽出結果と、取得するステップで取得された情報とに基づいて、第1の変数のうちの第2の変数に非該当である第3の変数をリストから削除可能と判定するステップとを実行させる。
この開示によれば、開発支援方法及び開発支援プログラムは、制御プログラムのソースコードでの不使用変数から、制御対象で使用される第2の変数を除外して、リストから削除可能な変数を判定することができる。その結果、削除すると外部機器側に影響を与える変数を除外して、制御プログラムから削除可能な変数を適切に抽出することができる。
本開示によれば、制御対象を制御する制御装置用の制御プログラム内の削除可能な不要な変数を適切に抽出することができる。
本実施の形態に係る開発支援装置が適用されるFAシステムの構成の一例を示す概略図である。 開発支援装置のハードウェア構成の一例を示す模式図である。 制御プログラムの運用を説明する概念図である。 制御プログラムの一例を説明する概念図である。 外部機器から制御装置へのアクセス態様を説明する概略図である。 本実施の形態に係る開発支援装置による不要変数削除処理のための構成を説明するブロック図である。 本実施の形態に係る開発支援装置による不要変数削除処理のフローチャートである。 本実施の形態に係る開発支援方法による不要変数削除処理の変形例を説明するフローチャートである。
以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品及び構成要素には同一の符号を付してある。それらの名称及び機能も同じである。従って、これらについての詳細な説明は原則的には繰り返さない。
<適用例>
図1は、本実施の形態に係る開発支援装置が適用されるFAシステム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は、OPC UAが適用されたネットワークNW2と接続されるものとする。又、機器301Bと接続されるデバイス300B、及び、機器301Cと接続されるデバイス300Cは、Ethernetが適用されたネットワークNW1と接続されるものとする。尚、FAシステム10が複数の制御装置(コントローラ)200を備えた構成では、コントローラ間、例えば、図1中の制御装置200と、図示されていない他の制御装置との間で、例えばOPC UAを用いて、コントローラ間ネットワーク(図示せず)を構成することができる。
<開発支援装置の構成>
図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に記憶される。即ち、主メモリ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がすべての処理を実行する形態について例示したが、これに限らず、複数の装置が連携して上述したような機能を提供するようにしてもよい。さらに、一部または全部の機能をサーバ上のいわゆるクラウドと称される計算リソースを利用して実現してもよい。
<制御プログラム>
次に、制御プログラムについて説明する。
図3には、制御プログラムの運用を説明する概念図が示される。
開発支援装置100では、操作部115及び118を用いたユーザの操作により、ソースコード51及び変数定義リスト52を含むソースプログラム210sを作成する。又、ソースコード51及び変数定義リスト52を含むソースプログラム210sは、開発支援装置100に対するユーザの操作により、適宜編集される。尚、図3では、ソースコード51及び変数定義リスト52を別々に表記しているが、ソースプログラム210sにおいて、ソースコード51及び変数定義リスト52を一体されたファイルとすることも可能である。ソースプログラム210sは、典型的には、IEC61131-3に規定された、LD(ラダーダイアグラム)、IL(インストラクションリスト)、ST(ストラクチャードテキスト)、FBD(ファンクションブロックダイアグラム)、SFC(シーケンシャルファンクションチャート)等の任意の言語で記述することができる。以下の説明では、典型例として、ソースプログラムがラダープログラム(LD)によって記述される場合について説明する。
開発支援装置100では、ソースプログラム210sがビルドされることにより、制御プログラム210の実行コード211が作成されて、制御装置200にダウンロードされる。この際に、制御装置200では、制御プログラム210用に、変数定義リスト52で宣言された変数を格納するためのメモリ領域212が確保される。
デバイス300A~300Cは、ネットワークインターフェイス250を介したネットワークNW1又はNW2によるデータ通信により、メモリ領域212の変数にアクセス可能である。例えば、図3の例では、斜線を付した領域に格納される変数が、外部機器300(デバイス300A~300C)からアクセスされている。反対に、デバイス300A~300C側から制御装置200(メモリ領域212)に対してデータを入力することも可能である。
図4には、制御プログラムの一例を説明する概念図が示される。図4(a)には、制御プログラムの一例であるラダープログラムによって記述されるラダー回路の一例が示される。図4(b)には、図3で説明した変数定義リストの一例が示される。
図4(a)に示されるように、ラダープログラムは、入力側母線221と出力側母線222との間に回路要素と接続線とを用いた論理回路を梯子状に描いたラダー回路220により表現される。
図4(a)の例では、ラダー回路220は、変数aaの値に応じてオン/オフされる接点224と、オン/オフ結果を変数bbとして出力するコイル226とを含む。ラダー回路は、接点224及びコイル226といった回路要素を互いに接続線227で繋ぐことで描かれる。例えば、変数bbは他のラダー回路(図示せず)の接点を開閉する変数として更に用いられる。或いは、変数aaは、他のラダー回路(図示せず)のコイルの出力値である。このようなラダー回路の階層的な組み合わせによって、制御装置200が外部機器300を制御するための制御動作を記述することができる。
図4(b)に示されるように、変数定義リスト52は、変数毎に、少なくとも、変数名と、当該変数のデータ型とを宣言することで作成される。データ型は、予め定義された、「BOOL」、「REAL」、及び「LREAL」等のうちから選択的に設定される。図3で説明したように、ソースプログラムがビルドされると、変数定義リスト52で宣言された変数の各々について、選択されたデータ型に従った容量を有するデータ領域が確保される。
ここで、仮に、図4(a)のラダー回路220及び図4(b)の変数定義リスト52によってソースプログラムが構成されるケースを想定すると、変数aa及びbbは、ラダー回路(ソースコード)で使用されている一方で、変数ccは、宣言されているもののラダー回路内では非使用である。このケースでも、当該ソースプログラムをビルドすると制御装置200のメモリ領域212には、変数ccを格納するための領域が確保される。従って、不使用の変数ccを変数定義リスト52から削除することで、制御装置200のメモリ領域を解放することができる。これにより、不要なメモリ領域を確保しなくてよくなるので、制御装置200のメモリ使用効率が向上する。
一方で、ラダー回路、即ち、ソースプログラム内では不使用であっても、ネットワークNW1,NW2を介して、外部機器300からアクセスされる変数が存在する可能性がある。従って、ソースプログラム内で不使用の変数を抽出して自動的に変数定義リスト52から削除すると、上述のような変数が削除されてしまうことにより、外部機器300側に影響を与える虞がある。
<外部機器からのアクセス>
次に、図5を用いて、外部機器300から制御装置200へのアクセス態様について説明する。
図5に示されるように、開発支援装置100で作成又は編集されたソースプログラムをビルドすることにより、制御装置200にも、変数定義リスト52に対応する変数リスト203が作成される。即ち、変数リスト203には、変数定義リスト52で宣言された変数が含まれる。図5の例では、変数定義リスト52及び変数リスト203に定義された変数に、変数OPT1~OPT4が含まれるものとする。
ネットワークNW2によって制御装置200と接続されるデバイス300Aでは、制御プログラムの実行時において、当該ネットワークの定周期通信によって定期的に読み出す変数が、サブスクリプション設定305Aによって定められている。図5の例では、デバイス300Aは、定周期通信によって、サブスクリプション設定305Aに従って、変数OPT1,OPT2にアクセスして、当該変数の値を制御装置200から取得する。変数OPT1,OPT2の値は、機器301Aにおいて、状態量のモニタ等のために使用される。
制御装置200は、制御プログラムの実行時において、デバイス300A~300Cからのアクセス履歴をアクセス情報201として格納する。従って、アクセス情報201に基づいて、デバイス300Aから制御装置200にアクセスされた変数(ここでは、OPT1、OPT2)を特定することができる。
ネットワークNW1によって制御装置200と接続されるデバイス300Bでは、制御装置200から読み出す変数と、デバイス300B内での変数との対応関係(リンク)を規定するデータリンク設定305Bが作成されている。
図5の例では、データリンク設定305Bに従って、デバイス300Bは、制御装置200の変数OPT2,OPT3にアクセスして、当該変数の値を取得する。変数OPT2,OPT3の値は、機器301Bにおいて、上述と同様に使用することができる。
制御装置200では、データリンク設定305Bと対応させて、変数OPT2,OPT3がアクセス対象であることを示すコネクション設定情報202が作成される。
デバイス300Cは、開発支援装置100との間でプロトコルが共通であることを想定している。このため、デバイス300Cは、ネットワークNW1によって、制御装置200を経由して、或いは、直接的に、開発支援装置100との間でデータを授受することが可能である。例えば、デバイス300Cは、変数マッピング305Cに予め定められた変数OPT1,OPT3にアクセスして、当該変数の値を制御装置200から取得する。例えば、デバイス300Cは、ディスプレイ等のHMI機器である。変数OPT1,OPT3の値は、当該ディスプレイへの表示に使用される。
開発支援装置100は、ネットワークNW1と接続されるデバイス300B及び300Cからアクセスされる変数については、コネクション設定情報202及び変数マッピング305Cに従って、それぞれ特定することができる。
従って、開発支援装置100は、変数定義リスト52及び変数リスト203に含まれる変数OPT1~OPT4のうち、変数OPT1~OPT3については外部機器300で使用される一方で、変数OPT4については、外部機器300で不使用であると判断することができる。即ち、変数OPT4については、ソースプログラムで不使用であれば、削除しても外部機器300側に影響を与えないと判断することができる。
尚、デバイス300B及び300Cからアクセスされる変数についても、制御装置200でのアクセス情報201に基づいて特定することが可能であるが、コネクション設定情報202及び変数マッピング305Cに従って当該変数を特定する情報を、簡易に取得することができる。
<本実施の形態に係る不要変数削除処理について>
図6には、本実施の形態に係る開発支援装置による不要変数削除処理のための構成を説明するブロック図が示される。
開発支援装置100は、抽出部55と、取得部56と、判定部57と、ユーザインターフェイス部58と、変数削除部59とを含む。例えば、取得部56、判定部57、ユーザインターフェイス部58、及び、変数削除部59の各々は、開発支援装置100のプロセッサ102が開発支援プログラム50を実行することにより、当該プログラムの機能の一部として実現される。ユーザインターフェイス部58は、図2に示されたI/Oインターフェイス114及び表示インターフェイス117を包括するものである。
ユーザインターフェイス部58は、操作部115に対して、不要変数削除処理の起動指示が入力されると、不要変数削除処理を開始する。例えば、表示部118に表示されたメニュー画面への選択入力によって、ユーザは、不要変数削除処理の起動指示を入力することができる。当該起動指示のための操作は「第1の操作」に対応する。
抽出部55は、不要変数削除処理が開始されると、ソースコード51及び変数定義リスト52を照合して、ソースコード51で使用されていない不使用変数V1を抽出する。例えば、図4の例では、変数ccが不使用変数V1として抽出される。不使用変数V1は「第1の変数」に対応し、変数定義リスト52は「第1のリスト」又は「リスト」の一実施例に対応する。
尚、図6では、図5との関連性を考慮して、図5に示された変数OPT1~OPT4が不使用変数V1として抽出される例を想定する。
取得部56は、図5で説明したように、制御装置200からアクセス情報201及びコネクション設定情報202を取得する。更に、取得部56は、デバイス300Cから直接、或いは、制御装置200を経由して、デバイス300Cの変数マッピング305Cを取得する。アクセス情報201、コネクション設定情報202、及び、変数マッピング305Cは、外部機器300(制御対象)で使用されるデバイス使用変数V2を特定するための情報の一実施例に相当する。図5の例では、当該情報によって、変数OPT1~OPT3を、デバイス使用変数V2として特定できることが理解される。即ち、デバイス使用変数V2は「第2の変数」に対応し、コネクション設定情報202、及び、変数マッピング305Cは「第2のリスト」の一実施例に対応する。
判定部57は、抽出部55によって抽出された不使用変数V1と、取得部56によって取得された情報から特定されるデバイス使用変数V2とに基づいて、不使用変数V1のうちの、デバイス使用変数V2に非該当の変数を、制御プログラム210からの削除可能変数V3と判定する。図5の例では、変数OPT4を、削除可能変数V3として抽出することができる。
ユーザインターフェイス部58は、表示部118を用いて、削除可能変数V3をユーザに報知するとともに、当該削除可能変数V3の削除を実行してよいかの確認を求める。例えば。「これらの変数を削除しますか?」との表示に対して、「YES」又は「NO」をクリックするための文字及び図形を、表示部118に出力することができる。
ユーザインターフェイス部58は、上記表示に対して「YES」がクリックされることで、ユーザの削除指示が入力されると、変数削除部59に対して、自動削除指示を生成する。当該削除指示のための操作は「第2の操作」に対応する。
変数削除部59は、当該自動削除指示が入力されると、変数定義リスト52に含まれる変数から削除可能変数V3を削除する。これにより、変数定義リスト52は、削除可能変数V3が削除された内容に更新される。
この結果、本実施の形態に係る開発支援装置100によれば、デバイス使用変数V2を除外して、変数定義リスト52からの削除可能変数V3を自動的に判定することができる。更に、自動的に判定された削除可能変数V3が削除された内容に、変数定義リスト52を更新することができる。
尚、変数定義リスト52の更新が完了すると、ユーザインターフェイス部58は、不要変数削除処理が終了した旨を示すメッセージを、表示部118等を用いてユーザに対して出力することができる。更に、ソースプログラム(ソースコード)の再ビルドを促すメッセージを、併せてユーザに出力してもよい。
図7には、本実施の形態に係る開発支援装置による不要変数削除処理のフローチャートが示される。図7に示された各ステップの処理は、代表的には、開発支援装置100のプロセッサ102が開発支援プログラム50を実行するソフトウェア処理によって実現することができる。
開発支援装置100は、ステップS110では、不要変数削除処理の起動指示がユーザから入力されたか否かを判定する。ユーザ指示が入力されないとき(S110のNO判定時)には、ステップS120以降の処理は待機される。
ユーザによって不要変数削除処理の起動が指示されると(S110のYES判定時)には、ステップS120に処理が進められる。開発支援装置100は、ステップS120では、開発支援装置100及び制御装置200の間で制御プログラムの同期が取れているか否かを判定する。同期が取れている状態(S120のYES判定時)では、ソースプログラムの変数定義リスト52に含まれる変数と、制御装置200の変数リスト203に含まれる変数とが一致している状態であることが確認できる。
一方で、開発支援装置100は、同期が取れていない場合(S120のNO判定時)には、ステップS130により同期処理を実行した後で、再度、ステップS120の判定を実行する。このように、変数定義リスト52及び変数リスト203の間で変数が一致する状態が確認された後に、ステップS140以降の処理は実行される。
開発支援装置100は、ステップS140では、図6の抽出部55と同様の処理により、ソースコード51で使用されていない不使用変数V1を抽出する。更に、開発支援装置100は、ステップS150では、図6の取得部56と同様の処理により、外部機器300(制御対象)で使用されるデバイス使用変数V2を特定するための情報、具体的には、図5でのアクセス情報201、コネクション設定情報202、及び、変数マッピング305Cを取得する。ステップS140及びS150は、並列に処理されても良く、図7とは逆に、ステップS150がステップS140より先に実行されてもよい。
開発支援装置100は、ステップS140及びS150に続いて、ステップS160により、図6の判定部57と同様の処理により、不使用変数V1(S140)及びデバイス使用変数V2(S150)の照合により、不使用変数V1の各々について、削除可能及び削除不能の何れであるかを判定する。これにより、ステップS170では、図6の判定部57と同様に、削除可能変数V3を抽出することができる。
開発支援装置100は、ステップS180では、図6に示された変数削除部59と同様に、変数定義リスト52に含まれる変数から削除可能変数V3を削除する。
図7に示された制御処理によれば、ユーザ起動指示に応答した不要変数削除処理の起動によって、自動的に判定された削除可能変数V3が削除された内容に、変数定義リスト52を更新することができる。
或いは、図8に示されるように、開発支援装置100は、図6でも説明したユーザインターフェイス処理のためのステップS172,S175,S185を、図7の制御処理に加えて実行することも可能である。
開発支援装置100は、ステップS170による削除可能変数V3の抽出が完了するとS172により、表示部118を用いて、削除可能変数V3をユーザに報知するとともに、当該削除可能変数V3の削除を実行してよいかの確認を求める。
更に、開発支援装置100は、ステップS175により、ステップS172の確認に対するユーザ指示を判定する。ユーザから削除指示が入力された場合、例えば、ステップS170による「これらの変数を削除しますか?」との表示に対して、「YES」がクリックされた場合には、ステップS175がYES判定とされて、処理は、削除可能変数V3を削除するためのステップS180に進められる。
一方で、上記表示に対して、「NO」がクリックされた場合には、ステップS175がNO判定とされるため、ステップS180がスキップされて、不要変数削除処理が終了される。この場合には、削除可能変数V3は削除されず、変数定義リスト52は、不要変数削除処理の起動前の内容に維持される。
開発支援装置100は、ステップS180によって変数定義リスト52が更新されると、ステップS185により、不要変数削除処理が終了した旨のメッセージをユーザに対して出力する。尚、ステップS180による変数削除が実行された場合には、ステップS185において、更新後の変数定義リスト52を反映するためのソースプログラムの再ビルドを促すメッセージを更に出力してもよい。
以上説明したように、本開示によれば、ソースプログラム内での不利用変数(V1)の抽出、及び、制御プログラム実行時における外部機器300(制御対象)からアクセスされる変数(V2)の特定により、制御プログラム内において削除可能である不要な変数を適切に抽出することができる。
<付記>
上述したような本実施の形態及び変形例は、以下のような技術思想を含む。
[構成1]
制御対象(300)を制御する制御装置(200)用の制御プログラム(210)の開発を支援するための開発支援装置(100)であって、
前記制御プログラムのソースコード(51)及び当該ソースコードで使用する複数の変数を宣言する第1のリスト(52)を記憶する記憶部(104,120)と、
前記第1のリスト内の前記複数の変数から前記ソースコードで不使用である第1の変数(V1)を抽出する抽出部(55)と、
前記制御プログラムの実行状態において、前記複数の変数のうちの前記制御対象が使用する第2の変数(V2)を特定するための情報(201,202,305C)を取得する取得部(56)と、
前記抽出部による抽出結果と、前記情報取得部によって取得された前記情報とに基づいて、前記第1の変数のうちの前記第2の変数に非該当である第3の変数(V3)を前記第1のリストから削除可能と判定する判定部(57)とを備える、開発支援装置。
[構成2]
前記制御対象(300)は、ネットワークによって前記制御装置(200)と接続されるとともに、前記制御プログラムの実行中に、予め作成された第2のリスト(202,305C)に示された変数を前記制御装置から読み出すように構成され、
前記取得部(56)は、前記制御対象から直接、又は、前記制御装置を介して前記制御対象から、前記第2のリストに示された変数を特定する情報を取得する、構成1に記載の開発支援装置。
[構成3]
前記制御対象(300)は、ネットワーク(NW1)によって前記制御装置(200)と接続されるとともに、前記制御プログラムの実行中に当該ネットワークを経由して前記制御対象にアクセスして前記複数の変数の一部の変数を読み出すように構成され、
前記制御装置は、前記制御プログラムの実行中に前記制御対象から読み出された変数名をアクセス情報(201)として保持し、
前記取得部(56)は、前記制御プログラムの実行時に前記アクセス情報を前記制御装置から前記情報として取得する、構成1に記載の開発支援装置。
[構成4]
前記第3の変数(V3)を前記第1のリスト(52)から削除する変数削除部(59)を更に備える、構成1~3のいずれか1項に記載の開発支援装置。
[構成5]
ユーザの操作を入力するためのインターフェイス部(58)を更に備え、
前記抽出部(55)、前記取得部(56)、及び、前記判定部(57)は、インターフェイス部に対する、不要変数の削除処理を起動する第1の操作の入力に応じて動作し、
前記インターフェイス部は、前記判定部によって抽出された前記第3の変数(V3)を前記第1のリスト(52)から削除するか否かを前記ユーザに求めるメッセージを出力し、
前記変数削除部(59)は、前記インターフェイス部に対する、前記メッセージに応じた前記第3の変数の削除を指示する第2の操作の入力に応じて動作する、構成4記載の開発支援装置。
[構成6]
前記第1の操作が入力されると、前記制御装置(200)及び前記開発支援装置(100)の間で前記制御プログラム(210)の同期が確保された後に、前記抽出部(55)、前記取得部(56)、及び、前記判定部(57)を動作させる、構成5に記載の開発支援装置。
[構成7]
制御対象(300)を制御する制御装置(200)用の制御プログラム(210)の、コンピュータによって実行される開発支援方法であって、
前記制御プログラムのソースコード(51)で使用される複数の変数を宣言するリスト(52)から前記ソースコードで不使用である第1の変数(V1)を抽出するステップ(S140)と、
前記制御プログラムの実行状態において、前記複数の変数のうちの前記制御対象が使用する第2の変数(V2)を特定するための情報(201,202,305C)を取得するステップ(S150)と、
前記抽出するステップでの抽出結果と、前記取得するステップで取得された前記情報とに基づいて、前記第1の変数のうちの前記第2の変数に非該当である第3の変数(V3)を前記リストから削除可能と判定するステップ(S160,S170)とを備える、開発支援方法。
[構成8]
制御対象(300)を制御する制御装置(200)用の制御プログラム(210)の開発支援プログラム(50)であって、
前記開発支援プログラムは、コンピュータに、
前記制御プログラムのソースコード(51)で使用される複数の変数を宣言するリスト(52)から前記ソースコードで不使用である第1の変数(V1)を抽出するステップ(S140)と、
前記制御プログラムの実行状態において、前記複数の変数のうちの前記制御対象が使用する第2の変数(V2)を特定するための情報(201,202,305C)を取得するステップと、
前記抽出するステップでの抽出結果と、前記取得するステップで取得された前記情報とに基づいて、前記第1の変数のうちの前記第2の変数に非該当である第3の変数(V3)を前記リストから削除可能と判定するステップ(S160,S170)とを実行させる、開発支援プログラム。
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内での全ての変更が含まれることが意図される。
10 FAシステム、50 開発支援プログラム、51 ソースコード、52 変数定義リスト、55 抽出部、56 取得部、57 判定部、58 ユーザインターフェイス部、59 変数削除部、100 開発支援装置、102 プロセッサ、104 主メモリ、111 通信インターフェイス、114 I/Oインターフェイス、115 操作部、117 表示インターフェイス、118 表示部、120 記憶装置、125 内部バス、200 制御装置、201 アクセス情報、202 コネクション設定情報、233 変数リスト、210 制御プログラム、210s ソースプログラム、211 実行コード、212 メモリ領域、220 ラダー回路、221 入力側母線、222 出力側母線、224 接点、226 コイル、227 接続線、250 ネットワークインターフェイス、300 外部機器、300A~300C デバイス、301A~301C 機器、305A サブスクリプション設定、305B データリンク設定、305C 変数マッピング、NW1,NW2 ネットワーク、OPT1~OPT4,aa,bb,cc 変数。

Claims (8)

  1. 制御対象を制御する制御装置用の制御プログラムの開発を支援するための開発支援装置であって、
    前記制御プログラムのソースコード及び当該ソースコードで使用する複数の変数を宣言する第1のリストを記憶する記憶部と、
    前記第1のリスト内の前記複数の変数から前記ソースコードで不使用である第1の変数を抽出する抽出部と、
    前記制御プログラムの実行状態において、前記複数の変数のうちの前記制御対象が使用する第2の変数を特定するための情報を取得する取得部と、
    前記抽出部による抽出結果と、前記取得部によって取得された前記情報とに基づいて、前記第1の変数のうちの前記第2の変数に非該当である第3の変数を前記第1のリストから削除可能と判定する判定部とを備える、開発支援装置。
  2. 前記制御対象は、ネットワークによって前記制御装置と接続されるとともに、前記制御プログラムの実行中に、予め作成された第2のリストに示された変数を前記制御装置から読み出すように構成され、
    前記取得部は、前記制御対象から直接、又は、前記制御装置を介して前記制御対象から、前記第2のリストに示された変数を特定する情報を取得する、請求項1記載の開発支援装置。
  3. 前記制御対象は、ネットワークによって前記制御装置と接続されるとともに、前記制御プログラムの実行中に当該ネットワークを経由して前記制御対象にアクセスして前記複数の変数の一部の変数を読み出すように構成され、
    前記制御装置は、前記制御プログラムの実行中に前記制御対象から読み出された変数名をアクセス情報として保持し、
    前記取得部は、前記制御プログラムの実行時に前記アクセス情報を前記制御装置から前記情報として取得する、請求項1記載の開発支援装置。
  4. 前記第3の変数を前記第1のリストから削除する変数削除部を更に備える、請求項1~3のいずれか1項に記載の開発支援装置。
  5. ユーザの操作を入力するためのインターフェイス部を更に備え、
    前記抽出部、前記取得部、及び、前記判定部は、前記インターフェイス部に対する、不要変数の削除処理を起動する第1の操作の入力に応じて動作し、
    前記インターフェイス部は、前記判定部によって抽出された前記第3の変数を前記第1のリストから削除するか否かを前記ユーザに求めるメッセージを出力し、
    前記変数削除部は、前記インターフェイス部に対する、前記メッセージに応じた前記第3の変数の削除を指示する第2の操作の入力に応じて動作する、請求項4記載の開発支援装置。
  6. 前記第1の操作が入力されると、前記制御装置及び前記開発支援装置の間で前記制御プログラムの同期が確保された後に、前記抽出部、前記取得部、及び、前記判定部を動作させる、請求項5記載の開発支援装置。
  7. 制御対象を制御する制御装置用の制御プログラムの、コンピュータによって実行される開発支援方法であって、
    前記制御プログラムのソースコードで使用される複数の変数を宣言するリストから前記ソースコードで不使用である第1の変数を抽出するステップと、
    前記制御プログラムの実行状態において、前記複数の変数のうちの前記制御対象が使用する第2の変数を特定するための情報を取得するステップと、
    前記抽出するステップでの抽出結果と、前記取得するステップで取得された前記情報とに基づいて、前記第1の変数のうちの前記第2の変数に非該当である第3の変数を前記リストから削除可能と判定するステップとを備える、開発支援方法。
  8. 制御対象を制御する制御装置用の制御プログラムの開発支援プログラムであって、
    前記開発支援プログラムは、コンピュータに、
    前記制御プログラムのソースコードで使用される複数の変数を宣言するリストから前記ソースコードで不使用である第1の変数を抽出するステップと、
    前記制御プログラムの実行状態において、前記複数の変数のうちの前記制御対象が使用する第2の変数を特定するための情報を取得するステップと、
    前記抽出するステップでの抽出結果と、前記取得するステップで取得された前記情報とに基づいて、前記第1の変数のうちの前記第2の変数に非該当である第3の変数を前記リストから削除可能と判定するステップとを実行させる、開発支援プログラム。
JP2021039322A 2021-03-11 2021-03-11 開発支援装置、開発支援方法、及び、開発支援プログラム Pending JP2022139087A (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2021039322A JP2022139087A (ja) 2021-03-11 2021-03-11 開発支援装置、開発支援方法、及び、開発支援プログラム
CN202180094743.8A CN116917818A (zh) 2021-03-11 2021-09-21 开发辅助装置、开发辅助方法以及开发辅助程序
EP21930276.7A EP4307060A1 (en) 2021-03-11 2021-09-21 Development assistance device, development assistance method, and development assistance program
US18/279,258 US20240143287A1 (en) 2021-03-11 2021-09-21 Development support device, development support method, and non-transitory storage medium
PCT/JP2021/034614 WO2022190428A1 (ja) 2021-03-11 2021-09-21 開発支援装置、開発支援方法、及び、開発支援プログラム

Applications Claiming Priority (1)

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

Publications (1)

Publication Number Publication Date
JP2022139087A true JP2022139087A (ja) 2022-09-26

Family

ID=83227814

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021039322A Pending JP2022139087A (ja) 2021-03-11 2021-03-11 開発支援装置、開発支援方法、及び、開発支援プログラム

Country Status (5)

Country Link
US (1) US20240143287A1 (ja)
EP (1) EP4307060A1 (ja)
JP (1) JP2022139087A (ja)
CN (1) CN116917818A (ja)
WO (1) WO2022190428A1 (ja)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07239788A (ja) * 1994-02-28 1995-09-12 Hokuriku Nippon Denki Software Kk 不要変数型宣言チェック機能付きコンパイラ
US7024463B1 (en) * 1999-10-15 2006-04-04 Omron Corporation Network system, control method, control apparatus, and multiprocessor
JP2002062910A (ja) * 2000-08-22 2002-02-28 Digital Electronics Corp エディタ装置およびエディタプログラムを記録した記録媒体
JP4379687B2 (ja) * 2003-07-25 2009-12-09 オムロン株式会社 シミュレーション支援ツールおよびラダープログラムの検証システムならびにプログラム製品
JP4420210B2 (ja) 2004-06-08 2010-02-24 オムロン株式会社 プログラム開発支援装置および処理方法
JP2012118715A (ja) * 2010-11-30 2012-06-21 Fuji Electric Co Ltd Plcシステム、その開発支援装置、プログラム
JP6551565B2 (ja) * 2017-06-02 2019-07-31 オムロン株式会社 工程解析装置、工程解析方法、及び工程解析プログラム
JP7047700B2 (ja) * 2018-10-16 2022-04-05 オムロン株式会社 制御システム、制御装置、端末装置、及びプログラム

Also Published As

Publication number Publication date
WO2022190428A1 (ja) 2022-09-15
US20240143287A1 (en) 2024-05-02
CN116917818A (zh) 2023-10-20
EP4307060A1 (en) 2024-01-17

Similar Documents

Publication Publication Date Title
US7272458B2 (en) Control system setting device
US9423789B2 (en) System for accessing and browsing a PLC provided within a network
US7308550B2 (en) System for portable PLC configurations
US7512593B2 (en) System for searching across a PLC network
US7860874B2 (en) Method for searching across a PLC network
CN112602025A (zh) 工业控制器的数字孪生的自动设置
US20050270063A1 (en) Method for portable PLC configurations
US9122269B2 (en) Method and system for operating a machine from the field of automation engineering
US20060069689A1 (en) Method for accessing and browsing a PLC provided within a network
CN115657564A (zh) 一种免编程现场控制装置及方法
JP7063009B2 (ja) 表示装置、画面生成方法、および画面生成プログラム
WO2022190428A1 (ja) 開発支援装置、開発支援方法、及び、開発支援プログラム
US11321052B2 (en) Development support device, development support method, and non-transitory computer readable medium
WO2022190427A1 (ja) 開発支援装置、開発支援方法、及び、開発支援プログラム
US11199993B2 (en) Control system, development assistance device, and development assistance program
JP6396084B2 (ja) エンジニアリング装置、エンジニアリングシステム、およびダウンロード処理方法
JP2017220142A (ja) プログラミング装置
CN113641350A (zh) 软件开发环境提供系统、方法和非临时性计算机可读介质
WO2022190417A1 (ja) 開発支援装置、開発支援方法および開発支援プログラム
JP2007172128A (ja) I/oシミュレータ装置
WO2020026738A1 (ja) サポート装置およびサポートプログラム
JP2015125653A (ja) 制御装置および通信制御方法