JP2004280299A - コントローラ、開発装置及びシステム - Google Patents

コントローラ、開発装置及びシステム Download PDF

Info

Publication number
JP2004280299A
JP2004280299A JP2003068839A JP2003068839A JP2004280299A JP 2004280299 A JP2004280299 A JP 2004280299A JP 2003068839 A JP2003068839 A JP 2003068839A JP 2003068839 A JP2003068839 A JP 2003068839A JP 2004280299 A JP2004280299 A JP 2004280299A
Authority
JP
Japan
Prior art keywords
controller
framework
control
program
programming model
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.)
Pending
Application number
JP2003068839A
Other languages
English (en)
Inventor
Masayuki Masuda
真之 益田
Masanori Kadowaki
正規 門脇
Kasuke Nagao
嘉祐 長尾
Masazumi Kitamura
正純 北村
Takashi Inoue
貴史 井上
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
Omron Tateisi Electronics Co
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, Omron Tateisi Electronics Co filed Critical Omron Corp
Priority to JP2003068839A priority Critical patent/JP2004280299A/ja
Publication of JP2004280299A publication Critical patent/JP2004280299A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】多くのリソースを必要としないコントローラであって、プログラミングモデルが固定化されておらず、かつ、複数のプログラミングモデルの混在が可能な柔軟性の高いコントローラを提供する。
【解決手段】アプリケーション層20、フレームワーク層21及び下位層22から構成され、アプリケーション層20は、下位のフレームワーク層21によって生成され実行制御が行われるユーザが開発したプログラムであるオブジェクト(A)及び(B)の集まりであり、フレームワーク層21は、下位層22によって生成され実行制御が行われる各種プログラミングモデルに対応したプログラムであるフレームワークオブジェクト(A)及び(B)の集まりであり、下位層22は、開発装置10との通信に基づいて、各種プログラミングモデルに対応したフレームワークオブジェクト(A)及び(B)を生成し実行制御するレイヤーである。
【選択図】 図4

Description

