JP2018133034A - ソフトウェア試験装置、ソフトウェア試験システム、ソフトウェア試験方法およびプログラム - Google Patents

ソフトウェア試験装置、ソフトウェア試験システム、ソフトウェア試験方法およびプログラム Download PDF

Info

Publication number
JP2018133034A
JP2018133034A JP2017027927A JP2017027927A JP2018133034A JP 2018133034 A JP2018133034 A JP 2018133034A JP 2017027927 A JP2017027927 A JP 2017027927A JP 2017027927 A JP2017027927 A JP 2017027927A JP 2018133034 A JP2018133034 A JP 2018133034A
Authority
JP
Japan
Prior art keywords
program
test
general
unit
plc
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2017027927A
Other languages
English (en)
Other versions
JP2018133034A5 (ja
JP6827340B2 (ja
Inventor
広昴 岡崎
Hirotaka Okazaki
広昴 岡崎
法貴 ▲柳▼井
法貴 ▲柳▼井
Noritaka Yanai
山田 昌弘
Masahiro Yamada
昌弘 山田
裕 宮嶋
Yu Miyajima
裕 宮嶋
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.)
Mitsubishi Heavy Industries Engineering Ltd
Original Assignee
Mitsubishi Heavy Industries Engineering Ltd
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 Mitsubishi Heavy Industries Engineering Ltd filed Critical Mitsubishi Heavy Industries Engineering Ltd
Priority to JP2017027927A priority Critical patent/JP6827340B2/ja
Priority to SG11201906881QA priority patent/SG11201906881QA/en
Priority to US16/481,485 priority patent/US10915438B2/en
Priority to PCT/JP2018/005583 priority patent/WO2018151277A1/ja
Publication of JP2018133034A publication Critical patent/JP2018133034A/ja
Publication of JP2018133034A5 publication Critical patent/JP2018133034A5/ja
Application granted granted Critical
Publication of JP6827340B2 publication Critical patent/JP6827340B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/13Plc programming
    • G05B2219/13022Convert source program to intermediate program

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Automation & Control Theory (AREA)
  • Software Systems (AREA)
  • Programmable Controllers (AREA)
  • Debugging And Monitoring (AREA)
  • Testing And Monitoring For Control Systems (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】PLCで実行されるプログラムの試験におけるカバレッジの向上を図ることができるソフトウェア試験装置を提供する。
【解決手段】ソフトウェア試験装置100は、通信部110と、表示部120と、操作入力部130と、記憶部170と、制御部180とを備える。通信部は、他の機器と通信を行い、PLCプログラムのエディタとして用いられているコンピュータから試験対象であるST(Structured Text)のソースコードを受信する。表示部は、各種画像を表示し、操作入力部は、ユーザ操作を受ける。記憶部170は、試験対象であるSTのソースコードに対して変換部181が構文解析を行うための文法定義、構文解析にて得られた構文木、変換部がSTのソースコードを変換したC言語のソースコード等を記憶する。制御部の試験実行部182は、変換部の変換によって得られたC言語のソースコードに対する試験を行う。
【選択図】図1

Description

本発明は、ソフトウェア試験装置、ソフトウェア試験システム、ソフトウェア試験方法およびプログラムに関する。
プログラマブルロジックコントローラ(Programmable Logic Controller;PLC)で実行されるプログラムの試験に関連して幾つかの技術が提案されている。
例えば特許文献1には、PLCを動作させるシーケンスプログラムを検査するための検証支援システムが示されている。この検証支援システムは、シーケンスプログラムをハードウェア記述言語で記述されたPLCシーケンスプログラムに変換する。また、この検証支援システムは、ハードウェア記述言語で記述されてPLCの機能を模擬的に実行する実行モデルと、ハードウェア記述言語で記述されて制御対象の機能を模擬的に実行する制御対象モデルとを備える。そして、この検証支援システムは、仮想的なシーケンス制御システムを構成し、PLCシーケンスプログラムを実行してデバッグを行う。
特許第3018912号公報
特許文献1では、カバレッジ(Coverage、網羅率)については言及されていない。カバレッジが低い場合、試験で通らなかったパスにバグが残存する可能性がある。
本発明は、PLCで実行されるプログラムの試験におけるカバレッジの向上を図ることができるソフトウェア試験装置、ソフトウェア試験システム、ソフトウェア試験方法およびプログラムを提供する。
本発明の第1の態様によれば、ソフトウェア試験装置は、プログラマブルロジックコントローラを動作させるPLCプログラムを汎用プログラミング言語で記述された汎用言語プログラムに変換する変換部と、前記汎用言語プログラムに対する試験を行う試験実行部と、を備える。
前記変換部は、前記PLCプログラムにおけるコメントに含まれる記述のうち所定の条件を満たす記述を、前記汎用言語プログラムで実行対象となる記述に変換するようにしてもよい。
前記変換部は、前記PLCプログラムにおけるコメントに含まれる記述のうち所定の条件を満たす記述を、前記汎用言語プログラムで試験時に実行される記述に変換するようにしてもよい。
前記変換部は、前記PLCプログラムにおけるコメントに含まれる第1文字列を、前記汎用言語プログラムを実行する前提条件を示す記述に変換し、前記PLCプログラムにおけるコメントに含まれる第2文字列を前記汎用言語プログラムの実行後に満たされるべき条件を示す記述に変換し、前記試験実行部は、前記汎用言語プログラムへの入力が前記入力の条件を満たし、かつ、前記汎用言語プログラムの出力が前記出力の条件を満たさない場合をエラーとして検出するようにしてもよい。
前記PLCプログラムに含まれるグローバル変数の値の想定範囲を示す範囲情報を取得する範囲情報取得部を備え、前記試験実行部は、前記グローバル変数の値が前記想定範囲外となる場合をエラーとして検出するようにしてもよい。
前記試験実行部は、記号実行法を用いて前記試験を行うようにしてもよい。
前記試験実行部は、前記PLCプログラムにおけるパスのうち指定されたステップ数以下のパスの各々について、当該パスを実行した場合の変数値を前記汎用言語プログラムを用いて算出し、いずれかのパスにおける変数値が前記PLCプログラムで示された条件を満たさない場合をエラーとして検出するようにしてもよい。
前記PLCプログラムを表示し、前記汎用言語プログラムにおける実行箇所を前記PLCプログラムの表示上に示す表示部を備えるようにしてもよい。
前記変換部は、前記PLCプログラムにおけるサブルーチンコールを前記汎用言語プログラムにおける記述に変換する場合、前記PLCプログラムで呼び出されるサブルーチンに示されている入口条件を、前記サブルーチンコール時の条件としてサブルーチン呼出側の汎用言語プログラムに含め、前記PLCプログラムで呼び出されるサブルーチンに示されている出口条件を、前記サブルーチンコールからの復帰時の条件としてサブルーチン呼出側の汎用言語プログラムに含め、前記試験実行部は、前記サブルーチンコール時の条件及び前記サブルーチンコールからの復帰時の条件を用いて前記サブルーチン呼出側の汎用言語プログラムを単体試験するようにしてもよい。
前記試験実行部は、試験を実行した際に、試験で通らなかったパスを切り出し、切り出したパスに対する試験を行うようにしてもよい。
本発明の第2の態様によれば、ソフトウェア試験システムは、上記したいずれかのソフトウェア試験装置と、前記ソフトウェア試験装置が前記PLCプログラムから変換した汎用言語プログラムを実行するPLC模擬部と、PLCによる制御対象を模擬する制御対象模擬部と、を備える。
本発明の第3の態様によれば、ソフトウェア試験方法は、プログラマブルロジックコントローラを動作させるPLCプログラムを汎用プログラミング言語で記述された汎用言語プログラムに変換し、前記汎用言語プログラムに対する試験を行う。
本発明の第4の態様によれば、プログラムは、コンピュータに、プログラマブルロジックコントローラを動作させるPLCプログラムを汎用プログラミング言語で記述された汎用言語プログラムに変換させ、前記汎用言語プログラムに対する試験を行わせる、ためのプログラムである。
上記したソフトウェア試験装置、ソフトウェア試験システム、ソフトウェア試験方法およびプログラムによれば、PLCで実行されるプログラムの試験におけるカバレッジの向上を図ることができる。
本発明の実施形態に係るソフトウェア試験装置の機能構成を示す概略ブロック図である。 同実施形態に係るソフトウェア試験システムがPLCプログラムの試験を行う処理手順の例を示す図である。 同実施形態に係るソフトウェア試験装置によるプログラム変換の第1例を示す図である。 同実施形態に係るソフトウェア試験装置によるプログラム変換の第2例を示す図である。 同実施形態に係るソフトウェア試験装置によるプログラム変換の第3例を示す図である。 同実施形態に係るグローバル変数リストの例を示す図である。 同実施形態に係るソフトウェア試験装置によるプログラム変換の第4例を示す図である。 同実施形態に係るソフトウェア試験装置によるプログラム変換の第5例を示す図である。 同実施形態に係る試験実行部が行うモジュール化の例を示す図である。 同実施形態に係るソフトウェア試験システムの機能構成例を示す概略ブロック図である。
以下、本発明の実施形態を説明するが、以下の実施形態は請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、本発明の実施形態に係るソフトウェア試験装置の機能構成を示す概略ブロック図である。図1に示すように、ソフトウェア試験装置100は、通信部110と、表示部120と、操作入力部130と、記憶部170と、制御部180とを備える。制御部180は、変換部181と、試験実行部182とを備える。
ソフトウェア試験装置100は、PLCで実行されるプログラムに対してバグの検出等の試験(テスト)を行う。以下では、PLCで実行されるプログラムをPLCプログラムと称する。また、PLCプログラムのソースコードの記述言語をPLC言語と称する。PLC言語として、例えばラダー(Ladder;LD)言語、シーケンシャルファンクションチャート(Sequential Function Chart;SFC)、ファンクションブロックダイアグラム(Function Block Diagram;FBD)、及び、ストラクチャードテキスト(Structured Text;ST)を挙げることができる。ラダー言語は、ラダーロジック又は単にラダーとも称される。ファンクションブロックダイアグラムは、ファンクションブロックとも称される。
但し、ソフトウェア試験装置100が試験対象とするプログラミング言語はこれらに限らず、PLCで実行されるプログラムの記述言語であればよい。
PLCプログラムの場合、以下の点で、複雑なプログラムの試験を十分に実行することができない。
(1) 網羅的な試験を実施することができない。
一般的なプログラムの開発では、プログラムを含むシステムの試験は、単体試験、組み合わせ試験、ハードウェア結合試験、システム試験というように、小さな単位から順に行われる。
単体試験では、例えばサブルーチン毎などプログラムの部品毎に試験が行われる。組み合わせ試験では、メインルーチンからサブルーチンを呼び出すなど、プログラムの部品を複数組み合わせて試験が行われる。ハードウェア結合試験では、実機ハードウェアにプログラムを搭載して試験が行われる。ここでいう実機ハードウェアは、システムで実際に用いられるハードウェアである。システム試験では、システム全体の動作試験が行われる。
これに対してPLC言語の場合、一般的には単体試験及び組み合わせ試験を行う環境が整っていない。このため、PLCプログラムの試験では、はじめから実際のPLCを用いたシステム試験が行われることが多い。この場合、単体試験等については、システム試験の中でシステムの一部の機能を制限して仮想的に行われる程度である。
一般的なプログラムの開発における単体試験では、ソースコード全体に対するカバレッジが可能な限り100%に近づくようテストケースを設定するホワイトボックス試験が行われることが多い。ここでいうテストケースは、プログラムへの入力の組み合わせである。プログラムのパスをなるべく全て漏れなく通るように入力の組み合わせを選択することで、カバレッジを高めることができる。
試験対象のプログラムが複雑でテストケースが膨大となった場合、自動単体テスト、テストケースの自動生成、証明技術によるバグの検証等の技術が用いられる。自動単体テストでは、自動的に設定された多数のテストケースを試験環境が自動実行する。ここでいう試験環境は、デバッグソフトウェアを実行するコンピュータなど、試験を行うためのシステムである。テストケースの自動生成では、試験環境が、記号実行法などを用いて高カバレッジを達成するためのテストケースを自動生成し、生成したテストケースを用いた試験を自動実行する。証明技術によるバグの検証では、試験環境がプログラムを論理的に解析し、バグの検出、またはバグの有無の判定を行う。
これに対しPLCプログラムの場合、上記のように一般的には単体試験が行われず、従って、単体試験におけるホワイトボックス試験も行われない。特に、PLCプログラムの場合、上記のように単体試験等を行う環境が整っていないため、自動単体テスト、テストケースの自動生成、証明技術によるバグの検証等の技術を適用することが困難である。
単体試験におけるホワイトボックス試験が行われないことで、プログラム中に試験が行われていないパスが残り、このパスにバグが残存することが考えられる。この点で、PLCプログラムの場合、複雑なプログラムの試験を十分に実行することができない。
(2) PLCプログラムを試験する手法が限定される。
C言語など汎用言語のプログラムをパソコン(Personal Computer;PC)など一般的なコンピュータで試験する場合、例えばステップ実行、変数値のモニタリング、変数値を上書きしてのプログラムの実行などいろいろな手法を用いることができる。ここでいう汎用言語は、特定の用途に特化されていない言語である。また、ここでいう一般的なコンピュータは、特定の用途に特化されていないコンピュータである。
上述した汎用言語のプログラムを一般的なコンピュータでデバッグする場合とは異なり、一般的にはPLCではプログラム試験のための機能及びコマンドが十分に用意されておらず、PLCプログラムを試験する際に使用可能な手法は限定される。また、汎用言語の場合とは異なり、PLCプログラムを一般的なコンピュータで試験するためのソフトウェアも一般的には知られていない。この点でも、PLCプログラムを試験する際に使用可能な手法は限定される。
このように、PLCプログラムを試験する際に使用可能な手法が限定される点で、複雑なプログラムの試験を十分に実行することができない。
このように、PLCプログラムの場合、複雑なプログラムの試験を十分に実行することができないという問題点に対し、ソフトウェア試験装置100は、(PLC言語で記述されている)PLCプログラムのソースコードを一般的なコンピュータ上で汎用言語のソースコードに変換して試験を行う。すなわち、ソフトウェア試験装置100はソースコードレベルでPLCプログラムを汎用言語プログラムに変換し、得られた汎用言語プログラムに対して試験を行う。これにより、ソフトウェア試験装置100では、既存のいろいろなソフトウェアを用いてプログラムの試験を行うことができる。
例えば、ソフトウェア試験装置100がパソコン上でSTプログラムのソースコードをC言語のソースコードに変換することで、C言語のソースコードをパソコン上で試験するための既存ソフトウェアを用いることができ、この点で、複雑なプログラムの試験を十分に実行できる。
さらにソフトウェア試験装置100は、後述するようにデバッグの精度を高めるための機能を提供する。
以下では、ソフトウェア試験装置100がパソコンを用いて構成され、かつ、ソフトウェア試験装置100がST(ストラクチャードテキスト)のソースコードをC言語のソースコードに変換する場合を例に説明する。但し、ソフトウェア試験装置100は、構成する一般的なコンピュータはパソコンに限らず、汎用言語のプログラムの試験のための既存ソフトウェアを適用可能なコンピュータであればよい。また、ソフトウェア試験装置100が対象とするPLC言語はSTに限らず、いろいろなPLC言語とすることができる。ソフトウェア試験装置100がPLCプログラムを変換する言語はC言語に限らず、この言語のソースコードの試験を行うための既存ソフトウェアを利用可能な言語であればよい。
通信部110は、他の機器と通信を行う。例えば、通信部110が、PLCプログラムのエディタとして用いられているコンピュータから試験対象であるSTのソースコードを受信するようにしてもよい。
表示部120は、液晶パネル又はLED(Light Emitting Diode)パネル等の表示画面を備えて各種画像を表示する。
操作入力部130は、例えばキーボード及びマウス等の入力デバイスを備えてユーザ操作を受ける。
記憶部170は、各種データを記憶する。例えば、記憶部170は、試験対象であるSTのソースコード、このソースコードに対して変換部181が構文解析を行うための文法定義、構文解析にて得られた構文木、変換部181がSTのソースコードを変換したC言語のソースコード等を記憶する。
記憶部170は、ソフトウェア試験装置100が備える記憶デバイスを用いて構成される。
制御部180は、ソフトウェア試験装置100の各部を制御して各種処理を実行する。制御部180は、ソフトウェア試験装置100が備えるCPU(Central Processing Unit、中央処理装置)が記憶部170からプログラムを読み出して実行することで構成される。
変換部181は、STのソースコードをC言語のソースコードに変換する。
試験実行部182は、変換部181の変換によって得られたC言語のソースコードに対する試験を行う。C言語のソースコードとSTのソースコードとは構文木が共通しており、C言語のソースコードの各部はSTのソースコードの各部と対応付けられる。従って、C言語のソースコード上でバグの位置を特定できればSTのソースコード上でのバグの位置を特定することができる。
図2は、ソフトウェア試験システム1がPLCプログラムの試験を行う処理手順の例を示す図である。図2の例で、変換部181は、パーサジェネレータ191、パーサ192、及び、C言語生成器193として機能する。
パーサジェネレータ191は、記憶部170が記憶している文法定義を参照してパーサ192を生成する。記憶部170が記憶している文法定義はBNF(Backus Naur Form)で記載されていてもよいが、特定の表現形式のものに限定されない。
STのソースコードが変換部181に入力されると、パーサ192がこのソースコードの構文解析を行って構文木を生成する。STのソースコードが変換部181に入力される毎にパーサジェネレータ191がパーサ192を生成する必要はなく、同一のパーサ192が繰り返し構文解析を行えばよい。
パーサ192が構文木を生成すると、C言語生成器193が、この構文木を用いてC言語のソースコードを生成する。
試験実行部182は、C言語生成器193が生成したC言語のソースコードに対して試験を行い、試験結果をレポートとして出力する。
図3は、ソフトウェア試験装置100によるプログラム変換の第1例を示す図である。図3の例で、STのソースコードC11は、変換部181による変換前のソースコードであり、C言語のソースコードC12は、変換部181による変換後のソースコードである。変換部181は、STのIF文、CASE文、FORループを、それぞれC言語のIF文、CASE文(SWITCH文)、FORループに変換するといったように、STのソースコードと同等の動作を示すC言語のソースコードを生成している。
以上のように、変換部181は、ソースコードレベルでPLCプログラムを汎用言語プログラムに変換する。そして、試験実行部182は、変換にて得られた汎用言語プログラムに対する試験を行う。
変換部181が、PLCプログラムを汎用言語プログラムに変換することで、汎用言語プログラム用の既存のテストツールを用いて効率的に試験を行うことができる。例えば、変換部181が、パソコン上でSTのソースコードをC言語のソースコードに変換することで、C言語用の既存のテストツールを用いて効率的に試験を行うことができる。
ここで、変換部181が、STのソースコードにおけるコメントに含まれる記述の一部をC言語のソースコードで実行対象となる記述に変換するようにしてもよい。
図4は、ソフトウェア試験装置100によるプログラム変換の第2例を示す図である。図4の例で、STのソースコードC21は、変換部181による変換前のソースコードであり、C言語のソースコードC22は、変換部181による変換後のソースコードである。
変換部181は、STのソースコードのうち平方根の計算を示す行L112を、C言語のソースコードで同等の処理を行う行L122に変換している。加えて、変換部181は、STのソースコードC21のコメントを、C言語のソースコードC22で実行対象の記述に変換している。
STのソースコードC21で、行L111及びL113の括弧及びアスタリスクで挟まれた記述(「(* ・・・ *)」はコメントとして扱われる。従って、STのソースコードC21では、行L111、L113はいずれも実行対象外である。これに対し、変換部181は、行L111を行L121から始まるIF文に変換し、行L113を行L123から始まるIF文に変換している。
行L111の「#ASSUME」及び条件式の記述は、ソフトウェア試験装置100では事前条件を示す。ここでいう事前条件は、例えばサブルーチンが呼び出された際のサブルーチンコールにおける引数値の条件及びグローバル変数値の条件など、プログラムを実行する前提条件である。図4の場合、行L112の関数Sqrtは、実数の平方根を演算する関数である。従って、この関数の引数xの値は0以上であることが前提条件となる。従って、行L111では、事前条件としてx≧0が示されている。
また、行L113の「#ASSERT」及び条件式の記述は、ソフトウェア試験装置100では事後条件を示す。ここでいう事後条件は、例えばサブルーチンコールの戻り値が満たすべき条件など、プログラムの実行後に満たされるべき条件である。図4の例の場合、関数Sqrtが正常に実行された場合、演算結果を示す変数yの値は0以上となるはずである。従って、行L113では、事後条件としてy≧0が示されている。
ソフトウェア試験装置100は、プログラムの試験の際、事前条件が成立し、かつ、事後条件が成立しない場合にバグがあると判定する。事前条件が成立しない場合、事後条件が成立する場合のいずれも、バグがあるとは判定しない。
かかる試験を行うために、変換部181は、STのソースコードのコメント内に「#ASSUME」の記述がある場合、この記述を(コメントではなく)実行対象として事前条件を示す記述に変換する。
図4の例の場合、変換部181は、行L111を、行L121から始まるIF−ELSE文に変換している。そして、変換部181は、このIF−ELSE文のTHENに、ソースコードC21の実体的部分である行L112に対応する行L122を設けている。ここでいうIF−ELSE文のTHENは、IF条件成立の場合に実行される部分である
また、変換部181は、ELSEの場合をRETURNにしている。RETURNは、このプログラムを終了することを示し、メインプログラムから呼び出されている場合は呼び出し元へ復帰することを示す。なお、ソースコードC22で「//」からその行末までは、コメントとして扱われ、実行対象にはならない。
試験実行時に試験実行部182は、行L121で事前条件x≧0が成立するか否かを判定する。事前条件が成立する場合は、行L122以下を実行する。一方、事前条件が成立しない場合は、行L126のelseへ進み、行L127のRETURN文にてエラー無しでソースコードC22のプログラムを終了する。
また、変換部181は、STのソースコードのコメント内に「#ASSERT」の記述がある場合、この記述を(コメントではなく)実行対象として事後条件を示す記述に変換する。
図4の例の場合、変換部181は、行L113を、行L123から始まるIF−ELSE文に変換している。行L123から始まるIF−ELSE文は、事前条件のIF−ELSE文である行L121から始まるIF−ELSE文のTHENで、行L122の実行後に実行される。すなわち、行L123から始まるIF−ELSE文は、ソースコードC22の実体的部分である行L122の実行後に実行される。
また、変換部181は、行L123から始まるIF−ELSE文のTHENをヌル(null)にしている。したがって試験実行時に事後条件が成立した場合、試験実行部182は、そのままこのIF−ELSE文を終了することになる。
また、変換部181は、行L123から始まるIF−ELSE文のELSEの場合をabort(0)にしている。ここでのabort(0)は、エラー発生によるプログラム実行中断を示す。
試験実行時に試験実行部182は、行L122を実行した場合、続けて行L123から始まるIF−ELSE文を実行する。試験実行部182は、行L123で事後条件y≧0が成立するか否かを判定する。事後条件が成立する場合、上記のように試験実行部182はそのままこのIF−ESLE文を終了する。一方、事後条件が成立しない場合、試験実行部182は行L124のelseへ進み、行L125のabort(0)でエラーを出力してプログラムの実行を中断する。
汎用言語の記号実行ツールがassumeおよびassertに対応している場合は、変換部181が、#ASSUME、#ASSERTの記述をそれぞれassumeコマンド、assertコマンドに変換するようにしてもよい。
図5は、ソフトウェア試験装置100によるプログラム変換の第3例を示す図である。図5のSTのソースコードC31の行L111、L112、L113は、図4のSTのソースコードC21の行L111、L112、L113と同様である。
変換部181は、STのソースコードC31の行L111、L112、L113をそれぞれC言語のソースコードC32の行L131、L132、L133に変換する。行L131のassume文は、事前条件による分岐を示す。具体的には、事前条件x≧0が成立している場合のみ、行L132以下を実行する。
行L132は、図4の行L122と同様、平方根の演算を示す。
行L133のassert文は、事後条件が成立しているか否かの判定を示す。具体的には、試験実行部182は、事後条件y≧0が成立していない場合をエラーとして検出する。
以上のように、変換部181は、PLCプログラムにおけるコメントに含まれる記述のうち所定の条件を満たす記述を、汎用言語プログラムで実行対象となる記述に変換する。この汎用言語は試験に用いられる。従って、変換部181は、PLCプログラムにおけるコメントに含まれる記述のうち所定の条件を満たす記述を、汎用言語プログラムで試験時に実行される記述に変換する。図4の例では、「#ASSUME」及び条件式が含まれていること、「#ASSERT」及び条件式が含まれていることのそれぞれが、所定の条件の例に該当する。
これによりユーザは、PLCプログラムを作成する際に、所定の条件を満たす試験用の記述をコメントに含めておくことができる。ソフトウェア試験装置100は、PLCプログラムを汎用言語プログラムに変換しての試験で、試験用の記述を反映させて試験を行うことができる。一方、PLCがPLCプログラムを実行する実運用時には、試験用の記載をコメントとして扱い、この試験用の記載の影響を受けずに動作することができる。
また、変換部181は、PLCプログラムにおけるコメントに含まれる第1文字列を、汎用言語プログラムを実行する前提条件の記述に変換し、前記PLCプログラムにおけるコメントに含まれる第2文字列を前記汎用言語プログラム実行後に満たされるべき条件を示す記述に変換する。図4の例では、「#ASSUME」及び条件式の記述が第1文字列の例に該当し、行L121から始まるIF−ELSE文が、汎用言語プログラムを実行する前提条件の記述の例に該当する。また、図4の例では、「#ASSERT」及び条件式の記述が第2文字列の例に該当し、行L123から始まるIF−ELSE文が、汎用言語プログラム実行後に満たされるべき条件の記述の例に該当する。
そして、試験実行部182は、汎用言語プログラムへの入力が前記入力の条件を満たし、かつ、前記汎用言語プログラムの出力が前記出力の条件を満たさない場合をエラーとして検出する。
これにより、試験実行部182は、試験対象のプログラムに応じてテストケースを生成または選択する必要がない。この点で、試験実行部182は、いろいろなテストケースで試験を行うことができ、網羅率を向上させることができる。
試験実行部182が、記号実行法を用いて試験を行うようにしてもよい。変換部181がSTのソースコードからC言語のソースコードへ変換したことで、パソコン上で記号実行法を用いるための既存ツールを使用することができる。記号実行法を用いることで試験の精度を向上させることができる。
表示部120がPLCプログラムを表示し、汎用言語プログラムにおける実行箇所をPLCプログラムの表示上に示すようにしてもよい。例えば、表示部120が図4のSTのソースコードC21を表示する。一方、試験実行部182は、C言語のソースコードC22を用いて試験を行う。STのソースコードとC言語のソースコードとは図2を参照して説明したように共通の構文木で対応付けられており、C言語のソースコードでの実行箇所をSTのソースコードでの箇所に対応付けて表示することができる。
表示部120がSTのソースコードで実行箇所を示すことで、STに慣れているユーザが、実行箇所を容易に把握することができる。
あるいは、STのコメントに有界モデル検査での探索ステップ数を記載するようにしてもよい。そして、試験実行部182が、PLCプログラムにおけるパスのうち指定されたステップ数以下のパスの各々について、当該パスを実行した場合の変数値をC言語のソースコードを用いて算出するようにしてもよい。試験実行部182は、いずれかのパスにおける変数値がPLCプログラムで示された条件を満たさない場合をエラーとして検出する。
このように、試験実行部182が有界モデル検査を行うことで、プログラムの不具合を自動的に検出できることが期待される。
また、試験実行部182が、グローバル変数の値と、そのグローバル変数の値の想定範囲とを比較し、グローバル変数の値が想定範囲外となる場合をエラーとして検出するようにしてもよい。
図6は、グローバル変数リストの例を示す図である。図5の例で、グローバル変数リストは表形式のデータとして構成されており、グローバル変数の変数名、型、下限値及び上限値が格納されている。このグローバル変数リストは、グローバル変数の値の想定範囲を示す範囲情報の例に該当する。
例えば、操作入力部130が、グローバル変数の想定範囲を示すユーザ操作を受ける。変換部181は、ユーザ操作が示すグローバル変数の範囲に基づいてグローバル変数リストを生成する。あるいは、通信部110が他の機器と通信を行ってグローバル変数リスを取得するようにしてもよい。
STのソースコードをC言語のソースコードに変換する際、変換部181は、グローバル変数リストを参照して、C言語のソースコードに事前条件の記述及び事後条件の記述を設ける。
図7は、ソフトウェア試験装置100によるプログラム変換の第4例を示す図である。図7の例で、STのソースコードC41では、行L141の平方根の演算のみで事前条件、事後条件については記載されていない。一方、C言語のソースコードC42では、行L141に対応する行L153の他、グローバル変数の事前条件を示す行L151及びL152と、グローバル変数の事後条件を示す行L154及びL155とが設けられている。
変換部181は、図6のグローバル変数を参照して、行L151及びL152の事前条件の記述と、行L154及びL155の事後条件の記述とを設ける。
以上のように、操作入力部130は、PLCプログラムに含まれるグローバル変数の値の想定範囲を示す範囲情報を取得する。操作入力部130は、範囲情報取得部の例に該当する。試験実行部182は、グローバル変数の値が想定範囲外となる場合をエラーとして検出する。
このように、C言語のソースコードにグローバル変数リストに基づく事前条件が設けられていることで、試験実行部182は、試験対象のプログラムに応じてテストケースを生成または選択する必要がない。この点で、試験実行部182は、いろいろなテストケースで試験を行うことができ、カバレッジを向上させることができる。
また、C言語のソースコードに事後条件が設けられていることで、試験実行部182は、より確実にプログラムの不具合の有無を判定することができる。
変換部181が、サブルーチンコールなどプログラム呼出の箇所に事前条件及び事後条件を設けるようにしてもよい。
図8は、ソフトウェア試験装置100によるプログラム変換の第5例を示す図である。
図8の例で、変換部181は、STのソースコードC51、C52及びC53を、C言語のソースコードC54、C55及びC56に変換している。
STのソースコードC51、C52及びC53の各々の開始時、終了時にそれぞれ事前条件、事後条件の設定がある。一方、ソースコードC51のサブルーチンコールの箇所には事前条件、事後条件は示されていない。
これに対し、変換部181は、ソースコードC51をソースコードC54に変換する際、サブルーチンコールに相当する箇所に事後条件及び事前条件を設ける。
具体的には、変換部181は、ソースコードC55のサブルーチンコールの直前の箇所に、サブルーチンコール先の事前条件Assume2を事後条件Assert2に変換して設けている。また、変換部181は、ソースコードC55のサブルーチンコールからの復帰時の箇所に、サブルーチンコール先の事後条件Assert3を事前条件Assume3に変換して設けている。
同様に、変換部181は、ソースコードC56のサブルーチンコールの直前の箇所に、サブルーチンコール先の事前条件Assume4を事後条件Assert4に変換して設けている。また、変換部181は、ソースコードC56のサブルーチンコールからの復帰時の箇所に、サブルーチンコール先の事後条件Assert5を事前条件Assume5に変換して設けている。
さらに、変換部181は、サブルーチンコールをダミーコードに置き換えている。
以上のように、変換部181は、PLCプログラムにおけるサブルーチンコールを汎用言語プログラムにおける記述に変換する場合、PLCプログラムで呼び出されるサブルーチンに示されている入口条件を、サブルーチンコール時の条件としてサブルーチン呼出側の汎用言語プログラムに含める。また、変換部181は、PLCプログラムで呼び出されるサブルーチンに示されている出口条件を、サブルーチンコールからの復帰時の条件としてサブルーチン呼出側の汎用言語プログラムに含める。試験実行部182は、サブルーチンコール時の条件及びサブルーチンコールからの復帰時の条件を用いてサブルーチン呼出側の汎用言語プログラムを単体試験する。
このように、試験実行部182は、ソースコードC54、C55、C56の各々の単体試験を行うことで、プログラムのパスが比較的短くなり、カバレッジが向上することが期待される。
また、試験実行部182が試験を行った際に、カバレッジが低い箇所をモジュール化して単体試験を行うようにしてもよい。ここでいうモジュール化は、プログラムの部分を1つのプログラムとして構成することである。
図9は、試験実行部182が行うモジュール化の例を示す図である。図9のソースコードC61、C62、C63は、いずれもC言語のソースコードである。
試験実行部182は、まず、C言語のソースコードC61の試験を行う。試験でソースコードC61のうち部分P11のカバレッジが低かった場合、試験実行部182は、この部分P11をモジュール化する。ソースコードC63は、部分P11をモジュール化して得られたソースコードである。また、試験実行部182は、ソースコードC62については部分P11をダミーコードで置き換えている。
さらに試験実行部182は、ソースコードC63に事前条件Assume2及び事後条件Assert3を設けている。例えば試験実行部182は、記号実行法を用いてソースコードC63の事前条件および事後条件を抽出する。あるいは、試験実行部182がユーザへの問い合わせにて事前条件及び事後条件の情報を取得するようにしてもよい。
また、試験実行部182は、ソースコードC63に設けた事前条件Assume2を事後条件Assert2に変換し、ソースコードC62のうちモジュール化部分をダミーコードで置き換えた箇所の直前に設ける。また、試験実行部182は、ソースコードC63に設けた事後条件Assert3を事前条件Assume3に変換し、ソースコードC62のうちモジュール化部分をダミーコードで置き換えた箇所の直後に設ける。
以上のように、試験実行部182は、試験を実行した際に、試験で通らなかったパスを切り出し、切り出したパスに対する試験を行う。
これにより、試験実行部182は、ソースコードC62、C63それぞれを単体で試験することができ、カバレッジの向上が期待される。
なお、ソフトウェア試験装置100が生成したC言語のソースコードを用いて、PLC及び制御対象を含むシステム全体の試験をシミュレーションで行うようにしてもよい。
図10は、ソフトウェア試験システムの機能構成例を示す概略ブロック図である。図10に示すように、ソフトウェア試験システム1は、ソフトウェア試験装置100と、制御システムシミュレーション装置200とを備える。制御システムシミュレーション装置200は、第二通信部210と、第二表示部220と、第二操作入力部230と、第二記憶部270と、第二制御部280とを備える。第二制御部280は、PLC模擬部281と、制御対象模擬部282とを備える。
ソフトウェア試験システム1は、プログラムの試験を単体試験からシステム試験まで行うシステムである。ソフトウェア試験システム1の各部のうちソフトウェア試験装置100は、図1に示すソフトウェア試験装置100と同一であり、ここでは説明を省略する。
制御システムシミュレーション装置200は、PLC及び制御対象を含むシステム全体の試験をシミュレーションで行う。制御システムシミュレーション装置200は、例えばパソコンなど汎用のコンピュータを用いて構成される。
第二通信部210は、他の機器と通信を行う。特に第二通信部210はソフトウェア試験装置100と通信を行って、ソフトウェア試験装置100がSTのソースコードから変換したC言語のソースコードを受信する。
第二表示部220は、液晶パネル又はLEDパネル等の表示画面を備えて各種画像を表示する。
第二操作入力部230は、例えばキーボード及びマウス等の入力デバイスを備えてユーザ操作を受ける。
第二記憶部270は、各種データを記憶する。例えば、第二記憶部270は、PLC及び制御対象を模擬するためのモデルや、第二通信部210がソフトウェア試験装置100から受信したC言語のソースコードを記憶する。
第二記憶部270は、制御システムシミュレーション装置200が備える記憶デバイスを用いて構成される。
第二制御部280は、制御システムシミュレーション装置200の各部を制御して各種処理を実行する。第二制御部280は、制御システムシミュレーション装置200が備えるCPUが第二記憶部270からプログラムを読み出して実行することで構成される。
PLC模擬部281は、PLCの動作を模擬する。具体的には、PLC模擬部281は、第二記憶部270が記憶しているPLCのモデルを用いて、ソフトウェア試験装置100が変換したC言語のソースコードを実行しての制御対象に対する制御を模擬する。
制御対象模擬部282は、制御対象の動作を模擬する。具体的には、制御対象模擬部282は、第二記憶部270が記憶している制御対象のモデルを用いて制御対象の動作を模擬する。
このように、ソフトウェア試験装置100がSTのソースコードからC言語のソースコードの変換を行ったことで、C言語のソースコードを用いてパソコン上で、このソースコードを実行しての制御を模擬することができ、シミュレーションにてシステム試験を行うことができる。
なお、制御部180の全部または一部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することで各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
以上、本発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
1 ソフトウェア試験システム
100 ソフトウェア試験装置
110 通信部
120 表示部
130 操作入力部
170 記憶部
180 制御部
181 変換部
191 パーサジェネレータ
192 パーサ
193 C言語生成器
182 試験実行部
200 制御システムシミュレーション装置
210 第二通信部
220 第二表示部
230 第二操作入力部
270 第二記憶部
280 第二制御部
281 PLC模擬部
282 制御対象模擬部

Claims (13)

  1. プログラマブルロジックコントローラを動作させるPLCプログラムを汎用プログラミング言語で記述された汎用言語プログラムに変換する変換部と、
    前記汎用言語プログラムに対する試験を行う試験実行部と、
    を備えるソフトウェア試験装置。
  2. 前記変換部は、前記PLCプログラムにおけるコメントに含まれる記述のうち所定の条件を満たす記述を、前記汎用言語プログラムで実行対象となる記述に変換する、
    請求項1に記載のソフトウェア試験装置。
  3. 前記変換部は、前記PLCプログラムにおけるコメントに含まれる記述のうち所定の条件を満たす記述を、前記汎用言語プログラムで試験時に実行される記述に変換する、
    請求項2に記載のソフトウェア試験装置。
  4. 前記変換部は、前記PLCプログラムにおけるコメントに含まれる第1文字列を、前記汎用言語プログラムを実行する前提条件を示す記述に変換し、前記PLCプログラムにおけるコメントに含まれる第2文字列を前記汎用言語プログラムの実行後に満たされるべき条件を示す記述に変換し、
    前記試験実行部は、前記汎用言語プログラムへの入力が前記入力の条件を満たし、かつ、前記汎用言語プログラムの出力が前記出力の条件を満たさない場合をエラーとして検出する、
    請求項2または請求項3に記載のソフトウェア試験装置。
  5. 前記PLCプログラムに含まれるグローバル変数の値の想定範囲を示す範囲情報を取得する範囲情報取得部を備え、
    前記試験実行部は、前記グローバル変数の値が前記想定範囲外となる場合をエラーとして検出する、
    請求項1から4のいずれか一項に記載のソフトウェア試験装置。
  6. 前記試験実行部は、記号実行法を用いて前記試験を行う、
    請求項1から5のいずれか一項に記載のソフトウェア試験装置。
  7. 前記試験実行部は、前記PLCプログラムにおけるパスのうち指定されたステップ数以下のパスの各々について、当該パスを実行した場合の変数値を前記汎用言語プログラムを用いて算出し、いずれかのパスにおける変数値が前記PLCプログラムで示された条件を満たさない場合をエラーとして検出する、
    請求項1から5のいずれか一項に記載のソフトウェア試験装置。
  8. 前記PLCプログラムを表示し、前記汎用言語プログラムにおける実行箇所を前記PLCプログラムの表示上に示す表示部を備える
    請求項1から7のいずれか一項に記載のソフトウェア試験装置。
  9. 前記変換部は、前記PLCプログラムにおけるサブルーチンコールを前記汎用言語プログラムにおける記述に変換する場合、前記PLCプログラムで呼び出されるサブルーチンに示されている入口条件を、前記サブルーチンコール時の条件としてサブルーチン呼出側の汎用言語プログラムに含め、前記PLCプログラムで呼び出されるサブルーチンに示されている出口条件を、前記サブルーチンコールからの復帰時の条件としてサブルーチン呼出側の汎用言語プログラムに含め、
    前記試験実行部は、前記サブルーチンコール時の条件及び前記サブルーチンコールからの復帰時の条件を用いて前記サブルーチン呼出側の汎用言語プログラムを単体試験する、
    請求項1から8のいずれか一項に記載のソフトウェア試験装置。
  10. 前記試験実行部が試験を実行した際に、試験で通らなかったパスを切り出し、切り出したパスに対する試験を行う、
    請求項1から9のいずれか一項に記載のソフトウェア試験装置。
  11. 請求項1から10のいずれか一項に記載のソフトウェア試験装置と、
    前記ソフトウェア試験装置が前記PLCプログラムから変換した汎用言語プログラムを実行するPLC模擬部と、
    PLCによる制御対象を模擬する制御対象模擬部と、
    を備えるソフトウェア試験システム。
  12. プログラマブルロジックコントローラを動作させるPLCプログラムを汎用プログラミング言語で記述された汎用言語プログラムに変換し、
    前記汎用言語プログラムに対する試験を行う、
    ソフトウェア試験方法。
  13. コンピュータに、
    プログラマブルロジックコントローラを動作させるPLCプログラムを汎用プログラミング言語で記述された汎用言語プログラムに変換させ、
    前記汎用言語プログラムに対する試験を行わせる、
    ためのプログラム。
JP2017027927A 2017-02-17 2017-02-17 ソフトウェア試験装置、ソフトウェア試験システム、ソフトウェア試験方法およびプログラム Active JP6827340B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2017027927A JP6827340B2 (ja) 2017-02-17 2017-02-17 ソフトウェア試験装置、ソフトウェア試験システム、ソフトウェア試験方法およびプログラム
SG11201906881QA SG11201906881QA (en) 2017-02-17 2018-02-16 Software-testing device, software-testing system, software-testing method, and program
US16/481,485 US10915438B2 (en) 2017-02-17 2018-02-16 Software-testing device, software-testing system, software-testing method, and program
PCT/JP2018/005583 WO2018151277A1 (ja) 2017-02-17 2018-02-16 ソフトウェア試験装置、ソフトウェア試験システム、ソフトウェア試験方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017027927A JP6827340B2 (ja) 2017-02-17 2017-02-17 ソフトウェア試験装置、ソフトウェア試験システム、ソフトウェア試験方法およびプログラム

Publications (3)

Publication Number Publication Date
JP2018133034A true JP2018133034A (ja) 2018-08-23
JP2018133034A5 JP2018133034A5 (ja) 2019-12-26
JP6827340B2 JP6827340B2 (ja) 2021-02-10

Family

ID=63170298

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017027927A Active JP6827340B2 (ja) 2017-02-17 2017-02-17 ソフトウェア試験装置、ソフトウェア試験システム、ソフトウェア試験方法およびプログラム

Country Status (4)

Country Link
US (1) US10915438B2 (ja)
JP (1) JP6827340B2 (ja)
SG (1) SG11201906881QA (ja)
WO (1) WO2018151277A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022019731A (ja) * 2019-12-05 2022-01-27 株式会社アクセル 設計支援装置、設計支援方法、設計支援プログラム及び設計支援システム
JP2022519776A (ja) * 2019-03-28 2022-03-24 ミツビシ・エレクトリック・アールアンドディー・センター・ヨーロッパ・ビーヴィ プログラマブルロジックコントローラプログラムを分析する方法、コンピュータプログラム及び装置
DE112021005500T5 (de) 2020-12-21 2024-01-18 Fanuc Corporation Kontaktplanprogramm-Analysevorrichtung

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110532177A (zh) * 2019-08-05 2019-12-03 华东师范大学 一种面向plc程序的自动化测试用例生成系统
CN110515840A (zh) * 2019-08-05 2019-11-29 华东师范大学 一种面向plc程序的自动化测试用例生成方法
CN111104205A (zh) * 2019-12-24 2020-05-05 浙江中控技术股份有限公司 一种st语言的解释执行方法及系统
CN114610622B (zh) * 2022-03-14 2024-05-28 浙江中控技术股份有限公司 一种系统功能块自动化测试分层设计方法及相关装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002099312A (ja) * 2000-09-22 2002-04-05 Mitsubishi Electric Corp プログラマブルコントローラおよび制御プログラム開発支援装置
JP2007133622A (ja) * 2005-11-10 2007-05-31 Hitachi Ltd エンジニアリングツール及びプログラム変換方法
US20090083719A1 (en) * 2007-09-20 2009-03-26 Delta Electronics, Inc. Method of compiling machine code program for programmable logic controller
JP2015176230A (ja) * 2014-03-13 2015-10-05 富士通株式会社 テストケース生成装置、方法、及びプログラム
WO2016174743A1 (ja) * 2015-04-28 2016-11-03 株式会社日立製作所 ソースコード等価性検証装置、および、ソースコード等価性検証方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5613115A (en) * 1991-12-09 1997-03-18 Total Control Products, Inc. Method for using PLC programming information to generate secondary functions such as diagnostics and operator interface
DE69324388T2 (de) * 1992-01-23 1999-09-09 Mitsubishi Electric Corp Speicherprogrammierbare Steuerung
JP3018912B2 (ja) 1994-08-12 2000-03-13 横河電機株式会社 検証支援システム
TW421761B (en) 1994-04-12 2001-02-11 Yokogawa Electric Corp Verification support system
US6857110B1 (en) * 2001-01-30 2005-02-15 Stretch, Inc. Design methodology for merging programmable logic into a custom IC
US7003733B2 (en) * 2001-01-30 2006-02-21 Duemler David W Programmable logic controller programming system
US7257620B2 (en) * 2001-09-24 2007-08-14 Siemens Energy & Automation, Inc. Method for providing engineering tool services
US20030149608A1 (en) * 2002-02-06 2003-08-07 Kall Jonathan J. Suite of configurable supply chain infrastructure modules for deploying collaborative e-manufacturing solutions
CN1567222A (zh) * 2003-07-09 2005-01-19 松下电器产业株式会社 程序生成装置
EP1700210A2 (en) * 2003-12-15 2006-09-13 Evolveware Information Tech. (India) Pty. Ltd An apparatus for migration and conversion of software code from any source platform to any target platform
JP3994090B2 (ja) * 2004-01-29 2007-10-17 ファナック株式会社 数値制御装置
KR100877572B1 (ko) * 2006-12-01 2009-01-08 윤성재 공정 시퀀스 변환 장치와 방법 및 이를 구현할 수 있는컴퓨터로 읽을 수 있는 기록 매체
US8549486B2 (en) * 2008-04-21 2013-10-01 Microsoft Corporation Active property checking
US20100313128A1 (en) * 2009-06-03 2010-12-09 Siemens Energy & Automation, Inc. System and method for free form comments for a programmable logic controller
JP2012103791A (ja) * 2010-11-08 2012-05-31 Mitsubishi Electric Corp プログラム試験装置、プログラム試験方法およびプログラム試験用プログラム
JP4905597B1 (ja) * 2011-03-15 2012-03-28 オムロン株式会社 コントローラサポート装置、その装置において実行されるためのコントローラサポートプログラム、およびそのプログラムを格納する記録媒体
JP5962088B2 (ja) * 2012-03-15 2016-08-03 オムロン株式会社 Plcシミュレーションシステム、plcシミュレータ、制御プログラム、および記録媒体
WO2013161057A1 (ja) 2012-04-27 2013-10-31 株式会社日立製作所 ソースコード検査方法及び装置
WO2014008491A2 (en) * 2012-07-05 2014-01-09 Renewable Process Technologies Llc System and related method to facilitate process control
EP2898436A1 (en) * 2012-09-18 2015-07-29 Siemens Aktiengesellschaft Multiple programmable logic controller simulator
US20160283353A1 (en) * 2015-03-23 2016-09-29 Tryon Solutions, Inc. Automated software testing
KR101627769B1 (ko) * 2015-12-17 2016-06-08 주식회사 유디엠텍 Plc 제어 프로그램의 공용형식 변환장치 및 방법
DE102016105844A1 (de) * 2016-03-31 2017-10-05 Dspace Digital Signal Processing And Control Engineering Gmbh Verfahren zum Testen eines Steuerprogramms eines Steuergeräts in einer Simulationsumgebung auf einem Rechner

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002099312A (ja) * 2000-09-22 2002-04-05 Mitsubishi Electric Corp プログラマブルコントローラおよび制御プログラム開発支援装置
JP2007133622A (ja) * 2005-11-10 2007-05-31 Hitachi Ltd エンジニアリングツール及びプログラム変換方法
US20090083719A1 (en) * 2007-09-20 2009-03-26 Delta Electronics, Inc. Method of compiling machine code program for programmable logic controller
JP2015176230A (ja) * 2014-03-13 2015-10-05 富士通株式会社 テストケース生成装置、方法、及びプログラム
WO2016174743A1 (ja) * 2015-04-28 2016-11-03 株式会社日立製作所 ソースコード等価性検証装置、および、ソースコード等価性検証方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
徳本 晋 他: "C/C++シンボリック実行ツールKLEEの適用とCPPUNIT連携ツールの開発", 情報処理学会 組込みシステムシンポジウム 2011, JPN6020038043, 12 October 2011 (2011-10-12), JP, pages 23 - 1, ISSN: 0004361542 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022519776A (ja) * 2019-03-28 2022-03-24 ミツビシ・エレクトリック・アールアンドディー・センター・ヨーロッパ・ビーヴィ プログラマブルロジックコントローラプログラムを分析する方法、コンピュータプログラム及び装置
JP7204955B2 (ja) 2019-03-28 2023-01-16 ミツビシ・エレクトリック・アールアンドディー・センター・ヨーロッパ・ビーヴィ プログラマブルロジックコントローラプログラムを分析する方法、コンピュータプログラム及び装置
JP2022019731A (ja) * 2019-12-05 2022-01-27 株式会社アクセル 設計支援装置、設計支援方法、設計支援プログラム及び設計支援システム
JP7199754B2 (ja) 2019-12-05 2023-01-06 株式会社アクセル 設計支援装置、設計支援方法、設計支援プログラム及び設計支援システム
DE112021005500T5 (de) 2020-12-21 2024-01-18 Fanuc Corporation Kontaktplanprogramm-Analysevorrichtung

Also Published As

Publication number Publication date
US20190391910A1 (en) 2019-12-26
SG11201906881QA (en) 2019-09-27
US10915438B2 (en) 2021-02-09
JP6827340B2 (ja) 2021-02-10
WO2018151277A1 (ja) 2018-08-23

Similar Documents

Publication Publication Date Title
WO2018151277A1 (ja) ソフトウェア試験装置、ソフトウェア試験システム、ソフトウェア試験方法およびプログラム
CA2956364C (en) System and method for coverage-based automated test case augmentation for design models
EP2555117A1 (en) Code inspection executing system for performing a code inspection of abap source codes
US9582396B2 (en) Techniques for generating an executable debugger script
CN106775913B (zh) 一种目标代码控制流图生成方法
KR101722856B1 (ko) 프로그래밍 언어 기반의 plc 자동 테스트 장치
CN114911711A (zh) 一种代码缺陷分析方法、装置、电子设备及存储介质
Abbors et al. MATERA-an integrated framework for model-based testing
US20220137586A1 (en) Method, computer program and apparatus for analysing a programmable logic controller program
CN110442520B (zh) 一种基于plc编程语言的交叉调试系统及方法
KR20190094779A (ko) Plc 명령어 컴파일러 테스트케이스 자동 생성 장치
US6546526B2 (en) Active trace debugging for hardware description languages
EP2820547B1 (en) Debugging method and computer program product
US20230030253A1 (en) Method for analyzing a programmable logic controller program
Frey et al. “Safety automata”—A new specification language for the development of PLC safety applications
CN109271237A (zh) 仿真控制方法和装置
Liu et al. Efficient testing based on logical architecture
CN110659215A (zh) 一种开放式工业app快速开发及测试验证方法
JP2005316710A (ja) ソフトウェア試験支援装置
KR20210012789A (ko) 코딩 교육 방법 및 코딩 교육 로봇
Sethi et al. Autonlu: Detecting, root-causing, and fixing nlu model errors
KR20040046464A (ko) 비기능적 성능조건이 강제되는 소프트웨어 모형화시스템및 방법
Trout Testing safety-critical systems using Model-based Systems Engineering (MBSE)
Rinko Efficient IEC 61131-3 Structured Text tooling in modern distributed control system
CN117632721A (zh) 测试用例的生成方法、装置及电子设备

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20170220

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180323

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191115

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201006

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201207

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210119

R150 Certificate of patent or registration of utility model

Ref document number: 6827340

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350