JP2020071834A - エンジニアリング装置、エンジニアリング装置の制御方法及びプログラム - Google Patents

エンジニアリング装置、エンジニアリング装置の制御方法及びプログラム Download PDF

Info

Publication number
JP2020071834A
JP2020071834A JP2018207645A JP2018207645A JP2020071834A JP 2020071834 A JP2020071834 A JP 2020071834A JP 2018207645 A JP2018207645 A JP 2018207645A JP 2018207645 A JP2018207645 A JP 2018207645A JP 2020071834 A JP2020071834 A JP 2020071834A
Authority
JP
Japan
Prior art keywords
program
target hardware
control application
instance
execution code
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
JP2018207645A
Other languages
English (en)
Other versions
JP6954256B2 (ja
Inventor
英則 澤原
Hidenori Sawahara
英則 澤原
克彦 鳥羽
Katsuhiko Toba
克彦 鳥羽
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.)
Yokogawa Electric Corp
Original Assignee
Yokogawa Electric 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 Yokogawa Electric Corp filed Critical Yokogawa Electric Corp
Priority to JP2018207645A priority Critical patent/JP6954256B2/ja
Priority to US16/669,062 priority patent/US11132184B2/en
Priority to EP19206418.6A priority patent/EP3647942B1/en
Priority to CN201911059105.3A priority patent/CN111142466B/zh
Priority to KR1020190138459A priority patent/KR102280116B1/ko
Publication of JP2020071834A publication Critical patent/JP2020071834A/ja
Application granted granted Critical
Publication of JP6954256B2 publication Critical patent/JP6954256B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • 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
    • 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
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B23/00Testing or monitoring of control systems or parts thereof
    • G05B23/02Electric testing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • 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
    • 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/23008Computer aided software engineering, program generation, case tools, CASE
    • 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/23403Store edited program also in detachable programmer, can be used elsewhere
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • 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/44557Code layout in executable memory

Landscapes

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

Abstract

【課題】汎用的な高級言語から生成された実行コードを稼働させたまま、実行コードの一部を変更することを容易とする。【解決手段】本開示に係るエンジニアリング装置10は、ターゲットハードウェア20とオンライン接続された状態で制御アプリケーションが編集されると、制御アプリケーションから、第2のプログラミング言語で表現された、制御アプリケーションの入れ替えのためのリストと、制御アプリケーションの入れ替えのためのプログラムとを生成するインスタンス管理部103と、リストと、プログラムと、制御サービスプログラムとに基づいて、実行コードを生成するコンパイラ・リンカ104と、を備え、制御サービスプログラムは、実行コードがターゲットハードウェア20にダウンロードされると、ターゲットハードウェア20上で制御アプリケーションの入れ替えのためのプログラムを実行させる。【選択図】図3

Description