【0001】
【発明の属する技術分野】
本発明は、機器を制御するコントローラ、そのコントローラで実行される制御プログラムを開発するための開発装置、及び、それらにより構成されるシステムに関する。
【0002】
【従来の技術】
FA(Factory Automation)を実現するために、工場等の製造現場では、PLC(Programmable Logic Controller)に代表される制御装置(以下、コントローラという。)が製造ライン等で使用される。コントローラは、ユーザによって開発された制御プログラムを開発装置からダウンロードして内蔵のメモリ等に保持し、その制御プログラムを実行することによって、接続された各種機器(デバイス)の状態を監視したり制御したりする。
【0003】
このような制御プログラムの開発においては、高い生産性が求められる。特に、製造ラインにおいては、高いタクトを実現する効率的な制御プログラムが短期間で開発されることが求められる。また、製造ラインを構成する機器が新たな別種の機種に交換されたり、製造ラインを変更すべく機器が増設されたりしたときには、制御プログラムの改訂や追加作業等によって、可能な限り短期間で、製造ラインを再構築することが要求される。そのために、従来より、コントローラ用のプログラムの開発における生産性を向上させる各種開発手法が提案されている(たとえば、特許文献1参照)。
【0004】
図26は、上記特許文献1に開示されたシステムの構成を示す図である。このシステムは、コントローラ50とツール55により構成され、コントローラ50にはデバイス56が接続される。デバイス56は制御プログラム51により制御される。制御プログラム51が実行されることによって、デバイス56の通信アドレス、割り付けられたメモリアドレス等とデバイス名を関連付けた関連情報をオブジェクトデータベース53に格納する。デバイス56にアクセスする際には、デバイス名をキーに関連情報を参照し、具体的なアクセス先を認識することによりデータの送受を行う。再利用する際には、制御プログラム51の変更をすることなく、各アドレスを再利用先のものに修正するだけで対応する。
【0005】
つまり、この従来の開発手法では、デバイスごとに、固有のソフトとハードとを一体でオブジェクトとして扱い、複数のデバイスに対応するオブジェクト群を組み合わせることにより、制御システムを構築する。これによって、制御プログラムとデバイスとが一体でオブジェクトとして扱われ、再利用が容易かつ確実に行え、プログラムの開発における生産性が向上されるというものである。
【0006】
【特許文献1】
特開2002−268707号公報(第7頁、第3図等)
【0007】
【発明が解決しようとする課題】
しかしながら、上記従来のシステムでは、コントローラのプログラミングモデルが予め固定されているために、以下のような問題がある。なお、プログラミングモデルとは、コントローラにおいて、ユーザが作成したプログラム(上記従来技術におけるオブジェクト)をどのような条件、タイミング、順番で実行するか、またコントローラの入出力をどのようなタイミングで行うかといった制御のことであり、同じ制御内容でもその制御方式、例えば、プログラムをスキャン実行するとともに入出力をI/O一括リフレッシュするいわゆるPLC方式、SFC(Sequential Function Chart)に従ってプログラムを歩進的に実行するいわゆるSFC方式等に対応するプログラミングモデルがある(このようなコントローラの制御方式は、ユーザから見た場合に、どのようにプログラムを作成する(実行される)かということに関係するため、ユーザプログラミングモデルとも呼ぶ。)。
【0008】
第1に、図27(a)に示されるように、あるプログラミングモデル(コントローラA用のプログラミングモデル)で開発したプログラム(オブジェクトA)をそのまま別のプログラミングモデルのコントローラBで動作させることができない。それは、各コントローラが持つ個別情報(号機番号、ネットワークアドレス、メモリ割付け等)が異なり、同じプログラムのままだとその個別情報の違いによって互換できないからである。従って、プログラム(オブジェクト)の再利用性がないという問題がある。
【0009】
同様に、図27(b)に示されるように、同一のコントローラAを使って異なるプログラミングモデル(例えば、コントローラA用のプログラミングモデルP1とは異なるプログラミングモデルP2)でプログラム(オブジェクトB)を実行させたい場合でも、既に存在するコントローラ(ハードウェア)Aはプログラミングモデルが固定(P1)であるゆえ、このような他のプログラミングモデルのもとに開発されたプログラムの再利用ができない。また、プログラミングモデルごとにコントローラ(ハードウェア)が必要であり、コントローラを再利用することもできないという問題がある。このことは、システムの環境問題がクローズアップされる今日では望ましくない。
【0010】
第2に、複数のプログラミングモデルを予めコントローラに組み込んでおくことで複数のプログラミングモデルに対応したコントローラを実現する方法が考えられるが、このような方法では、予め組み込んでおくプログラミングモデルの種類分だけコントローラのリソースが必要とされるという問題がある。つまり、複数のプログラミングモデルに対応した複数のハードウェアや複数のファームウェア等のリソースを組み込んでおく必要があり、極めて多くのリソースがコントローラ内に必要とされる。
【0011】
第3に、アプリケーションによっては、コントローラのメーカが想定しているユーザプログラミングモデルでは対応できない、あるいは、対応できたとしてもプログラミングが冗長になってしまうというケースが存在する。つまり、プログラミングモデルが固定であるということは、メーカ側がユーザプログラミングモデルを想定してユーザに提供するということなので、ユーザのプログラム開発の生産性を向上させている反面、ユーザにとっては却って制約となり、アプリケーションによっては必要な制御を実現することができないか、あるいは、冗長なプログラミングになってしまうという問題がある。
【0012】
第4に、アプリケーションによっては、複数のプログラミングモデルを1つのコントローラで動作させ、かつ、異なるプログラミングモデル間のプログラムどうしが情報交換をするような制御システムを構築したいという要求があるが、このようなケースに対応できないという問題がある。
【0013】
そこで、本発明は、このような状況に鑑みてなされたものであり、多くのリソースを必要としないコントローラであって、プログラミングモデルが固定化されておらず、かつ、複数のプログラミングモデルの混在が可能な柔軟性の高いコントローラ、開発装置及びシステムを提供することを目的とする。つまり、ユーザにとって、コントローラの種類に依存することなく、所望のプログラミングモデルによるプログラムの開発をすることができるとともに、コントローラに実装させるプログラミングモデルを任意に選択することができ、さらに、1つのコントローラに対して複数のプログラミングモデルに対応したプログラムを混在させて実行させることができる高機能かつ柔軟性の高いコントローラ、開発装置及びシステムを提供することを目的とする。
【0014】
【課題を解決するための手段】
上記目的を達成するために、本発明に係るコントローラは、機器を制御するコントローラであって、制御の流れを管理する第1フレームワーク手段と、前記第1フレームワーク手段による管理の下で前記機器に対する制御処理を実行する第1アプリケーション手段とを備えることを特徴とする。ここで、前記第1フレームワーク手段は、前記第1アプリケーション手段による制御処理の実行に関する条件、タイミング、順番、及び、前記機器との入出力に関するタイミングの少なくとも1つを管理する機能を備え、例えば、前記制御処理の実行をスキャン方式で行うとともに前記機器との入出力を一括I/Oリフレッシュ方式で行うことによって制御の流れを管理する第1の方式、シーケンス・ファンクション・チャートに従って制御の流れを管理する第2の方式、フローチャートに従って制御の流れを管理する第3の方式、状態遷移表に従って制御の流れを管理する第4の方式、イベント・ドリブン方式に従って制御の流れを管理する第5の方式の少なくとも1つの方式で前記制御の流れを管理する。
【0015】
つまり、コントローラにおけるソフトウェアの構成として、各種制御方式(プログラミングモデル)に依存する処理を実行するフレームワーク層と、制御方式に依存しない制御ロジックを記述したアプリケーション層とに分離し、フレームワーク層の上でアプリケーション層を実行させる階層構造となっている。
【0016】
これによって、ユーザが開発するアプリケーションは、プログラミングモデルに依存しない処理ロジックだけを規定するとともに、各種プログラミングモデルの管理下で実行されることとなるので、特定のプログラミングモデルだけに特化した従来のプログラムと異なり、各種コントローラや各種プログラミングモデル用のプログラムとして再利用することが可能となり、開発の生産性が向上される。
【0017】
なお、「制御の流れ」とは、コントローラが機器を制御するときの制御方式の意味を含む。例えば、実施の形態におけるPLC方式、SFC方式、フローチャート方式、状態遷移方式及びイベント・ドリブン方式等の各制御方式に固有する制御の流れである。この「制御の流れ」を管理する第1フレームワーク手段は、例えば、実施の形態におけるフレームワークあるいはフレームワーク層におけるフレームワークオブジェクトに相当する。また、「機器に対する制御処理」とは、「制御の流れ」に依存しない具体的な制御ロジックを意味し、例えば、実施の形態におけるアプリケーションあるいはアプリケーション層におけるオブジェクトに相当する。
【0018】
ここで、前記コントローラには、開発装置が接続され、前記コントローラは、さらに、前記開発装置から情報をダウンロードするダウンロード手段と、前記ダウンロード手段によってダウンロードされた情報に基づいて、前記第1フレームワーク手段と異なる方式で前記制御の流れを管理する第2フレームワーク手段を前記コントローラに追加すること、及び、前記第1フレームワーク手段を、当該第1フレームワーク手段と異なる方式で前記制御の流れを管理する第2フレームワーク手段に置き換えることの少なくとも一方を行う第1更新手段とを備えてもよい。そして、前記第1更新手段は、前記第1アプリケーション手段を前記コントローラに保持させた状態で、前記第2フレームワーク手段の追加及び置き換えの少なくとも一方を行うようにしてもよい。
【0019】
つまり、コントローラは、アプリケーション層を変更することなく、フレームワーク層だけを追加したり入れ替えたりする機能を備える。これによって、ユーザは、メーカから提供されるプログラミングモデルに拘束されることなく、独自のプログラミングモデルを開発し、コントローラに実装させることができる。また、ユーザが開発したアプリケーションをそのままコントローラに残したまま、プログラミングモデルを変更して新たな制御方式による制御をコントローラに実行させることができる。したがって、特に、制御方式の変更を伴う制御システムの設計変更や再構築においては、極めて短い期間で開発を終えることができる。
【0020】
さらに、1つのコントローラに複数の異なるプログラミングモデルを実装させ、アプリケーションごとに異なる制御方式による制御を混在させることも可能となり、高機能かつ複雑な制御システムの構築が可能となる。
【0021】
また、このようなフレームワークだけの追加・変更と同様に、アプリケーションだけの追加・変更も行うことができる。つまり、前記コントローラには、開発装置が接続され、前記コントローラは、さらに、前記開発装置から情報をダウンロードするダウンロード手段と、前記ダウンロード手段によってダウンロードされた情報に基づいて、前記第1アプリケーション手段と異なる制御処理を実行する第2アプリケーション手段を前記コントローラに追加すること、及び、前記第1アプリケーション手段を、当該第1アプリケーション手段と異なる制御処理を実行する第2アプリケーション手段に置き換えることの少なくとも一方を行う第2更新手段とを備えてもよい。そして、前記第2更新手段は、前記第1フレームワーク手段を前記コントローラに保持させた状態で、前記第1アプリケーション手段の追加及び置き換えの少なくとも一方を行うようにしてもよい。
【0022】
これによって、ユーザは、コントローラに保持されたプログラミングモデルを残したまま、そのコントローラに、新たなアプリケーションを追加したりアプリケーションだけを入れ替えたりすることができるので、従来のように制御プログラム全体を更新することなくコントローラの機能変更や機能追加をすることができ、制御システムの設計変更や再構築における労力が軽減される。
【0023】
なお、本発明は、このようなコントローラとして実現することができるだけでなく、このようなコントローラのためのアプリケーションやフレームワークを開発する開発装置として実現したり、それらコントローラと開発装置とからなるシステムとして実現したり、コントローラ及び開発装置を構成する各手段をコンピュータに機能させるプログラムとして実現することもできる。
【0024】
たとえば、本発明は、機器を制御するコントローラで実行される制御プログラムを開発するための開発装置であって、前記制御プログラムには、前記機器に対する制御の流れを規定したプログラミングモデル情報と、前記機器に対する制御処理を規定したプログラムであるオブジェクトとが含まれ、前記コントローラは、前記プログラミングモデル情報によって規定される制御の流れの下で前記オブジェクトを実行する装置であり、前記開発装置は、ユーザからの指示に従って前記プログラミングモデル情報を作成するプログラミングモデル情報作成手段と、ユーザからの指示に従って前記オブジェクトを作成するオブジェクト作成手段と、作成された前記プログラミングモデル情報及び前記オブジェクトの少なくとも一方を前記コントローラにダウンロードするダウンロード手段とを備えることを特徴とする開発装置として実現することもできる。具体的には、図3に示される各種開発フローを支援する開発装置として実現することができる。
【0025】
ここで、前記プログラミングモデル情報は、前記オブジェクトの実行に関する条件、タイミング、順番、及び、前記機器との入出力に関するタイミングの少なくとも1つを規定している、例えば、前記機器に対する制御の実行をスキャン方式で行うとともに前記機器との入出力を一括I/Oリフレッシュ方式で行うことによって制御の流れを管理する第1の方式、シーケンス・ファンクション・チャートに従って制御の流れを管理する第2の方式、フローチャートに従って制御の流れを管理する第3の方式、状態遷移表に従って制御の流れを管理する第4の方式、イベント・ドリブン方式に従って制御の流れを管理する第5の方式の少なくとも1つの方式で前記制御の流れを規定している。
【0026】
そして、前記ダウンロード手段は、前記コントローラにプログラミングモデル情報が予め格納されている場合には、前記プログラミングモデル情報作成手段で作成された新たなプログラミングモデル情報を前記コントローラに追加すること、及び、前記コントローラに予め格納されているプログラミングモデル情報を、前記プログラミングモデル情報作成手段で作成された新たなプログラミングモデル情報で置き換えることの少なくとも一方を行ってもよい。このとき、前記コントローラにオブジェクトが予め格納されている場合には、当該オブジェクトを前記コントローラに保持させた状態で、前記プログラミングモデル情報の追加及び置き換えの少なくとも一方を行えばよい。
【0027】
また、前記ダウンロード手段は、前記コントローラにオブジェクトが予め格納されている場合には、前記オブジェクト作成手段で作成された新たなオブジェクトを前記コントローラに追加すること、及び、前記コントローラに予め格納されているオブジェクトを、前記オブジェクト作成手段で作成された新たなオブジェクトで置き換えることの少なくとも一方を行ってもよい。このとき、前記コントローラにプログラミングモデル情報が予め格納されている場合には、当該プログラミングモデル情報を前記コントローラに保持させた状態で、前記オブジェクトの追加及び置き換えの少なくとも一方を行えばよい。
【0028】
さらに、本発明は、従来では一体となって開発された制御プログラムを制御方式に依存するフレームワーク層と制御方式に依存しないアプリケーション層とに分離して開発し、コントローラにおいて、フレームワーク層の上でアプリケーション層を実行させるというコントローラ用制御プログラムの開発支援手法として実現することもできる。
【0029】
【発明の実施の形態】
以下、本発明の実施の形態について図面を用いて詳細に説明する。
図1は、本発明に係るシステム1の全体構成を示す図である。このシステム1は、開発装置10、コントローラ12、デバイス14a〜14c、開発装置10とコントローラ12とを接続するネットワーク11、及び、コントローラ12とデバイス14a〜14cとを接続するネットワーク13から構成される。
【0030】
デバイス14a〜14cは、製造ライン等を構成する入出力装置である。もう少し言うと、一般に入力装置は、接点動作によりオンオフするスイッチ、無接点の光電スイッチや近接スイッチがある。ほかに圧力センサや変位センサなどの計測器も含まれる。出力装置は、制御対象物に関わる装置であり、温度を制御する温度調節器もそのひとつである。またコントローラによって制御されるロボット、モータなども出力装置に含まれる。 コントローラ12は、デバイス14a〜14cをハンドリングするPLC等の制御装置であり、図2に示される階層構造のように、下位層より、ハードウェア12e、ハードウェア抽象化層12d、ソフトウェア抽象化層12c、フレームワーク12b及びアプリケーション12aから構成される。
【0031】
ハードウェア12eは、コントローラ12を構成するMPU、メモリ、通信チップ等のハードウェアである。ハードウェア抽象化層12dは、ハードウェアを管理・制御するRTOS(RealTime Operating System)等の基本OSである。ソフトウェア抽象化層12cは、各種RTOS等の基本OSの相違を吸収するJVM(Java(登録商標) Virtual Machine)等の仮想プロセッサである。フレームワーク12bは、プログラミングモデルを規定するミドルソフトである。アプリケーション12aは、ユーザが開発するプログラム(オブジェクト)であり、プログラミングモデルに依存しない処理ロジックを規定するように開発される。なお、本実施の形態では、フレームワーク12bとソフトウェア抽象化層12cとを併せて「アプリケーションフレームワーク12f」と呼ぶ。
【0032】
開発装置10は、ユーザがアプリケーション12a及びアプリケーションフレームワーク12fを開発するのに使用する装置であり、ここでは、コンピュータ装置等のハードウェアだけでなく、開発のためのソフトウェアツール等を含めた開発環境である。
【0033】
図3は、開発装置10における各種開発フロー、つまり、各種ケースにおけるユーザによる開発作業の流れを示すフローチャートである。
コントローラ12内にプログラム(アプリケーション12a)及びアプリケーションフレームワーク12fが存在せず、かつ、アプリケーションフレームワーク12fがメーカから予め複数用意されている場合には、図3(a)に示されるように、ユーザは、それら複数のアプリケーションフレームワーク12fの中から所望のものを選択し(S10)、プログラム(アプリケーション12a)を開発した後に(S11)、それらアプリケーションフレームワーク12f及びプログラム(アプリケーション12a)をコントローラ12にダウンロードする(S12)。なお、上記ステップS10とS11とは、どちらが先でもよい。
【0034】
また、コントローラ12内にプログラム(アプリケーション12a)及びアプリケーションフレームワーク12fが存在せず、かつ、アプリケーションフレームワーク12fをユーザが開発する場合には、図3(b)に示されるように、ユーザは、アプリケーションフレームワーク12fとプログラム(アプリケーション12a)とを開発した後に(S15、S16)、それらアプリケーションフレームワーク12f及びプログラム(アプリケーション12a)をコントローラ12にダウンロードする(S17)。なお、上記ステップS15とS16とは、どちらが先でもよい。
【0035】
また、コントローラ12内に既にプログラム(アプリケーション12a)が存在し、かつ、後からアプリケーションフレームワーク12fをコントローラ12にダウンロードする場合には、図3(c)に示されるように、ユーザは、アプリケーションフレームワーク12fを開発又は変更した後に(S20)、そのアプリケーションフレームワーク12fをコントローラ12にダウンロードする(S21)。なお、ここでの「アプリケーションフレームワーク12fの変更」とは、JVM等のソフトウェア抽象化層12cを変更することなく、フレームワーク12bを変更することである。
【0036】
また、コントローラ12内に既にアプリケーションフレームワーク12fが存在し、かつ、後からプログラム(アプリケーション12a)をコントローラ12にダウンロードする場合には、図3(d)に示されるように、ユーザは、プログラム(アプリケーション12a)を開発した後に(S25)、そのプログラム(アプリケーション12a)をコントローラ12にダウンロードする(S26)。
【0037】
なお、図3(a)〜(d)に示された開発フローは一例であり、アプリケーションフレームワーク12fのダウンロードとプログラム(アプリケーション12a)のダウンロードとは、それぞれ、図3(e)及び図3(f)に示されるように、独立に行うことが可能であり、順序を問わない。
【0038】
図4は、コントローラ12の機能ブロック図である。コントローラ12は、機能的に、大きく3つのレイヤー、つまり、アプリケーション層20、フレームワーク層21及び下位層22から構成される。
【0039】
アプリケーション層20は、図2に示されたアプリケーション12aに相当し、下位のフレームワーク層21によって生成され実行制御が行われるプログラムであるオブジェクト(A)及び(B)の集まりである。これらオブジェクト(A)及び(B)は、ユーザが開発するプログラムであり、その種類として、プログラムオブジェクト、タスクオブジェクト及びデバイスオブジェクト等がある。
【0040】
プログラムオブジェクトは、制御ロジック等を記述したオブジェクトであり、Java(登録商標)言語であれば、Java(登録商標)のクラスに相当する。タスクオブジェクトは、マルチタスクシステムにおけるタスクを記述したオブジェクトである。デバイスオブジェクトは、いわゆるドライバに相当し、プログラムオブジェクト内で、物理デバイス(デバイス14a〜14c)にアクセスする場合に、物理デバイスににアクセスするために用いられるオブジェクトである。
【0041】
フレームワーク層21は、図2に示されたフレームワーク12bに相当し、下位層22によって生成され実行制御が行われるプログラムであるフレームワークオブジェクト(A)及び(B)の集まりである。これらフレームワークオブジェクト(A)及び(B)は、それぞれ、特定のプログラミングモデルに対応したオブジェクトであり、図3のフローに示されるように、ユーザによって独自に開発される場合と、メーカ側から予め用意される場合とがある。
【0042】
メーカ側から予め用意されるフレームワークとして、図5(a)に示されるいわゆるPLC方式のフレームワーク、図5(b)に示されるいわゆるSFC方式のフレームワーク、図5(c)に示されるいわゆるフローチャート方式のフレームワーク、図5(d)に示されるいわゆる状態遷移方式のフレームワーク、図5(e)に示されるいわゆるイベントドリブン方式のフレームワーク等がある。
【0043】
ここで、PLC方式のフレームワークは、物理デバイス(デバイス14a〜14c)とのデータ交換を一括I/Oリフレッシュ方式で行い、タスクオブジェクト(プログラムオブジェクト)の実行をスキャン方式で行う制御の流れを規定したフレームワークである。SFC方式、フローチャート方式及び状態遷移方式のフレームワークは、それぞれ、SFC、フローチャート及び状態遷移表に従った制御の流れを規定したフレームワークである。イベントドリブン方式のフレームワークは、物理デバイス(デバイス14a〜14c)からの入力値で定義される条件が成立したときに対応するプログラムオブジェクトを起動させる旨を記述したイベント表に従った制御の流れを規定したフレームワークである。
【0044】
下位層22は、開発装置10との通信に基づいて、各種プログラミングモデルに対応したフレームワークオブジェクト(A)及び(B)を生成し実行制御するレイヤーであり、通信制御部22a、記憶部22b及びフレームワーク制御部22cから構成される。
【0045】
通信制御部22aは、開発装置10からダウンロードされてくる各種情報を記憶部22bに格納したり、その情報に従ってフレームワーク制御部22cを制御する通信インターフェース等である。
【0046】
フレームワーク制御部22cは、通信制御部22aからの指示及び記憶部22bにダウンロードされた各種情報に基づいて、フレームワークオブジェクト(A)及び(B)を生成し実行制御する処理部である。
【0047】
記憶部22bは、開発装置10からダウンロードされてくる各種情報(システムコンフィグレーション情報30、フレームワーク情報31及び32、オブジェクトコンフィグレーション情報33a及び33b、オブジェクト情報34a及び34b等)を記憶するためのメモリ等であり、コントローラ12の電源がOFFの場合でも記憶内容を保持する不揮発性メモリ等からなる。
【0048】
システムコンフィグレーション情報30は、コントローラ12に登録しておくフレームワークに関する情報であり、具体的には、(i)フレームワークの数、(ii)フレームワークオブジェクトファイル31aのファイル名等が含まれる。
【0049】
フレームワーク情報31及び32は、フレームワークの実体に相当する情報であり、フレームワークオブジェクトファイル31a及びフレームワークコンフィグレーション情報31bからなる。フレームワークオブジェクトファイル31aは、フレームワークの処理が記述されたオブジェクトファイルであり、例えば、Java(登録商標)言語であれば、フレームワークの処理を実装したclassファイルに相当する。フレームワークコンフィグレーション情報31bは、フレームワークを実行する上での各種条件等を記述した情報であり、例えば、フレームワークを実行するスレッド、タスクの優先順位等の情報が含まれる。
【0050】
オブジェクトコンフィグレーション情報33a及び33bは、フレームワークとオブジェクトの関係を記述した情報であり、例えば、フレームワークで実行するオブジェクトの数、オブジェクトファイル名等の情報が含まれる。なお、このオブジェクトコンフィグレーション情報33a及び33bは、フレームワークに依存する情報であり、フレームワークの種類により、情報の内容は異なる。
【0051】
オブジェクト情報34a及び34bは、アプリケーション層20で実行させるオブジェクト(A)及び(B)に関する情報であり、(i)オブジェクトファイルと、(ii)オブジェクト設定ファイルとから構成される。オブジェクトファイルは、オブジェクトの処理が記述されたプログラムであり、例えば、Java(登録商標)言語であれば、オブジェクトの処理を実装したclassファイルに相当する。オブジェクト設定ファイルは、対応するオブジェクトに関する属性が記述されたファイルであり、例えば、対象のオブジェクトがデバイスオブジェクトである場合には、そのインスタンス名及び通信アドレス等が記述され、タスクオブジェクトである場合には、そのインスタンス名、タスクに登録されているプログラムオブジェクトの名前及びタスクオブジェクトの優先度等が記述され、プログラムオブジェクトである場合には、そのインスタンス名等が記述される。
【0052】
図6は、以上のように構成されたシステム1におけるコントローラ12の動作手順を示すフローチャートである。なお、このフローチャートの各ステップに付された符号は、図4における対応する矢印にも付されている。
【0053】
まず、通信制御部22aは、開発装置10からダウンロードされてきた各種情報30〜34bを記憶部22bに格納する(S40)。
次に、開発装置10から開始指示を受信した時、あるいは、コントローラ12の電源がONとなった時に、フレームワーク制御部22cは、記憶部22bに格納されたシステムコンフィグレーション情報30を参照することで(S41)、ロードすべきフレームワーク、つまり、起動すべきフレームワークを決定した後に、決定したフレームワークに対応するフレームワーク情報31及び32をロードする、つまり、記憶部22bから読み出す(S42)。そして、フレームワーク制御部22cは、読み出したフレームワーク情報31及び32をもとに、フレームワークオブジェクト(A)及び(B)を生成する(S43)。
【0054】
生成されたフレームワークオブジェクト(A)及び(B)は、それぞれ、フレームワーク依存の情報であるオブジェクトコンフィグレーション情報33a及び33bを参照することで(S44)、オブジェクトの数や起動すべきオブジェクトファイル名等を決定し、決定したオブジェクトファイル名に対応するオブジェクト情報34a及び34bをロードする、つまり、記憶部22bから読み出す(S45)。そして、フレームワークオブジェクト(A)及び(B)は、読み出したオブジェクト情報34a及び34bをもとに、オブジェクト(A)及び(B)を生成する(S46)。
【0055】
続いて、開発装置10からフレームワークを実行する旨の開始指示が発せられると、その開始指示は、通信制御部22aを介してフレームワーク制御部22cに伝えられる。そして、その開始指示を受けたフレームワーク制御部22cは、フレームワークオブジェクト(A)及び(B)に対して処理の実行を指示する。その指示を受けたフレームワークオブジェクト(A)及び(B)は、フレームワークの処理を実行する(S47)。
【0056】
以降、フレームワークオブジェクト(A)及び(B)は、開発装置10からフレームワークオブジェクト(A)及び(B)宛に送られてきた命令(つまり、通信制御部22a及びフレームワーク制御部22cを介して送られてくる命令)に従った処理を行う。例えば、フレームワーク12b上のアプリケーション12a、つまり、オブジェクト(A)及び(B)の起動や停止等を行う。
【0057】
以上のように、本実施の形態のシステム1におけるコントローラ12によれば、FA等を実現する制御プログラムは、ユーザプログラミングモデルに依存する制御フローを記述したアプリケーションフレームワーク12fと、ユーザプログラミングモデルに依存しない制御ロジックを記述したアプリケーション12aとに階層的に分離されている。したがって、各アプリケーション12aを、様々な種類のユーザプログラミングモデルに対応するアプリケーションフレームワーク12fの上で実行させることができる。よって、ユーザが開発したアプリケーション12aは、ユーザプログラミングモデルの種類に依存することなく独立した処理モジュールとして利用することが可能であり、ユーザプログラミングモデルを変更した場合においても、再利用することができる。
【0058】
次に、以上の実施の形態に係るシステム1の具体的な実現例を示す実施例について説明する。
(実施例1)
まず、アプリケーション12aについてはユーザが開発し、アプリケーションフレームワーク12fについてはメーカが用意した複数のアプリケーションフレームワークから選択することによって制御プログラムを構築し、構築した制御プログラムをコントローラ12に実行させる実施例1について説明する。この実施例1は、図3(a)のフローチャートに示されるケースの具体例に相当する。なお、本実施例1におけるシステム1の全体構成は、図1に示されたものと同一である。
【0059】
図7は、実施例1におけるユーザによる作業手順を中心したフローチャートである。
ユーザは、まず、開発装置10において、以下に示す初期開発の作業を行う(S50)。つまり、ユーザは制御システムの構成を定義する(S50a)。例えば、コントローラ12に接続される物理デバイスを決定し、その旨を開発装置10に指示する。本実施例では、図8に示されるように、コントローラ12にネットワーク(DeviceNet)13を介してデバイスA14d、デバイスB14e、デバイスC14fが接続されているとする。
【0060】
次に、ユーザは、デバイスオブジェクトを定義する(図7のS50b)。具体的には、コントローラ12に接続される物理デバイス(デバイスA〜C)をアクセスするデバイスオブジェクトを選択、あるいは、開発する。本実施例では、図9の画面表示例に示されるように、開発装置10との対話によって、デバイスA14d、デバイスB14e、デバイスC14fに対する(予め、メーカで用意された)デバイスオブジェクトを選択し、そのデバイスオブジェクトに名前をつけている。ここでは、デバイスA14dに対して”RobotA”、デバイスB14eに対し”RobotB”、デバイスC14fに対し”RobotC”という名前を付けている。
【0061】
このようなデバイスオブジェクトの定義によって、開発装置10により、以下のオブジェクトファイル(デバイスオブジェクトファイル)及びオブジェクト設定ファイル(デバイスオブジェクト設定ファイル)からなるオブジェクト情報34a及び34bが生成される。つまり、オブジェクトファイルは、ここでは、デバイスの処理を実装したJava(登録商標)のclassファイルであり、DeviceA.class、DeviceB.class、DeviceC.classというファイルである。また、オブジェクト設定ファイルは、図10に示されるように、ここでは、デバイス名及びネットワークアドレスをデバイス毎に格納したXML等のテキストファイルである。
【0062】
次に、ユーザは、フレームワークを選択する(図7のS50c)。つまり、メーカが予め用意している複数のフレームワークの中からユーザが使用するフレームワークを選択する。選択された情報は、システムコンフィグレーション情報30及びフレームワーク情報31及び32として格納され、コントローラ12へのダウンロードの対象となる。
【0063】
例えば、図11の画面表示例に示されるように、ユーザがPLC方式のフレームワークを1つだけ選択した場合には、システムコンフィグレーション情報30には、図12に示されるように、システムでフレームワークが1つあり、そのフレームワークを実装したフレームワークオブジェクトファイル31aがPlc.classである旨の情報が格納される。そして、開発装置10により、以下のフレームワークオブジェクトファイル31a及びフレームワークコンフィグレーション情報31bからなるフレームワーク情報31が生成される。つまり、フレームワークオブジェクトファイル31aは、PLCのフレームワーク処理を実装したJava(登録商標)のclassファイルであり、ここでは、Plc.classというファイルである。また、フレームワークコンフィグレーション情報31bは、例えば、図13に示されるように、PLCのフレームワークを実装するJava(登録商標)スレッドの優先度が4であることを示す情報が格納されたファイルである。
【0064】
続いて、ユーザは、プログラムオブジェクトを定義する(50d)。言語がJava(登録商標)であれば、Java(登録商標)ファイルを編集することになり、C++言語であれば、*.hファイル、cppファイルを編集することになる。編集後に、各ファイルは、Buildされて実行形式となる(Java(登録商標)の場合は、clssファイル、C++の場合は、.oファイルとなる)。なお、上記手順で選択したフレームワークにより、実装すべきメソッド(関数)が決まる。
【0065】
ここでは、例えば、図14の画面表示例(ダイアログ)に示されるように、プログラムオブジェクト名として”UserProgram1”を、インスタンス名として”State1”を入力する。このような設定により、図15に示されるようなオブジェクトファイルが生成される。なお、プログラムオブジェクトの制御ロジックを記述するには、executeメソッドを編集すればよい。また、併せて、図16に示されるようなインスタンス名等に関する情報がプログラムオブジェクト毎に格納されたXML等のテキストファイルが、オブジェクト設定ファイルとして生成される。
【0066】
次に、ユーザは、タスクオブジェクトを定義する(図7のS50e)。言語がJava(登録商標)であれば、Java(登録商標)ファイルを編集することになり、C++言語であれば、*.hファイル、cppファイルを編集することになる。例えば、タスクオブジェクトに関する情報として、(i)タスクに割り付けられているプログラムオブジェクト情報(プログラムオブジェクト名とその個数)や、(ii)タスク優先順位等を設定する。設定された情報は、オブジェクト情報34a及び34bの一部として記憶装置等に格納される。
【0067】
例えば、ユーザは、図17の画面表示例に示されるように、ダイアログに対して必要な情報を入力することによって、タスクオブジェクトを定義する。なお、1つのタスクオブジェクトに対して複数のプログラムオブジェクトを登録することが可能である。このようなダイアログの設定によって、オブジェクトファイル(タスクオブジェクトファイル)として、Java(登録商標)の場合であれば、classファイル、あるいは、Java(登録商標)ファイルが生成される。さらに、オブジェクト設定ファイル(タスクオブジェクト設定ファイル)として、(i)インスタンス名、(ii)タスクオブジェクトに登録されているプログラムオブジェクト名、(iii)タスク優先度、及び、(iv)タスクの種類等の情報が格納されたXML等のファイルも生成される。
【0068】
続いて、ユーザは、フレームワークとオブジェクトの関係を定義する(図7のS50f)。なお、この関係は、フレームワークに依存する情報である。本実施例では、PLC方式のフレームワークが選択されているので、ユーザは、2種類の情報の設定、つまり、(i)プログラムの実行に関する設定と、(ii)物理デバイスの入出力に関する設定とを行う。
【0069】
まず、(i)プログラムの実行に関する設定として、ユーザは、タスクオブジェクト名及びタスクオブジェクトの数、ここでは、タスクオブジェクト名として”UserTask1”、タスクオブジェクトの数として1を設定する。設定された結果は、オブジェクトコンフィグレーション情報33a等としてXMLファイル等で記憶装置に格納される。
【0070】
また、(ii)物理デバイスの入出力に関する設定として、図18(a)の画面表示例に示されるように、INリフレッシュ(フレームワークの機能)でリードするデバイスの設定を行うとともに、図18(b)の画面表示例に示されるように、OUTリフレッシュ(フレームワークの機能)でライトするデバイスの設定を行う。なお、図18(a)に示される画面表示例では、INリフレッシュの対象になるデバイスとして、デバイスA14d(名前:RobotA)、デバイスB14e(名前:RobotB)とすることを、開発装置10で設定している例が示され、図18(b)に示される画面表示例では、OUTリフレッシュの対象になるデバイスとして、デバイスC14f(名前:RobotC)とすることを、開発装置10で設定している例が示されている。
【0071】
なお、物理デバイスの入出力に関する設定を行わない場合、つまり、ポーリング方式のように都度リフレッシュをする場合には、プログラムオブジェクトのexecuteメソッドの中でデバイスにアクセスする旨の処理、つまり、デバイスオブジェクトのメソッドを呼び出す処理をユーザが記述する。
【0072】
以上の定義を終えると、ユーザは、コントローラ12にフレームワークとオブジェクトをダウンロードする(図7のS50g)。つまり、ユーザの指示に基づいて、開発装置10は、システムコンフィグレーション情報30、フレームワーク情報31等(フレームワークオブジェクトファイル31a及びフレームワークコンフィグレーション情報31b)、オブジェクトコンフィグレーション情報33a等、オブジェクト情報34a等をコントローラ12にダウンロードする。そして、コントローラ12内の通信制御部22aは、開発装置10からダウンロードされてきた情報を記憶部22bに格納する。
【0073】
このような初期開発を終えると、次に、ユーザは、フレームワークを実行する(図7のS51)。具体的には、ユーザは、コントローラ12の電源をON、あるいは、開発装置10を介してコントローラ12に指示する。これによって、コントローラ12は、以下の手順によって、フレームワークを起動させる。
【0074】
まず、フレームワーク制御部22cは、システムコンフィグレーション情報30を参照し、ロードすべきフレームワークを決定する。本実施例では、ロードすべきフレームワークは、Plc.classなので、これをロードしてフレームワークオブジェクトを生成する。そして、ロードされたフレームワークオブジェクトは、フレームワーク依存の情報であるオブジェクトコンフィグレーション情報33a等を参照する。ここでは、フレームワークで実行すべきタスクオブジェクトが1個でUserTask1.classをロードすべきことを認識する。そして、UserTask1.classをロードし、タスクオブジェクトを生成する。タスクオブジェクトを生成する際、タスクオブジェクト設定ファイルを参照し、タスクオブジェクトに登録されているプログラムオブジェクト(ここでは、UserProgram1.class)が何であるかを獲得し、プログラムオブジェクトを生成する。
【0075】
次いで、フレームワークオブジェクトは、デバイスオブジェクトを生成する。ここでは、DeviceA.class、DeviceB.class、DeviceC.classをロードする。また、フレームワークオブジェクトは、フレームワーク依存の情報であるオブジェクトコンフィグレーション情報33a等を参照し、INリフレッシュ、OUTリフレッシュすべきデバイスオブジェクトが何であるかを認識する。
【0076】
最後に、ユーザは、プログラムの実行を指示する(図7のS52)。具体的には、ユーザは、開発装置10を介してコントローラ12内のプログラムの実行を指示する。その結果、ここでは、図19に示されるように、PLC方式、つまり、一括I/Oリフレッシュ方式による制御が実行される。
【0077】
つまり、INリフレッシュにおいては(S60)、フレームワークは、INリフレッシュで実行すべきデバイスオブジェクトのメソッドを呼び出することでINリフレッシュを行う。ここでは、デバイスオブジェクトRobotA(DeviceA)とRobotB(DeviceB)のReadメソッドをフレームワークが呼び出す。
【0078】
また、命令実行においては(S61)、フレームワークは、ユーザが定義した(常時実行)タスクオブジェクトを起床する(つまり、実行を開始する)。ここでは、フレームワークがUserTask1(タスクオブジェクト)を起床する。起床したUserTask1(タスクオブジェクト)は、タスクオブジェクトに登録されているプログラムオブジェクト(ここでは、UserProgram1)を実行する。そして、プログラムオブジェクトのexecuteメソッドが呼び出され、ユーザが記述した制御ロジックが実行される。
【0079】
さらに、OUTリフレッシュにおいては(S62)、フレームワークは、OUTリフレッシュで実行すべきデバイスオブジェクトのメソッドを呼び出すことでOUTリフレッシュを行う。ここでは、デバイスオブジェクトRobotC(DeviceC)のWriteメソッドをフレームワークが呼び出す。
【0080】
最後に、フレームワークはリセット処理等の各種周辺処理を実行することで1サイクル分の処理を終えると(S63)、再び、同様の処理を繰り返す(S60〜S63)。
【0081】
以上のように、本実施例1によれば、ユーザは、ユーザプログラミングモデルに依存しない制御ロジックをプログラムオブジェクトとして記述し、一方、ユーザプログラミングモデルに依存する制御方式については、予め用意された複数のフレームワークの中から選択するとともに、それらの関係を定義することにより、目的とする制御プログラムを構築することができた。したがって、ユーザは、ユーザプログラミングモデルの種類を意識することなく、プログラムオブジェクトを開発することができるとともに、開発したプログラムオブジェクトを各種プログラミングモデルの下で実行させることができ、高い開発効率を実現することができる。
【0082】
(実施例2)
次に、実施例1における手順等で作成された、コントローラ12に格納されているプログラムオブジェクト、デバイスオブジェクト、タスクオブジェクトを変更することなく、フレームワークだけを変更する実施例2について説明する。この実施例2は、図3(c)のフローチャートに示されるケースのうち、アプリケーションフレームワークの変更を行う具体例に相当する。
【0083】
図20は、実施例2におけるユーザによる作業手順を中心したフローチャートである。
まず、ユーザは、開発装置10において、以下に示すフレームワークの変更作業を行う(S70)。つまり、変更後のフレームワークを選択する(S70a)。具体的には、メーカが予め用意してある複数のフレームワークの中からユーザが使用するフレームワークを選択する。選択した情報は、システムコンフィグレーション情報30、フレームワーク情報31等としてコントローラ12へのダウンロードの対象となる。
【0084】
例えば、図21の画面表示例に示されるように、ユーザは、開発装置10において、プログラムの実行方式として状態遷移方式を選択する。このような選択により、開発装置10により、フレームワークオブジェクトファイル31aとして、状態遷移処理を実装したJava(登録商標)のclassファイル、ここでは、State.classが生成される。
【0085】
次に、ユーザは、フレームワークとオブジェクトの関係を定義する(図20のS70b)。なお、この関係は、フレームワークに依存する情報である。本実施例では、ユーザは、プログラムの実行に関する設定を行う。具体的には、(i)状態遷移条件、(ii)状態遷移条件を満たした場合に遷移する遷移先の状態名とそのときに実行されるオブジェクト名(タスクオブジェクト、プログラムオブジェクト、デバイスオブジェクト)等を開発装置10で設定する。設定された結果は、オブジェクトコンフィグレーション情報33a等としてXMLファイル等で記憶装置に格納される。
【0086】
例えば、図22の画面表示例に示されるように、ユーザは、デバイスオブジェクトAの変数Xが1になったとき、状態がBに遷移し、そのとき実行されるオブジェクトがUserTask1である旨を設定する。なお、本実施例では、UserTask1が実行さされると、そのタスクオブジェクトが持つプログラムオブジェクト(UserProgram1)が実行される。
【0087】
次に、ユーザは、コントローラ12にフレームワークをダウンロードする(図20のS70c)。つまり、ユーザからの指示に従って、開発装置10は、(i)システムコンフィグレーション情報30、(ii)フレームワーク情報31等(フレームワークオブジェクトファイル31a及びフレームワークコンフィグレーション情報31b)、(iii)オブジェクトコンフィグレーション情報33a等の情報をコントローラ12にダウンロードする。なお、デバイスオブジェクト、プログラムオブジェクト、タスクオブジェクトは、実施例1で使用したものを使う場合には、既にコントローラ12にダウンロードされているため、再度ダウンロードする必要はない。
【0088】
以上の変更作業を終えると、ユーザは、フレームワークを実行する(図20のS71)。具体的には、ユーザは、コントローラ12の電源をON、あるいは、開発装置10を介してコントローラ12に指示する。これによって、コントローラ12は、以下の手順によって、フレームワークを起動させる。
【0089】
まず、フレームワーク制御部22cは、システムコンフィグレーション情報30を参照し、ロードすべきフレームワークを決定する。ここでは、ロードすべきフレームワークは、State.classなので、これをロードしてフレームワークオブジェクトを生成する。そして、ロードされたフレームワークオブジェクトは、フレームワーク依存の情報であるオブジェクトコンフィグレーション情報33a等を参照する。ここで、フレームワークで実行すべきタスクオブジェクトが1個でUserTask1.classをロードすべきことを認識する。そして、UserTask1.classをロードし、タスクオブジェクトを生成する。タスクオブジェクトを生成する際、タスクオブジェクト設定ファイルを参照し、タスクオブジェクトに登録されているプログラムオブジェクト(この場合UserProgram1.class)が何であるかを獲得し、プログラムオブジェクトを生成する。
【0090】
次いで、フレームワークオブジェクトは、デバイスオブジェクトを生成する。ここでは、DeviceA.class、DeviceB.class、DeviceC.classをロードする。また、フレームワークオブジェクトは、フレームワーク依存の情報であるオブジェクトコンフィグレーション情報33a等を参照して、状態遷移表を認識する。つまり、どのような状態遷移条件が発生したら、どの状態に遷移し、どのようなオブジェクトを実行するかを認識する。
【0091】
最後に、ユーザは、プログラムを実行する(図20のS72)。つまり、ユーザは、開発装置10を介してコントローラ12内のプログラムの実行を指示する。その結果、ここでは、図23に示されるように、状態遷移方式による制御が実行される。具体的には、フレームワークは、システムの状態を管理するとともに、状態遷移条件を判定する(S80)。もし、状態遷移条件を満たしている場合は(S80でYes)、フレームワークは、オブジェクトコンフィグレーション情報33a等を参照し、実行すべきオブジェクト(プログラムオブジェクト、タスクオブジェクト、デバイスオブジェクト)を実行する(S81)。そして、オブジェクトを実行した後、システムの状態をオブジェクトコンフィグレーション情報33a等に格納されている状態とする。つまり、フレームワーク内の変数に新たな状態を格納する。
【0092】
以上のように、実施例2によれば、ユーザは、制御ロジックを記述したプログラムオブジェクトをコントローラ12に置いたまま、ユーザプログラミングモデルをPLC方式から状態遷移方式に切り替えることができた。これによって、採用するユーザプログラミングモデルの種類に拘わらずに、プログラムオブジェクトの再利用が可能となり、制御方式を変更した場合に生じるプログラム開発の作業量が削減される。
【0093】
なお、本実施例2では、PLC方式から状態遷移方式に切り替える例が示されたが、本システム1では、図5に示された全ての方式を対象として切り替えることができるのは言うまでもない。つまり、図5(a)に示されたPLC方式であれば、INリフレッシュ→命令実行→OUTリフレッシュ→周辺処理という制御の流れをフレームワークで規定し、個々のステップにおける具体的な対象デバイスや具体的な処理ロジックをプログラムオブジェクトで規定すればよい。同様に、図5(b)に示されたSFCC方式であれば、TransitionとStepとから構成される制御フロー及びTransition Condition等をフレームワークで規定し、各Stepにおける具体的な処理ロジックをプログラムオブジェクトで規定すればよい。また、図5(c)に示されたフローチャート方式であれば、条件判断と処理ステップとから構成される制御フロー及び条件判断の内容等をフレームワークで規定し、各処理ステップにおける具体的な処理内容をプログラムオブジェクトで規定すればよい。また、図5(d)に示された状態遷移方式であれば、遷移前の状態と遷移条件と遷移後の状態とをフレームワークで規定し、遷移後の処理ロジックをプログラムオブジェクトで規定すればよい。さらに、図5(e)に示されたイベント・ドリブン方式であれば、イベントの内容と処理との対応付けをフレームワークで規定し、具体的な処理内容をプログラムオブジェクトで規定すればよい。
【0094】
(実施例3)
次に、実施例1における手順等で作成された、コントローラ12に格納されているプログラムオブジェクト、デバイスオブジェクト、タスクオブジェクトをそのまま利用し、フレームワークだけを独自に開発する実施例3について説明する。この実施例3は、図3(c)のフローチャートに示されるケースのうち、アプリケーションフレームワークの開発を行う具体例に相当する。
【0095】
図24は、実施例3におけるユーザによる作業手順を中心したフローチャートである。
まず、ユーザは、フレームワークを作成するために(S90)、開発装置10において、フレームワーク情報を開発する(S90a)。具体的には、フレームワークの処理を記述したフレームワークオブジェクトファイル31a、例えば、Sample.classというファイルと、フレームワークコンフィグレーション情報とを作成する。
【0096】
次に、ユーザは、システムコンフィグレーション情報を開発する(S90b)。例えば、図25に示されるように、フレームワークはSampleの1つだけを示す旨のシステムコンフィグレーション情報30を作成する。
【0097】
続いて、ユーザは、オブジェクトコンフィグレーション情報33a等を開発する(S90c)。このオブジェクトコンフィグレーション情報33a等は、フレームワークとオブジェクトの関係の定義であり、フレームワーク依存の情報である。
【0098】
そして、ユーザは、開発したフレームワークをコントローラ12にダウンロードした後に(S91)、開発装置10からの指示、あるいは、コントローラ12の電源ON等により、コントローラ12を始動させる(S92)。
【0099】
これによって、まず、コントローラ12内のフレームワーク制御部22cは、システムコンフィグレーション情報30を参照し、ロードすべきフレームワークを決定する(図4のS41)。ここでは、Sampleである。
【0100】
そして、フレームワーク制御部22cは、フレームワーク情報31等をロードする(図4のS42)。そして、フレームワーク制御部22cは、ロードしたフレームワーク情報31等をもとにフレームワークオブジェクトを生成する(図4のS4)。
【0101】
生成されたフレームワークオブジェクトは、フレームワーク依存の情報であるオブジェクトコンフィグレーション情報33a等を参照し(図4のS44)、コンフィグレーション情報、及び、ロードすべきオブジェクトファイル名を獲得し、ロードする(図4のS45)。そして、フレームワーク制御部22cは、ロードしたオブジェクトを生成する(図4のS46)。
【0102】
そして、開発装置10からフレームワーク実行の指示をうけた通信制御部22aは、その旨をフレームワーク制御部22cに伝え、フレームワーク制御部22cは、フレームワークオブジェクトにフレームワークの処理の実行を指示する。指示されたフレームワークオブジェクトはフレームワークの処理を実行する。
【0103】
以降、フレームワークオブジェクトは、開発装置10からフレームワークオブジェクト宛て送られてきた命令(通信制御部22a→フレームワーク制御部22c)に応じた処理を行う。例えば、フレームワーク上のアプリケーション12aの実行、停止等である。
【0104】
以上のように、実施例3によれば、ユーザは、制御ロジックを記述したプログラムオブジェクトをコントローラ12に置いたまま、ユーザプログラミングモデルを独自に開発し、コントローラ12にダウンロードすることによって、ユーザ独自のユーザプログラミングモデルの下でプログラムオブジェクトを実行させることができた。これによって、ユーザは、それまで開発した資産(プログラムオブジェクト)を無駄にすることなく、制御対象機器に合致した独自の制御方式を採用したユーザプログラミングモデルを独自開発して採用することができ、メーカから提供される定型的なユーザプログラミングモデルを採用した場合に生じるハードウェア及びソフトウェアの無駄を排除することができる。
【0105】
以上、本発明に係るシステムについて、実施の形態及び実施例に基づいて説明したが、本発明は、これらの実施の形態及び実施例に限定されるものではない。例えば、図1に示されたシステム1において、開発装置10とコントローラ12とを接続するネットワーク11と、コントローラ12とネットワーク13とを接続するネットワーク13とは異なる符号が付されていたが、これらネットワーク11及び13は、物理的に同一の伝送路であってもよいし、異なる伝送路であってもよい。また、コントローラ12と開発装置10とが1台のコンピュータ装置に収められて一体化されていてもよい。
【0106】
また、図4に示される階層構造において、フレームワークオブジェクト(A)とフレームワークオブジェクト(B)とは同一の制御方式に係るフレームワークであってもよいし、異なる制御方式に係るフレームワークであってもよい。さらに、オブジェクト(A)とオブジェクト(B)は、相互に情報交換のための通信を行ってもよいし、行わなくてもよい。フレームワークの種類や数、あるいは、プログラムオブジェクト間での通信を行うか否かは、対象とする制御システムに応じて適宜選択すればよい。
【0107】
【発明の効果】
以上の説明から明らかなように、本発明に係るシステムでは、一度作成したプログラム(オブジェクト)は、プログラミングモデルが変更されても再利用することが可能である。従って、制御プログラムの生産性が向上する。
【0108】
そして、ユーザは、コントローラのプログラミングモデルを変更することが可能であるため、コントローラの種類に拘わらず、制御対象機器に合致した最適なプログラミングモデルを選択して採用することができ、コントローラを有効利用することができる。
【0109】
さらに、ユーザは、フレームワークを独自に開発することができるので、様々なアプリケーションに対応したシステムを構築することができる、あるいは、ユーザが持っているノウハウを実装することができる。
【0110】
また、ユーザが作成したプログラム(オブジェクト)は、様々な種類のプログラミングモデルに対応するフレームワークと組み合わせて実行させることができるので、複数のプログラミングモデルに対応する複数の制御プログラムを予めコントローラ内に格納しておく方式に比べ、コントローラに実装しておくメモリ等のリソースが少なくて済む。
【0111】
また、本発明に係るシステムでは、コントローラが備えるプログラミングモデルの変更は、ユニットを変更する等のハードウェアの変更ではなく、ソフトウェアでの変更で済み、しかも、ネットワークを介して行うため、変更作業が極めて容易である。さらに、一旦、コントローラにダウンロードされたプログラムについては、コントローラ内にそのまま保持させた状態で、プログラミングモデルだけを変更することができるので、プログラミングモデルの変更に手間がかからない。
【0112】
以上のように、本発明により、制御システムの開発における生産性が飛躍的に向上され、特に、制御システムの機能変更や制御方式の変更を伴う再構築作業における労力が大幅に軽減され、その実用的価値は極めて高い。
【図面の簡単な説明】
【図1】本発明に係るシステム1の全体構成を示す図である。
【図2】コントローラを構成するソフトウェアとハードウェアの階層構造を示す図である。
【図3】各種ケースにおけるユーザによる開発作業の流れを示すフローチャートである。
【図4】コントローラの機能ブロック図である。
【図5】各種フレームワークの制御方式を示す図である。
【図6】コントローラの動作手順を示すフローチャートである。
【図7】実施例1におけるユーザによる作業手順を中心したフローチャートである。
【図8】実施例1における制御システムの構成を示す図である。
【図9】デバイスオブジェクトを定義するときの画面表示例である。
【図10】オブジェクト設定ファイルの記述例を示す図である。
【図11】フレームワークの種類を選択するときの画面表示例である。
【図12】システムコンフィグレーション情報の例を示す図である。
【図13】フレームワークコンフィグレーション情報の例を示す図である。
【図14】プログラムオブジェクトを設定するときの画面表示例である。
【図15】オブジェクトファイルの記述例を示す図である。
【図16】オブジェクト設定ファイルの記述例を示す図である。
【図17】タスクオブジェクトを定義するときの画面表示例である。
【図18】デバイスの設定を行うときの画面表示例である。
【図19】コントローラによるプログラムの実行制御の流れを示す図である。
【図20】実施例2におけるユーザによる作業手順を中心したフローチャートである。
【図21】フレームワークの種類を選択するときの画面表示例である。
【図22】フレームワークとオブジェクトとの関係を定義するときの画面表示例を示す。
【図23】コントローラによるプログラムの実行制御の流れを示す図である。
【図24】実施例3におけるユーザによる作業手順を中心したフローチャートである。
【図25】システムコンフィグレーション情報の例を示す図である。
【図26】従来のシステムの構成を示す図である。
【図27】従来のシステムにおけるプログラム開発の問題点を示す図である。
【符号の説明】
1 システム
10 開発装置
11 ネットワーク
12 コントローラ
12a アプリケーション
12b フレームワーク
12c ソフトウェア抽象化層
12d ハードウェア抽象化層
12e ハードウェア
12f アプリケーションフレームワーク
13 ネットワーク
14a〜14c デバイス
14d デバイスA
14e デバイスB
14f デバイスC
20 アプリケーション層
21 フレームワーク層
22 下位層
22a 通信制御部
22b 記憶部
22c フレームワーク制御部
30 システムコンフィグレーション情報
31、32 フレームワーク情報
31a フレームワークオブジェクトファイル
31b フレームワークコンフィグレーション情報
33a、33b オブジェクトコンフィグレーション情報
34a、34b オブジェクト情報

