IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オムロン株式会社の特許一覧

特許7600787開発支援装置、開発支援方法、及び、開発支援プログラム
<>
  • 特許-開発支援装置、開発支援方法、及び、開発支援プログラム 図1
  • 特許-開発支援装置、開発支援方法、及び、開発支援プログラム 図2
  • 特許-開発支援装置、開発支援方法、及び、開発支援プログラム 図3
  • 特許-開発支援装置、開発支援方法、及び、開発支援プログラム 図4
  • 特許-開発支援装置、開発支援方法、及び、開発支援プログラム 図5
  • 特許-開発支援装置、開発支援方法、及び、開発支援プログラム 図6
  • 特許-開発支援装置、開発支援方法、及び、開発支援プログラム 図7
  • 特許-開発支援装置、開発支援方法、及び、開発支援プログラム 図8
  • 特許-開発支援装置、開発支援方法、及び、開発支援プログラム 図9
  • 特許-開発支援装置、開発支援方法、及び、開発支援プログラム 図10
  • 特許-開発支援装置、開発支援方法、及び、開発支援プログラム 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-09
(45)【発行日】2024-12-17
(54)【発明の名称】開発支援装置、開発支援方法、及び、開発支援プログラム
(51)【国際特許分類】
   G05B 19/05 20060101AFI20241210BHJP