本開示は、エンジニアリング装置、エンジニアリング装置の制御方法及びプログラムに関する。
従来、生産現場などにおいて、生産プロセス及び生産設備を制御するための制御システムが構築されている。
近年、制御システムは、多様な機器を制御するようになってきている。制御システムは、例えば、分散制御システム(DCS:Distributed Control System)、プログラマブルロジックコントローラ(PLC:Programmable Logic Controller)、汎用的なPC(Personal Computer)、コンピューティング機能を持ったゲートウェイ、インテリジェントなセンサ・アクチュエータ、クラウドコンピュータ、及びフォグコンピュータなどのような様々な機器を制御しうる。
制御システムにおいて制御対象となる機器(以下「ターゲットハードウェア」とも称する)は、制御アプリケーションによって制御される。
制御アプリケーションは、通常、制御対象となるターゲットハードウェアに対応した開発環境においてエディタなどを用いて作成される。エディタは、制御アプリケーションを開発するためのプログラミング言語に対応しており、例えば、ラダー言語エディタ、フローチャートエディタ又はスクリプトエディタなどであり得る。
制御アプリケーションは、通常、コンパイラなどによって、ターゲットハードウェアのプロセッサが直接実行可能な実行コードに変換される。実行コードは、ターゲットハードウェア内のメモリに格納される。ターゲットハードウェアは、メモリに格納されている実行コードをプロセッサで解釈して実行する。
制御アプリケーションを作成する開発環境は、制御対象となるターゲットハードウェアに特化されていて、ターゲットハードウェア毎に異なる開発環境であることが多い。このように開発環境に機器依存性があると、オペレータが多様な開発環境を使いこなす必要があるため、エンジニアリング効率が低下するおそれがあった。
このような開発環境の機器依存性に対処するためには、アプリケーションのユーザプログラムを機器に依存しない形式で実行できるようにし、また複数の記述言語で記述されたアプリケーションに対して同等のデバッグ機能を提供することを実現しなければならない。上記前者のユーザプログラムの機器依存性に対処する方法として、例えば、特許文献1には、機器依存のシーケンス命令プログラム(制御アプリケーション)を、汎用的な高級言語で記述されたプログラムに変換する発明が開示されている。特許文献1に記載の発明では、高級言語で記述されたプログラムが開発環境においてコンパイルされて実行コードが生成される。
特開平7−295612号公報
例えば特許文献1に示されているように、機器依存の制御アプリケーションを、一旦、汎用的な高級言語に変換してからコンパイルして実行コードを生成すると、生成された実行コードは、ターゲットハードウェアで実行される機械語のかたまりとなる。
制御アプリケーションは、通常、複数の機能ブロックを含む。複数の機能ブロックのうちの一部を変更したい場合に、一部の機能ブロックを変更してから汎用的な高級言語に変換し、高級言語で表現された制御アプリケーションをコンパイルして実行コードを生成すると、変更がなかった別の機能ブロックの命令コード位置及び変数データ位置などが変更される可能性がある。
そのため、一旦、汎用的な高級言語に変換してから実行コードを生成する場合、稼働中の実行コードの一部を、実行コードを稼働させたまま変更することは困難であった。
そこで、本開示は、汎用的な高級言語から生成された実行コードを稼働させたまま、実行コードの一部を変更することを容易とすることが可能なエンジニアリング装置、エンジニアリング装置の制御方法及びプログラムを提供することを目的とする。
幾つかの実施形態に係るエンジニアリング装置は、ターゲットハードウェアの制御用に第1のプログラミング言語で作成された制御アプリケーションから、該ターゲットハードウェアを動作させる実行コードを生成するエンジニアリング装置であって、前記エンジニアリング装置と前記ターゲットハードウェアとがオンライン接続された状態で前記制御アプリケーションが編集されると、該制御アプリケーションから、第2のプログラミング言語で表現された、制御アプリケーションの入れ替えのためのリストと、制御アプリケーションの入れ替えのためのプログラムとを生成するインスタンス管理部と、前記リストと、前記プログラムと、制御サービスプログラムとに基づいて、前記実行コードを生成するコンパイラ・リンカと、を備え、前記制御サービスプログラムは、前記実行コードが前記ターゲットハードウェアにダウンロードされると、前記ターゲットハードウェア上で制御アプリケーションの入れ替えのための前記プログラムを実行させる。このようなエンジニアリング装置によれば、汎用的な高級言語(第2のプログラミング言語)から生成された実行コードを稼働させたまま、実行コードの一部を変更することを容易とすることが可能となる。
一実施形態に係るエンジニアリング装置において、制御アプリケーションの入れ替えのための前記リストは、前記制御アプリケーションに含まれる機能ブロックインスタンスのサイズ情報を有するインスタンスリストと、前記制御アプリケーションに含まれる機能ブロックインスタンスのうち、変更された機能ブロックインスタンスに関する情報を有する編集インスタンスリストと、を含んでもよい。このように、制御アプリケーションに含まれる機能ブロックインスタンスのサイズ情報を有するインスタンスリストと、制御アプリケーションに含まれる機能ブロックインスタンスのうち、変更された機能ブロックインスタンスに関する情報を有する編集インスタンスリストとを含むことにより、変更があった機能ブロックインスタンスの情報を取得することができる。
一実施形態に係るエンジニアリング装置において、制御アプリケーションの入れ替えのための前記プログラムは、前記ターゲットハードウェアのメモリ上において前記機能ブロックインスタンスが格納されているメモリ領域を管理するインスタンス割当プログラムと、変更された前記機能ブロックインスタンスについて、該機能ブロックインスタンスが変更前に格納されていたメモリ領域から、該機能ブロックインスタンスが変更後に格納されているメモリ領域に、引継ぎデータをコピーするデータコピープログラムと、を含んでよい。このように、ターゲットハードウェアのメモリ上において機能ブロックインスタンスが格納されているメモリ領域を管理するインスタンス割当プログラムと、変更された機能ブロックインスタンスについて、該機能ブロックインスタンスが変更前に格納されていたメモリ領域から、該機能ブロックインスタンスが変更後に格納されているメモリ領域に、引継ぎデータをコピーするデータコピープログラムとを含むことにより、機能ブロックインスタンスが変更前に格納されていたメモリ領域から、機能ブロックインスタンスが変更後に格納されているメモリ領域に、引継ぎデータをコピーすることができる。
一実施形態に係るエンジニアリング装置において、前記制御サービスプログラムは、前記ターゲットハードウェアにおいて前記実行コードが実行されていない隙間の時間に、変更された前記機能ブロックインスタンスが変更前に格納されていた空き領域としてのメモリ領域の再配置を実行してよい。このように、制御サービスプログラムが、変更された機能ブロックインスタンスに対するメモリ領域の再配置を実行することにより、ターゲットハードウェアのメモリの消費を低減することができる。
幾つかの実施形態に係るエンジニアリング装置の制御方法は、ターゲットハードウェアの制御用に第1のプログラミング言語で作成された制御アプリケーションから、該ターゲットハードウェアを動作させる実行コードを生成するエンジニアリング装置の制御方法であって、前記エンジニアリング装置と前記ターゲットハードウェアとがオンライン接続された状態で前記制御アプリケーションが編集されると、該制御アプリケーションから、第2のプログラミング言語で表現された、制御アプリケーションの入れ替えのためのリストと、制御アプリケーションの入れ替えのためのプログラムとを生成するステップと、前記リストと、前記プログラムと、制御サービスプログラムとに基づいて、前記実行コードを生成するステップと、を含み、前記制御サービスプログラムは、前記実行コードが前記ターゲットハードウェアにダウンロードされると、前記ターゲットハードウェア上で制御アプリケーションの入れ替えのための前記プログラムを実行させる。このようなエンジニアリング装置の制御方法によれば、汎用的な高級言語(第2のプログラミング言語)から生成された実行コードを稼働させたまま、実行コードの一部を変更することを容易とすることが可能となる。
幾つかの実施形態に係るプログラムは、ターゲットハードウェアの制御用に第1のプログラミング言語で作成された制御アプリケーションから、該ターゲットハードウェアを動作させる実行コードを生成するエンジニアリング装置を制御するプログラムであって、前記エンジニアリング装置に、前記エンジニアリング装置と前記ターゲットハードウェアとがオンライン接続された状態で前記制御アプリケーションが編集されると、該制御アプリケーションから、第2のプログラミング言語で表現された、制御アプリケーションの入れ替えのためのリストと、制御アプリケーションの入れ替えのためのプログラムとを生成するステップと、前記リストと、制御アプリケーションの入れ替えのための前記プログラムと、制御サービスプログラムとに基づいて、前記実行コードを生成するステップと、を実行させ、前記制御サービスプログラムは、前記実行コードが前記ターゲットハードウェアにダウンロードされると、前記ターゲットハードウェア上で制御アプリケーションの入れ替えのための前記プログラムを実行させる。このようなプログラムによれば、汎用的な高級言語(第2のプログラミング言語)から生成された実行コードを稼働させたまま、実行コードの一部を変更することを容易とすることが可能となる。
本開示によれば、汎用的な高級言語から生成された実行コードを稼働させたまま、実行コードの一部を変更することを容易とすることが可能なエンジニアリング装置、エンジニアリング装置の制御方法及びプログラムを提供することができる。
一実施形態に係るエンジニアリング装置を含む制御システムの構成例を示す図である。 一実施形態に係るエンジニアリング装置のハードウェア構成の一例を示す図である。 一実施形態に係るエンジニアリング装置の動作を説明するための図である。 実行コードの動作の一例を説明するための図である。 変更前の機能ブロックのデータを変更後の機能ブロックのデータに引き継ぐ様子を示す図である。 ターゲットハードウェアにおいてメモリ領域の再配置を実行する様子を示す図である。 制御システムにおける全体の処理の流れの一例を示すフローチャートである。
以下、本発明の一実施形態について、図面を参照して説明する。
図1は、一実施形態に係るエンジニアリング装置10を含む制御システム1の構成例を示す図である。制御システム1は、エンジニアリング装置10と、ターゲットハードウェア20とを含む。図1においては、1台のターゲットハードウェア20を示しているが、制御システム1は、2台以上のターゲットハードウェア20を含んでよい。
エンジニアリング装置10は、ターゲットハードウェア20の制御用として第1のプログラミング言語で作成された制御アプリケーションから、ターゲットハードウェア20が直接実行可能な実行コードを生成する。
第1のプログラミング言語は、特に限定されないが、GUI(Graphical User Interface)ベースのプログラミング言語、テキストベースのプログラミング言語、又はスクリプトベースのプログラミング言語などであってよい。第1のプログラミング言語は、好適には、PLC用の標準規格であるIEC 61131−3で定義されたプログラミング言語であってよい。IEC 61131−3は、ラダー・ダイアグラム、ファンクション・ブロック・ダイアグラム、ストラクチャード・テキスト、インストラクション・リスト、及びシーケンシャル・ファンクション・チャートなどのプログラミング言語を定義している。
ターゲットハードウェア20は、エンジニアリング装置10が生成した実行コードによって制御される機器である。ターゲットハードウェア20は、エンジニアリング装置10からダウンロードして取得した実行コードを、タスク又はスレッド上で周期的に実行する。ターゲットハードウェア20は、実行コードをイベントドリブンで実行してもよい。タスクの実行条件は、ユーザがタスク設定によって設定してよい。
ターゲットハードウェア20は、一般的なコンピューティング機能を備える様々な機器であってよい。ターゲットハードウェア20は、例えば、PLC、DCS、温調計、記録計、SCADA(Supervisory Control and Data Acquisition)又は仮想DCS/PLCなどであってよい。
ターゲットハードウェア20は、図1に示すように、ローダ21と、メモリ22と、制御部23とを備える。
ローダ21は、エンジニアリング装置10が生成した実行コードを、エンジニアリング装置10からダウンロードして取得し、メモリ22に格納する。
メモリ22は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、EEPROM(Electrically Erasable Programmable Read-Only Memory)、ROM(Read-Only Memory)、及びRAM(Random Access Memory)等の任意の記憶装置を有する。メモリ22は、例えば主記憶装置、補助記憶装置、又はキャッシュメモリとして機能してもよい。メモリ22は、ターゲットハードウェア20に内蔵されるものに限定されず、USB(Universal Serial Bus)等のデジタル入出力ポート等によって接続された外付け型の記憶装置であってもよい。
メモリ22は、ローダ21がエンジニアリング装置10からダウンロードした実行コードを格納する。
制御部23は、ターゲットハードウェア20の各構成部を制御する。制御部23は、例えばCPU(Central Processing Unit)などのプロセッサとして構成されてよい。
制御部23は、メモリ22に格納されている実行コードを解釈して、各種処理を実行する。
図2は、一実施形態に係るエンジニアリング装置10のハードウェア構成の一例を示す図である。
エンジニアリング装置10は、メモリ11と、表示装置12と、入力装置13と、通信I/F(インタフェース)14と、制御部15とを備える。エンジニアリング装置10は、例えば、サーバ装置、デスクトップ型PC等の汎用コンピュータ、ファクトリーコンピュータ、PLC等の装置、ノート型コンピュータ、又はタブレット型コンピュータなどであってよい。
メモリ11は、例えば、HDD、SSD、EEPROM、ROM、及びRAM等の任意の記憶装置を有する。メモリ11は、例えば主記憶装置、補助記憶装置、又はキャッシュメモリとして機能してもよい。メモリ11は、エンジニアリング装置10に内蔵されるものに限定されず、USB等のデジタル入出力ポート等によって接続された外付け型の記憶装置であってもよい。メモリ11は、エンジニアリング装置10の動作に必要な種々の情報及びプログラムを記憶する。
表示装置12は、各種情報を表示する。表示装置12は、例えば液晶ディスプレイである。表示装置12は、ヘッドマウント型ディスプレイ、メガネ型ディスプレイ、又は腕時計型ディスプレイ等の種々の形態によって実現されてもよい。
入力装置13は、エンジニアリング装置10へのユーザからの入力を受け付ける。入力装置13は、例えばキーボード又はマウス等である。入力装置13は、音声情報を入力するマイク、又は画像情報を入力するカメラ等であってもよい。入力装置13は、タッチパネルであってもよく、この場合、入力装置13が表示装置12の機能を兼ねていてもよい。
通信I/F14は、有線通信又は無線通信を介して、図1に示したターゲットハードウェア20と通信を行う。通信I/F14は、例えば、イーサネット(登録商標)規格によりターゲットハードウェア20と通信を行ってよい。通信I/F14は、例えばUSBに対応したインタフェースであってよい。この場合、エンジニアリング装置10とターゲットハードウェア20とは、例えば、USBケーブルで接続されてよい。
制御部15は、エンジニアリング装置10の各構成部を制御する。制御部15は、例えばCPUなどのプロセッサとして構成されてよい。プロセッサにより実行されるプログラムは、例えば、制御部15が備えるメモリに格納されていてもよいし、メモリ11に格納されていてもよい。
続いて、図3に示す制御システム1を参照して、エンジニアリング装置10の動作について説明する。図3に示す制御システム1は、図1に示した制御システム1に対応する。図3においては、エンジニアリング装置10の内部を機能的な表現で示している。
エンジニアリング装置10は、機能ブロックとして、エディタUI(User Interface)101と、アルゴリズム変換部102と、インスタンス管理部103と、コンパイラ・リンカ104とを含む。エディタUI101、アルゴリズム変換部102、インスタンス管理部103、及びコンパイラ・リンカ104の機能は、図2に示した制御部15などによって実行されてよい。
エンジニアリング装置10は、図2に示したメモリ11に格納可能なデータとして、制御サービスプログラム156を含む。
エディタUI101は、ターゲットハードウェア20を制御するための制御アプリケーションを開発するための言語エディタである。エディタUI101は、上述した第1のプログラミング言語で、制御アプリケーションを作成することが可能である。
エンジニアリング装置10のユーザは、エンジニアリング装置10とターゲットハードウェア20とがオンライン接続された状態で、エディタUI101を用いて制御アプリケーションを編集してよい。ここで、エンジニアリング装置10とターゲットハードウェア20とがオンライン接続された状態とは、エンジニアリング装置10とターゲットハードウェア20とが通信可能に接続されている状態のことをいう。
アルゴリズム変換部102は、エディタUI101によって作成された制御アプリケーションに含まれる制御ロジックを、第2のプログラミング言語で表現された制御ロジックプログラム151に変換する。第2のプログラミング言語は、特に限定されないが、汎用的な高級言語などであってよい。第2のプログラミング言語は、例えば、C言語又はC++言語などであってよい。
インスタンス管理部103は、エンジニアリング装置10とターゲットハードウェア20とがオンライン接続された状態で制御アプリケーションが編集されると、該制御アプリケーションに基づいて、インスタンスリスト152及び編集インスタンスリスト153を生成する。インスタンスリスト152及び編集インスタンスリスト153は、ターゲットハードウェア20において、変更前の制御アプリケーションに基づく実行コード157から、変更後の制御アプリケーションに基づく実行コード157に入れ替えるためのリストである。インスタンス管理部103は、インスタンスリスト152及び編集インスタンスリスト153を、第2のプログラミング言語で表現されたコードとして出力する。
また、インスタンス管理部103は、エンジニアリング装置10とターゲットハードウェア20とがオンライン接続された状態で制御アプリケーションが編集されると、該制御アプリケーションに基づいて、インスタンス割当プログラム154及びデータコピープログラム155を生成する。インスタンス割当プログラム154及びデータコピープログラム155は、ターゲットハードウェア20において、変更前の制御アプリケーションに基づく実行コード157から、変更後の制御アプリケーションに基づく実行コード157に入れ替えるためのプログラムである。インスタンス管理部103は、インスタンス割当プログラム154及びデータコピープログラム155を、第2のプログラミング言語で表現されたコードとして出力する。
インスタンスリスト152は、制御アプリケーションに含まれる機能ブロックインスタンスの一覧に対して、各機能ブロックインスタンスのサイズ情報を有する。
編集インスタンスリスト153は、制御アプリケーションに含まれる機能ブロックインスタンスのうち、変更された機能ブロックインスタンスに関する情報を有する。より具体的には、編集インスタンスリスト153は、変更された機能ブロックインスタンスの番号を含む。また、編集インスタンスリスト153は、変更された機能ブロックインスタンスの引継ぎデータをコピーするためのデータコピー関数のアドレスを有する。
インスタンス割当プログラム154は、ターゲットハードウェア20のメモリ22上において機能ブロックインスタンスが格納されているメモリ領域を管理する。より具体的には、インスタンス割当プログラム154は、各機能ブロックインスタンスの位置を示すポインタ(ポインタのポインタとして表現してもよい)と、インスタンスアドレステーブルとを結び付ける。ここで、「インスタンスアドレステーブル」は、ターゲットハードウェア20のメモリ22における機能ブロックインスタンスの実位置のアドレス一覧を格納するテーブルである。
データコピープログラム155は、変更があった機能ブロックインスタンスに対して、機能ブロックインスタンスが変更前に格納されていたメモリ領域から、機能ブロックインスタンスが変更後に格納されているメモリ領域に、引継ぎデータをコピーする関数群(データコピー関数群)を含むプログラムである。
コンパイラ・リンカ104は、第2のプログラミング言語で表現されたインスタンスリスト152、編集インスタンスリスト153、インスタンス割当プログラム154及びデータコピープログラム155をコンパイルして、実行コード157を生成する。実行コード157は、ターゲットハードウェア20を直接実行可能な実行コードである。
コンパイラ・リンカ104は、インスタンスリスト152、編集インスタンスリスト153、インスタンス割当プログラム154及びデータコピープログラム155をコンパイルする際、さらに、制御サービスプログラム156をリンクして、実行コード157を生成する。
コンパイラ・リンカ104は、汎用のコンパイラ・リンカであってよい。
制御サービスプログラム156は、実行コード157がターゲットハードウェア20にダウンロードされると、ターゲットハードウェア20上で、インスタンス割当プログラム154及びデータコピープログラム155を実行させる。
制御サービスプログラム156は、対象とするターゲットハードウェア20向けに予めプリコンパイルされており、エンジニアリング装置10のメモリ11に格納されている。制御サービスプログラム156は、ターゲットハードウェア20のファームウェアとして、予めターゲットハードウェア20にインストールされていてもよい。
通信I/F14は、図2に示した通信I/F14に対応する。実行コード157は、通信I/F14を介して、ターゲットハードウェア20にダウンロードされる。
続いて、具体例を示しつつ、エンジニアリング装置10の動作について、より詳細に説明する。
エディタUI101によって作成される制御アプリケーションは、機能毎にファンクションブロック等の機能ブロック単位で作成される。制御アプリケーションは、機能ブロックを組み合わせて全体が構成されている。機能ブロックは、ローカル変数及び入出力変数などのデータと、制御プログラムとを含む。
このように組み合わされた機能ブロックが、ターゲットハードウェア20上で実行されることで、全体の制御アプリケーションが動作する。
図4を参照して、インスタンス管理部103が出力するインスタンスリスト152、編集インスタンスリスト153、インスタンス割当プログラム154、及びデータコピープログラム155などについて説明する。
図4に示すターゲットハードウェア内のプログラムメモリ22Aは、ターゲットハードウェア20のメモリ22のうちのプログラムの格納用に使用されている領域に対応する。図4に示すターゲットハードウェア内のデータメモリ22Bは、ターゲットハードウェア20のメモリ22のうちのデータの格納用に使用されている領域に対応する。
図4は、ターゲットハードウェア内のプログラムメモリ22Aに変更後の実行コード157Bがダウンロードされた状態を示している。この際、変更前の実行コード157Aも、そのままターゲットハードウェア内のプログラムメモリ22Aに格納されたままであってよい。なお、図4において、変更前の実行コード157Aについては内容の図示を省略している。
エンジニアリング装置10において、変更後の制御アプリケーションから変更後の実行コード157Bを生成する際、インスタンス管理部103は、インスタンスリスト152、編集インスタンスリスト153、インスタンス割当プログラム154、及びデータコピープログラム155を生成する。
インスタンスリスト152は、制御アプリケーションに含まれる全ての機能ブロックインスタンスのサイズ情報を有する。インスタンスリスト152は、各機能ブロックインスタンスのサイズを有する配列で表現されてよい。
インスタンス割当プログラム154は、各機能ブロックインスタンスを、インスタンスアドレステーブル201に割り当てる。インスタンスアドレステーブル201は、各機能ブロックインスタンスの、ターゲットハードウェア20のメモリ22上におけるアドレスを格納するテーブルである。
インスタンス割当プログラム154において、各機能ブロックインスタンスの場所は、ポインタのポインタで表現されている。例えば、機能ブロックAのインスタンスの場所は、「**instance1」と表現されている。図3に示す制御ロジックプログラム151は、このポインタのポインタを経由して、各機能ブロックインスタンスのデータにアクセスする。
インスタンスアドレステーブル201内のアドレスは、エンジニアリング装置10において実行コード157が生成された段階では未決定である。ターゲットハードウェア20にダウンロードされた実行コード157が稼働すると、実行コード157に含まれている制御サービスプログラム156が、インスタンスアドレステーブル201にアドレスを格納する。
制御サービスプログラム156は、インスタンスリスト152を参照して、各機能ブロックインスタンスのサイズ分のメモリ領域をターゲットハードウェア20のメモリ22上に確保する。制御サービスプログラム156は、ターゲットハードウェア20のメモリ22上に確保したメモリ領域の、各機能ブロックインスタンスの先頭のアドレスを、インスタンスアドレステーブル201に格納する。
このように、制御サービスプログラム156が、ターゲットハードウェア20における実行コード157の実行時にインスタンスアドレステーブル201にアドレスを格納するため、エンジニアリング装置10における実行コード157の生成時に、インスタンスアドレステーブル201にアドレスを格納することが必要でなくなる。
制御ロジックプログラム151は、ターゲットハードウェア20における実行コード157の実行時にインスタンスアドレステーブル201に格納されたアドレスを参照して、各機能ブロックインスタンスの適切な位置にアクセスすることができる。
制御サービスプログラム156は、実行コード157がターゲットハードウェア20にダウンロードされた後、インスタンスリスト152を参照して、機能ブロックインスタンス毎に、ターゲットハードウェア20のメモリ22にサイズ分のメモリ領域を確保する。そして、制御サービスプログラム156は、確保した機能ブロックインスタンスのアドレスを、インスタンスアドレステーブル201に格納する。これにより、制御サービスプログラム156は、各機能ブロックインスタンスを、ターゲットハードウェア20のメモリ22に割り付けることができる。
続いて、エンジニアリング装置10と、ターゲットハードウェア20とがオンライン接続された状態における動作を説明する。以下に説明する動作は、エンジニアリング装置10において制御アプリケーション内のある機能ブロックを変更した際に、ターゲットハードウェア20にダウンロードされた変更後の実行コード157Bが、変更前の実行コード157Aの変数データの値を引き継ぎながら、機能ブロックの変更を反映する動作である。
図4は、エディタUI101によって、制御アプリケーションに含まれる機能ブロックCの内容が変更された場合を示す例である。
インスタンス管理部103は、機能ブロックの変更によって影響を受ける機能ブロックインスタンスの一覧を検出する。ここで、機能ブロックの変更によって影響を受ける機能ブロックインスタンスの一覧とは、具体的には、変更された機能ブロックに所属する全ての機能ブロックインスタンスの一覧である。インスタンス管理部103は、検出した機能ブロックの変更によって影響を受ける機能ブロックインスタンスの一覧に基づいて、編集インスタンスリスト153を生成する。
編集インスタンスリスト153は、機能ブロックの変更によって影響を受ける機能ブロックインスタンスが、インスタンスリスト152の配列において何番目であるかの情報を含む。図4に示す例においては、機能ブロックCが変更されているため、編集インスタンスリスト153は、「2」という情報を有する。なお、インスタンスリスト152の配列の番号は、「0」から始まる番号であり、インスタンスリスト152は、配列の番号として、0〜3という番号を有する。
編集インスタンスリスト153は、さらに、各機能ブロックインスタンスに対するデータコピー関数のアドレスの情報を有する。図4に示す例においては、編集インスタンスリスト153は、「BlockC_copy」というデータコピー関数のアドレスの情報を有する。
データコピープログラム155は、変更があった機能ブロックインスタンスに対して、変更前のメモリ領域から変更後のメモリ領域に引継ぎデータをコピーするためのデータコピー関数を含む。図4に示す例においては、データコピープログラム155は、「BlockC_copy(*old,*new)」という関数を含む。
インスタンスリスト152、編集インスタンスリスト153、インスタンス割当プログラム154、データコピープログラム155、及び制御サービスプログラム156は、エンジニアリング装置10において、一緒にコンパイル及びリンクされ、実行コード157に変換される。
このようにして生成された変更後の実行コード157Bが、ターゲットハードウェア20にダウンロードされると、変更前の実行コード157Aに含まれている制御サービスプログラム156は、タスクが動作していない隙間のタイミングで、ターゲットハードウェア20上で動作する実行コード157を、実行コード157Aから実行コード157Bに切り替える。
制御サービスプログラム156は、ターゲットハードウェア20のタスク上で実行コード157を動作させる際、ユーザに指定された条件で、実行コード157の動作を制御する。ここで、ユーザに指定された条件とは、例えば、100msの周期で実行コード157を動作させるといった条件である。
このように、制御サービスプログラム156は、ユーザに指定された条件で実行コード157を動作させているため、実行コード157が実行されていないタイミングを検出し、変更前の実行コード157Aから変更後の実行コード157Bへの切り替え処理を実行することができる。これにより、エンジニアリング装置10は、変更前の実行コード157A及び変更後の実行コード157Bのいずれもが実行されていない時間を最小限にし、変更後の実行コード157Bに高速で切り替えることができる。
変更後の実行コード157Bに含まれている制御サービスプログラム156は、編集インスタンスリスト153を参照して、変更された機能ブロックインスタンス向けの新しいメモリ領域を、ターゲットハードウェア20のメモリ22に確保する。
制御サービスプログラム156は、確保したメモリ領域のアドレスに基づいて、インスタンスアドレステーブル201に格納されているアドレスを更新する。図4に示す例においては、インスタンスアドレステーブル201の、機能ブロックCに対応する機能ブロックインスタンスのアドレスが、「0x1010」から「0x1030」に変更されている。
この際、インスタンスアドレステーブル201において、変更がなかった機能ブロックインスタンスのアドレスは変更されない。すなわち、変更がなかった機能ブロックインスタンスがターゲットハードウェア20のメモリ22に格納されているメモリ領域は、実行コード157の変更前後で共通である。したがって、ターゲットハードウェア20のメモリ22の消費を低減することができる。
制御サービスプログラム156は、変更された機能ブロックインスタンスの旧メモリ領域の先頭アドレスと新メモリ領域の先頭アドレスとを、データコピープログラム155内の該当するデータコピー関数に渡す。図4に示す例では、制御サービスプログラム156は、旧メモリ領域の先頭アドレスである「0x1010」と、新メモリ領域の先頭アドレスである「0x1030」とを、データコピープログラム155内のデータコピー関数「BlockC_copy(*old,*new)」に渡す。
データコピープログラム155は、旧メモリ領域から新メモリ領域へデータを引き継ぐためのコピー処理を実行する。
その後、制御サービスプログラム156が、変更後の実行コード157Bに含まれる制御ロジックプログラム151を実行させると、変更後の制御ロジックプログラム151は、変更前の制御ロジックプログラム151で用いられていた変数データを引き継ぐ。これにより、機能ブロックの一部が変更された変更後の実行コード157Bは、変更前の実行コード157Aの動作を継続した状態で動作することができる。
続いて、図5を参照して、データコピープログラム155の動作について説明する。図5は、機能ブロックCを変更した際の、変更前の機能ブロックCのデータ301と、変更後の機能ブロックCのデータ302とを示した図である。
変更前の機能ブロックCのデータ301は、変更前の機能ブロックCに対応する機能ブロックインスタンスのデータを示している。変更後の機能ブロックCのデータ302は、変更後の機能ブロックCに対応する機能ブロックインスタンスのデータを示している。
変更前の機能ブロックCのデータ301は、「data1」、「data2」及び「data3」を有する。制御アプリケーションにおける機能ブロックCの変更により、変更後の機能ブロックCのデータ302は、「data2」が削除されて、「data4」及び「data5」が追加されているものとする。
この場合、「data1」及び「data3」は変更されていないため、データコピープログラム155は、旧メモリ領域から新メモリ領域へ、「data1」及び「data3」の値を引き継ぐ。データコピープログラム155は、新規に追加された「data4」及び「data5」については値を初期化する。
データコピープログラム155は、旧メモリ領域のアドレスと新メモリ領域のアドレスとを受け取ると、変更されていないデータはコピーし、新規で追加されたデータは初期化する。
続いて、図6を参照して、ターゲットハードウェア20のメモリ22における空き領域の削減について説明する。
図5に示す処理を実行すると、ターゲットハードウェア内のデータメモリ22Bにおいて、不連続な空き領域501が発生する。この様子を図6に示す。
ターゲットハードウェア内のデータメモリ22Bにおける機能ブロックインスタンスのデータの配置領域は、インスタンス管理テーブル402によって管理されている。インスタンス管理テーブル402は、インスタンスアドレステーブル401と同時に生成されるテーブルである。
制御サービスプログラム156は、実行コード157Bに含まれる制御ロジックプログラム151の動作に影響を与えないタイミングで、移動可能な機能ブロックインスタンスのデータを不連続な空き領域に移動させる。図6に示す例においては、制御サービスプログラム156は、機能ブロックA.機能ブロックD及び機能ブロックA.機能ブロックCに対応する機能ブロックインスタンスのデータを、空き領域501の先頭位置からの領域に移動させる。ここで連続する領域は、空き時間に応じて、一括で移動してもよいし、機能ブロックインスタンス毎に分割して移動してもよい。
この際、制御サービスプログラム156は、インスタンスアドレステーブル401及びインスタンス管理テーブル402を更新する。図6に示す例においては、制御サービスプログラム156は、移動前のインスタンスアドレステーブル401における機能ブロックA.機能ブロックCのアドレス「0x1030」を、「0x1020」に更新する。また、制御サービスプログラム156は、移動前のインスタンスアドレステーブル401における機能ブロックA.機能ブロックDのアドレス「0x1020」を、「0x1010」に更新する。
これにより、図6に示すように、ターゲットハードウェア内のデータメモリ22Bにおける不連続な空き領域501は、ターゲットハードウェア内のデータメモリ22Bの末尾側に移動する。したがって、ターゲットハードウェア内のデータメモリ22Bにおけるメモリ消費量を低減することができる。
また、実行コード157Bに含まれる制御ロジックプログラム151は、インスタンスアドレステーブル401を介してターゲットハードウェア内のデータメモリ22Bを参照するため、機能ブロックインスタンスのデータの移動前と移動後において、制御ロジックプログラム151が参照するデータは整合がとれている。
続いて、図7のフローチャートを参照して、制御システム1における全体の処理の流れを説明する。ステップS101〜S103は、エンジニアリング装置10のユーザによる操作を示す。ステップS201〜S204は、エンジニアリング装置10における処理を示す。ステップS301〜S305は、ターゲットハードウェア20における処理を示す。
エンジニアリング装置10のユーザは、エンジニアリング装置10にターゲットハードウェア20を接続して、ターゲットハードウェア20がエンジニアリング装置10にオンライン接続された状態にする(ステップS101)。
ユーザは、ターゲットハードウェア20がエンジニアリング装置10にオンライン接続された状態で、エディタUI101を操作して制御アプリケーションを変更する(ステップS102)。
ユーザは、所望の変更が終わったら、エディタUI101による制御アプリケーションの編集を終了する(ステップS103)。
制御アプリケーションの編集が終了すると、エンジニアリング装置10のアルゴリズム変換部102は、変更後の制御アプリケーションに基づいて制御ロジックプログラム151を作成する(ステップS201)。
エンジニアリング装置10のインスタンス管理部103は、変更後の制御アプリケーションに基づいて、インスタンスリスト152、編集インスタンスリスト153、インスタンス割当プログラム154、及びデータコピープログラム155を作成する(ステップS202)。ステップS202の処理は、ステップS201の処理と並行して実行されてよい。
コンパイラ・リンカ104は、制御ロジックプログラム151、インスタンスリスト152、編集インスタンスリスト153、インスタンス割当プログラム154、及びデータコピープログラム155をコンパイルし、併せて、制御サービスプログラム156をリンクして、実行コード157を生成する(ステップS203)。コンパイラ・リンカ104は、エンジニアリング装置10内の制御サービスプログラム156をリンクする静的リンクを実行してもよいし、予めターゲットハードウェア20にインストールされている制御サービスプログラム156をリンクする動的リンクを実行してもよい。
エンジニアリング装置10は、生成した実行コード157を、ターゲットハードウェア20にダウンロードさせる(ステップS204)。
ターゲットハードウェア20は、実行コード157をダウンロードすると、タスクが実行されていない隙間時間に、変更前の実行コード157に含まれる制御サービスプログラム156による動作から、変更前の実行コード157に含まれる制御サービスプログラム156による動作に切り替える(ステップS301)。
制御サービスプログラム156は、インスタンス割当プログラム154及びデータコピープログラム155を実行させる(ステップS302)。
制御サービスプログラム156は、変更された機能ブロックインスタンス向けに、ターゲットハードウェア20のメモリ22上に領域を確保する(ステップS303)。
ターゲットハードウェア20は、新たな制御アプリケーション、すなわち、変更後の実行コード157に含まれる制御ロジックプログラム151を実行する(ステップS304)。
制御サービスプログラム156は、ターゲットハードウェア20において実行コード157が実行されていない隙間の時間に、データコピープログラム155に、ターゲットハードウェア20のメモリ22におけるメモリ領域の再配置を実行させる(ステップS305)。制御サービスプログラム156は、例えば、機能ブロックインスタンスが変更前に格納されていた不連続な空き領域を、ターゲットハードウェア20内のメモリ22の末尾側に移動するような再配置を実行させる。
以上のような一実施形態に係るエンジニアリング装置10によれば、汎用的な高級言語(第2のプログラミング言語)から生成された実行コードを稼働させたまま、実行コードの一部を変更することを容易とすることが可能となる。より具体的には、エンジニアリング装置10では、エンジニアリング装置10とターゲットハードウェア20とがオンライン接続された状態で制御アプリケーションが編集されると、インスタンス管理部103が、第2のプログラミング言語で表現された、制御アプリケーションの入れ替えのためのリストと、制御アプリケーションの入れ替えのためのプログラムとを生成する。また、コンパイラ・リンカ104が、制御アプリケーションの入れ替えのためのリストと、制御アプリケーションの入れ替えのためのプログラムと、制御サービスプログラムとに基づいて、実行コード157を生成する。そして、制御サービスプログラム156は、実行コード157がターゲットハードウェア20にダウンロードされると、ターゲットハードウェア20上で制御アプリケーションの入れ替えのためのプログラムを実行させる。このように、制御サービスプログラム156が、ターゲットハードウェア20上で制御アプリケーションの入れ替えのためのプログラムを実行するため、実行コード157を稼働させたまま、変更前の実行コード157で用いられるデータの一部を引き継ぐこと、及び、実行コード157の一部を変更することが容易となる。
また、エンジニアリング装置10は、実行コード157を入れ替える際、変更がなかった機能ブロックインスタンスについては、実行コード157の変更前後で、ターゲットハードウェア20のメモリ22上における領域を変更していない。エンジニアリング装置10は、実行コード157を入れ替える際、変更があった機能ブロックインスタンスについては、変更前のメモリ領域から変更後のメモリ領域に引継ぎデータをコピーする。これにより、エンジニアリング装置10は、実行コード157の入れ替え時に、データの移動を最小限に留めることができるため、実行コード157の高速な切り替え、及び、ターゲットハードウェア20のメモリ22の消費量の低減を実現することができる。
また、実行コード157に、データの引き継ぎに必要なデータであるインスタンスリスト152及び編集インスタンスリスト153、並びに、データの引き継ぎに必要なプログラムであるインスタンス割当プログラム154、データコピープログラム155及び制御サービスプログラム156が埋め込まれているため、ターゲットハードウェア20のメモリ22に、データの引き継ぎに必要なデータで及びプログラムを格納しておく必要がない。したがって、ターゲットハードウェア20のメモリ22の消費量を低減することができる。
本開示は、その精神又はその本質的な特徴から離れることなく、上述した実施形態以外の他の所定の形態で実現できることは当業者にとって明白である。従って、先の記述は例示的であり、これに限定されない。開示の範囲は、先の記述によってではなく、付加した請求項によって定義される。あらゆる変更のうちその均等の範囲内にあるいくつかの変更は、その中に包含される。
例えば、上述した各構成部の配置及び個数等は、上記の説明及び図面における図示の内容に限定されない。各構成部の配置及び個数等は、その機能を実現できるのであれば、任意に構成されてもよい。
1 制御システム
10 エンジニアリング装置
11 メモリ
12 表示装置
13 入力装置
14 通信I/F
15 制御部
20 ターゲットハードウェア
21 ローダ
22 メモリ
22A プログラムメモリ
22B データメモリ
23 制御部
101 エディタUI
102 アルゴリズム変換部
103 インスタンス管理部
104 コンパイラ・リンカ
151 制御ロジックプログラム
152 インスタンスリスト
153 編集インスタンリスト
154 インスタンス割当プログラム
155 データコピープログラム
156 制御サービスプログラム
157 実行コード