Claims (12)

  1. 機器を制御するコントローラであって、
    制御の流れを管理する第1フレームワーク手段と、
    前記第1フレームワーク手段による管理の下で前記機器に対する制御処理を実行する第1アプリケーション手段と
    を備えることを特徴とするコントローラ。
  2. 前記第1フレームワーク手段は、前記第1アプリケーション手段による制御処理の実行に関する条件、タイミング、順番、及び、前記機器との入出力に関するタイミングの少なくとも1つを管理する
    ことを特徴とする請求項1記載のコントローラ。
  3. 前記第1フレームワーク手段は、前記制御処理の実行をスキャン方式で行うとともに前記機器との入出力を一括I/Oリフレッシュ方式で行うことによって制御の流れを管理する第1の方式、シーケンス・ファンクション・チャートに従って制御の流れを管理する第2の方式、フローチャートに従って制御の流れを管理する第3の方式、状態遷移表に従って制御の流れを管理する第4の方式、イベント・ドリブン方式に従って制御の流れを管理する第5の方式の少なくとも1つの方式で前記制御の流れを管理する
    ことを特徴とする請求項1又は2記載のコントローラ。
  4. 前記コントローラには、開発装置が接続され、
    前記コントローラは、さらに、
    前記開発装置から情報をダウンロードするダウンロード手段と、
    前記ダウンロード手段によってダウンロードされた情報に基づいて、前記第1フレームワーク手段と異なる方式で前記制御の流れを管理する第2フレームワーク手段を前記コントローラに追加すること、及び、前記第1フレームワーク手段を、当該第1フレームワーク手段と異なる方式で前記制御の流れを管理する第2フレームワーク手段に置き換えることの少なくとも一方を行う第1更新手段と
    を備えることを特徴とする請求項1〜3のいずれか1項に記載のコントローラ。
  5. 前記第1更新手段は、前記第1アプリケーション手段を前記コントローラに保持させた状態で、前記第2フレームワーク手段の追加及び置き換えの少なくとも一方を行う
    ことを特徴とする請求項4記載のコントローラ。
  6. 前記コントローラには、開発装置が接続され、
    前記コントローラは、さらに、
    前記開発装置から情報をダウンロードするダウンロード手段と、
    前記ダウンロード手段によってダウンロードされた情報に基づいて、前記第1アプリケーション手段と異なる制御処理を実行する第2アプリケーション手段を前記コントローラに追加すること、及び、前記第1アプリケーション手段を、当該第1アプリケーション手段と異なる制御処理を実行する第2アプリケーション手段に置き換えることの少なくとも一方を行う第2更新手段と
    を備えることを特徴とする請求項1〜3のいずれか1項に記載のコントローラ。
  7. 前記第2更新手段は、前記第1フレームワーク手段を前記コントローラに保持させた状態で、前記第1アプリケーション手段の追加及び置き換えの少なくとも一方を行う
    ことを特徴とする請求項6記載のコントローラ。
  8. 機器を制御するコントローラで実行される制御プログラムを開発するための開発装置であって、
    前記制御プログラムには、前記機器に対する制御の流れを規定したプログラミングモデル情報と、前記機器に対する制御処理を規定したプログラムであるオブジェクトとが含まれ、前記コントローラは、前記プログラミングモデル情報によって規定される制御の流れの下で前記オブジェクトを実行する装置であり、
    前記開発装置は、
    ユーザからの指示に従って前記プログラミングモデル情報を作成するプログラミングモデル情報作成手段と、
    ユーザからの指示に従って前記オブジェクトを作成するオブジェクト作成手段と、
    作成された前記プログラミングモデル情報及び前記オブジェクトの少なくとも一方を前記コントローラにダウンロードするダウンロード手段と
    を備えることを特徴とする開発装置。
  9. 制御プログラムに従って機器を制御するコントローラと、前記制御プログラムを開発するための開発装置とから構成されるシステムであって、
    前記制御プログラムには、前記機器に対する制御の流れを規定したプログラミングモデル情報と、前記機器に対する制御処理を規定したプログラムであるオブジェクトとが含まれ、
    前記開発装置は、
    ユーザからの指示に従って前記プログラミングモデル情報を作成するプログラミングモデル情報作成手段と、
    ユーザからの指示に従って前記オブジェクトを作成するオブジェクト作成手段と、
    作成された前記プログラミングモデル情報及び前記オブジェクトの少なくとも一方を通信路を介して前記コントローラに送信する送信手段とを備え、
    前記コントローラは、
    前記通信路を介して前記開発装置から送信されてくるプログラミングモデル情報及びオブジェクトを受信する受信手段と、
    受信された前記プログラミングモデル情報によって規定される制御の流れの下で前記オブジェクトを実行することによって前記機器を制御する実行手段とを備える
    ことを特徴とするシステム。
  10. 機器を制御するコントローラで実行される制御プログラムの開発支援方法であって、
    前記制御プログラムを、前記機器に対する制御の流れを規定したプログラミングモデル情報と、前記機器に対する制御処理を規定したプログラムであるオブジェクトとに分離した開発を支援し、
    開発した前記プログラミングモデル情報及び前記オブジェクトを前記コントローラにダウンロードし、
    前記コントローラに、前記プログラミングモデル情報によって規定される制御の流れの下で前記オブジェクトを実行させる
    ことを特徴とする制御プログラムの開発支援方法。
  11. 機器を制御するコントローラのためのプログラムであって、
    制御の流れを管理するフレームワーク手段と、
    前記フレームワーク手段による管理の下で前記機器に対する制御処理を実行するアプリケーション手段と
    としてコンピュータに機能させることを特徴とするプログラム。
  12. 機器を制御するコントローラで実行される制御プログラムを開発する開発装置のためのプログラムであって、
    前記制御プログラムには、前記機器に対する制御の流れを規定したプログラミングモデル情報と、前記機器に対する制御処理を規定したプログラムであるオブジェクトとが含まれ、前記コントローラは、前記プログラミングモデル情報によって規定される制御の流れの下で前記オブジェクトを実行する装置であり、
    前記プログラムは、
    ユーザからの指示に従って前記プログラミングモデル情報を作成するプログラミングモデル情報作成手段と、
    ユーザからの指示に従って前記オブジェクトを作成するオブジェクト作成手段と、
    作成された前記プログラミングモデル情報及び前記オブジェクトの少なくとも一方を前記コントローラにダウンロードするダウンロード手段と
    してコンピュータに機能させることを特徴とするプログラム。
