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

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

Info

Publication number
JP6477553B2
JP6477553B2 JP2016049247A JP2016049247A JP6477553B2 JP 6477553 B2 JP6477553 B2 JP 6477553B2 JP 2016049247 A JP2016049247 A JP 2016049247A JP 2016049247 A JP2016049247 A JP 2016049247A JP 6477553 B2 JP6477553 B2 JP 6477553B2
Authority
JP
Japan
Prior art keywords
program
safety
document
identification value
development support
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
JP2016049247A
Other languages
English (en)
Other versions
JP2017167588A (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 JP2016049247A priority Critical patent/JP6477553B2/ja
Priority to CN201710020384.7A priority patent/CN107193249B/zh
Priority to EP17151107.4A priority patent/EP3220218B1/en
Priority to US15/407,506 priority patent/US10095512B2/en
Publication of JP2017167588A publication Critical patent/JP2017167588A/ja
Application granted granted Critical
Publication of JP6477553B2 publication Critical patent/JP6477553B2/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/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/058Safety, monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation
    • 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/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0426Programming the control sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44552Conflict resolution, i.e. enabling coexistence of conflicting executables
    • 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/13129Automatic documentation of program
    • 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/14Plc safety
    • G05B2219/14014Redundant processors and I-O
    • 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/20Pc systems
    • G05B2219/23Pc programming
    • G05B2219/23009Automatic documentation of program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/006Identification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Library & Information Science (AREA)
  • Programmable Controllers (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Description

本技術は、安全コントローラで実行される安全プログラムの開発を支援するプログラム開発支援装置、プログラム開発支援プログラムおよびプログラム開発支援方法に関する。
多くの製造現場で使用される機械を安全に使用するためには、国際規格に従う安全機器(安全コンポーネント)を使用しなければならばない。この安全機器は、ロボットなどの自動的に動く装置によって人の安全が脅かされるのを防止することを目的としている。このような安全機器は、安全プログラムを実行する安全コントローラをはじめとして、人の存在や侵入を検知する検知機器、非常時の操作を受付ける入力機器、実際に機器を停止させる出力機器などを含む。
このような安全プログラムの開発に関連して、特開2015−018553号公報(特許文献1)は、プロセスプラントにおける制御システムおよび安全システムに関して、環境をプログラミングする機能ブロック図に容易に統合され得る1つ以上の状態マシン機能ブロックを使用する構成が開示されている。
特開2015−018553号公報
安全コントローラを含むシステム全体の機能安全を評価するにあたって、安全プログラムの内容を示すドキュメントが重要である。特に、パーソナルコンピュータ上などで作成された安全プログラムを安全コントローラへ転送した後、当該安全コントローラ上で実行される安全プログラムおよび各種設定を直接変更する操作(典型的には、「オンラインエディット」などと称される。)が行われることもあり、パーソナルコンピュータ上にある安全プログラムとの整合性が取れなくなる場合も生じ得る。また、出力されたドキュメント自体が改ざんされる可能性もある。そのため、特に、機能安全の評価においては、ドキュメントの取り扱いを慎重にする必要がある。
上述の特許文献1は、状態マシン機能ブロック(SMFB)の構成された機能を、マトリクスの表現を印刷することによって容易にドキュメント化されることを開示するのみであり、上述したような課題について、何ら考慮するものではない。
このように、安全コントローラで実行される安全プログラムに係るドキュメントの取り扱いを厳密化するための構成が要望されている。
本発明のある局面に従う安全コントローラで実行される安全プログラムの開発を支援するプログラム開発支援装置は、ユーザ操作に応じて安全プログラムを開発する開発手段と、入力に対して不規則的な値を計算する関数に従って、開発された安全プログラムのデータに応じた識別値を計算する計算手段と、安全プログラムに係るドキュメントを出力する出力手段とを含む。出力手段は、ドキュメントの安全プログラムに係るページのすべてに、計算手段により計算された識別値を付与する。
好ましくは、出力手段は、出力されるドキュメントを構成するページのうち、機能安全に係るページについて、当該ページのすべてに計算手段により計算された識別値を付与する。
好ましくは、計算手段は、開発手段により生成される複数のデータからそれぞれ第1の識別値を計算するとともに、複数の第1の識別値からドキュメントに付与する第2の識別値を計算する。
好ましくは、計算手段は、予め定められた生成多項式に従って計算される巡回冗長検査コードを識別値として出力する。
好ましくは、出力手段は、プログラム開発支援装置にて保持される安全プログラムから計算される識別値と、安全コントローラで実行される安全プログラムから計算される識別値とが同一であることを条件として、ドキュメントを出力する。
本発明の別の局面に従えば、安全コントローラで実行される安全プログラムの開発を支援するプログラム開発支援プログラムが提供される。プログラム開発支援プログラムはコンピュータに、ユーザ操作に応じて安全プログラムを開発するステップと、入力に対して不規則的な値を計算する関数に従って、開発された安全プログラムのデータに応じた識別値を計算するステップと、安全プログラムに係るドキュメントを出力するステップとを実行させる。出力するステップは、ドキュメントの安全プログラムに係るページのすべてに、計算された識別値を付与するステップを含む。
本発明のさらに別の局面に従えば、安全コントローラで実行される安全プログラムの開発を支援する装置で実行されるプログラム開発支援方法が提供される。プログラム開発支援方法は、ユーザ操作に応じて安全プログラムを開発するステップと、入力に対して不規則的な値を計算する関数に従って、開発された安全プログラムのデータに応じた識別値を計算するステップと、安全プログラムに係るドキュメントを出力するステップとを含む。出力するステップは、ドキュメントの安全プログラムに係るページのすべてに、計算された識別値を付与するステップを含む。
本発明によれば、安全コントローラで実行される安全プログラムに係るドキュメントの取り扱いを厳密化できる。
本実施の形態に従う安全システムで実行される安全プログラムに関するドキュメント管理の概要について説明する模式図である。 本実施の形態に従う支援装置から出力されるドキュメントの一例を示す模式図である。 本実施の形態に従う支援装置から出力されるドキュメントの一例を示す模式図である。 本実施の形態に従う支援装置の構成例を示す模式図である。 本実施の形態に従うドキュメント出力機能に用いる署名コードの生成処理を説明する模式図である。 本実施の形態に従う支援装置から出力されるドキュメントの別の一例を示す模式図である。 本実施の形態に従う支援装置における検証機能の処理手順を示すシーケンス図である。
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
<A.ドキュメント管理の概要>
まず、本実施の形態に従う安全コントローラで実行される安全プログラムに関するドキュメント管理の概要について説明する。図1は、本実施の形態に従う安全システムで実行される安全プログラムに関するドキュメント管理の概要について説明する模式図である。
図1を参照して、一例として、プログラム開発支援装置(以下、「支援装置」とも略称する。)100と、安全コントローラ200とを含む安全システム1を想定する。支援装置100は、安全コントローラ200で実行される安全プログラムの開発を支援する装置である。
このような安全システム1において、ユーザは、支援装置100を用いて安全プログラム300Aを開発(作成やデバッグなど)する((1)開発)。一旦開発が完了すると、ユーザは、支援装置100で作成した安全プログラム300Aを安全コントローラへ転送する((2)転送)。安全コントローラ200では、転送された安全プログラムを実行する((3)安全プログラム実行)。なお、支援装置100から安全コントローラ200への転送時には、支援装置100で作成された安全プログラムのソースコードが実行形式(例えば、オブジェクト形式)などに変換されることもある。
この安全コントローラ200へ転送されて実行中の安全プログラム300Aについて、支援装置100を介してドキュメント310Aが生成される。ドキュメントの生成としては、例えば、プリンタで印刷物として出力される形態や、PDF(Portable Data Format)などの電子的なドキュメントとして出力される形態が想定される。
その後、支援装置100上で安全プログラム300Aに対して変更が加えられて((4)変更)、別の安全プログラム300Bが作成されたとする。この安全プログラム300Bについて、支援装置100を介してドキュメント310Bを生成することもできる。
本来的には、安全コントローラ200で実行される安全プログラムについて、機能安全を評価する必要がある。但し、評価の利便性・客観性などの観点から、支援装置100上にある安全プログラムについて、安全コントローラ200で実行される安全プログラムと同一であることを確認した上で、当該支援装置100から出力されるドキュメントに基づいて、機能安全が評価される。
一方で、支援装置100で作成された安全プログラム300Aから出力されたドキュメント310Aの一部のページを、変更された安全プログラム300Bから出力されたドキュメント310Bの対応するページと差し替えるような、意図的なページ改ざんを行うこともできる。あるいは、誤って、2種類のドキュメントが混ざった状態になり得る。
このように、ドキュメント中の一部ページの改ざん((A)ページ改ざん)、あるいは、ドキュメントの内容と安全コントローラ200で実行される安全プログラムの内容との不一致((B)内容不一致)などの問題を防止する必要がある。
そこで、本実施の形態に従う支援装置100は、機能安全の評価の確実性を担保するような機能を提供する。より具体的には、安全プログラム300から生成されるドキュメント310には、当該安全プログラム300のデータに基づいて計算される識別値が付与される。
図2および図3は、本実施の形態に従う支援装置100から出力されるドキュメントの一例を示す模式図である。図2(A)を参照して、安全プログラム300Aから出力されたドキュメント310Aには、安全プログラム300Aに含まれるロジックがファンクションブロックを用いて定義されている。ドキュメント310Aには、さらに、署名コードとして「#AAC7」が付与されている。
一方、図2(B)に示されるドキュメント310Bには、安全プログラム300Bに含まれるロジックがファンクションブロックを用いて定義されている。一例として、安全プログラム300Aのファンクションブロック312Aの「S_AutoReset」(符号313A)には、「FALSE」が設定されている一方で、安全プログラム300Bのファンクションブロック312Bの「S_AutoReset」(符号313A)には、「TRUE」が設定されている。このとき、ドキュメント310Bには、署名コードとして「#DAX1」が付与されている。このように、安全プログラムのごく一部の変更であっても、付与される署名コードの値は、大きく変化する。
本実施の形態に従う支援装置100が出力するドキュメントには、対応する安全プログラムのデータ(コード)に応じて不規則に計算される識別値である、署名コードが付与される。この署名コードは、対応する安全プログラムに関連するドキュメント全体に亘って一律に付与される。
そのため、例えば、図3に示すように、ある安全プログラムから生成されたドキュメントと、別の安全プログラムから生成されたドキュメントとが、万が一混ざったとしても、いずれのページのドキュメントが異なる安全プログラムから生成されたドキュメントであるかを確実に特定することができる。
支援装置100は、入力に対して不規則的な値を計算する関数に従って、開発された安全プログラムのデータに応じた識別値を計算する機能とともに、安全プログラムに係るドキュメントを出力する機能を有している。そして、この出力する機能において、ドキュメントの安全プログラムに係るページのすべてに、計算された識別値を署名コードとして付与する。
本実施の形態において使用される識別値としては、上述したように、安全プログラムに対する軽微な変更によって、その値が不規則かつ関連のない値に変化するようなものが好ましい。例えば、所定の生成多項式に従って計算されるCRC(Cyclic Redundancy Check:巡回冗長検査)コードや、多次元のパリティを順次並べたデータ列などを用いることができる。あるいは、一方向性ハッシュ関数などを用いて計算されるハッシュ値を用いることができる。
<B.プログラム開発支援装置の構成>
次に、本実施の形態に従うドキュメント出力機能を有する支援装置100の構成について概略する。図4は、本実施の形態に従う支援装置100の構成例を示す模式図である。
図4に示す本実施の形態に従う支援装置100は、典型的には、必要なソフトウェアを汎用コンピュータにインストールして実行することで実現できる。
具体的には、支援装置100は、主たるコンポーネントとして、後述するプログラムを実行するプロセッサ102と、プロセッサ102でのプログラム実行に必要なデータを格納するための作業領域を提供する主メモリ104と、キーボードやマウスなどのユーザ操作を受付ける入力部106と、ディスプレイ、各種インジケータ、プリンタなどの処理結果を出力する出力部108と、外部ネットワークと通信するためのネットワークインターフェイス(I/F:interface)110と、光学ドライブ112と、安全コントローラなどと通信するためのローカル通信インターフェイス(I/F)116と、補助記憶装置120とを含む。これらのコンポーネントは、内部バス118などを介して互いにデータ通信可能に接続される。
支援装置100は、光学ドライブ112を有しており、コンピュータ読取可能なプログラムを非一過的に格納する光学記録媒体(例えば、DVD(Digital Versatile Disc)など)のコンピュータ読取可能な記録媒体114から、各種プログラムを読取って補助記憶装置120などにインストールする。本実施の形態に従うドキュメント出力機能は、安全コントローラに対する設定、プログラミング、デバッグなどの機能を提供する開発環境プログラムの一部として提供されてもよい。
支援装置100で実行される各種プログラムは、コンピュータ読取可能な記録媒体114を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に従うドキュメント出力機能に係るプログラムは、OSが提供するモジュールの一部を利用する形で実現される場合もある。このような場合には、本実施の形態に従うドキュメント出力機能の実現に必要なすべてのソフトウェアモジュールが配布されるのではなく、その一部のみが配布されることになる。このような場合であっても、本発明の技術的範囲に包含されることは自明である。また、本実施の形態に従うドキュメント出力機能に係る処理が、他のプログラムまたはソフトウェアの一部として実装されてもよい。
補助記憶装置120は、例えば、HDD(Hard Disk Drive)やSSD(Flash Solid State Drive)などで構成され、プロセッサ102で実行されるプログラムや各種データを不揮発的に格納する。具体的には、補助記憶装置120は、安全プログラム(ソースプログラム)から安全コントローラにて実行可能なコード(実行モジュール)を生成するための実行モジュール生成プログラム122と、安全プログラムの作成・編集するためのエディタプログラム124と、本実施の形態に従うドキュメント出力に係る処理を実行する検証・出力プログラム126とを含む。また、補助記憶装置120は、安全プログラム300のソースコードおよび構成データ308を保持する。
図4には、汎用コンピュータがプログラムを実行することで、本実施の形態に従うドキュメント出力機能を実現するが、このような構成に代えて、その全部または一部をハードワイヤード回路で実装してもよい。例えば、プロセッサ102が上述の各種プログラムを実行することで提供される機能をASIC(Application Specific Integrated Circuit)やFPGA(Field-Programmable Gate Array)を用いて実装してもよい。
<C.署名コードの生成処理>
次に、本実施の形態に従うドキュメント出力機能に用いる署名コードの生成処理について説明する。
本実施の形態に従うドキュメント出力機能に用いる署名コードの生成方法としては、入力に対して不規則的な値を計算する関数であれば、任意のアルゴリズムを採用することができる。上述したように、例えば、予め定められた生成多項式を用いて計算されるCRCコードや、一方向性ハッシュ関数を用いて計算されるハッシュ値などが挙げられる。
本実施の形態においては、予め定められた生成多項式に従って計算されるCRCコードが識別値として出力されるものとする。CRCコードは、データ転送などの別の用途にも用いられるため、既にロジックが組み込まれている場合も多く、本実施の形態に従う署名コードを実装する際に、追加するロジックのコード量が少なくて済むという利点がある。
なお、本明細書において「関数」とは、入力値に対して対応する出力値を都度計算する計算式に限らず、入力値と出力値との対応関係を予め規定したテーブルを用いる構成を含み得る。
安全コントローラで実行される安全プログラムは、複数のソースコードおよび構成データ(設定値群)の組み合わせで構成される場合もある。一方で、ドキュメントに付与される署名コードは少なくとも1つあればよい。そのため、データの集合に対してそれぞれ署名コードを生成し、複数の署名コードから最終的な署名コードを生成するという、2段階の署名コードの生成手順を踏んでもよい。なお、複数のソースコードおよび必要な構成データ(設定値群)の組み合わせ全体を「プロジェクト」と称することもある。
図5は、本実施の形態に従うドキュメント出力機能に用いる署名コードの生成処理を説明する模式図である。図5に示す署名コード生成ロジック150は、典型的には、支援装置100のプロセッサ102が検証・出力プログラム126(図4)を実行することで実現される。
図5を参照して、安全プログラム300は、安全コントローラ200で実行されるユーザプログラムであり、機能安全を実現するためのロジックと、それ以外の機能を実現するためのロジックとを含み得る。以下では、前者のロジックを「機能***」と称し、後者のロジックを「非機能***」と総称する。
機能***は、ユーザプログラム中の安全コンポーネントからの入力信号に応答して、予め定められたロジックを実行するとともに、そのロジックの実行結果に基づいて対象となる安全コンポーネントを活性化し、装置を緊急停止させたりする。非機能***は、例えば、何らかの入力信号に応答して、装置のスイッチを入れたり、目的に応じて装置を駆動したりする。
構成データ308は、安全コントローラで安全プログラムを実行するために必要な設定情報を含み、例えば、I/Oユニットの配置構成、ネットワーク設定、I/Oユニットに対するデバイス割り当て、I/Oユニットに割り当てられた信号に対するプログラム内で使用する変数の割り当てなどを含む。
第1の段階において、署名コード生成ロジック150により、4つのデータ集合(機能***302、機能***304、非機能***306、構成データ308)のそれぞれから4つの署名コード(機能***1署名コード322、機能***2署名コード324、非機能***署名コード326、構成データ署名コード328)が生成される。図5に示す例では、CRCコードが署名コードとして用いられるので、署名コード生成ロジック150は、予め用意されたCRCテーブル152を参照しつつ、それぞれの署名コードを生成する。
さらに、4つの署名コードが生成されるので、署名コード生成ロジック150は、これらの4の署名コードから単一のドキュメント用署名コード314を生成する。そして、この生成されたドキュメント用署名コード314が生成されるドキュメントに付与される。
このように、支援装置100は、開発プロセスによって生成される複数のデータからそれぞれ署名コード322,324,326,328(第1の識別値)を計算するとともに、複数の署名コード322,324,326,328からドキュメントに付与する署名コード314(第2の識別値)を計算する。
上述のような手順に従って、複数段階を経て単一の署名コードを生成することで、安全プログラム300(ソースコード)および安全プログラム300の実行に必要な構成データ308のすべてのデータを反映した署名コードを生成することができる。これによって、例えば、機能***ではなく、構成データの一部が変更された場合であっても、生成されるドキュメント用署名コードの値は大きく変化するので、実行される安全プログラムに係るドキュメントが先のものとは異なっていることを一見して認識できる。
<D.必要部分のみに署名コード付与>
上述したような安全コントローラは、一種のPLC(Programmable Logic Controller)であり、上述したような安全プログラムの他、一般的な制御プログラムも実行可能である。また、安全プログラムには、図5に示すような非機能***も含まれ得る。一方で、上述したような署名コードは、少なくとも、機能安全の評価に関連する部分についてのみ存在すれば機能を果たす。そのため、出力されるドキュメントの全体(すなわち、全ページ)に対して署名コードを付与するのではなく、機能安全に係る部分(すなわち、一部のページ)のみに対して、署名コードを付与するようにしてもよい。
図6は、本実施の形態に従う支援装置100から出力されるドキュメントの別の一例を示す模式図である。図6を参照して、ドキュメント330は、非機能***に相当するドキュメント部分332と、機能***に相当するドキュメント部分334との組み合わせからなる。機能***に相当するドキュメント部分334については、ドキュメント用署名コード314が付与されている一方で、非機能***に相当するドキュメント部分332については、対応する位置にドキュメント用署名コード314が存在していない。
このように、支援装置100は、出力されるドキュメントを構成するページのうち、機能安全に係るページについて、当該ページのすべてに計算された署名コード(識別値)を付与する。
ある安全コントローラで実行される安全プログラムに関するドキュメントのページ数が大量である場合などには、プログラムの一部が変更または改変されるたびに、ドキュメントを全ページ分印刷することは非効率である場合も想定される。そのため、少なくとも、機能安全に係るページについては署名コードを付与して、ページ改ざんなどを防止する一方で、それ以外のページについては、事後的なページ差し替えなどを許容して、機能安全と経済性・合理性との確保を実現する。
機能***に相当するドキュメント部分334のみに署名コードを付与する構成を採用する場合には、署名コードの計算の対象から非機能***のデータを除外することが好ましい。すなわち、機能***に相当するドキュメント部分334に付与する署名コードは、機能***のデータのみから計算することが好ましい。より具体的には、図5に示す、機能***1署名コード322および機能***2署名コード324のみから、単一のドキュメント用署名コード314を生成するようにしてもよい。このような構成を採用することで、非機能***に対する編集操作などがなされたとしても、機能***に対する変更がなければ、同一の署名コードが維持されるので、取り扱いが容易化する。
なお、出力されるドキュメントのいずれの部分を機能***とみなし、それ以外の部分の非機能***とみなすのかといった判断基準については、予め設定しておくことができる。一般的には、機能安全に係る安全コンポーネントからの入力信号を取得する処理、当該取得された入力信号に対して実行されるロジック、当該ロジックの結果を反映して安全コンポーネントへ指令を出力する処理、などについては、機能***とすることが好ましい。
一方で、付加的な処理、例えば、エラーログを収集するための処理などについては、非機能***とみなすことが好ましい。
<E.安全コントローラとの間の検証機能>
次に、支援装置100がドキュメントを出力するソースとなる安全プログラムの検証機能について説明する。図1を参照して説明したように、支援装置100から出力されるドキュメントの内容が、安全コントローラ200で実行される安全プログラムの内容と一致していなければ、ドキュメントに基づいて機能安全を評価することができない。そのため、本実施の形態に従う支援装置100では、以下に示すような、安全コントローラ200との間で安全プログラムの同一性を検証する機能を有している。
図7は、本実施の形態に従う支援装置100における検証機能の処理手順を示すシーケンス図である。図7を参照して、まず、ユーザは、支援装置100上で安全プログラムを開発する(ステップS10)。開発された安全プログラムが安全コントローラ200へ転送される(ステップS12)。このとき、ソースプログラムが実行可能な形式に変換された上で、安全コントローラ200へ転送されてもよい。
ユーザは、支援装置100を用いて、安全コントローラ200上で実行される安全プログラムに対してデバッグを行う(ステップS14)。安全コントローラ200へ転送される前に、支援装置100上で安全プログラムに対するデバッグは行われるが、安全プログラムを現実に実行させて初めて判明する不具合もあるため、安全コントローラ200への安全プログラムの転送後に、デバッグが行われる。このデバッグの内容を自動的に支援装置100に保持されている安全プログラムおよび構成データ(設定値群)に反映するようにしてもよい。
デバッグ完了後、ユーザは、支援装置100に保持されている安全プログラムおよび安全コントローラ200で実行されている安全プログラムの同一性を確認した上で、ドキュメント出力を指示する(ステップS16)。この同一性を確認する項目としては、安全プログラムのプロパティ、ユニット構成、ネットワーク構成、通信項目、タスク設定、変数設定などである。
すると、支援装置100は、現在の安全プログラムおよび関連する構成データなどに基づいて署名コードを生成する(ステップS18)。並行して、安全コントローラ200においても、署名コードを生成する(ステップS20)。これらの署名コードの生成には、共通のロジックが用いられる。そして、安全コントローラ200は、生成した署名コード(安全コントローラ)を支援装置100へ送信する(ステップS22)。
支援装置100は、支援装置100が生成した署名コード(支援装置)と安全コントローラ200から受信した署名コード(安全コントローラ)とを比較し、その同一性を評価する(ステップS24)。両署名コードが同一である場合に限って、その署名コードを付与したドキュメントを出力する(ステップS26)。
このように、支援装置100は、支援装置100にて保持される安全プログラムから計算される署名コード(識別値)と、安全コントローラ200で実行される安全プログラムから計算される署名コード(識別値)とが同一であることを条件として、ドキュメントを出力するようにしてもよい。
図7には、支援装置100および安全コントローラ200の各々で署名コードを生成する構成について例示したが、これに限らず、各種の方法を採用してもよい。例えば、安全コントローラ200から支援装置100に対して、実行中の安全プログラムを転送し、支援装置100にて、当該安全コントローラ200からの安全プログラムについての署名コードを生成するようにしてもよい。あるいは、安全プログラムのコード自体を比較し、両者が一致した場合に限って、署名コードを生成するようにしてもよい。
このように、ドキュメントを出力する支援装置100が保持する安全プログラムと、安全コントローラ200で実行される安全プログラムとの同一性が維持されていることを条件とした上で、署名コードを付与したドキュメントを出力するようにしてもよい。
なお、安全プログラムの同一性が検証されるまでは、ドキュメントは出力するものの、署名コードを付与しないようにしてもよい。この場合、署名コードが付与されていないドキュメントについては、機能安全の検証には用いることができない。このような一連の処理によって、支援装置100から出力されるドキュメントと、安全コントローラ200で実行される安全プログラムとの同一性を確保できる。
<F.利点>
本実施の形態に従う支援装置100は、出力されるドキュメントの安全プログラムに係るページのすべてに、当該安全プログラムの同一性を担保するための識別値である署名コードが付与されるので、一部ページの差し替えといった改ざんなどを容易に発見することができ、安全コントローラで実行される安全プログラムに係るドキュメントの取り扱いを厳密化できる。
また、本実施の形態に従う支援装置100は、少なくとも、ドキュメントの機能安全に係るページのみに署名コードを付与し、それ以外のページには署名コードを付与しないようにすることもできる。このような必要なページにのみ署名コードを付与する構成を採用することで、安全プログラムに対する軽微な修正や変更などの際に、ドキュメント全体を再出力するといった非効率的な作業を回避できる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1 安全システム、100 支援装置、102 プロセッサ、104 主メモリ、106 入力部、108 出力部、110 ネットワークインターフェイス(I/F)、112 光学ドライブ、114 記録媒体、116 ローカル通信インターフェイス(I/F)、118 内部バス、120 補助記憶装置、122 実行モジュール生成プログラム、124 エディタプログラム、126 出力プログラム、150 署名コード生成ロジック、152 CRCテーブル、200 安全コントローラ、300,300A,300B 安全プログラム、302,304 機能***、306 非機能***、308 構成データ、310,310A,310B,330 ドキュメント、312A,312B ファンクションブロック、314,322,324,326,328 署名コード、332,334 ドキュメント部分。

Claims (7)

  1. 安全コントローラで実行される安全プログラムの開発を支援するプログラム開発支援装置であって、
    ユーザ操作に応じて安全プログラムを開発する開発手段と、
    特定の規則に従った演算を行う関数に従って、開発された安全プログラムのデータに応じた識別値を計算する計算手段と、
    前記安全プログラムに係るドキュメントを出力する出力手段とを備え、
    前記出力手段は、前記ドキュメントの前記安全プログラムに係るページのすべてに、前記計算手段により計算された識別値を付与する、プログラム開発支援装置。
  2. 前記出力手段は、出力されるドキュメントを構成するページのうち、機能安全に係るページについて、当該ページのすべてに前記計算手段により計算された識別値を付与する、請求項1に記載のプログラム開発支援装置。
  3. 前記計算手段は、前記開発手段により生成される複数のデータからそれぞれ第1の識別値を計算するとともに、複数の第1の識別値から前記ドキュメントに付与する第2の識別値を計算する、請求項1または2に記載のプログラム開発支援装置。
  4. 前記計算手段は、予め定められた生成多項式に従って計算される巡回冗長検査コードを前記識別値として出力する、請求項1〜3のいずれか1項に記載のプログラム開発支援装置。
  5. 前記出力手段は、前記プログラム開発支援装置にて保持される安全プログラムから計算される識別値と、前記安全コントローラで実行される安全プログラムから計算される識別値とが同一であることを条件として、前記ドキュメントを出力する、請求項1〜4のいずれか1項に記載のプログラム開発支援装置。
  6. 安全コントローラで実行される安全プログラムの開発を支援するプログラム開発支援プログラムであって、前記プログラム開発支援プログラムはコンピュータに
    ユーザ操作に応じて安全プログラムを開発するステップと、
    特定の規則に従った演算を行う関数に従って、開発された安全プログラムのデータに応じた識別値を計算するステップと、
    前記安全プログラムに係るドキュメントを出力するステップとを実行させ、
    前記出力するステップは、前記ドキュメントの前記安全プログラムに係るページのすべてに、前記計算された識別値を付与するステップを含む、プログラム開発支援プログラム。
  7. 安全コントローラで実行される安全プログラムの開発を支援する装置で実行されるプログラム開発支援方法であって、
    ユーザ操作に応じて安全プログラムを開発するステップと、
    特定の規則に従った演算を行う関数に従って、開発された安全プログラムのデータに応じた識別値を計算するステップと、
    前記安全プログラムに係るドキュメントを出力するステップとを備え、
    前記出力するステップは、前記ドキュメントの前記安全プログラムに係るページのすべてに、前記計算された識別値を付与するステップを含む、プログラム開発支援方法。
JP2016049247A 2016-03-14 2016-03-14 プログラム開発支援装置、プログラム開発支援プログラムおよびプログラム開発支援方法 Active JP6477553B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2016049247A JP6477553B2 (ja) 2016-03-14 2016-03-14 プログラム開発支援装置、プログラム開発支援プログラムおよびプログラム開発支援方法
CN201710020384.7A CN107193249B (zh) 2016-03-14 2017-01-12 程序开发辅助装置以及程序开发辅助方法
EP17151107.4A EP3220218B1 (en) 2016-03-14 2017-01-12 Program development support device, program development support method, and program development support program
US15/407,506 US10095512B2 (en) 2016-03-14 2017-01-17 Program development support device, non-transitory storage medium storing thereon computer-readable program development support program, and program development support method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016049247A JP6477553B2 (ja) 2016-03-14 2016-03-14 プログラム開発支援装置、プログラム開発支援プログラムおよびプログラム開発支援方法

Publications (2)

Publication Number Publication Date
JP2017167588A JP2017167588A (ja) 2017-09-21
JP6477553B2 true JP6477553B2 (ja) 2019-03-06

Family

ID=58017892

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016049247A Active JP6477553B2 (ja) 2016-03-14 2016-03-14 プログラム開発支援装置、プログラム開発支援プログラムおよびプログラム開発支援方法

Country Status (4)

Country Link
US (1) US10095512B2 (ja)
EP (1) EP3220218B1 (ja)
JP (1) JP6477553B2 (ja)
CN (1) CN107193249B (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6816553B2 (ja) * 2017-02-21 2021-01-20 オムロン株式会社 制御システム
JP7024678B2 (ja) * 2018-09-28 2022-02-24 オムロン株式会社 制御システム、サポート装置、サポートプログラム
DE102018129354A1 (de) * 2018-11-21 2020-05-28 Phoenix Contact Gmbh & Co. Kg Verfahren zum Bearbeiten von Anwendungsprogrammen auf einem verteilten Automatisierungssystem
JP7404748B2 (ja) * 2019-10-03 2023-12-26 オムロン株式会社 プログラム開発装置およびプログラム開発装置を実現するためのプログラム
JP2022162327A (ja) * 2021-04-12 2022-10-24 オムロン株式会社 制御装置、制御システム、管理方法およびプログラム

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4864569A (en) * 1987-11-25 1989-09-05 Westinghouse Electric Corp. Software verification and validation configuration management system
US5359659A (en) * 1992-06-19 1994-10-25 Doren Rosenthal Method for securing software against corruption by computer viruses
JP2001022574A (ja) * 1999-07-05 2001-01-26 Mitsubishi Electric Corp モジュール保守管理システム
US20030028774A1 (en) * 2001-08-06 2003-02-06 Meka Anil Kumar Ensuring the integrity of an electronic document
WO2003084151A2 (en) * 2002-04-03 2003-10-09 Gsbs Development Corporation Communication system
US7571370B2 (en) * 2003-06-19 2009-08-04 Lsi Logic Corporation Configurable, fast, 32-bit CRC generator for 1-byte to 16-bytes variable width input data
US7533369B2 (en) * 2004-03-15 2009-05-12 Ramco Systems Limited Method and system for providing documentation and training in a software development activity
US7788640B2 (en) * 2004-12-28 2010-08-31 Microsoft Corporation Using code analysis to generate documentation
US20080250394A1 (en) * 2007-04-04 2008-10-09 Microsoft Corporation Synchronizing external documentation with code development
EP2447843B1 (de) * 2010-10-06 2013-07-03 Siemens Aktiengesellschaft Verfahren zur Verifizierung eines Anwendungsprogramms einer fehlersicheren Speicherprogrammierbaren Steuerung, und Speicherprogrammierbare Steuerung zur Ausführung des Verfahrens
JP2013016013A (ja) * 2011-07-04 2013-01-24 Omron Corp 開発支援装置および開発支援プログラム
EP2870527A4 (en) * 2012-07-05 2016-03-23 Lewa Process Technologies Inc SYSTEM AND METHOD FOR FASTER PROCESS CONTROL
KR20140099126A (ko) * 2013-02-01 2014-08-11 삼성전자주식회사 소프트웨어를 보안하기 위하여 해시 함수를 이용한 소프트웨어 처리 방법, 그 장치 및 그 방법을 실행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체
WO2014136185A1 (ja) * 2013-03-04 2014-09-12 三菱電機株式会社 プログラム開発支援装置およびその方法
US9086688B2 (en) 2013-07-09 2015-07-21 Fisher-Rosemount Systems, Inc. State machine function block with user-definable actions on a transition between states
WO2015145562A1 (ja) * 2014-03-25 2015-10-01 三菱電機株式会社 プログラミング装置及び実行コード生成方法

Also Published As

Publication number Publication date
US10095512B2 (en) 2018-10-09
CN107193249A (zh) 2017-09-22
EP3220218A1 (en) 2017-09-20
EP3220218B1 (en) 2022-08-31
CN107193249B (zh) 2020-06-23
US20170262278A1 (en) 2017-09-14
JP2017167588A (ja) 2017-09-21

Similar Documents

Publication Publication Date Title
JP6477553B2 (ja) プログラム開発支援装置、プログラム開発支援プログラムおよびプログラム開発支援方法
JP4525681B2 (ja) プログラマブルコントローラ用プログラム生成装置、プログラマブルコントローラ用プログラム生成方法およびその方法のプログラムを記録した記録媒体
US9384020B2 (en) Domain scripting language framework for service and system integration
CN111679989A (zh) 接口健壮性测试方法、装置、电子设备及存储介质
CN114237754B (zh) 一种数据加载方法、装置、电子设备以及存储介质
WO2014042759A1 (en) System and method for classifying data dump data
US20150082287A1 (en) Scenario based test design
CN114385196A (zh) 结合rpa和ai的软件部署方法及装置
CN103425932A (zh) 签名校验方法和终端设备
CN110209105B (zh) 数据的处理方法、控制***及控制装置
CN111338940A (zh) 代码处理方法、装置及***
JP6451417B2 (ja) デバッグ支援装置、デバッグ支援システム、デバッグ支援方法、および、デバッグ支援プログラム
JP5811859B2 (ja) ソースコードの静的解析装置、システム、方法、及びそのためのプログラム
JP2018018197A (ja) ソースコード評価プログラム
WO2015121982A1 (ja) ドキュメント管理プログラム、装置、および方法
JP5093508B2 (ja) ループ最適化システム、ループ最適化方法、及びループ最適化用プログラム
JP2013109532A (ja) 診断修復装置、診断修復方法、及び診断修復プログラム
US20230153231A1 (en) Method and computing environment for creating and applying a test algorithm for computational processes
JP2014154039A (ja) シーケンス監視自動プログラミング装置および自動プログラミング方法
CN104737125A (zh) 维护代码生成器输出的完整性
CN102024117A (zh) 对运行窗口操作***的计算机的验证方法
JP6576873B2 (ja) ジョブネット検証装置及びジョブネット検証方法
US20230011646A1 (en) Program providing device, program providing method, and program providing system
EP4361818A1 (en) Generation of a computer simulation package
JP7448005B2 (ja) バックドア検査装置、バックドア検査方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171026

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180511

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180612

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180705

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190121

R150 Certificate of patent or registration of utility model

Ref document number: 6477553

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150