Claims (6)

  1. ターゲットハードウェアの制御用に第1のプログラミング言語で作成された制御アプリケーションから、該ターゲットハードウェアを動作させる実行コードを生成するエンジニアリング装置であって、
    前記エンジニアリング装置と前記ターゲットハードウェアとがオンライン接続された状態で前記制御アプリケーションが編集されると、該制御アプリケーションから、第2のプログラミング言語で表現された、制御アプリケーションの入れ替えのためのリストと、制御アプリケーションの入れ替えのためのプログラムとを生成するインスタンス管理部と、
    前記リストと、前記プログラムと、制御サービスプログラムとに基づいて、前記実行コードを生成するコンパイラ・リンカと、を備え、
    前記制御サービスプログラムは、前記実行コードが前記ターゲットハードウェアにダウンロードされると、前記ターゲットハードウェア上で制御アプリケーションの入れ替えのための前記プログラムを実行させる、エンジニアリング装置。
  2. 請求項1に記載のエンジニアリング装置において、
    制御アプリケーションの入れ替えのための前記リストは、
    前記制御アプリケーションに含まれる機能ブロックインスタンスのサイズ情報を有するインスタンスリストと、
    前記制御アプリケーションに含まれる機能ブロックインスタンスのうち、変更された機能ブロックインスタンスに関する情報を有する編集インスタンスリストと、を含む、エンジニアリング装置。
  3. 請求項2に記載のエンジニアリング装置において、
    制御アプリケーションの入れ替えのための前記プログラムは、
    前記ターゲットハードウェアのメモリ上において前記機能ブロックインスタンスが格納されているメモリ領域を管理するインスタンス割当プログラムと、
    変更された前記機能ブロックインスタンスについて、該機能ブロックインスタンスが変更前に格納されていたメモリ領域から、該機能ブロックインスタンスが変更後に格納されているメモリ領域に、引継ぎデータをコピーするデータコピープログラムと、を含む、エンジニアリング装置。
  4. 請求項3に記載のエンジニアリング装置において、
    前記制御サービスプログラムは、前記ターゲットハードウェアにおいて前記実行コードが実行されていない隙間の時間に、変更された前記機能ブロックインスタンスが変更前に格納されていた空き領域としてのメモリ領域の再配置を実行する、エンジニアリング装置。
  5. ターゲットハードウェアの制御用に第1のプログラミング言語で作成された制御アプリケーションから、該ターゲットハードウェアを動作させる実行コードを生成するエンジニアリング装置の制御方法であって、
    前記エンジニアリング装置と前記ターゲットハードウェアとがオンライン接続された状態で前記制御アプリケーションが編集されると、該制御アプリケーションから、第2のプログラミング言語で表現された、制御アプリケーションの入れ替えのためのリストと、制御アプリケーションの入れ替えのためのプログラムとを生成するステップと、
    前記リストと、前記プログラムと、制御サービスプログラムとに基づいて、前記実行コードを生成するステップと、を含み、
    前記制御サービスプログラムは、前記実行コードが前記ターゲットハードウェアにダウンロードされると、前記ターゲットハードウェア上で制御アプリケーションの入れ替えのための前記プログラムを実行させる、エンジニアリング装置の制御方法。
  6. ターゲットハードウェアの制御用に第1のプログラミング言語で作成された制御アプリケーションから、該ターゲットハードウェアを動作させる実行コードを生成するエンジニアリング装置を制御するプログラムであって、
    前記エンジニアリング装置に、
    前記エンジニアリング装置と前記ターゲットハードウェアとがオンライン接続された状態で前記制御アプリケーションが編集されると、該制御アプリケーションから、第2のプログラミング言語で表現された、制御アプリケーションの入れ替えのためのリストと、制御アプリケーションの入れ替えのためのプログラムとを生成するステップと、
    前記リストと、制御アプリケーションの入れ替えのための前記プログラムと、制御サービスプログラムとに基づいて、前記実行コードを生成するステップと、を実行させ、
    前記制御サービスプログラムは、前記実行コードが前記ターゲットハードウェアにダウンロードされると、前記ターゲットハードウェア上で制御アプリケーションの入れ替えのための前記プログラムを実行させる、プログラム。