JP2003068839A 2003-03-13 2003-03-13 コントローラ、開発装置及びシステム Pending JP2004280299A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003068839A JP2004280299A (ja) 2003-03-13 2003-03-13 コントローラ、開発装置及びシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003068839A JP2004280299A (ja) 2003-03-13 2003-03-13 コントローラ、開発装置及びシステム

Publications (1)

Publication Number Publication Date
JP2004280299A true JP2004280299A (ja) 2004-10-07

Family

ID=33286062

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003068839A Pending JP2004280299A (ja) 2003-03-13 2003-03-13 コントローラ、開発装置及びシステム

Country Status (1)

Country Link
JP (1) JP2004280299A (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006134640A1 (ja) * 2005-06-14 2006-12-21 Fujitsu Limited 情報処理装置,状態遷移管理方法,状態遷移管理プログラム
JP2008027282A (ja) * 2006-07-24 2008-02-07 Yokogawa Electric Corp ワークフロー切り替えフレームワーク
JP2010108504A (ja) * 2008-10-31 2010-05-13 Korea Electronics Telecommun ロボット用ソフトウェアコンポーネントのスレッド処理システム及び方法
JP2013012090A (ja) * 2011-06-29 2013-01-17 Panasonic Corp 開発支援方法及びプログラム
US8689217B2 (en) 2008-10-31 2014-04-01 Electronics And Telecommunications Research Institute System and method for thread processing robot software components responsive to periodic, dedicated, and passive modes
JP2018084994A (ja) * 2016-11-24 2018-05-31 株式会社日立産機システム コントロールシステム及びコントロール方法
WO2019097800A1 (ja) * 2017-11-16 2019-05-23 株式会社日立産機システム コントロール装置
JP2020107345A (ja) * 2018-09-03 2020-07-09 株式会社東芝 ユニットの制御方法およびユニット、システムコントローラ、クライアントシステム
US11936744B2 (en) 2015-04-23 2024-03-19 Kabushiki Kaisha Toshiba Client system, combination client system and server client system

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006134640A1 (ja) * 2005-06-14 2006-12-21 Fujitsu Limited 情報処理装置,状態遷移管理方法,状態遷移管理プログラム
JP2008027282A (ja) * 2006-07-24 2008-02-07 Yokogawa Electric Corp ワークフロー切り替えフレームワーク
JP2010108504A (ja) * 2008-10-31 2010-05-13 Korea Electronics Telecommun ロボット用ソフトウェアコンポーネントのスレッド処理システム及び方法
US8689217B2 (en) 2008-10-31 2014-04-01 Electronics And Telecommunications Research Institute System and method for thread processing robot software components responsive to periodic, dedicated, and passive modes
JP2013012090A (ja) * 2011-06-29 2013-01-17 Panasonic Corp 開発支援方法及びプログラム
US11936744B2 (en) 2015-04-23 2024-03-19 Kabushiki Kaisha Toshiba Client system, combination client system and server client system
WO2018096717A1 (ja) * 2016-11-24 2018-05-31 株式会社日立産機システム コントロールシステム及びコントロール方法
JP7085305B2 (ja) 2016-11-24 2022-06-16 株式会社日立産機システム コントロールシステム及びコントロール方法
JP2018084994A (ja) * 2016-11-24 2018-05-31 株式会社日立産機システム コントロールシステム及びコントロール方法
WO2019097800A1 (ja) * 2017-11-16 2019-05-23 株式会社日立産機システム コントロール装置
JPWO2019097800A1 (ja) * 2017-11-16 2020-06-25 株式会社日立産機システム コントロール装置
US11194739B2 (en) 2017-11-16 2021-12-07 Hitachi Industrial Equipment Systems Co., Ltd. Control apparatus
JP7048638B2 (ja) 2017-11-16 2022-04-05 株式会社日立産機システム コントロール装置
JP2020107345A (ja) * 2018-09-03 2020-07-09 株式会社東芝 ユニットの制御方法およびユニット、システムコントローラ、クライアントシステム

Similar Documents

Publication Publication Date Title
US7117049B2 (en) Industrial controller based on distributable technology objects
EP1351108B1 (en) Method and apparatus for programming
US9122269B2 (en) Method and system for operating a machine from the field of automation engineering
CN101938164B (zh) 一种电力设备控制方法、装置及其相关系统
US9805017B2 (en) Spreadsheet to webpage conversion system and method
JP2008282363A (ja) プログラマブルコントローラ、プログラム作成支援装置、コンピュータプログラム及びplcシステム
US7734360B2 (en) Industrial controller based on distributable technology objects
KR20030044916A (ko) 모듈러 컴퓨터 시스템 및 관련 프로세스
JP2004280299A (ja) コントローラ、開発装置及びシステム
CN109937404B (zh) 程序模块之间的实时数据交换方法和系统
JP2007086921A (ja) 機械装置制御プログラム実行システム
JP7085305B2 (ja) コントロールシステム及びコントロール方法
CN111052010B (zh) 控制系统、开发辅助装置和存储介质
CN113534744A (zh) 用于构成数控系统的软件架构和硬件架构
JP4821717B2 (ja) プログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステム
JP5177082B2 (ja) 開発支援装置,プログラム
US20220255987A1 (en) Method for linking objects of a control program of a control unit of an automation system, and development environment
JP4877257B2 (ja) プログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステム
JP2009245194A (ja) プログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステム
JP2012155515A (ja) ソースデバイスドライバ及び実行モジュールの作成方法
JP6020854B2 (ja) コンピュータ化されたマシン制御システム
JP4747990B2 (ja) プログラマブルコントローラ
CN117280319A (zh) 用于适应在自动化系统中使用的能重新配置的运行时系统的系统和方法
JP2000066906A (ja) マイコン組込み制御用システム
JP2014016947A (ja) プログラマブルコントローラ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060130

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080513

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090224

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090408

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090428