【FI】
G05B19/05 A
【請求項の数】 6
(21)【出願番号】P 2021039323
(22)【出願日】2021-03-11
(65)【公開番号】P2022139088
(43)【公開日】2022-09-26
【審査請求日】2024-01-16
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】長尾 健次郎
【審査官】田中 成彦
(56)【参考文献】
【文献】特開2002-062910(JP,A)
【文献】特開2009-009607(JP,A)
【文献】特開2017-204090(JP,A)
【文献】特開2017-102534(JP,A)
【文献】特開2013-156802(JP,A)
【文献】特開2012-168598(JP,A)
【文献】特開2010-049484(JP,A)
【文献】特開平03-223927(JP,A)
【文献】中国特許出願公開第106407111(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/05
G06F 9/44
(57)【特許請求の範囲】
【請求項1】
制御対象を制御する制御装置用の制御プログラムの開発を支援するための開発支援装置であって、
前記制御プログラムのソースコード及び当該ソースコードで使用する複数の変数を宣言する第1のリストを記憶する記憶部と、
前記第1のリスト内の前記複数の変数から前記ソースコードで不使用である第1の変数を抽出する抽出部と、
前記制御プログラムの実行前の状態において、前記複数の変数のうちの、前記制御対象及び前記制御装置の間で授受される可能性を有する第2の変数を特定するための情報を取得する取得部と、
前記制御プログラムの実行前の状態において、前記抽出部による抽出結果と、前記取得部によって取得された前記情報とに基づいて、前記第1の変数のうちの前記第2の変数に該当する変数を前記第1のリストから削除不能と判定する判定部とを備え、
前記複数の変数の各々は、前記制御対象及び前記制御装置を含むネットワークに対する当該変数の公開の有無を定義する属性情報を有し、
前記取得部は、前記属性情報を前記第2の変数を特定するための情報として取得し、
前記判定部は、前記複数の変数のうちの、前記属性情報によって前記ネットワークに対して公開することが指定された変数を前記第2の変数として、前記第1のリストから削除不能と判定する、開発支援装置。
【請求項2】
前記判定部は、前記制御プログラムの実行前の状態において、前記抽出部による抽出結果と、前記取得部によって取得された前記情報に基づいて、前記第1の変数のうちの前記第2の変数に非該当である第3の変数を前記第1のリストから削除可能と判定する、請求項1記載の開発支援装置。
【請求項3】
前記第3の変数を前記第1のリストから削除する変数削除部を更に備える、請求項記載の開発支援装置。
【請求項4】
ユーザの操作を入力するためのインターフェイス部を更に備え、
前記抽出部、前記取得部、及び、前記判定部は、前記インターフェイス部に対する、不要変数の削除処理を起動する第1の操作の入力に応じて動作し、
前記インターフェイス部は、前記判定部によって抽出された前記第3の変数を前記第1のリストから削除するか否かの確認を前記ユーザに求めるメッセージを出力し、
前記変数削除部は、前記インターフェイス部に対する、前記メッセージに応じた前記第3の変数の削除を指示する第2の操作の入力に応じて動作する、請求項記載の開発支援装置。
【請求項5】
制御対象を制御する制御装置用の制御プログラムの、コンピュータによって実行される開発支援方法であって、
前記制御プログラムのソースコードで使用される複数の変数を宣言するリストから前記ソースコードで不使用である第1の変数を抽出するステップと、
前記制御プログラムの実行前の状態において、前記複数の変数のうちの、前記制御対象及び前記制御装置の間で授受される可能性を有する第2の変数を特定するための情報を取得するステップと、
前記制御プログラムの実行前の状態において、前記抽出するステップでの抽出結果と、前記取得するステップで取得された前記情報とに基づいて、前記第1の変数のうちの前記第2の変数に該当する変数を前記リストから削除不能と判定するステップとを備え、
前記複数の変数の各々は、前記制御対象及び前記制御装置を含むネットワークに対する当該変数の公開の有無を定義する属性情報を有し、
前記取得するステップは、前記属性情報を前記第2の変数を特定するための情報として取得し、
前記判定するステップは、前記複数の変数のうちの、前記属性情報によって前記ネットワークに対して公開することが指定された変数を前記第2の変数として、前記リストから削除不能と判定する、開発支援方法。
【請求項6】
制御対象を制御する制御装置用の制御プログラムの開発支援プログラムであって、
前記開発支援プログラムは、コンピュータに、
前記制御プログラムのソースコードで使用される複数の変数を宣言するリストから前記ソースコードで不使用である第1の変数を抽出するステップと、
前記制御プログラムの実行前の状態において、前記複数の変数のうちの、前記制御対象及び前記制御装置の間で授受される可能性を有する第2の変数を特定するための情報を取得するステップと、
前記制御プログラムの実行前の状態において、前記抽出するステップでの抽出結果と、前記取得するステップで取得された前記情報とに基づいて、前記第1の変数のうちの前記第2の変数に該当する変数を前記リストから削除不能と判定するステップとを実行させ、
前記複数の変数の各々は、前記制御対象及び前記制御装置を含むネットワークに対する当該変数の公開の有無を定義する属性情報を有し、
前記取得するステップは、前記属性情報を前記第2の変数を特定するための情報として取得し、
前記判定するステップは、前記複数の変数のうちの、前記属性情報によって前記ネットワークに対して公開することが指定された変数を前記第2の変数として、前記リストから削除不能と判定する、開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、制御対象を制御する制御装置用の制御プログラムの開発を支援するための技術に関する。
【背景技術】
【0002】
FA(Factory Automation)システムに代表される様々な製造現場において、PLC(Programmable Logic Controller)等の制御装置が導入されている。このような制御装置は、一種のコンピュータであり、製造装置や製造設備等の制御対象に応じて設計された制御プログラムが実行されることで、当該制御対象を制御することができる。一般的に、制御プログラムは、コントローラとは別に用意された開発支援装置を用いて作成される。
【0003】
このような制御プログラムは、一般的に、予め宣言された変数を用いて記述される。例えば、特開2005-352612号公報(特許文献1)には、変数の検索性を高めることで制御プログラムの開発効率を高めることができるプログラム開発支援装置が開示される。特許文献1のプログラム開発支援装置では、所定の命令に対するオペランドを入力した場合に、キーワード(文字列)の指定に応じて、当該文字列を含む変数名の変数のみを一覧表示する絞り込みを行うことによって、変数の検索性が高められる。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2005-352612号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記の制御プログラムのソースプログラムでは、変数を宣言するための定義リストが設けられており、当該定義リスト中で宣言された変数がソースコード内で使用可能となる。
【0006】
一方で、当該制御プログラムの変更又は編集の際に、ソースコード内で削除された変数についても、定義リスト内に残されている場合には、制御プログラムの実行時に当該変数に対応するメモリ領域が確保される。このため、制御装置のメモリ領域を効率的に使用する観点からは、不要な変数については定義リストから削除することが好ましい。
【0007】
一方で、制御プログラムの実行時には、制御装置及び制御対象の間でネットワークが構築されて制御対象が制御されるため、必要な変数を削除してしまうと制御対象に影響を与えることが懸念される。
【0008】
本開示は上述のような問題点を解決するためになされたものであって、ある局面における目的は、制御対象を制御する制御装置用の制御プログラム内での不使用変数の削除による制御対象側への影響を抑制することが可能な開発支援装置を提供することである。他の局面における目的は、制御プログラム内での不使用変数の削除による制御対象側への影響を抑制することが可能な開発支援方法を提供することである。更なる他の局面における目的は、制御プログラム内での不使用変数の削除による制御対象側への影響を抑制することが可能な開発支援プログラムを提供することである。
【課題を解決するための手段】
【0009】
本開示の一例によれば、制御対象を制御する制御装置用の制御プログラムの開発を支援するための開発支援装置が提供される。開発支援装置は、記憶部と、抽出部と、取得部と、判定部とを備える。記憶部は、制御プログラムのソースコード及び当該ソースコードで使用する複数の変数を宣言する第1のリストを記憶する。抽出部は、第1のリスト内の複数の変数からソースコードで不使用である第1の変数を抽出する。取得部は、制御プログラムの実行前の状態において、複数の変数のうちの、制御対象及び制御装置の間で授受される可能性を有する第2の変数を特定するための情報を取得する。判定部は、制御プログラムの実行前の状態において、抽出部による抽出結果と、取得部によって取得された情報とに基づいて、第1の変数のうちの第2の変数に該当する変数を第1のリストから削除不能と判定する。
【0010】
この開示によれば、開発支援装置は、制御プログラムのソースコードでの不使用変数であっても、制御プログラムの実行時に制御対象で使用される可能性を有する第2の変数については、第1のリストから削除不能とすることができる。その結果、制御プログラム内での不使用変数の削除による制御対象側への影響を抑制することができる。
【0011】
上述の開示において、複数の変数の各々は、制御対象及び制御装置を含むネットワークに対する当該変数の公開の有無を定義する属性情報を有してもよい。取得部は、属性情報を第2の変数を特定するための情報として取得するように構成されてもよい。判定部は、複数の変数のうちの、属性情報によってネットワークに対して公開することが指定された変数を第2の変数として、第1のリストから削除不能と判定するように構成されてもよい。
【0012】
この開示によれば、各変数で定義される属性情報に基づいて、制御プログラムの実行時に制御対象で使用される可能性を有する第2の変数を特定する情報を簡易に取得できる。
【0013】
上述の開示において、取得部は、制御プログラムの実行前の状態において、制御プログラムが実行される際の制御対象及び制装置の間での授受対象に指定されている変数を示す第2のリストを第2の変数を特定するための情報として取得するように構成されてもよい。
【0014】
この開示によれば、制御プログラムの実行前の状態に作成されているリスト(第2のリスト)を用いて、制御対象が使用する第2の変数を特定する情報を簡易に取得できる。
【0015】
上述の開示において、取得部は、ユーザに指定された1又は複数のプロジェクトの第2のリストを情報として取得するように構成されてもよい。判定部は、複数の変数のうちの、少なくともいずれかのプロジェクトにおいて第2のリストに含まれる変数を第2の変数として判定を実行するように構成されてもよい。
【0016】
この開示によれば、制御装置及び制御対象を含むネットワークに複数個のプロジェクトが適用される場合に、不要変数削除処理が適用されるプロジェクトの範囲をユーザが選択することができる。
【0017】
上述の開示において、判定部は、制御プログラムの実行前の状態において、抽出部による抽出結果と、取得部によって取得された情報に基づいて、第1の変数のうちの第2の変数に非該当である第3の変数を第1のリストから削除可能と判定するように構成されてもよい。
【0018】
この開示によれば、制御プログラムのソースコードでの不使用変数から、制御プログラムの実行時に制御対象で使用される可能性を有する第2の変数を除外して、第1のリストから削除可能な変数を判定することができる。
【0019】
上述の開示において、開発支援装置は、第3の変数を第1のリストから削除する変数削除部を更に備えるように構成されてもよい。
【0020】
この開示によれば、判定部によって削除可能と判定された第3の変数が削除された内容に、第1のリストを自動的に更新することができる。
【0021】
上述の開示において、開発支援装置は、ユーザの操作を入力するためのインターフェイス部を更に備えるように構成されてもよい。抽出部、取得部、及び、判定部は、インターフェイス部に対する、不要変数の削除処理を起動する第1の操作の入力に応じて動作するように構成されてもよい。インターフェイス部は、判定部によって抽出された第3の変数を第1のリストから削除するか否かをユーザに求めるメッセージを出力するように構成されてもよい。変数削除部は、インターフェイス部に対する、メッセージに応じた第3の変数の削除を指示する第2の操作の入力に応じて動作するように構成されてもよい。
【0022】
この開示によれば、ユーザ操作に応じて起動された不要変数の削除処理において、判定部によって削除可能と判定された第3の変数を、ユーザによる確認後に第1のリストから削除することができる。
【0023】
本開示の他の例では、コンピュータによって実行される、制御対象を制御する制御装置用の制御プログラムの開発支援方法が提供される。開発支援方法は、制御プログラムのソースコードで使用される複数の変数を宣言するリストからソースコードで不使用である第1の変数を抽出するステップと、制御プログラムの実行前の状態において、複数の変数のうちの、制御対象及び制御装置の間で授受される可能性を有する第2の変数を特定するための情報を取得するステップと、制御プログラムの実行前の状態において、抽出するステップでの抽出結果と、取得するステップで取得された情報とに基づいて、第1の変数のうちの第2の変数に該当する変数をリストから削除不能と判定するステップとを備える。
【0024】
本開示の更に他の例では、制御対象を制御する制御装置用の制御プログラムの開発支援プログラムが提供される。開発支援プログラムは、制御プログラムのソースコードで使用される複数の変数を宣言するリストからソースコードで不使用である第1の変数を抽出するステップと、制御プログラムの実行前の状態において、複数の変数のうちの、制御対象及び制御装置の間で授受される可能性を有する第2の変数を特定するための情報を取得するステップと、制御プログラムの実行前の状態において、抽出するステップでの抽出結果と、取得するステップで取得された情報とに基づいて、第1の変数のうちの第2の変数に該当する変数をリストから削除不能と判定するステップとを、コンピュータに実行させる。
【0025】
この開示によれば、開発支援方法及び開発支援プログラムは、制御プログラムのソースコードでの不使用変数であっても、制御プログラムの実行時に制御対象で使用される可能性を有する第2の変数については、リストから削除不能とすることができる。その結果、制御プログラム内での不使用変数の削除による制御対象側への影響を抑制することができる。
【発明の効果】
【0026】
本開示によれば、制御対象を制御する制御装置用の制御プログラム内での不使用変数の削除による制御対象側への影響を抑制することができる。
【図面の簡単な説明】
【0027】
図1】本実施の形態に係る開発支援装置が適用されるFAシステムの構成例を示す概略図である。
図2】開発支援装置のハードウェア構成の一例を示す模式図である。
図3】制御プログラムの運用を説明する概念図である。
図4】制御プログラムの一例を説明する概念図である。
図5】本実施の形態に係る開発支援装置による不要変数削除処理の第1の例の構成を説明するブロック図である。
図6】本実施の形態に係る開発支援装置による不要変数削除処理の第1の例を説明するフローチャートである。
図7図6の不要変数削除処理の変形例を説明するフローチャートである。
図8】外部機器から制御装置へのアクセス態様を説明する概略図である。
図9】不要変数削除処理の第2の例が適用される制御プログラムの運用を説明する概念図である。
図10】本実施の形態に係る開発支援装置による不要変数削除処理の第2の例の構成を説明するブロック図である。
図11】本実施の形態に係る開発支援装置による不要変数削除処理の第2の例を説明するフローチャートである。
【発明を実施するための形態】
【0028】
以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品及び構成要素には同一の符号を付してある。それらの名称及び機能も同じである。従って、これらについての詳細な説明は原則的には繰り返さない。
【0029】
<適用例>
図1は、本実施の形態に係る開発支援装置が適用されるFAシステム10の構成の一例を示す概略図である。まず、図1を参照して、FAシステム10のシステム構成について説明する。
【0030】
FAシステム10は、1つ以上の開発支援装置100と、1つ以上の制御装置(コントローラ)200と、制御装置200によって制御される外部機器300とを備える。
【0031】
開発支援装置100は、例えば、ノート型またはデスクトップ型のPC(Personal Computer)、タブレット端末、スマートフォン、または、その他の情報処理装置である。
【0032】
開発支援装置100には、開発支援プログラム50がインストールされている。開発支援プログラム50は、制御装置200用の制御プログラム210の開発を支援するためのアプリケーションである。開発支援プログラム50は、たとえば、オムロン社製の「Sysmac Studio」である。ユーザは、開発支援プログラム50上で制御装置200用の制御プログラムを設計し、設計した制御プログラム210をコントローラにダウンロードすることができる。或いは、開発支援装置100は、制御装置200からデータ等をアップロードすることも可能である。
【0033】
制御装置200及び外部機器300は、開発支援装置100が接続可能なネットワークNW1に接続されている。ネットワークNW1には、Ethernet(登録商標)等が採用される。制御装置200は、例えば、PLCによって構成される。
【0034】
制御装置200及び外部機器300は、ネットワークNW2に接続されている。ネットワークNW2には、データの到達時間が保証される、定周期通信を行うフィールドネットワークを採用することが好ましい。このような定周期通信を行うフィールドネットワークとしては、OPC UA(登録商標)等が知られている。
【0035】
外部機器300は、生産工程を自動化するための種々の産業用機器、各種センサ類、及び、HMI(Human Machine Interface)機器等によって構成される。外部機器300は、ネットワークNW1又はNMW2に接続されるデバイス300A~300Cと、機器301A~301Cとを含む。機器301A~301Cは、デバイス300A~300CによってネットワークNW1,NW2を介して制御装置200と通信接続される。これにより、制御装置200で実行される制御プログラムによって、機器301A~301Cを制御することができる。即ち、外部機器300は、制御プログラムによって制御される「制御対象」に対応する。
【0036】
図1の例では、機器301Aと接続されるデバイス300Aは、OPC UAが適用されたネットワークNW2と接続されるものとする。又、機器301Bと接続されるデバイス300B、及び、機器301Cと接続されるデバイス300Cは、Ethernetが適用されたネットワークNW1と接続されるものとする。
【0037】
<開発支援装置の構成>
図2には、開発支援装置100のハードウェア構成の一例を示す模式図が示される。
【0038】
開発支援装置100は、一例として、汎用的なコンピュータアーキテクチャに準じて構成されるコンピュータからなる。開発支援装置100は、CPU(Central Processing Unit)やMPU(Micro-Processing Unit)などのプロセッサ102と、主メモリ104と、通信インターフェイス111と、I/O(Input/Output)インターフェイス114と、表示インターフェイス117と、不揮発性の記憶装置120とを含む。これらのコンポーネントは、内部バス125を介して互いに通信可能に接続されている。
【0039】
プロセッサ102は、記憶装置120に格納されている開発支援プログラム50を主メモリ104に展開して実行することで、制御プログラム210(図1参照)の開発ツールを起動する。記憶装置120は、開発支援プログラム50の他にも、各種のデータ及びプログラム60を格納する。制御プログラム210のソースプログラムは、主メモリ104又は記憶装置120に記憶される。即ち、主メモリ104及び記憶装置120は「記憶部」の一実施例に対応する。
【0040】
通信インターフェイス111は、他の通信機器との間でネットワークを介してデータを遣り取りする。当該他の通信機器は、例えば、図1に示された制御装置200及び外部機器300、及び、図示しないサーバ等を含む。開発支援装置100は、通信インターフェイス111を介して、当該他の通信機器から、開発支援プログラム50などの各種プログラムをダウンロード可能なように構成されてもよい。
【0041】
I/Oインターフェイス114は、操作部115に接続され、操作部115からのユーザ操作を示す信号を取り込む。操作部115は、典型的には、キーボード、マウス、タッチパネル、タッチパッドなどからなり、ユーザからの操作を受け付ける。操作部115は、開発支援装置100と一体的に構成されてもよいし、開発支援装置100とは別に構成されてもよい。
【0042】
表示インターフェイス117は、表示部118と接続され、プロセッサ102などからの指令に従って、表示部118に対して、画像を表示するための画像信号を送出する。表示部118は、LCD(Liquid Crystal Display)や有機EL(Electro Luminescence)ディスプレイ等によって構成され、ユーザに対して各種情報を提示する。表示部118は、開発支援装置100と一体的に構成されてもよいし、開発支援装置100とは別に構成されてもよい。
【0043】
尚、図2には、CPU等のプロセッサ102がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOSを並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。又、上述の説明においては、開発支援装置100がすべての処理を実行する形態について例示したが、これに限らず、複数の装置が連携して上述したような機能を提供するようにしてもよい。さらに、一部または全部の機能をサーバ上のいわゆるクラウドと称される計算リソースを利用して実現してもよい。
【0044】
<制御プログラム>
次に、制御プログラムについて説明する。
【0045】
図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)によって記述される場合について説明する。
【0046】
開発支援装置100では、ソースプログラム210sがビルドされることにより、制御プログラム210の実行コード211が作成されて、制御装置200にダウンロードされる。この際に、制御装置200では、制御プログラム210用に、変数定義リスト52で宣言された変数を格納するためのメモリ領域212が確保される。
【0047】
デバイス300A~300Cは、ネットワークインターフェイス250を介したネットワークNW1又はNW2によるデータ通信により、メモリ領域212の変数にアクセス可能である。例えば、図3の例では、斜線を付した領域に格納される変数が、外部機器300(デバイス300A~300C)からアクセスされている。或いは反対に、デバイス300A~300C側から制御装置200(メモリ領域212)に対してデータを入力することも可能である。
【0048】
図4には、制御プログラムの一例を説明する概念図が示される。図4(a)には、制御プログラムの一例であるラダープログラムによって記述されるラダー回路の一例が示される。図4(b)には、図3で説明した変数定義リストの一例が示される。
【0049】
図4(a)に示されるように、ラダープログラムは、入力側母線221と出力側母線222との間に回路要素と接続線とを用いた論理回路を梯子状に描いたラダー回路220により表現される。
【0050】
図4(a)の例では、ラダー回路220は、変数aaの値に応じてオン/オフされる接点224と、オン/オフ結果を変数bbとして出力するコイル226とを含む。ラダー回路は、接点224及びコイル226といった回路要素を互いに接続線227で繋ぐことで描かれる。例えば、変数bbは他のラダー回路(図示せず)の接点を開閉する変数として更に用いられる。或いは、変数aaは、他のラダー回路(図示せず)のコイルの出力値である。このようなラダー回路の階層的な組み合わせによって、制御装置200が外部機器300を制御するための制御動作を記述することができる。
【0051】
図4(b)に示されるように、変数定義リスト52は、変数毎に、少なくとも、変数名と、当該変数のデータ型とを宣言することで作成される。データ型は、予め定義された、「BOOL」、「REAL」、及び「LREAL」等のうちから選択的に設定される。図3で説明したように、ソースプログラムがビルドされると、変数定義リスト52で宣言された変数の各々について、選択されたデータ型に従った容量を有するデータ領域が確保される。
【0052】
更に、本実施の形態に係る開発支援装置では、各変数は、ネットワーク属性情報53を有する。ネットワーク属性情報53は、制御装置200からネットワークNW1,NW2に対する当該変数値の入出力の有無を定義する情報である。ネットワーク属性情報53は、デバイス300A~300BがネットワークNW1,NW2を介して、制御装置200から読み出す変数では「出力」と宣言される。反対に、デバイス300A~300BからネットワークNW1,NW2を介して、制御装置200に入力される変数では、ネットワーク属性情報53は「入力」と宣言される。これに対して、制御装置200からネットワークNW1,NW2に対して、「入力」も「出力」もされない変数では、ネットワーク属性情報53は「非公開」と宣言される。このように、変数定義リスト52では、各変数のネットワーク属性情報53について、「出力」、「入力」、及び、「非公開」のいずれかが宣言される。
【0053】
ここで、仮に、図4(a)のラダー回路220及び図4(b)の変数定義リスト52によってソースプログラムが構成されるケースを想定すると、変数aa及びbbは、ラダー回路(ソースコード)で使用されている一方で、変数ccは、宣言されているもののラダー回路内では非使用である。このケースでも、当該ソースプログラムをビルドすると制御装置200のメモリ領域212には、変数ccを格納するための領域が確保される。従って、不使用の変数ccを変数定義リスト52から削除することで、制御装置200のメモリ領域を解放することができる。これにより、不要なメモリ領域を確保しなくてよくなるので、制御装置200のメモリ使用効率が向上する。
【0054】
一方で、ラダー回路、即ち、ソースプログラム内では不使用であっても、制御装置200に対して外部機器300からアクセスされる変数が存在する可能性がある。従って、ソースプログラム内で不使用の変数を抽出して自動的に変数定義リスト52から削除すると、上述のような変数が削除されてしまうことにより、外部機器300側に影響を与える虞がある。
【0055】
<本実施の形態に係る不要変数削除処理の第1の例>
図5には、本実施の形態に係る開発支援装置による不要変数削除処理の第1の例の構成を説明するブロック図が示される。
【0056】
開発支援装置100は、抽出部55と、取得部56と、判定部57と、ユーザインターフェイス部58と、変数削除部59とを含む。例えば、取得部56、判定部57、ユーザインターフェイス部58、及び、変数削除部59の各々は、開発支援装置100のプロセッサ102が開発支援プログラム50を実行することにより、当該プログラムの機能の一部として実現される。ユーザインターフェイス部58は、図2に示されたI/Oインターフェイス114及び表示インターフェイス117を包括するものである。
【0057】
ユーザインターフェイス部58は、操作部115に対して、不要変数削除処理の起動指示が入力されると、不要変数削除処理を開始する。例えば、表示部118に表示されたメニュー画面への選択入力によって、ユーザは、不要変数削除処理の起動指示を入力することができる。当該起動指示のための操作は「第1の操作」に対応する。
【0058】
抽出部55は、不要変数削除処理が開始されると、ソースコード51及び変数定義リスト52を照合して、ソースコード51で使用されていない不使用変数V1を抽出する。例えば、図4の例では、変数ccが不使用変数V1として抽出される。不使用変数V1は「第1の変数」に対応し、変数定義リスト52は「第1のリスト」又は「リスト」の一実施例に対応する。
【0059】
取得部56は、変数定義リスト52から図4で説明したネットワーク属性情報53を取得する。ネットワーク属性情報53に基づき、当該属性が「非公開」でない変数、即ち、ネットワークに対する「入力」又は「出力」が宣言されている変数については、外部機器300での使用可能性がある変数と判断することができる。即ち、ネットワーク属性情報53は、制御プログラム210の実行時に制御装置200及び外部機器300の間で授受される可能性を有する変数(以下、「デバイス使用変数V2」とも称する)を特定するための情報の一実施例に相当する。
【0060】
判定部57は、抽出部55によって抽出された不使用変数V1と、取得部56によって取得された情報から特定されるデバイス使用変数V2とに基づいて、不使用変数V1のうちの、デバイス使用変数V2に該当する変数については、変数定義リスト52から削除不能と判定する。そして、判定部57は、不使用変数V1のうちの、デバイス使用変数V2に非該当の変数を、制御プログラム210からの削除可能変数V3と判定する。
【0061】
従って、不使用変数V1のうちの、ネットワーク属性情報53が「非公開」と定義される変数のみが、削除可能変数V3と判定される一方で、ネットワーク属性情報53が「入力」又は「出力」と定義される変数は、変数定義リスト52から削除不能と判定される。
【0062】
ユーザインターフェイス部58は、表示部118を用いて、削除可能変数V3をユーザに報知するとともに、当該削除可能変数V3の削除を実行してよいかの確認を求める。例えば。「これらの変数を削除しますか?」との表示に対して、「YES」又は「NO」をクリックするための文字及び図形を、表示部118に出力することができる。
【0063】
ユーザインターフェイス部58は、上記表示に対して「YES」がクリックされることで、ユーザの削除指示が入力されると、変数削除部59に対して、自動削除指示を生成する。当該削除指示のための操作は「第2の操作」に対応する。
【0064】
変数削除部59は、当該自動削除指示が入力されると、変数定義リスト52に含まれる変数から削除可能変数V3を削除する。これにより、変数定義リスト52は、削除可能変数V3が削除された内容に更新される。
【0065】
この結果、本実施の形態に係る開発支援装置100によれば、制御プログラム210の実行前の段階において、制御プログラム210の実行時に外部機器300(制御対象)で使用される可能性を有する変数を除外して、変数定義リスト52からの削除可能変数V3を自動的に判定することができる。更に、自動的に判定された削除可能変数V3が削除された内容に、変数定義リスト52を更新することができる。
【0066】
尚、変数定義リスト52の更新が完了すると、ユーザインターフェイス部58は、不要変数削除処理が終了した旨を示すメッセージを、表示部118等を用いてユーザに対して出力することができる。更に、ソースプログラム(ソースコード)の再ビルドを促すメッセージを、併せてユーザに出力してもよい。
【0067】
図6には、本実施の形態に係る開発支援装置による不要変数削除処理の第1の例のフローチャートが示される。図6に示された各ステップの処理は、代表的には、開発支援装置100のプロセッサ102が開発支援プログラム50を実行するソフトウェア処理によって実現することができる。
【0068】
開発支援装置100は、ステップS110では、不要変数削除処理の起動指示がユーザから入力されたか否かを判定する。ユーザ指示が入力されないとき(S110のNO判定時)には、ステップS120以降の処理は待機される。
【0069】
ユーザによって不要変数削除処理の起動が指示されると(S110のYES判定時)には、ステップS120に処理が進められる。開発支援装置100は、ステップS120では、図5の抽出部55と同様の処理により、ソースコード51で使用されていない不使用変数V1を抽出する。更に、開発支援装置100は、ステップS130では、図の取得部56と同様の処理により、不使用変数V1のネットワーク属性情報53を取得する。
【0070】
或いは、S130では、変数定義リスト52に含まれる全変数のネットワーク属性情報53を取得することも可能である。この場合には、ステップS120及びS130は、並列に処理されても良く、図6とは逆に、ステップS130がステップS120より先に実行されてもよい。
【0071】
開発支援装置100は、ステップS120及びS130に続いて、ステップS140により、不使用変数V1(S120)の各々について、ネットワーク属性情報53が「非公開」であるかどうかを判定する。これにより、不使用変数V1のうちの、ネットワーク属性情報53が「非公開」である変数は、ステップS150により、削除可能と判定される一方で、ネットワーク属性情報53が「非公開」ではない変数は、ステップS160により削除不能と判定される。
【0072】
開発支援装置100は、ステップS140~S160での判定に基づき、ステップS170により、ステップS150で削除可能と判定された変数を、変数定義リスト52からの削除可能変数V3に設定する。ステップS140~S170での処理によって、図5の判定部57と同様に、削除可能変数V3を抽出することができる。
【0073】
開発支援装置100は、ステップS180では、図5に示された変数削除部59と同様に、変数定義リスト52に含まれる変数から削除可能変数V3を削除する。
【0074】
図6に示された制御処理によれば、ユーザ起動指示に応答した不要変数削除処理の起動によって、自動的に判定された削除可能変数V3が削除された内容に、変数定義リスト52を更新することができる。
【0075】
或いは、図7に示されるように、開発支援装置100は、図5でも説明したユーザインターフェイス処理のためのステップS172,S175,S185を、図6の制御処理に加えて実行することも可能である。
【0076】
開発支援装置100は、ステップS170による削除可能変数V3の抽出が完了するとS172により、表示部118を用いて、削除可能変数V3をユーザに報知するとともに、当該削除可能変数V3の削除を実行してよいかの確認を求める。
【0077】
更に、開発支援装置100は、ステップS175により、ステップS172の確認に対するユーザ指示を判定する。ユーザから削除指示が入力された場合、例えば、ステップS170による「これらの変数を削除しますか?」との表示に対して、「YES」がクリックされた場合には、ステップS175がYES判定とされて、処理は、削除可能変数V3を削除するためのステップS180に進められる。
【0078】
一方で、上記表示に対して、「NO」がクリックされた場合には、ステップS175がNO判定とされるため、ステップS180がスキップされて、不要変数削除処理が終了される。この場合には、削除可能変数V3は削除されず、変数定義リスト52は、不要変数削除処理の起動前の内容に維持される。
【0079】
開発支援装置100は、ステップS180によって変数定義リスト52が更新されると、ステップS185により、不要変数削除処理が終了した旨のメッセージをユーザに対して出力する。尚、ステップS180による変数削除が実行された場合には、ステップS185において、更新後の変数定義リスト52を反映するためのソースプログラムの再ビルドを促すメッセージを更に出力してもよい。
【0080】
<本実施の形態に係る不要変数削除処理の第2の例>
次に、ソースプログラムで規定される制御装置200及び外部機器300のリンク設定の情報に基づいて、不使用変数の削除可能及び削除不能を判定する不要変数削除処理を、第2の例として説明する。
【0081】
まず、図8を用いて、外部機器300から制御装置200へのアクセス態様について説明する。
【0082】
開発支援装置100で作成又は編集されたソースプログラムをビルドすることにより、制御装置200にも、変数定義リスト52に対応する変数リスト203が作成される。即ち、変数リスト203には、変数定義リスト52で宣言された変数が含まれる。図8の例では、変数定義リスト52及び変数リスト203に定義された変数に、変数OPT1~OPT4が含まれるものとする。
【0083】
ネットワークNW2によって制御装置200と接続されるデバイス300Aでは、制御プログラムの実行時において、当該ネットワークの定周期通信によって定期的に読み出す変数が、サブスクリプション設定305Aによって定められている。図8の例では、デバイス300Aは、定周期通信によって、サブスクリプション設定305Aに従って、変数OPT1,OPT2にアクセスして、当該変数の値を制御装置200から取得する。変数OPT1,OPT2の値は、機器301Aにおいて、状態量のモニタ等のために使用される。
【0084】
ネットワークNW1によって制御装置200と接続されるデバイス300Bでは、制御装置200から読み出す変数と、デバイス300B内での変数との対応関係(リンク)を規定するタグデータリンク設定305Bが作成されている。
【0085】
図8の例では、タグデータリンク設定305Bに従って、デバイス300Bは、制御装置200の変数OPT2,OPT3にアクセスして、当該変数の値を取得する。変数OPT2,OPT3の値は、機器301Bにおいて、上述と同様に使用することができる。
【0086】
デバイス300Cは、開発支援装置100との間でプロトコルが共通であることを想定している。このため、デバイス300Cは、ネットワークNW1によって、制御装置200を経由して、或いは、直接的に、開発支援装置100との間でデータを授受することが可能である。例えば、デバイス300Cは、変数マッピング305Cに予め定められた変数OPT1,OPT3にアクセスして、当該変数の値を制御装置200から取得する。例えば、デバイス300Cは、ディスプレイ等のHMI機器である。変数OPT1,OPT3の値は、当該ディスプレイへの表示に使用される。
【0087】
図8の例では、開発支援装置100は、変数定義リスト52(即ち、変数リスト203)に含まれる変数OPT1~OPT4のうち、変数OPT1~OPT3については外部機器300で使用される一方で、変数OPT4については、外部機器300で不使用であると判断することができる。即ち、変数OPT4については、ソースプログラムで不使用であれば、削除しても外部機器300側に影響を与えないと判断することができる。
【0088】
図9には、不要変数削除処理の第2の例が適用される制御プログラムの運用を説明するための概念図が示される。
【0089】
図9において、ソースプログラム210sは、図3に示した、ソースコード51及び変数定義リスト52に加えて、リンク設定リスト54を更に含む。変数定義リスト52では、図4で説明したネットワーク属性情報53を不要とすることができる。
【0090】
リンク設定リスト54は、図8で説明した、サブスクリプション設定305A、タグデータリンク設定305B、及び、変数マッピング305Cの基となる、制御装置200及び外部機器300(デバイス300A~300C)の間での変数の授受を記述する。
【0091】
ソースプログラム210sがビルドされると、制御プログラム210には、リンク設定リスト54に従って、デバイス側リンク設定コード214が生成される。デバイス側リンク設定コード214によって、サブスクリプション設定305A、タグデータリンク設定305B、及び、変数マッピング305に規定される変数が設定される。これにより、制御プログラム210の実行時には、リンク設定リスト54に記述された内容に従って、サブスクリプション設定305A、タグデータリンク設定305B、及び、変数マッピング305に規定される変数が、外部機器300からアクセスされる。
【0092】
従って、ソースプログラムの段階において、リンク設定リスト54は、制御プログラム210の実行時に制御装置200及び外部機器300の間で授受される可能性を有する変数(デバイス使用変数V2)を特定するための情報の一実施例として用いることが可能である。即ち、リンク設定リスト54は「第2のリスト」の一実施例に対応する。
【0093】
図10には、本実施の形態に係る開発支援装置による不要変数削除処理の第2の例の構成を説明するブロック図が示される。
【0094】
図10の構成は、図と比較して、取得部56が、ネットワーク属性情報53に代えて、リンク設定リスト54を取得する点で異なる。共通のネットワーク(図8)で複数個のプロジェクトが適用される場合には、ユーザインターフェイス部58に対するユーザ選択入力に基づいて、不要変数削除処理が適用される1又は複数のプロジェクトを選択することができる。この場合には、取得部56は、ユーザが選択したプロジェクトに係るリンク設定リスト54を取得する。
【0095】
図10に示される、不要変数削除処理の第2の例では、デバイス使用変数V2を特定するための情報がリンク設定リスト54となる点以外の構成は、図と同様である。即ち、不使用変数V1、デバイス使用変数V2、及び、削除可能変数V3に係る、抽出部55、判定部57、ユーザインターフェイス部58、及び、変数削除部59での処理は、図6に示された不要変数削除処理の第1の例と同様である。
【0096】
ここでは、図8に示された変数OPT1~OPT4が、抽出部55により不使用変数V1として抽出される例を想定する。判定部57は、リンク設定リスト54を用いて、図8の例では、変数OPT1~OPT3をデバイス使用変数V2として特定できることが理解される。従って、判定部57は、不使用変数V1として抽出される変数OPT1~OPT4について、変数OPT1~OPT3については削除不能と判定する一方で、変数OPT4については、削除可能と判定することができる。即ち、変数OPT4を、削除可能変数V3として抽出することができる。
【0097】
図11には、本実施の形態に係る開発支援装置による不要変数削除処理の第2の例のフローチャートが示される。図11に示された各ステップの処理についても、代表的には、開発支援装置100のプロセッサ102が開発支援プログラム50を実行するソフトウェア処理によって実現することができる。
【0098】
図11に示されたフローチャートでは、図6のフローチャートと比較して、開発支援装置100は、図6でのステップS130及びS140に代えて、ステップS131及びS141をそれぞれ実行する点で異なる。
【0099】
開発支援装置100は、ステップS131では、図10の取得部56と同様の処理により、リンク設定リスト54を取得する。上述のように、ステップS131により、ユーザによって選択された1又は複数のプロジェクトに係るリンク設定リスト54を取得することができる。これにより、共通のネットワーク(図8)で複数個のプロジェクトが適用される場合に、不要変数削除処理が適用されるプロジェクトの範囲をユーザが選択することができる。
【0100】
開発支援装置100は、ステップS141では、不使用変数V1(S120)の各々について、ステップS131で取得されたリンク設定リスト54に含まれていない変数であるかどうかを判定する。リンク設定リスト54に含まれていない変数については(S141のYES判定時)、ステップS150により、削除可能と判定される。一方で、リンク設定リスト54に含まれる変数については(S141のNO判定時)、図6と同様のステップS160により、削除不能と判定される。
【0101】
その他のステップS110,S120,S170,S180の処理については、図6と同様であるので詳細な説明は繰り返さない。又、図11のフローチャートに対して、図7と同様のステップS172,S175,S185を加えることも可能である。
【0102】
この結果、本実施の形態に係る開発支援装置による不要変数削除処理の第2の例によっても、上述した第1の例と同様に、制御プログラム210の実行時に外部機器300(制御対象)で使用される可能性を有する変数を除外して、変数定義リスト52からの削除可能変数V3を自動的に判定することができる。更に、自動的に判定された削除可能変数V3が削除された内容に、変数定義リスト52を更新することができる。
【0103】
以上説明したように、本開示によれば、ソースプログラム内での不利用変数(V1)の抽出、及び、制御プログラム実行時における外部機器300(制御対象)からアクセスされる変数(V2)の特定により、制御プログラム内での不使用変数(V1)の削除による制御対象側への影響を抑制することができる。
【0104】
<付記>
上述したような本実施の形態及び変形例は、以下のような技術思想を含む。
【0105】
[構成1]
制御対象(300)を制御する制御装置(200)用の制御プログラム(210)の開発を支援するための開発支援装置(100)であって、
前記制御プログラムのソースコード(51)及び当該ソースコードで使用する複数の変数を宣言する第1のリスト(52)を記憶する記憶部(104,120)と、
前記第1のリスト内の前記複数の変数から前記ソースコードで不使用である第1の変数(V1)を抽出する抽出部(55)と、
前記制御プログラムの実行前の状態において、前記複数の変数のうちの、前記制御対象及び前記制御装置の間で授受される可能性を有する第2の変数(V2)を特定するための情報(53,54)を取得する取得部(56)と、
前記制御プログラムの実行前の状態において、前記抽出部による抽出結果と、前記取得部によって取得された前記情報とに基づいて、前記第1の変数のうちの前記第2の変数に該当する変数を前記第1のリストから削除不能と判定する判定部(57)とを備える、開発支援装置。
【0106】
[構成2]
前記複数の変数の各々は、前記制御対象(300)及び前記制御装置(200)を含むネットワーク(NW1,NW2)に対する当該変数の公開の有無を定義する属性情報(53)を有し、
前記取得部(56)は、前記属性情報を前記第2の変数を特定するための情報として取得し、
前記判定部は(57)、前記複数の変数のうちの、前記属性情報によって前記ネットワークに対して公開することが指定された変数を前記第2の変数(V2)として、前記第1のリストから削除不能と判定する、構成1に記載の開発支援装置。
【0107】
[構成3]
前記取得部(56)は、前記制御プログラム(210)の実行前の状態において、前記制御プログラムが実行される際の前記制御対象(300)及び当該制御装置(200)の間での授受対象に指定されている変数を示す第2のリスト(54)を前記第2の変数(V2)を特定するための情報として取得する、構成1に記載の開発支援装置。
【0108】
[構成4]
前記取得部(56)は、ユーザに指定された1又は複数のプロジェクトの前記第2のリスト(54)を前記情報として取得し、
前記判定部(57)は、前記複数の変数のうちの、少なくともいずれかの前記プロジェクトにおいて前記第2のリスト(54)に含まれる変数を前記第2の変数(V2)として前記判定を実行する、構成3に記載の開発支援装置。
【0109】
[構成5]
前記判定部(57)は、前記制御プログラム(210)の実行前の状態において、前記抽出部(55)による抽出結果と、前記取得部(56)によって取得された前記情報に基づいて、前記第1の変数(V1)のうちの前記第2の変数(V2)に非該当である第3の変数(V3)を前記第1のリスト(52)から削除可能と判定する、構成1~4のいずれか1項に記載の開発支援装置。
【0110】
[構成6]
前記第3の変数(V3)を前記第1のリスト(52)から削除する変数削除部(59)を更に備える構成5に記載の開発支援装置。
【0111】
[構成7]
ユーザの操作を入力するためのインターフェイス部(58)を更に備え、
前記抽出部(55)、前記取得部(56)、及び、前記判定部(57)は、インターフェイス部に対する、不要変数の削除処理を起動する第1の操作の入力に応じて動作し、
前記インターフェイス部は、前記判定部によって抽出された前記第3の変数(V3)を前記第1のリスト(52)から削除するか否かの確認を前記ユーザに求めるメッセージを出力し、
前記変数削除部(59)は、前記インターフェイス部に対する、前記メッセージに応じた前記第3の変数の削除を指示する第2の操作の入力に応じて動作する、構成6記載の開発支援装置。
【0112】
[構成8]
制御対象(300)を制御する制御装置(200)用の制御プログラム(210)の、コンピュータによって実行される開発支援方法であって、
前記制御プログラムのソースコード(51)で使用される複数の変数を宣言するリスト(52)から前記ソースコードで不使用である第1の変数(V1)を抽出するステップ(S120)と、
前記制御プログラムの実行前の状態において、前記複数の変数のうちの、前記制御対象及び前記制御装置の間で授受される可能性を有する第2の変数(V2)を特定するための情報(53,54)を取得するステップ(S130)と、
前記制御プログラムの実行前の状態において、前記抽出するステップでの抽出結果と、前記取得するステップで取得された前記情報とに基づいて、前記第1の変数のうちの前記第2の変数に該当する変数を前記リストから削除不能と判定するステップ(S140,S141,S160)とを備える、開発支援方法。
【0113】
[構成9]
制御対象(300)を制御する制御装置(200)用の制御プログラム(210)の開発支援プログラムであって、
前記開発支援プログラムは、コンピュータに、
前記制御プログラムのソースコード(51)で使用される複数の変数を宣言するリスト(52)から前記ソースコードで不使用である第1の変数(V1)を抽出するステップ(S120)と、
前記制御プログラムの実行前の状態において、前記複数の変数のうちの、前記制御対象及び前記制御装置の間で授受される可能性を有する第2の変数(V2)を特定するための情報(53,54)を取得するステップ(S130)と、
前記制御プログラムの実行前の状態において、前記抽出するステップでの抽出結果と、前記取得するステップで取得された前記情報とに基づいて、前記第1の変数のうちの前記第2の変数に該当する変数を前記リストから削除不能と判定するステップ(S140,S141,S160)とを実行させる、開発支援プログラム。
【0114】
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内での全ての変更が含まれることが意図される。
【符号の説明】
【0115】
10 FAシステム、50 開発支援プログラム、51 ソースコード、52 変数定義リスト、53 ネットワーク属性情報、54 リンク設定リスト、55 抽出部、56 取得部、57 判定部、58 ユーザインターフェイス部、59 変数削除部、60 プログラム、100 開発支援装置、102 プロセッサ、104 主メモリ、111 通信インターフェイス、114 I/Oインターフェイス、115 操作部、117 表示インターフェイス、118 表示部、120 記憶装置、125 内部バス、200 制御装置、203 変数リスト、210 制御プログラム、210s ソースプログラム、211 実行コード、212 メモリ領域、214 デバイス側リンク設定コード、220 ラダー回路、221 入力側母線、222 出力側母線、224 接点、226 コイル、227 接続線、250 ネットワークインターフェイス、300 外部機器、300A,300B,300C デバイス、301A,301B,301C 機器、305,305C 変数マッピング、305A サブスクリプション設定、305B タグデータリンク設定、NW1,NW2 ネットワーク、OPT1~OPT4,aa~cc 変数。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11