JP2018207645A 2018-11-02 2018-11-02 エンジニアリング装置、エンジニアリング装置の制御方法及びプログラム Active JP6954256B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2018207645A JP6954256B2 (ja) 2018-11-02 2018-11-02 エンジニアリング装置、エンジニアリング装置の制御方法及びプログラム
US16/669,062 US11132184B2 (en) 2018-11-02 2019-10-30 Engineering apparatus, control method, and program for executing a control application
EP19206418.6A EP3647942B1 (en) 2018-11-02 2019-10-31 Engineering apparatus, control method of engineering apparatus, and program
CN201911059105.3A CN111142466B (zh) 2018-11-02 2019-11-01 工程装置、工程装置的控制方法和存储介质
KR1020190138459A KR102280116B1 (ko) 2018-11-02 2019-11-01 엔지니어링 장치, 엔지니어링 장치의 제어 방법 및 프로그램

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018207645A JP6954256B2 (ja) 2018-11-02 2018-11-02 エンジニアリング装置、エンジニアリング装置の制御方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2020071834A true JP2020071834A (ja) 2020-05-07
JP6954256B2 JP6954256B2 (ja) 2021-10-27

Family

ID=68424750

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018207645A Active JP6954256B2 (ja) 2018-11-02 2018-11-02 エンジニアリング装置、エンジニアリング装置の制御方法及びプログラム

