JP6541902B1 - プログラム管理システム、プログラミング支援装置、プログラム管理方法、およびプログラミング支援プログラム - Google Patents

プログラム管理システム、プログラミング支援装置、プログラム管理方法、およびプログラミング支援プログラム Download PDF

Info

Publication number
JP6541902B1
JP6541902B1 JP2018563933A JP2018563933A JP6541902B1 JP 6541902 B1 JP6541902 B1 JP 6541902B1 JP 2018563933 A JP2018563933 A JP 2018563933A JP 2018563933 A JP2018563933 A JP 2018563933A JP 6541902 B1 JP6541902 B1 JP 6541902B1
Authority
JP
Japan
Prior art keywords
version
program
execution module
compilation
programming 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
JP2018563933A
Other languages
English (en)
Other versions
JPWO2019229845A1 (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP6541902B1 publication Critical patent/JP6541902B1/ja
Publication of JPWO2019229845A1 publication Critical patent/JPWO2019229845A1/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
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

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

Abstract

プログラム管理システムは、プログラムPv2を編集してプログラムPv3を作成し、コンパイルによって、プログラムPv2との差分に対応する実行モジュールM3を作成するプログラミング支援装置と、制御装置で実行中の実行モジュールと、最新バージョンのプログラムと、最新バージョンのプログラムがコンパイル済みであるか否かを示すコンパイル情報と、を管理する管理装置と、を備える。管理装置は、実行モジュールM1を実行中のPLCに実行モジュールM3が書き込まれる場合には、プログラムPv3と、実行モジュールM3に固有の情報と、プログラムPv3がコンパイル済みであることを示すコンパイルフラグとを管理し、実行モジュールM3がPLCに書き込まれない場合には、プログラムPv3と、実行モジュールM1に固有の情報と、プログラムPv3が未コンパイルであることを示すコンパイルフラグとを管理する。

Description

本発明は、プログラムを管理するプログラム管理システム、プログラミング支援装置、プログラム管理方法、およびプログラミング支援プログラムに関する。
制御装置の一例であるPLC(Programmable Logic Controller:プログラマブルロジックコントローラ)は、制御用のプログラムがコンパイルされることによって作成された実行モジュールを用いて動作する。この制御用のプログラムは、ユーザによって編集され、新しいバージョンのプログラムとなる場合がある。この場合において、新しいバージョンのプログラムと古いバージョンのプログラムとの差分がコンパイルされることによって新しいバージョンの実行モジュールが作成され、古いバージョンの実行モジュールを用いて動作しているPLCに対し、新しいバージョンの実行モジュールが書き込まれる場合がある。このような、動作中のPLCに対して実行モジュールの更新を行う処理は、実行中書き込みまたはラン(RUN)中書き込みと呼ばれる。
特許文献1に記載のプログラマブルコントローラシステムは、プログラムから作成された実行モジュールに識別情報を対応付けている。このプログラマブルコントローラシステムは、実行中書き込みを行う前に、PLCへのダウンロード対象の実行モジュールが、PLCで実行中のマスタ版から作成された派生版であるか否かを識別情報に基づいて判断し、派生版である場合にダウンロードを許可している。
特開2013−168031号公報
しかしながら、上記特許文献1に記載の技術を含め一般的に、支援装置が、プログラムを編集しコンパイルして実行モジュールを作成すると、作成した実行モジュールをPLCに書き込んでいない場合であっても、作成した実行モジュールの元のプログラムを、最新のプログラムとして管理していた。
最新として管理されているプログラムに対して編集が行われコンパイルが行われると、このコンパイルで作成された実行モジュールとPLCで実行中の実行モジュールとの間で整合が取れなくなるため、PLCへの実行中書き込みを行っていない。
この場合、PLCに書き込まなかった実行モジュールを特定し、上記コンパイルで作成された実行モジュールと併せて、PLCへの実行中書き込みを行う必要がある。あるいは、PLCで実行中の実行モジュールのコンパイル元のプログラムを特定し、当該プログラムとの差分の実行モジュールを作成し直した上で、PLCへの実行中書き込みを行う必要がある。このような実行モジュールの特定またはコンパイルの再実行が必要になるため、プログラムの開発効率が悪化するといった問題があった。
本発明は、上記に鑑みてなされたものであって、効率良くプログラムを開発することができるプログラム管理システムを得ることを目的とする。
上述した課題を解決し、目的を達成するために、本発明のプログラム管理システムは、第1バージョンのプログラムを用いたコンパイルが行われることによって作成された第1バージョンの実行モジュールで被制御機器を制御する制御装置に接続されるとともに、第1バージョンのプログラムを編集して第2バージョンのプログラムを作成し、コンパイルによって、第1バージョンのプログラムと第2バージョンのプログラムとの差分に対応する第2バージョンの実行モジュールを作成するプログラミング支援装置を備える。また、本発明のプログラム管理システムは、制御装置で実行中の実行モジュールと、最新バージョンのプログラムと、最新バージョンのプログラムがコンパイル済みであるか否かを示すコンパイル情報と、を管理する管理装置を備える。プログラミング支援装置は、第1バージョンの実行モジュールを実行中の制御装置に対して第2バージョンの実行モジュールを書き込む場合には、管理装置に第2バージョンのプログラムと、第2バージョンの実行モジュールに固有の情報とを送信し、第1バージョンの実行モジュールを実行中の制御装置に対して第2バージョンの実行モジュールを書き込まない場合には、管理装置に第2バージョンのプログラムを送信する。管理装置は、第2バージョンのプログラムおよび第2バージョンの実行モジュールに固有の情報を受信した場合には、第2バージョンのプログラムを最新バージョンのプログラムとして管理し、第2バージョンの実行モジュールを制御装置で実行中の実行モジュールとして管理し、コンパイル情報をコンパイル済みであることを示す情報に設定する。管理装置は、第2バージョンの実行モジュールに固有の情報を受信せず第2バージョンのプログラムを受信した場合には、第2バージョンのプログラムを最新バージョンのプログラムとして管理し、第1バージョンの実行モジュールを制御装置で実行中の実行モジュールとして管理し、コンパイル情報をコンパイル済みでないことを示す情報に設定する。プログラミング支援装置は、第2バージョンのプログラムを編集して作成した第3バージョンのプログラムをコンパイルする際に、コンパイル情報がコンパイル済みであることを示す場合には、第2バージョンのプログラムおよび第3バージョンのプログラムを用いたコンパイルによって第3バージョンの実行モジュールを作成し、コンパイル情報がコンパイル済みでないことを示す場合には、第1バージョンのプログラム、第2バージョンのプログラムおよび第3バージョンのプログラムを用いたコンパイルによって第3バージョンの実行モジュールを作成する。
本発明にかかるプログラム管理システムは、効率良くプログラムを開発することができるという効果を奏する。
本発明の実施の形態にかかるプログラム管理システムの構成を示す図 実施の形態にかかる管理装置がプロジェクトデータの管理を開始するタイミングで記憶している情報を説明するための図 実施の形態にかかるプログラム管理システムにおいて、プログラムが編集されるもののPLCには書き込まれない場合の処理手順を示すフローチャート 図3の処理が実行された後に実施の形態にかかる管理装置が記憶している情報を説明するための図 実施の形態にかかるプログラム管理システムにおいて、プログラムが編集されてPLCに書き込まれる場合の処理手順を示すフローチャート 図5の処理が実行された後に実施の形態にかかる管理装置が記憶している情報を説明するための図 実施の形態にかかるプログラミング支援装置を実現するハードウェア構成を示す図
以下に、本発明の実施の形態にかかるプログラム管理システム、プログラミング支援装置、プログラム管理方法、およびプログラミング支援プログラムを図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
実施の形態.
図1は、本発明の実施の形態にかかるプログラム管理システムの構成を示す図である。プログラム管理システム1は、プログラムPをコンパイルすることによって作成した実行モジュールMxを管理するとともに、新たに作成された実行モジュールMxを用いてPLC10に実行中書き込みを行うシステムである。プログラム管理システム1は、PLC10で実行中の実行モジュールMxのバージョンと、これから実行中書き込みを実施しようとした際に読み出してきた実行モジュールMxのバージョンとを一致させるよう、実行モジュールMxを管理する。
プログラムPは、複数のユーザによって編集可能であり、ユーザによって編集されると、新しいバージョンのプログラムPとなる。新しいバージョンのプログラムPがコンパイルされると新しいバージョンの実行モジュールMxが生成される。プログラムPの例は、後述するプログラムPv1〜Pv3であり、実行モジュールMxの例は、後述する実行モジュールM1〜M3である。
実行中書き込みは、PLC10の動作を停止しないでPLC10の実行モジュールを更新する処理である。実行中書き込みでは、特定の実行モジュールを用いて動作しているPLC10に対し、新しいバージョンの実行モジュールが書き込まれる。実行中書き込みの際には、PLC10に前回書き込み時との差分となる実行モジュールがPLC10に書き込まれる。本実施の形態では、プログラム管理システム1が、PLC10で実行中の実行モジュールMxのバージョンを管理し、PLC10で実行中の実行モジュールMxに対応する適切な実行モジュールMxにのみ、実行中書き込みを許可する。
プログラム管理システム1は、産業用機械を制御する制御装置の一例であるPLC10と、管理装置20と、プログラミング支援装置30とを備えている。
PLC10は、実行モジュールMxを格納しており、この実行モジュールMxを用いて産業用機械といった被制御機器を制御する。プログラミング支援装置30は、産業用機械を制御するためのプログラムPをコンパイルすることによってプログラムPから実行モジュールMxを作成するコンピュータである。プログラム管理装置である管理装置20は、プログラムPのバージョン管理および実行モジュールMxのバージョン管理を行うコンピュータである。
管理装置20には、1または複数のプログラミング支援装置30が接続されている。また、1または複数のプログラミング支援装置30は、それぞれPLC10に接続されている。管理装置20の一例は、サーバであり、プログラミング支援装置30の一例はクライアント装置である。
プログラミング支援装置30は、プログラミング支援ツールであるプログラミング支援部31と、記憶部39とを備えている。プログラミング支援部31は、プログラムPの作成を支援する機能を有している。具体的には、プログラミング支援部31は、プログラムPを作成する機能と、プログラムPを編集する機能と、プログラムPをコンパイルする機能とを備えている。また、プログラミング支援部31は、プログラムPおよび実行モジュールMxを、外部装置である管理装置20に送信する機能と、実行モジュールMxをPLC10に書き込む機能と、管理装置20で管理されている、コンパイルフラグ23、プログラムPおよび実行モジュールMxを読み出す機能とを備えている。
プログラムPを作成する機能の具体例は、ユーザからの指示に従ってプログラムPを作成する機能であり、プログラムPを編集する機能の具体例は、ユーザからの指示に従ってプログラムPを編集する機能である。プログラムPをコンパイルする機能は、プログラムPをコンパイルすることによって、プログラムPから実行モジュールMxを作成する機能である。プログラムPをコンパイルする機能であるコンパイラは、ソースコードであるプログラムPを、機械語である実行モジュールMxに変換する。なお、プログラミング支援部31は、複数のプログラムPに対して実行モジュールMxを作成してもよいし、プログラムP毎に実行モジュールMxを作成してもよい。
プログラミング支援部31が管理装置20に送信するプログラムPおよび実行モジュールMxは、プログラミング支援部31が作成または編集したものである。また、プログラミング支援部31がPLC10に書き込む実行モジュールMxは、プログラミング支援部31が作成または編集したものである。
また、プログラミング支援部31が管理装置20から読み出すプログラムPおよび実行モジュールMxは、プログラミング支援部31で、以前に作成または編集したものである。なお、プログラミング支援部31が管理装置20から読み出すプログラムPおよび実行モジュールMxは、他のプログラミング支援装置30で作成または編集されたものであってもよい。
記憶部39は、プログラムPおよび実行モジュールMxを管理するためのデータであるプロジェクトデータ22を記憶する。このプロジェクトデータ22は、プログラミング支援部31がプロジェクトデータ22を編集する際に、プログラミング支援部31が管理装置20から読み出したものである。プロジェクトデータ22内には、コンパイルフラグ23と、プログラムPと、実行モジュールMxとが含まれている。
プログラムPは、編集されて新しいバージョンのプログラムPとなった後にコンパイルされると、実行モジュールMxも新しいバージョンとなる。したがって、プログラミング支援部31が、新しいバージョンのプログラムPをコンパイルして新しいバージョンの実行モジュールMxを作成した場合には、新しいバージョンの実行モジュールMxが記憶部39で記憶される。このように、記憶部39は、プログラミング支援部31がプロジェクトデータ22を編集すると、編集後のプロジェクトデータ22を記憶する。
コンパイル情報であるコンパイルフラグ23は、プロジェクトデータ22に含まれるプログラムPがコンパイル済みであるか否かを示すフラグである。プロジェクトデータ22に複数のプログラムPが含まれる場合、コンパイルフラグ23では、コンパイル済みであるか否かの情報がプログラム毎に示される。
プログラミング支援装置30は、ユーザからの指示に従ってプログラムPを編集してこのプログラムPを保存しておく場合と、ユーザからの指示に従って編集したプログラムPをコンパイルしてPLC10に実行中書き込みをする場合とがある。プログラミング支援装置30は、ユーザからの指示に従って編集したプログラムPをコンパイルしてPLC10に実行中書き込みをする場合、編集したプログラムPと、PLC10で実行中の実行モジュールMxに対応するプログラムPとの差分を算出し、差分に対応する実行モジュールを作成する。差分に対応する実行モジュールの例は、後述する実行モジュールM3である。プログラミング支援装置30は、差分の実行モジュールM3を用いて、PLC10に実行中書き込みを行い、さらに差分の実行モジュールM3を管理装置20に保存させる。なお、プログラミング支援装置30は、編集したプログラムPの実行モジュールと、PLC10で実行中の実行モジュールMxとの差分に対応する実行モジュールを作成してもよい。この場合も、差分に対応する実行モジュールの例は、後述する実行モジュールM3である。
編集したプログラムPとPLC10で実行中の実行モジュールMxに対応するプログラムPとの差分は、プログラムPへの編集で追加された特定の行などである。なお、プロジェクトデータ22内のプログラムPが複数のプログラムである場合、編集したプログラムPとPLC10で実行中の実行モジュールMxに対応するプログラムPとの差分は、複数のプログラムのうちの特定のプログラムの全体であってもよい。
なお、プログラミング支援ツールであるプログラミング支援部31は、エンジニアリングツールの一部であってもよい。エンジニアリングツールは、プログラミング支援装置30が、ユーザからの指示に従って、PLC10への各種設定を行うためのアプリケーションソフトウェアである。
管理装置20は、バージョン管理ツールであるバージョン管理部21と、記憶部29とを備えている。バージョン管理部21は、プログラミング支援装置30から送られてくるプロジェクトデータ22を管理する。具体的には、バージョン管理部21は、プログラミング支援装置30から送られてくる実行モジュールMxおよびプログラムPを管理する。また、バージョン管理部21は、コンパイルフラグ23およびバージョン情報25を管理する。
バージョン管理部21は、プログラミング支援装置30からプロジェクトデータ22を受信すると、このプロジェクトデータ22を記憶部29に記憶させる。したがって、プログラムPがプログラミング支援装置30で編集されて新しいバージョンのプログラムPとなった場合には、新しいバージョンのプログラムPが記憶部29で記憶される。
記憶部29は、バージョン管理部21からの指示に従ってプロジェクトデータ22を記憶する。記憶部29で記憶されるプロジェクトデータ22も、記憶部39で記憶されるプロジェクトデータ22と同様にコンパイルフラグ23、プログラムPおよび実行モジュールMxを含んでいる。また、記憶部29は、バージョン情報25を記憶する。
なお、記憶部29は、複数のプロジェクトデータ22を記憶してもよい。また、各プロジェクトデータ22には、複数のプログラムPが含まれていてもよい。バージョン管理部21は、プログラミング支援装置30内に配置されてもよいし、プログラミング支援装置30および管理装置20以外に配置されてもよい。
バージョン管理部21は、プログラムPがプログラミング支援装置30で編集されて新しいバージョンとなった際にコンパイルフラグ23を更新する。バージョン管理部21は、プログラムPが編集された後にコンパイルされなければ、コンパイルフラグ23を未コンパイルに設定し、プログラムPが編集された後にコンパイルされると、コンパイルフラグ23をコンパイル済みに設定する。本実施の形態では、後述するように、実行モジュールMxがPLC10に書き込まれる場合にはコンパイルフラグ23がコンパイル済みに設定されるので、コンパイルフラグ23は、PLC10に実行モジュールMxが書き込まれたか否かを示すフラグであるともいえる。
また、バージョン管理部21は、プログラミング支援装置30から送られてくるプログラムPと、このプログラムPのバージョンとに基づいて、バージョン情報25を編集する。バージョン情報25は、バージョン管理部21によって管理される情報である。バージョン情報25では、プログラムPと、プログラムPのバージョンとが対応付けされている。例えば、プログラムPの一例であるプログラムPv1が第1バージョンであり、プログラムPの一例であるプログラムPv2が第2バージョンである場合、バージョン情報25では、プログラムPv1と第1バージョンを示す情報とが対応付けされ、プログラムPv2と第2バージョンを示す情報とが対応付けされている。
バージョン管理部21は、新しいバージョンのプログラムPがプログラミング支援装置30から送られてくると、この新しいバージョンとプログラムPとを対応付けしてバージョン情報25に登録する。
ここで、プログラムPが編集された場合の、実行モジュールMxの管理手順および管理装置20で管理される情報について説明する。図2は、実施の形態にかかる管理装置がプロジェクトデータの管理を開始するタイミングで記憶している情報を説明するための図である。なお、図2では、プログラムPの一例であるプログラムPv1と、実行モジュールMxの一例である実行モジュールM1が作成された場合について説明する。
プログラミング支援部31は、第1バージョンのプログラムPv1を作成すると、このプログラムPv1をコンパイルすることによって第1バージョンの実行モジュールである実行モジュールM1を作成する。そして、プログラミング支援部31は、作成した実行モジュールM1をPLC10に送信し、PLC10に書き込む。このとき、プログラミング支援部31は、作成したプログラムPv1および実行モジュールM1を含んだプロジェクトデータ22を作成し、作成したプロジェクトデータ22を管理装置20に送信する。これにより、PLC10は、実行モジュールM1を用いて産業用機械の制御を開始し、管理装置20は、プロジェクトデータ22を記憶部29で記憶する。このとき、管理装置20のバージョン管理部21は、プログラムPv1とともに実行モジュールM1を受信しているので、プログラムPv1に対応するコンパイルフラグ23をコンパイル済みに設定する。
これにより、図2に示すように、記憶部29では、コンパイル済みに設定されたコンパイルフラグ23と、プログラムPv1と、実行モジュールM1と、を含んだプロジェクトデータ22が記憶される。この場合において、バージョン管理部21は、バージョン情報25に、プログラムPv1を識別する情報と、プログラムPv1のバージョンを示すバージョン番号とを登録する。このバージョン番号は、ユーザによって指定されるものである。バージョン管理部21は、例えば、プログラムPv1のバージョンに「ver.1」が指定された場合、第1バージョンのプログラムPv1を識別する情報と、第1バージョンであることを示す「ver.1」とを対応付けしてバージョン情報25に登録する。プログラムPv1を識別する情報の例は、プログラムPv1の名称である。
この後、ユーザが、プログラムPv1を編集したい場合がある。この場合、プログラミング支援部31は、ユーザからの指示に従って管理装置20からプログラムPv1を読み出し、記憶部39に記憶させる。そして、プログラミング支援部31は、ユーザからの指示に従ってプログラムPv1を編集する。この場合において、ユーザは、プログラムPv1を編集するだけで、PLC10には反映させない場合と、プログラムPv1を編集した後、プログラムPv1をPLC10に反映させたい場合とがある。
ここで、第1のユーザと第2のユーザとによってプログラム編集が実行される場合について説明する。第1のユーザは、プログラムPv1を編集して後述のプログラムPv2を作成するだけで、プログラムPv2に対応する実行モジュールM2をPLC10には書き込まないものとする。その後、第2のユーザは、プログラムPv2を編集して後述のプログラムPv3を作成し、その後、プログラムPv3をコンパイルしてPLC10に反映させるものとする。このような、ユーザによる処理の手順について説明する。以下の説明では、第1バージョンのプログラムPv1から、第2バージョンのプログラムPv2が作成され、第2バージョンのプログラムPv2から第3バージョンのプログラムPv3が作成される場合について説明する。したがって、第1バージョンのプログラムPv1がコンパイルされると第1バージョンの実行モジュールM1となり、第2バージョンのプログラムPv2がコンパイルされると第2バージョンの実行モジュールM2(図示せず)となり、第3バージョンのプログラムPv3がコンパイルされると第3バージョンの実行モジュールM3となる。
図3は、実施の形態にかかるプログラム管理システムにおいて、プログラムが編集されるもののPLCには書き込まれない場合の処理手順を示すフローチャートである。第1のユーザであるユーザAAがプログラムPv1を編集する場合、ユーザAAからの指示に従ってプログラミング支援装置30のプログラミング支援部31は、管理装置20からプログラムPv1、コンパイルフラグ23および実行モジュールM1を読み出して取得する(ステップS10)。このプログラムPv1、コンパイルフラグ23および実行モジュールM1は、記憶部39で記憶される。
この後、プログラミング支援装置30のプログラミング支援部31は、ユーザAAからの指示に従ってプログラムPv1を編集し、新しいバージョンのプログラムPv2を作成する(ステップS20)。プログラミング支援部31は、プログラムPv2をプログラムPv1と同じファイル名で作成し、バージョン番号を更新する。例えば、ユーザAAが、プログラムPv2のバージョンに「ver.2」を指定すると、プログラミング支援部31は、プログラムPv2と「ver.2」とを対応付ける。
この後、プログラミング支援装置30のプログラミング支援部31は、管理装置20のバージョン管理部21に、「ver.2」に対応付けされたプログラムPv2を送信する(ステップS30)。このとき、プログラミング支援部31は、読み出したプログラムPv1に対応するプロジェクトデータ22を指定して、バージョン管理部21にプログラムPv2を送信する。
これにより、管理装置20のバージョン管理部21は、指定されたプロジェクトデータ22にプログラムPv2を含める。すなわち、管理装置20の記憶部29が、プログラムPv2を記憶する。さらに、管理装置20では、プログラムPv2に対応する実行モジュールM2が送られてきていないので、管理装置20のバージョン管理部21が、プログラムPv2のコンパイルフラグ23を未コンパイルに変更する(ステップS40)。また、バージョン管理部21は、プログラムPv2を識別する情報と、プログラムPv2のバージョンを示す「ver.2」とを対応付けしてバージョン情報25に登録する。
なお、プログラミング支援部31は、ユーザAAからの指示に従ってプログラムPv2をコンパイルし、これによりプログラムPv2に対応する実行モジュールM2を作成してもよい。この場合であっても、プログラミング支援部31は、ユーザAAから、PLC10への実行モジュールM2の書き込み指示が無かった場合には、実行モジュールM2をPLC10へも管理装置20へも送信しない。これにより、PLC10内の実行モジュールM1と管理装置20で管理している実行モジュールM1との同一性を維持できる。なお、実行中書き込みをしない場合には、ステップS10でコンパイルフラグ23および実行モジュールM1の取得を省略してもよい。
図4は、図3の処理が実行された後に実施の形態にかかる管理装置が記憶している情報を説明するための図である。図3の処理が実行されることにより、管理装置20のバージョン管理部21は、プログラムPv2を記憶部29に記憶させる。具体的には、バージョン管理部21は、プログラムPv1のファイル名で記憶されていたファイルを、プログラムPv2の内容に変更する。したがって、記憶部29では、ファイル名を維持したままプログラムPv1の内容がプログラムPv2の内容に変更される。なお、プログラムPv1は、記憶部29内でプログラムPv2が保存される領域とは別の領域に保存しておいてもよい。この場合、バージョン管理部21は、プログラムPv2の代わりに、プログラムPv1とプログラムPv2との差分を記憶部29に記憶させてもよい。
また、バージョン管理部21は、プログラムPv2のコンパイルフラグ23をコンパイル済みから未コンパイルに書き換える。また、実行モジュールM1は、更新されない。したがって、記憶部29は、未コンパイルを示すコンパイルフラグ23と、プログラムPv2と、実行モジュールM1とを含んだプロジェクトデータ22を記憶する。
このように、プログラムPv1が編集されるだけの場合、編集後のプログラムPv2は、コンパイルされることなく管理装置20に送信されて、管理装置20の記憶部29で記憶される。この場合において、バージョン管理部21は、バージョン情報25にプログラムPv2を識別する情報と、プログラムPv2のバージョンを示すバージョン番号とを登録する。このバージョン番号は、ユーザによって指定されるものである。バージョン管理部21は、例えば、プログラムPv2のバージョンに「ver.2」が指定された場合、第2バージョンのプログラムPv2を識別する情報と、第2バージョンを示す「ver.2」とを対応付けしてバージョン情報25に登録する。
図5は、実施の形態にかかるプログラム管理システムにおいて、プログラムが編集されてPLCに書き込まれる場合の処理手順を示すフローチャートである。第2のユーザであるユーザBBは、ユーザAAが用いたプログラミング支援装置30でプログラムPv2を編集してもよいし、ユーザAAが用いたプログラミング支援装置30とは異なるプログラミング支援装置でプログラムPv2を編集してもよい。ここでは、ユーザBBが、ユーザAAの用いたプログラミング支援装置30でプログラムPv2を編集する場合について説明する。以下に説明するステップS110からS170の処理は、プログラミング支援装置30によって実行される処理であり、ステップS180の処理は、管理装置20によって実行される処理である。
ユーザBBがプログラムPv2を編集する場合、ユーザBBからの指示に従ってプログラミング支援装置30のプログラミング支援部31は、管理装置20からプログラムPv2、コンパイルフラグ23および実行モジュールM1を読み出して取得する(ステップS110)。このプログラムPv2、コンパイルフラグ23および実行モジュールM1は、記憶部39で記憶される。
この後、プログラミング支援装置30のプログラミング支援部31は、ユーザBBの指示に従ってプログラムPv2を編集し、プログラムPv3を作成する(ステップS120)。さらに、プログラミング支援装置30のプログラミング支援部31は、PLC10へのプログラムPv3の書き込み指示をユーザBBから受付けると(ステップS130)、管理装置20から取得したプログラムPv2が最新バージョンのプログラムであるか否かを判定する(ステップS140)。
ここで、管理装置20から取得したプログラムPv2が最新バージョンのプログラムであるか否かを判定する理由について説明する。ユーザAAおよびユーザBBのように、複数人がプログラム編集を行う場合、ユーザBBがプログラム編集を行っている間に、他のユーザCCによってプログラム編集が行われる場合がある。例えば、ユーザBBがプログラムPv2からプログラムPv3を作成している間に、ユーザCCが、プログラムPv2からプログラムPv4を作成する場合がある。プログラムPv3が記憶部29に登録される前にプログラムPv4が記憶部29に登録されると、プログラムPv4が最新バージョンのプログラムとなり、プログラムPv2は最新バージョンでなくなる。このような状況で、ユーザBBが作成したプログラムPv3がPLC10に書き込まれると、最新でないプログラムPv2に対する編集で作成されたプログラムPv3がPLC10に書き込まれることとなり、プログラムPv3とプログラムPv4との整合性が取れなくなる。このため、プログラミング支援部31は、PLC10にプログラムPv3を書き込む前に、管理装置20から取得したプログラムPv2が最新バージョンのプログラムであるか否かを判定する。
管理装置20から取得したプログラムPv2が最新バージョンのプログラムでない場合(ステップS140、No)、プログラムPv3は、最新バージョンでないプログラムから編集されたものとなっているので、プログラミング支援装置30のプログラミング支援部31は、PLC10への書き込みは不可であると判定する(ステップS150)。このように、プログラミング支援部31は、プログラムPv2が最新バージョンのプログラムでない場合には、実行モジュールM2を作成しない。
一方、管理装置20から取得したプログラムPv2が最新バージョンのプログラムである場合(ステップS140、Yes)、プログラミング支援装置30のプログラミング支援部31は、PLC10内の実行モジュールM1と、管理装置20から取得した実行モジュールM1とが同一であるか否かを確認する(ステップS155)。
プログラミング支援部31は、例えば、実行モジュールM1のバイナリーデータのハッシュ値を比較することによって、実行モジュールM1の同一性を判定する。この場合、プログラミング支援部31は、PLC10内の実行モジュールM1のバイナリーデータから第1のハッシュ値を算出し、これから実行中書き込みを実施しようとした際に管理装置20から取得した実行モジュールM1のバイナリーデータから第2のハッシュ値を算出する。そして、プログラミング支援部31は、算出した第1のハッシュ値と第2のハッシュ値とを比較する。プログラミング支援部31は、この比較結果に基づいて、PLC10内の実行モジュールM1と、これから実行中書き込みを実施しようとした際に管理装置20から取得した実行モジュールM1と、が同一であるか否かを判定する。
プログラミング支援部31が、第1のハッシュ値と第2のハッシュ値とを比較することによって実行モジュールM1の同一性を判定する場合、プログラミング支援部31は、実行モジュールM1の代わりに第2のハッシュ値を管理装置20に送信しておいてもよい。すなわち、プログラミング支援部31は、実行モジュールM1の代わりに、実行モジュールM1に固有の情報を管理装置20に送信しておけばよい。これにより、プログラミング支援部31は、管理装置20から実行モジュールM1に固有の情報を取得することができるので、PLC10内の実行モジュールM1と、管理装置20で管理されている実行モジュールM1とが同一であるか否かを確認することができる。実行モジュールM1に固有の情報は、実行モジュールM1そのものであってもよい。なお、プログラミング支援部31は、実行モジュールM1のバイナリーデータを上述した方法に限らず何れの方法で比較してもよい。
PLC10内の実行モジュールM1と、管理装置20から取得した実行モジュールM1とが同一でない場合(ステップS155、No)、何らかの異常が発生している可能性があるので、プログラミング支援装置30のプログラミング支援部31は、PLC10への書き込みは不可であると判定する(ステップS150)。この場合、プログラミング支援部31は、実行モジュールM2を作成しない。このように、プログラミング支援部31は、PLC10内の実行モジュールM1と、管理装置20から取得した実行モジュールM1とが同一でない場合には、実行モジュールM2を作成しない。
PLC10内の実行モジュールM1と、管理装置20から取得した実行モジュールM1とが同一である場合(ステップS155、Yes)、プログラミング支援装置30のプログラミング支援部31は、編集後のプログラムであるプログラムPv3のコンパイルを行うことによって、プログラムPv3に対応する実行モジュールM3を作成する(ステップS156)。このように、プログラミング支援部31は、プログラムPv2が最新バージョンのプログラムであり、かつPLC10内の実行モジュールM1と、管理装置20から取得した実行モジュールM1とが同一である場合には、実行モジュールM3を作成する。
プログラミング支援部31は、例えば、コンパイルフラグ23に基づいて、編集後のプログラムであるプログラムPv3と、PLC10で実行中の実行モジュールM1に対応するプログラムPv1との差分を算出し、差分をコンパイルすることによって、差分のプログラムPv3に対応する実行モジュールM3を作成する。すなわち、ここでは、プログラムPv2のコンパイルフラグ23が未コンパイルなので、プログラミング支援部31は、プログラムPv3とプログラムPv2との差分と、プログラムPv2とプログラムPv1との差分と、の合計を用いて実行モジュールM3を作成する。
さらに、プログラミング支援装置30のプログラミング支援部31は、作成した実行モジュールM3をPLC10に送信しPLC10に書き込む(ステップS160)。この場合において、PLC10は、編集前のプログラムPv2に対応する実行モジュールM1を用いて動作中である。この場合であっても、PLC10は、差分の実行モジュールM3を適用することによって、実行モジュールM3の実行中書き込みを行う。PLC10は、実行モジュールM1をループ処理しているので、差分の実行モジュールM3は、つぎのループの先頭から適用される。
また、プログラミング支援装置30のプログラミング支援部31は、作成したプログラムPv3、および作成した実行モジュールM3を管理装置20に送信する(ステップS170)。このように、本実施の形態では、プログラミング支援部31は、実行モジュールM3をPLC10に書き込む場合には、プログラムPv3および実行モジュールM3を管理装置20に送信する。これにより、管理装置20のバージョン管理部21は、プログラミング支援部31からのプログラムPv3を最新バージョンのプログラムとして記憶部29に記憶させる。また、管理装置20のバージョン管理部21は、プログラミング支援部31からの実行モジュールM3を最新の実行モジュールM3として記憶部29に記憶させる。さらに、管理装置20のバージョン管理部21は、プログラムPv3とともに実行モジュールM3を受信したので、プログラムPv3のコンパイルフラグ23をコンパイル済みに変更する(ステップS180)。このステップS170,S180の処理は、管理装置20に保存されるプログラムPv3とPLC10に書き込まれた実行モジュールM3に対応するプログラムPv3との間に乖離が起きないようにするための処理である。
なお、本実施の形態では、PLC10で実行している実行モジュールMxと、管理装置20で管理されている実行モジュールMxとが同一となるので、ステップS155の処理は省略されてもよいが、同一性を確認するためには、ステップS155の処理を実行する方が望ましい。
図6は、図5の処理が実行された後に実施の形態にかかる管理装置が記憶している情報を説明するための図である。図5の処理が実行されることにより、管理装置20のバージョン管理部21は、プログラムPv3を記憶部29に記憶させる。具体的には、バージョン管理部21は、プログラムPv2のファイル名で記憶されていたファイルを、プログラムPv3の内容に変更する。したがって、記憶部29では、ファイル名を維持したままプログラムPv2の内容がプログラムPv3の内容に変更される。なお、プログラムPv2は、記憶部29内でプログラムPv3が保存される領域とは別の領域に保存しておいてもよい。この場合、バージョン管理部21は、プログラムPv3の代わりにプログラムPv2とプログラムPv3との差分を記憶部29に記憶させてもよい。
また、バージョン管理部21は、プログラムPv3のコンパイルフラグ23を未コンパイルからコンパイル済みに書き換える。また、バージョン管理部21は、実行モジュールM3を記憶部29に記憶させる。具体的には、バージョン管理部21は、実行モジュールM1のファイル名で記憶されていたファイルを、実行モジュールM3の内容に変更する。したがって、記憶部29では、ファイル名を維持したまま実行モジュールM1の内容が実行モジュールM3の内容に変更される。これにより、記憶部29は、コンパイル済みを示すコンパイルフラグ23と、プログラムPv3と、実行モジュールM3とを含んだプロジェクトデータ22を記憶する。
このように、プログラムPv3がコンパイルされる場合、プログラムPv3に対応する実行モジュールM3が、管理装置20の記憶部29で記憶される。この場合において、バージョン管理部21は、バージョン情報25にプログラムPv3を識別する情報と、プログラムPv3のバージョンを示すバージョン番号とを登録する。このバージョン番号は、ユーザによって指定されるものである。バージョン管理部21は、例えば、プログラムPv3のバージョンに「ver.3」が指定された場合、第3バージョンのプログラムPv3を識別する情報と、第3バージョンを示す「ver.3」とを対応付けしてバージョン情報25に登録する。
なお、プログラムPv1からプログラムPv2が作成されていない場合には、プログラムPv1からプログラムPv3が作成される。この場合、プログラムPv1が第1バージョンのプログラムであり、プログラムPv3が第2バージョンのプログラムである。また、実行モジュールM1が第1バージョンの実行モジュールであり、実行モジュールM3が第2バージョンの実行モジュールである。
このように、本実施の形態では、プログラミング支援部31が、実行モジュールM3をPLC10に送信する際に、実行モジュールM3と、編集後のプログラムPv3とを管理装置20に送信する。そして、管理装置20のバージョン管理部21が、差分の実行モジュールM3と、編集後のプログラムPv3とを記憶部29に格納し、さらに、編集後のプログラムPv3に対応するコンパイルフラグ23を、コンパイル済みに設定する。
これにより、プログラム管理システム1は、PLC10内の実行モジュールMxと、管理装置20から取得した実行モジュールMxとを一致させることができる。また、プログラミング支援装置30は、管理装置20に実行モジュールM1を送信しているので、実行モジュールM3を作成する際には、PLC10からではなく管理装置20から実行モジュールM1を取得することができる。管理装置20はPLC10よりも処理能力が高く、また通信速度も速いので、プログラミング支援装置30は、PLC10から実行モジュールM1を取得するよりも、管理装置20から実行モジュールM1を取得する方が短時間で実行モジュールM1を取得することができる。
なお、第1のユーザであるユーザAAと第2のユーザであるユーザBBは、同一人物であってもよいし、異なる人物であってもよい。また、コンパイルフラグ23は、プログラミング支援部31が設定してもよい。この場合、プログラミング支援部31は、設定したコンパイルフラグ23を管理装置20に送信する。これにより、管理装置20がプログラミング支援部31から送られてきたコンパイルフラグ23を記憶する。
ここで、プログラミング支援装置30のハードウェア構成について説明する。図7は、実施の形態にかかるプログラミング支援装置を実現するハードウェア構成を示す図である。
プログラミング支援装置30は、表示装置101、入力装置102、プロセッサ103、メモリ104および通信装置105を含むハードウェア100で実現される。表示装置101は、情報を表示する装置であり、液晶ディスプレイが例示されるがこれに限定されるものではない。
入力装置102は、プログラミング支援部31に対して文字を含む各種情報を入力するための装置であり、キーボード、マウス、ポインティングデバイスおよびタッチパネルが例示されるが、これらに限定されるものではない。入力装置102は、ユーザによる各種操作を受け付ける場合に使用される。すなわち、入力装置102は、プログラミング支援部31がユーザからの指示を受け付ける場合に使用される。
通信装置105は、管理装置20との間、およびPLC10との間で通信を実行する。通信装置105は、管理装置20からコンパイルフラグ23、プログラムPおよび実行モジュールMxといった各種データを受信し、プログラミング支援部31が作成したプログラムPおよび実行モジュールMxといった各種データを管理装置20に送信する。また、通信装置105は、プログラミング支援部31が作成した実行モジュールMxをPLC10に送信し、PLC10に格納されている実行モジュールMxのバイナリーデータをPLC10から受信する。
プログラミング支援装置30が有するプログラミング支援部31の機能は、プロセッサ103およびメモリ104により実現される。プロセッサ103は、CPU(Central Processing Unit:中央処理装置)、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、又はDSP(Digital Signal Processor)ともいう。記憶部39は、メモリ104により実現される。メモリ104は、RAM(Random Access Memory)、ROM(Read Only Memory)などを含んでいる。
すなわち、プログラミング支援部31の機能は、ソフトウェア、ファームウェア、又はソフトウェアとファームウェアとの組合せにより実現される。ソフトウェア及びファームウェアはプログラムとして記述され、メモリ104に記憶される。プロセッサ103は、メモリ104に記憶されたプログラムを読み出して実行することにより、プログラミング支援部31の機能を実現する。このプログラムは、プログラミング支援部31が実行する手順をコンピュータに実行させるものであるともいえる。
なお、プログラミング支援部31の機能について、一部を専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。また、管理装置20も、プログラミング支援装置30と同様の構成を有したハードウェア100で実現することができる。
このように、プログラム管理システム1は、実行モジュールMxの管理を行っているので、プログラム開発時に複数のユーザがプログラムPを編集するような場合であっても、PLC10への実行中書き込みを容易に実現することができる。
また、管理装置20で管理される実行モジュールMxは、PLC10に書き込んだ際の実行モジュールMxと常に同様のものになるので、プログラム管理システム1は、実行モジュールMxのバージョン管理を行いつつ実行中書き込みが可能となる。なお、プログラム管理システム1は、複数のPLC10を有していてもよい。この場合、管理装置20は、PLC10毎に実行モジュールMxを管理する。なお、管理装置20は、複数のPLC10に対して共通の実行モジュールMxを管理することにより、複数のPLC10に対して共通の実行モジュールMxを書き込むことが可能となる。
このように実施の形態によれば、プログラムPv2が作成されても実行モジュールM2がPLC10に書き込まれない場合には、この実行モジュールM2は管理装置20に送信されない。この場合、管理装置20は、プログラムPv2と、実行モジュールM1と、未コンパイルを示すコンパイルフラグ23とを記憶しておく。また、プログラムPv3が作成されて実行モジュールM3がPLC10に書き込まれる場合には、管理装置20は、プログラムPv3と、実行モジュールM3と、コンパイル済みに設定されたコンパイルフラグ23とを記憶しておく。これにより、プログラミング支援装置30で作成された実行モジュールがPLC10に反映されていない場合であっても、PLC10で実行中の実行モジュールのバージョンと、管理装置20が記憶している実行モジュールのバージョンとを一致させることができる。また、管理装置20で最新のプログラムを記憶することができるとともに、この最新のプログラムがコンパイル済みであるか否かを管理することができる。この結果、プログラミング支援装置30が管理装置20で記憶しているプログラムを読み出して編集しコンパイルした場合に、PLC10への実行中書き込みが禁止されることが少なくなる。また、プログラミング支援装置30で作成された実行モジュールM2をPLC10に反映しないような運用も可能となる。したがって、効率良くプログラムを開発することができる。
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
1 プログラム管理システム、20 管理装置、21 バージョン管理部、22 プロジェクトデータ、23 コンパイルフラグ、25 バージョン情報、29 記憶部、30 プログラミング支援装置、31 プログラミング支援部、39 記憶部、M1,M3,Mx 実行モジュール、P,Pv1〜Pv3 プログラム。

Claims (8)

  1. 第1バージョンのプログラムを用いたコンパイルが行われることによって作成された第1バージョンの実行モジュールで被制御機器を制御する制御装置に接続されるとともに、前記第1バージョンのプログラムを編集して第2バージョンのプログラムを作成し、コンパイルによって、前記第1バージョンのプログラムと前記第2バージョンのプログラムとの差分に対応する第2バージョンの実行モジュールを作成するプログラミング支援装置と、
    前記制御装置で実行中の実行モジュールと、最新バージョンのプログラムと、前記最新バージョンのプログラムがコンパイル済みであるか否かを示すコンパイル情報と、を管理する管理装置と、
    を備え、
    前記プログラミング支援装置は、
    前記第1バージョンの実行モジュールを実行中の前記制御装置に対して前記第2バージョンの実行モジュールを書き込む場合には、前記管理装置に前記第2バージョンのプログラムと、前記第2バージョンの実行モジュールに固有の情報とを送信し、前記第1バージョンの実行モジュールを実行中の前記制御装置に対して前記第2バージョンの実行モジュールを書き込まない場合には、前記管理装置に前記第2バージョンのプログラムを送信し、
    前記管理装置は、前記第2バージョンのプログラムおよび前記第2バージョンの実行モジュールに固有の情報を受信した場合には、前記第2バージョンのプログラムを前記最新バージョンのプログラムとして管理し、前記第2バージョンの実行モジュールを前記制御装置で実行中の実行モジュールとして管理し、前記コンパイル情報をコンパイル済みであることを示す情報に設定し、前記第2バージョンの実行モジュールに固有の情報を受信せず前記第2バージョンのプログラムを受信した場合には、前記第2バージョンのプログラムを前記最新バージョンのプログラムとして管理し、前記第1バージョンの実行モジュールを前記制御装置で実行中の実行モジュールとして管理し、前記コンパイル情報をコンパイル済みでないことを示す情報に設定し、
    前記プログラミング支援装置は、前記第2バージョンのプログラムを編集して作成した第3バージョンのプログラムをコンパイルする際に、前記コンパイル情報がコンパイル済みであることを示す場合には、前記第2バージョンのプログラムおよび前記第3バージョンのプログラムを用いたコンパイルによって第3バージョンの実行モジュールを作成し、前記コンパイル情報がコンパイル済みでないことを示す場合には、前記第1バージョンのプログラム、前記第2バージョンのプログラムおよび前記第3バージョンのプログラムを用いたコンパイルによって前記第3バージョンの実行モジュールを作成する、
    ことを特徴とするプログラム管理システム。
  2. 前記プログラミング支援装置は、前記第2バージョンの実行モジュールを作成する前に、前記第1バージョンのプログラムが前記最新バージョンのプログラムであるか否かを判定し、前記最新バージョンのプログラムである場合には、前記第2バージョンの実行モジュールを作成し、前記最新バージョンのプログラムでない場合には、前記第2バージョンの実行モジュールを作成しない、
    ことを特徴とする請求項に記載のプログラム管理システム。
  3. 前記プログラミング支援装置は、前記第2バージョンの実行モジュールを作成する前に、前記管理装置で管理されている第1バージョンの実行モジュールと、前記制御装置で実行されている第1バージョンの実行モジュールとが同じであるか否かを判定し、同じである場合には、前記第2バージョンの実行モジュールを作成し、同じでない場合には、前記第2バージョンの実行モジュールを作成しない、
    ことを特徴とする請求項1または2に記載のプログラム管理システム。
  4. 前記プログラミング支援装置は、複数の前記制御装置に接続され、
    前記管理装置は、複数の前記制御装置に対して共通の、前記第2バージョンのプログラム、前記第2バージョンの実行モジュール、および前記コンパイル情報を管理する、
    ことを特徴とする請求項1からのいずれか1つに記載のプログラム管理システム。
  5. 前記コンパイル情報は、前記管理装置または前記プログラミング支援装置によって設定され、前記管理装置で管理される、
    ことを特徴とする請求項1からのいずれか1つに記載のプログラム管理システム。
  6. 第1バージョンのプログラムを用いたコンパイルが行われることによって作成された第1バージョンの実行モジュールで被制御機器を制御する制御装置に接続されるとともに、前記第1バージョンのプログラムを編集して第2バージョンのプログラムを作成し、コンパイルによって、前記第1バージョンのプログラムと前記第2バージョンのプログラムとの差分に対応する第2バージョンの実行モジュールを作成するプログラミング支援部を備え、
    前記プログラミング支援部は、
    前記制御装置で実行中の実行モジュールと、最新バージョンのプログラムと、前記最新バージョンのプログラムがコンパイル済みであるか否かを示すコンパイル情報と、を管理する管理装置に接続され、
    前記第1バージョンの実行モジュールを実行中の前記制御装置に対して前記第2バージョンの実行モジュールを書き込む場合には、前記管理装置に前記第2バージョンのプログラムと、前記第2バージョンの実行モジュールに固有の情報とを送信し、前記第1バージョンの実行モジュールを実行中の前記制御装置に対して前記第2バージョンの実行モジュールを書き込まない場合には、前記管理装置に前記第2バージョンのプログラムを送信し、
    前記プログラミング支援部は、前記第2バージョンのプログラムを編集して作成した第3バージョンのプログラムをコンパイルする際に、前記コンパイル情報がコンパイル済みであることを示す場合には、前記第2バージョンのプログラムおよび前記第3バージョンのプログラムを用いたコンパイルによって第3バージョンの実行モジュールを作成し、前記コンパイル情報がコンパイル済みでないことを示す場合には、前記第1バージョンのプログラム、前記第2バージョンのプログラムおよび前記第3バージョンのプログラムを用いたコンパイルによって前記第3バージョンの実行モジュールを作成する、
    ことを特徴とするプログラミング支援装置。
  7. 第1バージョンのプログラムを用いたコンパイルが行われることによって作成された第1バージョンの実行モジュールで制御装置が被制御機器を制御する制御ステップと、
    前記第1バージョンのプログラムを編集して第2バージョンのプログラムを作成するプログラム編集ステップと、
    コンパイルによって、前記第1バージョンのプログラムと前記第2バージョンのプログラムとの差分に対応する第2バージョンの実行モジュールを作成する実行モジュール作成ステップと、
    前記制御装置で実行中の実行モジュールと、最新バージョンのプログラムと、前記最新バージョンのプログラムがコンパイル済みであるか否かを示すコンパイル情報と、を管理する管理ステップと、
    を含み、
    前記第1バージョンの実行モジュールを実行中の前記制御装置に対して前記第2バージョンの実行モジュールを書き込む場合には、前記第2バージョンのプログラムを前記最新バージョンのプログラムとして管理し、前記第2バージョンのプログラムに固有の情報を用いて前記第2バージョンの実行モジュールを前記制御装置で実行中の実行モジュールとして管理し、前記コンパイル情報をコンパイル済みであることを示す情報に設定し、
    前記第1バージョンの実行モジュールを実行中の前記制御装置に対して前記第2バージョンの実行モジュールを書き込まない場合には、前記第2バージョンのプログラムを前記最新バージョンのプログラムとして管理し、前記第1バージョンの実行モジュールを前記制御装置で実行中の実行モジュールとして管理し、前記コンパイル情報をコンパイル済みでないことを示す情報に設定し、
    前記第2バージョンのプログラムを編集して作成した第3バージョンのプログラムをコンパイルする際に、前記コンパイル情報がコンパイル済みであることを示す場合には、前記第2バージョンのプログラムおよび前記第3バージョンのプログラムを用いたコンパイルによって第3バージョンの実行モジュールを作成し、前記コンパイル情報がコンパイル済みでないことを示す場合には、前記第1バージョンのプログラム、前記第2バージョンのプログラムおよび前記第3バージョンのプログラムを用いたコンパイルによって前記第3バージョンの実行モジュールを作成する、
    ことを特徴とするプログラム管理方法。
  8. 第1バージョンのプログラムを用いたコンパイルが行われることによって作成された第1バージョンの実行モジュールで制御装置が被制御機器を制御している際に、前記第1バージョンのプログラムを編集して第2バージョンのプログラムを作成し、コンパイルによって、前記第1バージョンのプログラムと前記第2バージョンのプログラムとの差分に対応する第2バージョンの実行モジュールを作成する第1の作成ステップと、
    前記第1バージョンの実行モジュールを実行中の前記制御装置に対して前記第2バージョンの実行モジュールを書き込む場合には、前記制御装置で実行中の実行モジュールと、最新バージョンのプログラムと、前記最新バージョンのプログラムがコンパイル済みであるか否かを示すコンパイル情報と、を管理する管理装置に、前記第2バージョンのプログラムおよび前記第2バージョンの実行モジュールに固有の情報を送信し、前記第1バージョンの実行モジュールを実行中の前記制御装置に対して前記第2バージョンの実行モジュールを書き込まない場合には、前記管理装置に前記第2バージョンのプログラムを送信する送信ステップと、
    前記第2バージョンのプログラムを編集して作成した第3バージョンのプログラムをコンパイルする際に、前記コンパイル情報がコンパイル済みであることを示す場合には、前記第2バージョンのプログラムおよび前記第3バージョンのプログラムを用いたコンパイルによって第3バージョンの実行モジュールを作成し、前記コンパイル情報がコンパイル済みでないことを示す場合には、前記第1バージョンのプログラム、前記第2バージョンのプログラムおよび前記第3バージョンのプログラムを用いたコンパイルによって前記第3バージョンの実行モジュールを作成する第2の作成ステップと、
    をコンピュータに実行させる、
    ことを特徴とするプログラミング支援プログラム。
JP2018563933A 2018-05-29 2018-05-29 プログラム管理システム、プログラミング支援装置、プログラム管理方法、およびプログラミング支援プログラム Active JP6541902B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2018/020538 WO2019229845A1 (ja) 2018-05-29 2018-05-29 プログラム管理システム、プログラミング支援装置、プログラム管理方法、およびプログラミング支援プログラム

Publications (2)

Publication Number Publication Date
JP6541902B1 true JP6541902B1 (ja) 2019-07-10
JPWO2019229845A1 JPWO2019229845A1 (ja) 2020-06-25

Family

ID=67212125

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018563933A Active JP6541902B1 (ja) 2018-05-29 2018-05-29 プログラム管理システム、プログラミング支援装置、プログラム管理方法、およびプログラミング支援プログラム

Country Status (4)

Country Link
JP (1) JP6541902B1 (ja)
KR (1) KR102225850B1 (ja)
CN (1) CN112204479B (ja)
WO (1) WO2019229845A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113009873A (zh) * 2021-02-03 2021-06-22 深圳市显控科技股份有限公司 Plc梯形图在线编译和下载的方法、plc及存储介质
JP2022175568A (ja) 2021-05-14 2022-11-25 オムロン株式会社 バージョン管理方法、バージョン管理のプログラム、および、バージョン管理のシステム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000010787A (ja) * 1998-06-24 2000-01-14 Nec Corp プログラムダウンロード装置および方法
JP2013168031A (ja) * 2012-02-15 2013-08-29 Fuji Electric Co Ltd プログラマブルコントローラシステム、その支援装置、プログラム
JP2016001376A (ja) * 2014-06-11 2016-01-07 富士電機株式会社 プログラマブルコントローラシステム、その支援装置
JP6305667B1 (ja) * 2017-05-22 2018-04-04 三菱電機株式会社 制御装置および編集装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4865634B2 (ja) * 2007-05-14 2012-02-01 株式会社キーエンス プログラム編集支援装置、コンピュータプログラム、プログラム編集支援方法及びplcシステム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000010787A (ja) * 1998-06-24 2000-01-14 Nec Corp プログラムダウンロード装置および方法
JP2013168031A (ja) * 2012-02-15 2013-08-29 Fuji Electric Co Ltd プログラマブルコントローラシステム、その支援装置、プログラム
JP2016001376A (ja) * 2014-06-11 2016-01-07 富士電機株式会社 プログラマブルコントローラシステム、その支援装置
JP6305667B1 (ja) * 2017-05-22 2018-04-04 三菱電機株式会社 制御装置および編集装置

Also Published As

Publication number Publication date
CN112204479A (zh) 2021-01-08
WO2019229845A1 (ja) 2019-12-05
CN112204479B (zh) 2021-12-07
KR20200140382A (ko) 2020-12-15
JPWO2019229845A1 (ja) 2020-06-25
KR102225850B1 (ko) 2021-03-11

Similar Documents

Publication Publication Date Title
JP5039428B2 (ja) プログラマブルコントローラ及びplcシステム
EP3336627B1 (en) Support device, method, and recording medium whereon support program is stored
JP2008282362A (ja) プログラム編集支援装置、コンピュータプログラム、プログラム編集支援方法及びplcシステム
US10295985B2 (en) Program processing apparatus and program
WO2015136970A1 (ja) 制御装置及び制御システム
JP6541902B1 (ja) プログラム管理システム、プログラミング支援装置、プログラム管理方法、およびプログラミング支援プログラム
JP6866663B2 (ja) プログラマブルコントローラシステム、プログラマブルコントローラ、支援装置、hci装置、二重化プログラマブルコントローラシステム
JP2009146229A (ja) プログラマブルコントローラシステム
CN111542790B (zh) 用于处理软件项目的方法
JP2009157533A (ja) プログラマブルコントローラシステム
JP2016224557A (ja) プログラム作成支援装置、プログラムおよび判別方法
JP5849592B2 (ja) プログラマブルコントローラシステム、そのプログラミング装置、プログラマブルコントローラ、プログラム、デバッグ方法
JP5051377B2 (ja) プログラム開発支援装置の動作仕様管理方法
KR20170046864A (ko) Plc 명령어 컴파일 최적화 방법
JP2016001376A (ja) プログラマブルコントローラシステム、その支援装置
JP6205934B2 (ja) プログラマブルコントローラシステム、その支援装置、プログラム
JP7067273B2 (ja) サポート装置、制御システム、および開発支援プログラム
JP6455096B2 (ja) コントロールシステム、その支援装置、プログラマブルコントロール装置
JP6119452B2 (ja) プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ、プログラム
JP2016224559A (ja) プログラム作成支援装置、制御方法およびプログラム
JP6794668B2 (ja) プログラミング装置
JP2009098963A (ja) モジュール自動生成システム
JP6295914B2 (ja) プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ
US20240272901A1 (en) Control device and address management method
JP2009157534A (ja) プログラム作成支援システム、そのプログラマブルコントローラ支援装置、プログラマブル表示器支援装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181206

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20181206

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20190130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190401

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190611

R150 Certificate of patent or registration of utility model

Ref document number: 6541902

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250