Country Status (5)

Country Link
US (1) US11132184B2 (ja)
EP (1) EP3647942B1 (ja)
JP (1) JP6954256B2 (ja)
KR (1) KR102280116B1 (ja)
CN (1) CN111142466B (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6950665B2 (ja) * 2018-11-02 2021-10-13 横河電機株式会社 エンジニアリング装置、エンジニアリング装置の制御方法及びプログラム
JP7380635B2 (ja) * 2021-04-09 2023-11-15 横河電機株式会社 プログラム修正支援装置及びプログラム修正支援方法
CN116991107A (zh) * 2023-08-21 2023-11-03 广州一川信息科技有限公司 一种工位机终端设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001344127A (ja) * 2000-05-31 2001-12-14 Hitachi Ltd システム開発方法、記憶媒体、情報処理装置、情報端末装置、情報処理システム及び情報処理方法
JP2002099312A (ja) * 2000-09-22 2002-04-05 Mitsubishi Electric Corp プログラマブルコントローラおよび制御プログラム開発支援装置
JP2005056415A (ja) * 2003-08-01 2005-03-03 Kw-Software Gmbh 産業オートメーション用のcilコード・プログラムのオンライン修正
JP2005135414A (ja) * 2003-10-27 2005-05-26 Microsoft Corp ネットワーク装置の単純で動的な構成
JP2008033570A (ja) * 2006-07-27 2008-02-14 Digital Electronics Corp 制御システム、制御システムにおける認証方法、プログラム及びコンピュータ読み取り可能な記録媒体
US20100192122A1 (en) * 2009-01-26 2010-07-29 Gm Global Technology Operations, Inc. On-target rapid control prototyping
WO2012157082A1 (ja) * 2011-05-17 2012-11-22 三菱電機株式会社 パラメータ設定装置およびパラメータ設定システム
JP2015125713A (ja) * 2013-12-27 2015-07-06 富士電機株式会社 プログラマブルコントローラ・システム、その支援装置、プログラマブルコントローラ、プログラム

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07295612A (ja) 1994-04-21 1995-11-10 Japan Steel Works Ltd:The 高級言語シーケンス命令プログラム生成装置および汎用シーケンサ
JP2002506254A (ja) * 1998-03-03 2002-02-26 シーベル システムズ,インコーポレイティド ファイルおよびその他の対象物を部分的に複製されたデータベースに付与する方法、装置、システム、およびプログラム製品
US7076740B2 (en) * 2002-01-15 2006-07-11 National Instruments Corporation System and method for performing rapid control prototyping using a plurality of graphical programs that share a single graphical user interface
US7523023B1 (en) * 2004-09-20 2009-04-21 The Mathworks, Inc. Automatic generation of component interfaces for computational hardware implementations generated from a block diagram model
KR101383793B1 (ko) 2008-01-04 2014-04-09 삼성전자주식회사 시스템 온 칩에서 메모리 할당 방법 및 장치
US8327316B2 (en) * 2008-09-30 2012-12-04 Ics Triplex Isagraf Inc. Compilation model
CN101650664B (zh) * 2009-06-30 2012-06-27 飞天诚信科技股份有限公司 链接方法和链接器
EP2330469B1 (de) * 2009-12-03 2012-10-31 dspace digital signal processing and control engineering GmbH Verfahren und Entwicklungsumgebung zur Erzeugung eines ausführbaren Gesamtsteuerungsprogramms
EP2365438A1 (de) * 2010-03-09 2011-09-14 Siemens Aktiengesellschaft Verfahren zum Betrieb eines Automatisierungssystems
EP2706421B1 (de) * 2012-09-11 2015-05-27 dSPACE digital signal processing and control engineering GmbH Verfahren zur rechnergestützten Erzeugung mindestens eines Teils eines ausführbaren Steuerungsprogramms
JP6127639B2 (ja) * 2013-03-26 2017-05-17 富士通株式会社 プログラム実行制御プログラム、プログラム実行制御方法
KR101771289B1 (ko) * 2014-05-19 2017-08-24 엘에스산전 주식회사 Plc 프로그램 관리 장치
US9442707B2 (en) * 2014-06-25 2016-09-13 Microsoft Technology Licensing, Llc Incremental whole program compilation of code
CN104317642B (zh) * 2014-09-28 2017-12-29 华为技术有限公司 云计算环境下的软件部署方法和装置
DE102014116722A1 (de) * 2014-11-14 2016-05-19 Schneider Electric Automation Gmbh Verfahren zum Anschließen eines Embedded-Geräts an eine Steuereinheit
US9958848B2 (en) * 2015-02-19 2018-05-01 Rockwell Automation Technologies, Inc. Techniques for improving industrial control systems

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001344127A (ja) * 2000-05-31 2001-12-14 Hitachi Ltd システム開発方法、記憶媒体、情報処理装置、情報端末装置、情報処理システム及び情報処理方法
JP2002099312A (ja) * 2000-09-22 2002-04-05 Mitsubishi Electric Corp プログラマブルコントローラおよび制御プログラム開発支援装置
JP2005056415A (ja) * 2003-08-01 2005-03-03 Kw-Software Gmbh 産業オートメーション用のcilコード・プログラムのオンライン修正
JP2005135414A (ja) * 2003-10-27 2005-05-26 Microsoft Corp ネットワーク装置の単純で動的な構成
JP2008033570A (ja) * 2006-07-27 2008-02-14 Digital Electronics Corp 制御システム、制御システムにおける認証方法、プログラム及びコンピュータ読み取り可能な記録媒体
US20100192122A1 (en) * 2009-01-26 2010-07-29 Gm Global Technology Operations, Inc. On-target rapid control prototyping
WO2012157082A1 (ja) * 2011-05-17 2012-11-22 三菱電機株式会社 パラメータ設定装置およびパラメータ設定システム
JP2015125713A (ja) * 2013-12-27 2015-07-06 富士電機株式会社 プログラマブルコントローラ・システム、その支援装置、プログラマブルコントローラ、プログラム

Also Published As

Publication number Publication date
KR102280116B1 (ko) 2021-07-20
CN111142466B (zh) 2023-05-30
EP3647942B1 (en) 2023-10-18
US20200142375A1 (en) 2020-05-07
EP3647942A1 (en) 2020-05-06
KR20200050886A (ko) 2020-05-12
US11132184B2 (en) 2021-09-28
JP6954256B2 (ja) 2021-10-27
CN111142466A (zh) 2020-05-12

Similar Documents

Publication Publication Date Title
JP6950665B2 (ja) エンジニアリング装置、エンジニアリング装置の制御方法及びプログラム
KR102280116B1 (ko) 엔지니어링 장치, 엔지니어링 장치의 제어 방법 및 프로그램
JP2009146229A (ja) プログラマブルコントローラシステム
US20170075335A1 (en) Controller and control system
US20190196798A1 (en) Executable program creation device, executable program creation method, and executable program creation program
JP2009157533A (ja) プログラマブルコントローラシステム
JP2016224558A (ja) プログラム作成支援装置、制御方法およびプログラム
CN104133706B (zh) 固件修改方法及固件修改装置
JP7085305B2 (ja) コントロールシステム及びコントロール方法
JP2013084112A (ja) プログラマブルコントローラシステム、そのプログラミング装置、プログラマブルコントローラ、プログラム、デバッグ方法
JP2016224559A (ja) プログラム作成支援装置、制御方法およびプログラム
JP6455096B2 (ja) コントロールシステム、その支援装置、プログラマブルコントロール装置
WO2022190417A1 (ja) 開発支援装置、開発支援方法および開発支援プログラム
JP6295914B2 (ja) プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ
JP7403732B1 (ja) 翻訳プログラム、翻訳装置及び翻訳方法
WO2022190418A1 (ja) 開発支援装置、開発支援方法および開発支援プログラム
EP4307059A1 (en) Development support device, development support method, and development support program
EP4307060A1 (en) Development assistance device, development assistance method, and development assistance program
US11640153B2 (en) Control system, support device, and recording medium
JP2013190837A (ja) エンジニアリングツール

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200220

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210329

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210913

R150 Certificate of patent or registration of utility model

Ref document number: 6954256

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150