JP2019159752A - コントローラ、ライセンスの管理方法、およびライセンスの管理プログラム - Google Patents

コントローラ、ライセンスの管理方法、およびライセンスの管理プログラム Download PDF

Info

Publication number
JP2019159752A
JP2019159752A JP2018045097A JP2018045097A JP2019159752A JP 2019159752 A JP2019159752 A JP 2019159752A JP 2018045097 A JP2018045097 A JP 2018045097A JP 2018045097 A JP2018045097 A JP 2018045097A JP 2019159752 A JP2019159752 A JP 2019159752A
Authority
JP
Japan
Prior art keywords
controller
software
package software
external device
execution right
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
JP2018045097A
Other languages
English (en)
Inventor
西山 佳秀
Yoshihide Nishiyama
佳秀 西山
達矢 小島
Tatsuya Kojima
達矢 小島
真輔 川ノ上
Shinsuke Kawanokami
真輔 川ノ上
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 JP2018045097A priority Critical patent/JP2019159752A/ja
Priority to CN201980004165.7A priority patent/CN111095243A/zh
Priority to US16/643,831 priority patent/US20210110006A1/en
Priority to PCT/JP2019/001250 priority patent/WO2019176274A1/ja
Priority to EP19767145.6A priority patent/EP3767499A4/en
Publication of JP2019159752A publication Critical patent/JP2019159752A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/105Arrangements for software license management or administration, e.g. for managing licenses at corporate level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/08Payment architectures
    • G06Q20/12Payment architectures specially adapted for electronic shopping systems
    • G06Q20/123Shopping for digital content
    • G06Q20/1235Shopping for digital content with control of digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q2220/00Business processing using cryptography
    • G06Q2220/10Usage protection of distributed data files
    • G06Q2220/18Licensing

Abstract

【課題】コントローラにダウンロードされるソフトウェアの不正利用を防止できる技術を提供する。【解決手段】コントローラは、ソフトウェアと、当該ソフトウェアについての第1ライセンス情報とを外部機器から取得するための取得部と、ソフトウェアを実行するためのプロセッサとを備える。ソフトウェアは、コントローラまたは外部機器を一意に識別するための第1固有情報からソフトウェアの実行権を生成するための生成モジュールと、実行権の生成後の所定のタイミングにおいて実行権から第2固有情報を生成し、第2固有情報が第1固有情報と一致しないときに、ソフトウェアの利用を禁止するためのチェックモジュールとを含む。【選択図】図1

Description

本開示は、コントローラにダウンロードされたソフトウェアの利用を管理するための技術に関する。
様々な生産現場において、生産工程を自動化するFA(Factory Automation)システムが普及している。FAシステムは、種々の産業用の駆動機器によって構成される。産業用の駆動機器は、たとえば、ワークを移動するための移動テーブルや、ワークを搬送するためのコンベアや、予め定められた目的の場所までワーク移動するためのアームロボットなどを含む。これらの駆動機器は、PLC(Programmable Logic Controller)やロボットコントローラなどの産業用のコントローラによって制御される。
近年、外部機器からソフトウェアをインストールすることができるコントローラが普及している。このようなコントローラが、国際公開第2015/136965号(特許文献1)、国際公開第2015/136972号(特許文献2)、国際公開第2015/136966号(特許文献3)、および、国際公開第2015/136964号(特許文献4)に開示されている。
国際公開第2015/136965号 国際公開第2015/136972号 国際公開第2015/136966号 国際公開第2015/136964号
近年、種々のソフトウェアが開発されており、ソフトウェアのライセンスの管理が複雑化となっている。ライセンスが適切に管理されていない場合、購入されたソフトウェアが不正にコピーされて、ソフトウェアがライセンスを有さない他のコントローラで不正に利用される可能性がある。したがって、このような不正利用を防止する仕組みが望まれている。
本開示は上述のような問題点を解決するためになされたものであって、ある局面における目的は、コントローラにダウンロードされるソフトウェアの不正利用を防止できる仕組みを提供することである。
本開示の一例では、上記コントローラで利用されるソフトウェアを外部機器から取得するための取得部と、上記ソフトウェアを実行するためのプロセッサとを備える。上記ソフトウェアは、上記コントローラまたは上記外部機器を一意に識別するための第1固有情報から上記ソフトウェアの実行権を生成するための生成モジュールと、上記実行権の生成後の所定のタイミングにおいて上記実行権から第2固有情報を生成し、当該第2固有情報が上記第1固有情報と一致しないときに、上記ソフトウェアの利用を禁止するためのチェックモジュールとを含む。
この開示によれば、ライセンス情報に基づいて、取得したソフトウェアの利用が禁止されることで、当該ソフトウェアの不正利用が防止される。
本開示の一例では、上記コントローラと通信可能に構成されている通信機器を含む。上記取得部は、上記コントローラと通信接続された上記通信機器から上記ソフトウェアをダウンロードする。
この開示によれば、通信機器からダウンロードしたソフトウェアの不正利用が防止される。
本開示の一例では、上記外部機器は、上記コントローラに電気的に接続され得るメモリカードを含む。上記取得部は、上記コントローラに電気的に接続されたメモリカードから上記ソフトウェアを取得する。
この開示によれば、メモリカードから取得したソフトウェアの不正利用が防止される。
本開示の一例では、上記プロセッサは、上記取得したソフトウェアを上記コントローラから上記外部機器に移すときに、上記実行権を削除する。
この開示によれば、ソフトウェアのライセンス情報が複数存在することがなくなり、ソフトウェアの不正利用がより確実に防止される。
本開示の一例では、上記プロセッサは、上記取得したソフトウェアを上記コントローラから上記外部機器に移すときに、上記生成モジュールおよび上記チェックモジュールを削除する。
この開示によれば、生成モジュールおよびチェックモジュールが削除されることで、コントローラの資源が有効に利用され得る。
本開示の一例では、上記外部機器から取得され得るソフトウェアは、上記コントローラのファームウェア上で動作するプログラムと、当該ファームウェアに追加されるプログラムと、上記コントローラで利用され得るデータとの少なくとも1つを含む。
この開示によれば、不正利用の防止がファームウェア上で動作するプログラムと、当該ファームウェアに追加されるプログラムとの不正利用が防止される。
本開示の他の例では、制御対象を制御するコントローラで利用されるソフトウェアのライセンスの管理方法は、上記コントローラで利用されるソフトウェアと、当該ソフトウェアについての第1ライセンス情報とを外部機器から取得するステップと、上記ソフトウェアを実行するステップとを備える。上記実行するステップは、上記コントローラまたは上記外部機器を一意に識別するための第1固有情報から上記ソフトウェアの実行権を生成するステップと、上記実行権の生成後の所定のタイミングにおいて上記実行権から第2固有情報を生成し、当該第2固有情報が上記第1固有情報と一致しないときに、上記ソフトウェアの利用を禁止するステップとを含む。
この開示によれば、ライセンス情報に基づいて、取得したソフトウェアの利用が禁止されることで、当該ソフトウェアの不正利用が防止される。
本開示の他の例では、制御対象を制御するコントローラで利用されるソフトウェアのライセンスの管理プログラムは、上記管理プログラムは、上記コントローラに、制御対象を制御するコントローラで利用されるソフトウェアを外部機器から取得するステップと、上記ソフトウェアを実行するステップとを実行させる。上記実行するステップは、上記コントローラまたは上記外部機器を一意に識別するための第1固有情報から上記ソフトウェアの実行権を生成するステップと、上記実行権の生成後の所定のタイミングにおいて上記実行権から第2固有情報を生成し、当該第2固有情報が上記第1固有情報と一致しないときに、上記ソフトウェアの利用を禁止するステップとを含む。
この開示によれば、ライセンス情報に基づいて、取得したソフトウェアの利用が禁止されることで、当該ソフトウェアの不正利用が防止される。
ある局面において、コントローラにダウンロードされるソフトウェアの不正利用を防止できる。
実施の形態に従うFAシステムの概略を示す図である。 実施の形態に従うFAシステムの装置構成を概略的に示す模式図である。 パッケージソフトをダウンロード販売する仕組みを示す図である。 コントローラと開発支援装置とサーバとの間のデータの流れを示すシーケンス図である。 ソフトウェア管理テーブルのデータ構造を示す図である。 実施の形態に従うコントローラのハードウェア構成の一例を示す模式図である。 実施の形態に従う外部機器のハードウェア構成を示す模式図である。 パッケージソフトを開発支援装置からダウンロードする処理を表わすフローチャートである。 パッケージソフトの利用を有効化する処理を表わすフローチャートである。 実行権のチェック処理を表わすフローチャートである。 ダウンロードしたパッケージソフトの実行処理を表わすフローチャートである。 パッケージソフトをメモリカードで販売する仕組みを示す図である。 パッケージソフトをメモリカードからダウンロードする処理を表わすフローチャートである。 パッケージソフトのディプロイ処理の流れを概略的に示す図である。 図14に示されるディプロイ処理の続きを示す図である。 コントローラとメモリカードとの間でパッケージソフトを移している様子を示す図である。 パッケージソフトをBTO(Build To Order)販売する仕組みを示す図である。
以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。
<A.適用例>
図1を参照して、本発明の適用例について説明する。図1は、FAシステム10の概略を示す図である。
FAシステム10は、設備および装置などの制御対象を制御し、生産工程を自動化するためのシステムである。FAシステム10は、1つ以上のコントローラ100と、1つ以上の外部機器200と、1つ以上の駆動機器300とで構成されている。
コントローラ100は、ハードウェア構成として、取得部101と、プロセッサ102と、記憶装置110とを含む。記憶装置110は、外部機器200からダウンロードしたパッケージソフト141と、コントローラ100の固有情報143Aとを格納している。
外部機器200は、コントローラ100で実行可能な種々のソフトウェアを提供する。このような外部機器200としては、後述の開発支援装置200A(図2参照)、後述のサーバ200B(図2参照)、後述のメモリカード200C(図2参照)などが挙げられる。
取得部101は、外部機器200からソフトウェアを取得する機能を有する任意のハードウェアである。一例として、取得部101は、外部機器200と通信するための通信インターフェイスや、SDカードなどのメモリカードが接続されるメモリカードインターフェイスなどを含む。
図1の例では、外部機器200からダウンロードされたソフトウェアがパッケージソフト141として示されている。パッケージソフト141は、種々の機能がパッケージ化された販売対象のプログラムの単位を示す。パッケージソフト141の一例として、コントローラ100への追加機能やデータなどが挙げられる。
プロセッサ102は、コントローラ100の各種プログラムを実行することで、制御対象である駆動機器300を制御する。一例として、プロセッサ102によって実行されるプログラムは、ダウンロードされたパッケージソフト141などの各種プログラムを含む。
ダウンロードされたパッケージソフト141は、生成モジュール154と、チェックモジュール156と、その他の機能モジュールとを含む。当該その他の機能モジュールがユーザによって利用され得る機能モジュールであり、生成モジュール154およびチェックモジュール156は、当該機能モジュールに付随するものである。
生成モジュール154は、コントローラ100を一意に識別するための固有情報143A(第1固有情報)からパッケージソフト141の実行権139を生成する。実行権139は、パッケージソフト141の実行を行うための権限に相当する。すなわち、実行権139を保持しているコントローラ100がパッケージソフト141を実行することができる。固有情報143Aは、たとえば、コントローラ100またはプロセッサ102の、形式、生産情報(製造番号など)、名前、および、コントローラ100を一意に識別するためのその他の情報を含む。
実行権139の生成方法は、任意である。一例として、生成モジュール154は、予め定められた暗号化方式で固有情報143Aを暗号化することで実行権139を生成する。この場合、生成モジュール154は、所定の暗号化キーを用いて実行権139を生成する。あるいは、生成モジュール154は、可逆計算が可能な予め定められた算出式に固有情報143Aを代入して得られた結果を実行権139として生成してもよい。生成された実行権139は、記憶装置110に格納される。
チェックモジュール156は、コントローラ100の起動時やパッケージソフト141の実行時など実行権139の生成後の所定のタイミングにおいて、実行権139から固有情報(第2固有情報)を生成する。以下では、説明の便宜のために、コントローラ100に予め保持されている固有情報を「固有情報143A」と称し、実行権139の生成後に実行権139から生成された固有情報を「固有情報143B」と称する。チェックモジュール156は、固有情報143Bが本来の固有情報143Aと一致しないときに、パッケージソフト141の利用を禁止する。
より具体的には、チェックモジュール156は、復号化モジュール156Aと、比較モジュール156Bとを含む。復号化モジュール156Aは、所定の復号化キーを利用する予め定められた復号化方式で実行権139を復号化し、固有情報143Bを生成する。
比較モジュール156Bは、コントローラ100の起動時またはパッケージソフト141の利用時に生成された固有情報143Bを本来の固有情報143Aと比較する。固有情報143Bが固有情報143Aと一致する場合、比較モジュール156Bは、ダウンロードしたパッケージソフト141の利用を許可する。一方で、固有情報143Bが固有情報143Aと一致しない場合、比較モジュール156Bは、ダウンロードしたパッケージソフト141の利用を禁止する。
ここでいう「一致する」とは、固有情報143Bの全てが固有情報143Aの全てと一致する場合だけでなく、固有情報143Bの所定箇所が固有情報143Aの所定箇所と一致する場合も含み得る。「一致しない」とは、「一致する」との条件が満たされない場合を指す。
以上のように、本来の固有情報143Aと、パッケージソフト141の実行時などに生成される固有情報143Bとの比較結果に基づいて、パッケージソフト141の利用の許可/禁止が切り替えられる。これにより、たとえば、パッケージソフト141がダウンロード時とは異なるコントローラに不正に移動された場合に、パッケージソフト141の利用を防止することができる。また、ライセンスをチェックする仕組みがパッケージソフト141に組み込まれていることで、ライセンスのチェック機能をコントローラ100に予め搭載する必要がなくなる。
<B.FAシステム10の装置構成>
図2を参照して、FAシステム10の装置構成の一例について説明する。図2は、FAシステム10の装置構成を概略的に示す模式図である。
FAシステム10は、1つ以上のコントローラ100と、1つ以上の外部機器200とを含む。図2の例では、FAシステム10は、2つのコントローラ100A,100Bで構成されている。コントローラ100に接続され得る外部機器200の例として、開発支援装置200Aと、サーバ200Bと、メモリカード200Cとが示されている。
以下では、コントローラ100A,100Bを総称してコントローラ100ともいう。コントローラ100は、複数の物理的な通信ポートを有する。それぞれの通信ポートには異なるネットワークが接続され得る。図2の例では、コントローラ100は、2つの通信ポートP1,P2を有する。通信ポートP1には、ネットワークNW1が接続されている。通信ポートP2には、ネットワークNW2が接続されている。
ネットワークNW1には、たとえば、EtherNet/IP(登録商標)やEtherNet(登録商標)などが採用される。一例として、ネットワークNW1には、開発支援装置200Aやサーバ200Bなど、コントローラ100との通信機能を有する各種通信機器が接続され得る。
開発支援装置200Aは、たとえば、PC(Personal Computer)、タブレット端末、または、スマートフォンなどである。開発支援装置200Aには、プログラム開発ツールがインストールされ得る。プログラム開発ツールは、コントローラ100用の制御プログラムの開発を支援するためのアプリケーションである。一例として、プログラム開発ツールは、オムロン社製の「Sysmac Studio」である。ユーザは、プログラム開発ツール上でコントローラ100用の制御プログラムを設計し、設計した制御プログラムをコントローラ100にインストールすることができる。作成された制御プログラムは、開発支援装置200Aによってコンパイルされた実行形式のファイルとしてコントローラ100に送られる。
サーバ200Bは、コントローラ100で実行可能な各種のパッケージソフト141を提供する装置である。提供されるパッケージソフト141は、たとえば、外部データーベースに接続する機能、NC(Numerical Control)制御に関する各種機能、ロボット制御に関する各種機能、AI(Artificial Intelligence)に関する各種機能、コントローラ100で利用され得る各種データ(たとえば、AIの学習処理によって得られた各種データ)、および、特定の駆動機器300を制御するための各種機能(たとえば、振動制御機能)などを含む。なお、パッケージソフト141の提供元は、サーバ200Bに限られず、任意の外部機器200から提供される。一例として、パッケージソフト141は、メモリカード200Cから提供されてもよい。
ネットワークNW2には、データの到達時間が保証される、定周期通信を行うフィールドネットワークを採用することが好ましい。このような定周期通信を行うフィールドネットワークとしては、EtherCAT(登録商標)、CompoNet(登録商標)などが知られている。コントローラ100は、開発支援装置200A上で作成された制御プログラムに従って制御対象の駆動機器300を制御する。
駆動機器300は、直接的または間接的にワークに対して所定の作業を行うための機器の集合である。図2の例では、駆動機器300は、ロボットコントローラ300Aや、サーボドライバ300Bや、ロボットコントローラ300Aに制御されるアームロボット301Aや、サーボドライバ300Bによって制御されるサーボモータ301Bなどを含む。また、駆動機器300は、ワークを撮影するための視覚センサや、生産工程で利用されるその他の機器などを含んでもよい。
<C.パッケージソフト141の販売形態>
図3を参照して、パッケージソフト141の販売形態の一例について説明する。図3は、パッケージソフト141をダウンロード販売する仕組みを示す図である。
図3の例では、パッケージソフト141の提供元のサーバ200Bと、パッケージソフト141の提供先の開発支援装置200Aとが示されている。一例として、サーバ200Bは、販売元の会社「A」に設置されている。開発支援装置200Aは、パッケージソフト141の販売先の会社「B」に設置されている。
ステップ(1)において、開発支援装置200Aのユーザは、サーバ200Bのウェブサイトなどにアクセスし、販売されているパッケージソフトの中からダウンロード対象のパッケージソフトを選択する。販売されているパッケージソフトは、コントローラ100のファームウェア上で動作するプログラムや、ファームウェアに追加されるファームウェアプログラムなどを含む。ファームウェア上で動作するパッケージソフトは、ファームウェアから提供される基本機能に依存して動作する。
開発支援装置200Aのユーザは、購入対象のパッケージソフト141の選択後、購入手続きを行う。購入手続きが完了すると、サーバ200Bは、購入したパッケージソフト141を開発支援装置200Aにインストールする。このとき、ステップ(2)において、サーバ200Bは、パッケージソフト141の利用を許可するためのライセンス権142を開発支援装置200Aに送信する。
ステップ(3)において、開発支援装置200Aは、サーバ200Bからインストールしたパッケージソフト141とライセンス権142とをコントローラ100にインストールする。
ステップ(4)において、開発支援装置200Aは、パッケージソフト141のライセンス権を有効にするための有効化操作を受け付けたとする。このことに基づいて、開発支援装置200Aは、有効化命令をコントローラ100に送信する。コントローラ100は、有効化命令を受信したことに基づいて、コントローラ100の固有情報143Aから実行権139を生成する。
ステップ(5)において、開発支援装置200Aは、パッケージソフト141の有効化処理が正常に完了したことに基づいて、パッケージソフト141の利用権を行使したことをサーバ200Bに送信する。このとき、利用権を行使した利用者の情報がサーバ200Bに送信され、当該情報がサーバ200Bに登録される。
<D.データフロー>
図4および図5を参照して、上述の図3に示されるダウンロード販売を実現するための制御フローについて説明する。図4は、コントローラ100と開発支援装置200Aとサーバ200Bとの間のデータの流れを示すシーケンス図である。
ステップS10において、開発支援装置200Aのユーザは、サーバ200Bのウェブサイトにアクセスし、パッケージソフト141の販売操作を行ったとする。このとき、ユーザは、パッケージソフト141を購入するために各種の情報(以下、「購入情報」ともいう。)を入力する。当該購入情報は、購入対象のパッケージソフト141を特定するための情報、購入者に関する各種情報(たとえば、名前や住所など)や、ダウンロード対象のコントローラ100に関する各種情報を含む。入力された購入情報は、サーバ200Bに送信される。
ステップS14において、サーバ200Bは、開発支援装置200Aから受信した購入情報に基づいて、パッケージソフト141のライセンス権142を発行する。発行されたライセンス権142は、購入対象のパッケージソフト141とともに、開発支援装置200Aに送信される。
ステップS20において、開発支援装置200Aは、サーバ200Bからダウンロードしたパッケージソフト141のダウンロード操作を受け付けたとする。このことに基づいて、開発支援装置200Aは、パッケージソフト141とライセンス権142とを指定されたコントローラ100に送信する。
ステップS26において、コントローラ100は、パッケージソフト141を内部の記憶装置110(図1参照)に配置するディプロイ処理を実行する。このとき、コントローラ100は、パッケージソフトを内部の記憶装置に配置する管理するためのソフトウェア管理テーブルを更新する。図5は、ソフトウェア管理テーブル155のデータ構造を示す図である。
ソフトウェア管理テーブル155は、コントローラ100にダウンロードされたパッケージソフトを管理するためのデーターベースある。ソフトウェア管理テーブル155は、パッケージソフトの一覧テーブル160と、パッケージソフトの詳細情報161〜163とを含む。
パッケージソフトの一覧テーブル160は、パッケージソフトの略称を規定するカラム160Aと、パッケージソフトのバージョンを規定するカラム160Bと、パッケージソフトの分類を規定するカラム160Cと、パッケージソフトのアドオンタイプを規定するカラム160Dと、パッケージソフトの提供形態を規定するカラム160Eと、パッケージソフトのフルネームを規定するカラム160Fと、パッケージソフトの提供元を規定するカラム160Fとを含む。
パッケージソフトの一覧テーブル160の各レコードは、パッケージソフトの詳細情報に関連付けられている。一例として、一覧テーブル160のカラム160Aの情報をキーとして、各パッケージソフト141の詳細情報が関連付けられる。図5の例では、「ECAT」として示されるパッケージ名には、詳細情報161が関連付けられている。「AI」として示されるパッケージ名には、詳細情報162,163とが関連付けられている。
詳細情報161は、パッケージソフトの略称を規定するカラム161Aと、対応言語の種類を示すカラム161Bと、パッケージソフトのフルネームを規定するカラム161Cと、パッケージソフトの提供元を規定するカラム161Dとを含む。
詳細情報162は、パッケージソフトの略称を規定するカラム162Aと、対応言語の種類を示すカラム162Bと、パッケージソフトのフルネームを規定するカラム162Cと、パッケージソフトの提供元を規定するカラム162Dとを含む。
詳細情報163は、パッケージソフトに含まれる各種メソッド(処理)が規定されている。詳細情報163は、メソッドの名前を示すカラム163Aと、パッケージソフトの呼出しのタイプを示すカラム163Bと、パッケージソフトのディプロイメソッドを規定しているカラム163Cと、パッケージソフトのロールバックメソッドを規定しているカラム163Dとを含む。
再び図4を参照して、ステップS28において、コントローラ100は、上述の生成モジュール154(図1参照)として、自身の固有情報143Aから実行権139を生成する。生成モジュール154は、予め定められた暗号化方式で固有情報143Aから実行権139を生成する。一例として、生成モジュール154は、所定の暗号化キーを用いて実行権139を生成する。生成された実行権139は、コントローラ100の記憶装置110に格納される。
ステップS30において、コントローラ100は、所定のタイミングが到来したか否かを判断する。当該所定のタイミングは、たとえば、コントローラ100の起動時や、パッケージソフト141の実行時や、実行権139の生成後の予め定められた任意のタイミングを含む。コントローラ100は、当該所定のタイミングが到来したと判断した場合(ステップS30においてYES)、制御をステップS32に切り替える。そうでない場合には(ステップS30においてNO)、コントローラ100は、ステップS30の処理を再び実行する。
ステップS32において、コントローラ100は、上述のチェックモジュール156(図1参照)として、ステップS28で生成した実行権139から固有情報143Bを生成する。一例として、コントローラ100は、ステップS28で固有情報143Aから実行権139を生成するために用いられた暗号化方式に対応する復号化方式で実行権139を復号化し、固有情報143Bを生成する。
ステップS40において、コントローラ100は、上述のチェックモジュール156(図1参照)として、ステップS32で生成された固有情報143Bが本来の固有情報143Aと一致するか否かを判断する。コントローラ100は、生成された固有情報143Bが本来の固有情報143Aと一致すると判断した場合(ステップS40においてYES)、制御をステップS42に切り替える。そうでない場合には(ステップS40においてNO)、コントローラ100は、制御をステップS44に切り替える。
ステップS42において、コントローラ100は、ダウンロードしたパッケージソフト141の利用を許可する。パッケージソフト141の利用を許可する手段は、任意である。一例として、利用の禁止/許可を示すフラグがコントローラ100で管理されており、コントローラ100は、許可を示すように当該フラグを書き換える。
ステップS44において、コントローラ100は、ダウンロードしたパッケージソフト141の利用を禁止する。パッケージソフト141の利用を禁止する手段は、任意である。一例として、利用の禁止/許可を示すフラグがコントローラ100で管理されており、コントローラ100は、禁止を示すように当該フラグを書き換える。
<E.ハードウェア構成>
図6および図7を参照して、コントローラ100および外部機器200のハードウェア構成について順に説明する。
(E1.コントローラ100のハードウェア構成)
まず、図6を参照して、コントローラ100のハードウェア構成について説明する。図6は、コントローラ100のハードウェア構成の一例を示す模式図である。
コントローラ100は、通信インターフェイス101Aと、メモリカードインターフェイス101Bと、CPU(Central Processing Unit)やMPU(Micro-Processing Unit)などのプロセッサ102と、チップセット104と、主メモリ106と、不揮発性の記憶装置110と、内部バスコントローラ122と、フィールドバスコントローラ124とを含む。
プロセッサ102は、記憶装置110に格納された制御プログラム130を読み出して、主メモリ106に展開して実行することで、制御対象の駆動機器300などに対する任意の制御を実現する。制御プログラム130は、コントローラ100を制御するための各種プログラムを含む。一例として、制御プログラム130は、ファームウェアとしてのシステムプログラム140、パッケージソフト141、ユーザプログラム145などを含む。システムプログラム140は、データの入出力処理や実行タイミング制御などの、コントローラ100の基本機能を提供するための命令コードを含む。ユーザプログラム145は、外部機器200からダウンロードされたものである。ユーザプログラム145は、制御対象に応じて外部機器200上で任意に設計され、シーケンス制御を実行するためのシーケンスプログラム145Aおよびモーション制御を実行するためのモーションプログラム145Bとを含む。
チップセット104は、各コンポーネントを制御することで、コントローラ100全体としての処理を実現する。
記憶装置110は、制御プログラム130の他にも種々のデータを格納する。一例として、記憶装置110は、パッケージソフト141のライセンス権142と、コントローラ100を一意に識別するための固有情報143Aと、上述のソフトウェア管理テーブル155(図5参照)などを格納する。ライセンス権142は、パッケージソフト141の実行権139を含む。実行権139は、たとえば、たとえば、パッケージソフト141のダウンロード時(配置時)など予め定められたタイミングで生成される。
内部バスコントローラ122は、コントローラ100と内部バスを通じて連結される各種デバイスとデータを遣り取りするインターフェイスである。このようなデバイスの一例として、I/Oユニット126が接続されている。
フィールドバスコントローラ124は、コントローラ100とフィールドバスを通じて連結される各種の駆動機器300とデータを遣り取りするインターフェイスである。このようなデバイスの一例として、ロボットコントローラ300Aやサーボドライバ300Bが接続されている。他にも、視覚センサなどの駆動機器が接続されてもよい。
内部バスコントローラ122およびフィールドバスコントローラ124は、接続されているデバイスに対して任意の指令を与えることができるとともに、デバイスが管理している任意のデータを取得することができる。また、内部バスコントローラ122および/またはフィールドバスコントローラ124は、ロボットコントローラ300Aやサーボドライバ300Bとの間でデータを遣り取りするためのインターフェイスとしても機能する。
通信インターフェイス101Aは、上述の取得部101(図1参照)の一例である。通信インターフェイス101Aは、各種の有線/無線ネットワークを通じたデータの遣り取りを制御する。コントローラ100は、通信インターフェイス101Aを介して、開発支援装置200Aやサーバ200Bなどの外部機器200と通信を行う。コントローラ100は、通信インターフェイス101Aを介して外部機器200からパッケージソフト141などをダウンロードすることができる。
メモリカードインターフェイス101Bは、上述の取得部101(図1参照)の一例である。メモリカードインターフェイス101Bは、外部記憶媒体の一例であるメモリカード200C(たとえば、SDカード)を電気的に接続するためのインターフェイスである。メモリカードインターフェイス101Bは、メモリカード200Cを着脱可能に構成されており、メモリカード200Cに対してデータを書き込み、メモリカード200Cからデータを読出すことが可能になっている。コントローラ100は、メモリカードインターフェイス101Bを介してメモリカード200Cからパッケージソフト141などをダウンロードすることができる。また、メモリカード200Cには、パッケージソフト141のライセンス権142や、メモリカード200Cを一意に識別するための固有情報243Aなどが格納されている。
(E2.外部機器200のハードウェア構成)
次に、図7を参照して、外部機器200のハードウェア構成について説明する。図7は、外部機器200のハードウェア構成を示す模式図である。
外部機器200は、一例として、汎用的なコンピュータアーキテクチャに準じて構成されるコンピュータからなる。外部機器200は、たとえば、上述の開発支援装置200Aまたは上述のサーバ200Bである。外部機器200は、CPUやMPUなどの制御装置202と、主メモリ204と、不揮発性の記憶装置208と、通信インターフェイス211と、I/O(Input/Output)インターフェイス214と、表示インターフェイス220とを含む。これらのコンポーネントは、内部バス225を介して互いに通信可能に接続されている。
制御装置202は、記憶装置208に格納されている開発支援プログラム208Aを主メモリ204に展開して実行することで、プログラム開発ツールにおける各種処理を実現する。開発支援プログラム208Aは、ユーザプログラム145の開発環境を提供するためのプログラムである。記憶装置208は、開発支援プログラム208Aの他にも、配布対象のパッケージソフト141など各種データを格納する。
通信インターフェイス211は、他の通信機器との間でネットワークを介してデータを遣り取りする。当該他の通信機器は、たとえば、コントローラ100、サーバなどの外部機器を含む。外部機器200は、通信インターフェイス211を介して、当該他の通信機器から、開発支援プログラム208Aなどの各種プログラムをダウンロード可能なように構成されてもよい。
I/Oインターフェイス214は、操作部215に接続され、操作部215からのユーザ操作を示す信号を取り込む。操作部215は、典型的には、キーボード、マウス、タッチパネル、タッチパッドなどからなり、ユーザからの操作を受け付ける。
表示インターフェイス220は、表示部221と接続され、制御装置202などからの指令に従って、表示部221に対して、画像を表示するための画像信号を送出する。表示部221は、LCD(Liquid Crystal Display)や有機EL(Electro Luminescence)ディスプレイなどからなり、ユーザに対して各種情報を提示する。表示部221には、プログラム開発ツールによって提供される各種画面が表示され得る。なお、図7の例では、外部機器200および表示部221が別体として示されているが、外部機器200および表示部221は、一体的に構成されてもよい。
<F.制御構造>
図8〜図12を参照して、コントローラ100の制御構造について説明する。図8は、パッケージソフト141を開発支援装置200Aからダウンロードする処理を表わすフローチャートである。図9は、実行権139を生成することでパッケージソフト141の利用を有効化する処理を表わすフローチャートである。図10は、実行権139のチェック処理を表わすフローチャートである。図11は、ダウンロードしたパッケージソフト141の実行処理を表わすフローチャートである。
図8〜図11に示される処理は、コントローラ100のプロセッサ102がプログラムを実行することにより実現される。他の局面において、処理の一部または全部が、回路素子またはその他のハードウェアによって実行されてもよい。
以下では、図8〜図11に示されるフローチャートについて順に説明する。
(F1.パッケージソフト141のダウンロード処理)
まず、図8を参照して、開発支援装置200Aからのパッケージソフト141のダウンロード処理について説明する。
ステップS110において、プロセッサ102は、パッケージソフト141のダウンロード命令を開発支援装置200Aから受信したか否かを判断する。当該ダウンロード命令は、たとえば、ユーザが開発支援装置200Aに対してダウンロード操作を行うことにより発せられる。プロセッサ102は、パッケージソフト141のダウンロード命令を開発支援装置200Aから受信したと判断した場合(ステップS110においてYES)、制御をステップS120に切り替える。そうでない場合には(ステップS110においてNO)、図8に示されるダウンロード処理を終了する。
ステップS120において、プロセッサ102は、ダウンロード対象のパッケージソフト141がダウンロード先のコントローラ100に対応しているか否かを判断する。より具体的には、プロセッサ102は、ダウンロード対象のパッケージソフト141に関するソフト情報を外部機器200から受信する。当該ソフト情報は、たとえば、対応しているコントローラ100の形式情報などを含む。コントローラ100は、パッケージ情報に規定されている形式情報を、コントローラ100の形式情報と比較し、これらの形式情報が対応しているか否かを判断する。これらの形式情報が一致する場合、プロセッサ102は、ダウンロード対象のパッケージソフト141がコントローラ100に対応していると判断する。
プロセッサ102は、ダウンロード対象のパッケージソフト141がコントローラ100に対応していると判断した場合(ステップS120においてYES)、制御をステップS122に切り替える。そうでない場合には(ステップS120においてNO)、プロセッサ102は、制御をステップS126に切り替える。
ステップS122において、プロセッサ102は、パッケージソフト141と、当該パッケージソフト141のライセンス権142とを開発支援装置200Aから受信する。
ステップS124において、プロセッサ102は、受信したパッケージソフト141とライセンス権142とをコントローラ100の記憶装置110に保存する。
ステップS126において、プロセッサ102は、ダウンロード対象のパッケージソフト141がコントローラ100に対応していないことを示すエラーを出力する。当該エラーの出力態様は、任意である。一例として、当該エラーは、エラーログとして出力されてもよいし、エラー音やメッセージなどで出力されてもよい。
(F2.有効化処理)
次に、図9を参照して、パッケージソフト141の利用を有効化するための有効化処理について説明する。当該有効化処理の実行は、任意のタイミングで開始される。一例として、当該有効化処理の実行は、開発支援装置200Aが有効化命令を受信しことに基づいて開始される。当該有効化命令は、たとえば、ユーザが開発支援装置200Aに対して有効化操作を行ったことに基づいて指定されたコントローラ100に発せられ。有効化処理の実行が開始されると、図9に示される各処理が順次実行される。
ステップS180において、コントローラ100のプロセッサ102は、パッケージソフト141のライセンス権142があるか否かを判断する。典型的には、プロセッサ102は、ライセンス権142がコントローラ100の記憶装置110に格納されているか否かに基づいて、ライセンス権142の有無を判断する。プロセッサ102は、パッケージソフト141のライセンス権142があると判断した場合(ステップS180においてYES)、制御をステップS182に切り替える。そうでない場合には(ステップS180においてNO)、プロセッサ102は、制御をステップS184に切り替える。
ステップS182において、プロセッサ102は、上述の生成モジュール154(図1参照)として、コントローラ100の固有情報143Aからパッケージソフト141の実行権139を生成する。
ステップS184において、プロセッサ102は、パッケージソフト141のライセンス権がないことを示すエラーを出力する。当該エラーの出力態様は、任意である。一例として、当該エラーは、エラーログとして出力されてもよいし、エラー音やメッセージなどで出力されてもよい。
(F3.実行権のチェック処理)
次に、図10を参照して、図9で生成された実行権のチェック処理について説明する。当該チェック処理は、パッケージソフト141の利用を有効化または無効化する処理である。当該チェック処理の実行は、任意のタイミングで開始される。一例として、当該チェック処理の実行は、コントローラ100の起動時や、パッケージソフト141の実行時などに開始される。ライセンスのチェック処理の実行が開始されると、図10に示される各処理が順次実行される。
より具体的には、ステップS210において、プロセッサ102は、パッケージソフト141の実行権139が存在するか否かを判断する。プロセッサ102は、パッケージソフト141の実行権139が存在すると判断した場合(ステップS210においてYES)、制御をステップS212に切り替える。そうでない場合には(ステップS210においてNO)、プロセッサ102は、制御をステップS224に切り替える。
ステップS212において、プロセッサ102は、上述の復号化モジュール156A(図1参照)として、実行権139からコントローラ100の固有情報143Bを生成する。固有情報143Bは、たとえば、コントローラ100またはプロセッサ102の製造番号、コントローラ名、MACアドレス、または、コントローラ100を一意に識別するためのその他の情報を含む。
ステップS220において、プロセッサ102は、上述の比較モジュール156B(図1参照)として、ステップS212で生成した固有情報143Bがコントローラ100に格納されている本来の固有情報143Aに一致しているか否かを判断する。プロセッサ102は、固有情報143Bがコントローラ100の本来の固有情報143Aに一致していると判断した場合(ステップS220においてYES)、制御をステップS222に切り替える。そうでない場合には(ステップS220においてNO)、プロセッサ102は、制御をステップS224に切り替える。
ステップS222において、プロセッサ102は、パッケージソフト141の利用を許可する。一例として、利用の禁止/許可を示すフラグがコントローラ100の記憶装置110で管理されており、プロセッサ102は、許可を示すように当該フラグを書き換える。
ステップS224において、プロセッサ102は、パッケージソフト141の利用を禁止する。一例として、利用の禁止/許可を示すフラグがコントローラ100の記憶装置110で管理されており、プロセッサ102は、禁止を示すように当該フラグを書き換える。
(F4.パッケージソフト141の実行処理)
次に、図11を参照して、ダウンロードしたパッケージソフト141の実行処理について説明する。
ステップS310において、プロセッサ102は、パッケージソフト141の実行命令を受け付けたか否かを判断する。プロセッサ102は、パッケージソフト141の実行命令を受け付けたと判断した場合(ステップS310においてYES)、制御をステップS320に切り替える。そうでない場合には(ステップS310においてNO)、プロセッサ102は、ステップS310の処理を再び実行する。
ステップS320において、プロセッサ102は、実行対象のパッケージソフト141の利用が許可されているか否かを判断する。一例として、プロセッサ102は、パッケージソフト141の利用の禁止/許可を示すフラグが許可を示す場合に、プロセッサ102は、パッケージソフト141の利用が許可されていると判断する。プロセッサ102は、実行対象のパッケージソフト141の利用が許可されていると判断した場合(ステップS320においてYES)、制御をステップS322に切り替える。そうでない場合には(ステップS320においてNO)、プロセッサ102は、制御をステップS324に切り替える。
ステップS322において、プロセッサ102は、パッケージソフト141を実行する。
ステップS324において、プロセッサ102は、パッケージソフト141を実行せずに、パッケージソフト141の実行が禁止されていることを示すエラーを出力する。当該エラーの出力態様は、任意である。一例として、当該エラーは、エラーログとして出力されてもよいし、エラー音やメッセージなどで出力されてもよい。
<G.変形例1>
(G1.パッケージソフト141の他の販売形態)
上述では、パッケージソフト141がダウンロード販売される前提で説明を行っていたが、パッケージソフト141の販売形態はこれに限定されない。一例として、パッケージソフト141は、メモリカード200Cに格納された上で販売されてもよい。
以下では、図12を参照して、パッケージソフト141の販売形態の他の例について説明する。図12は、パッケージソフト141をメモリカード200Cで販売する仕組みを示す図である。
図12の例では、会社「A」〜会社「C」が示されている。会社「A」は、パッケージソフト141の管理を行うサーバ200Bを有する。会社「B」は、パッケージソフト141を格納したメモリカード200Cを販売する。会社「C」は、パッケージソフト141の販売先である。
より具体的な販売形態として、ステップ(1)において、会社「B」において、販売対象のパッケージソフト141を格納したメモリカード200Cが製造される。
ステップ(2)において、会社「B」は、パッケージソフト141の登録を会社「A」に対して行う。このとき、販売対象のパッケージソフト141に関するパッケージ情報が会社「A」のサーバ200Bに送信される。サーバ200Bは、受信したパッケージ情報に基づいて、パッケージソフト141の登録処理を行う。
ステップ(3)において、会社「C」の購入者は、会社「B」のウェブサイトなどにアクセスし、購入対象のパッケージソフト141を選択し、購入手続きを行う。購入手続きが完了すると、会社「B」は、購入されたパッケージソフト141を格納したメモリカード200Cを準備する。このとき、パッケージソフト141のライセンス権142が発行され、ライセンス権142は、メモリカード200Cに保存される。会社「B」は、パッケージソフト141およびライセンス権142を格納したメモリカード200Cを会社「C」に送る。
ステップ(4)において、購入者は、購入したメモリカード200Cをコントローラ100に接続し、パッケージソフト141とライセンス権142とをメモリカード200Cからインストールする。
(G2.パッケージソフト141のダウンロード処理)
図13を参照して、本変形例におけるパッケージソフト141のダウンロード処理について説明する。図13は、パッケージソフト141をメモリカード200Cからダウンロードする処理を表わすフローチャートである。
図13に示される処理は、コントローラ100のプロセッサ102がプログラムを実行することにより実現される。他の局面において、処理の一部または全部が、回路素子またはその他のハードウェアによって実行されてもよい。
ステップS150において、プロセッサ102は、メモリカード200Cがコントローラ100に接続されたか否かを判断する。プロセッサ102は、メモリカード200Cがコントローラ100に接続されたと判断した場合(ステップS150においてYES)、制御をステップS160に切り替える。そうでない場合には(ステップS150においてNO)、プロセッサ102は、図13に示されるダウンロード処理を終了する。
ステップS160において、プロセッサ102は、パッケージソフト141のダウンロード命令を開発支援装置200Aから受信したか否かを判断する。当該ダウンロード命令は、たとえば、ユーザが開発支援装置200Aに対してダウンロード操作を行うことにより発せられる。プロセッサ102は、パッケージソフト141のダウンロード命令を開発支援装置200Aから受信したと判断した場合(ステップS160においてYES)、制御をステップS170に切り替える。そうでない場合には(ステップS160においてNO)、図13に示されるダウンロード処理を終了する。
ステップS170において、プロセッサ102は、ダウンロード対象のパッケージソフト141がダウンロード先のコントローラ100に対応しているか否かを判断する。より具体的には、プロセッサ102は、ダウンロード対象のパッケージソフト141に関するソフト情報をメモリカード200Cから取得する。当該ソフト情報は、たとえば、対応しているコントローラ100の形式情報などを含む。コントローラ100は、パッケージ情報に規定されている形式情報を、コントローラ100の形式情報と比較し、これらの形式情報が対応しているか否かを判断する。これらの形式情報が一致する場合、プロセッサ102は、ダウンロード対象のパッケージソフト141がダウンロード先のコントローラ100に対応していると判断する。
プロセッサ102は、ダウンロード対象のパッケージソフト141がコントローラ100に対応していると判断した場合(ステップS170においてYES)、制御をステップS172に切り替える。そうでない場合には(ステップS170においてNO)、プロセッサ102は、制御をステップS176に切り替える。
ステップS172において、プロセッサ102は、パッケージソフト141と、当該パッケージソフト141のライセンス権142とをメモリカード200Cから取得する。
ステップS174において、プロセッサ102は、取得したパッケージソフト141とライセンス権142とをコントローラ100の記憶装置110に保存する。
ステップS176において、プロセッサ102は、ダウンロード対象のパッケージソフト141がコントローラ100に対応していないことを示すエラーを出力する。当該エラーの出力態様は、任意である。一例として、当該エラーは、エラーログとして出力されてもよいし、エラー音やメッセージなどで出力されてもよい。
<H.パッケージソフト141のディプロイ処理>
図14および図15を参照して、パッケージソフト141をコントローラ100に配置するディプロイ処理について説明する。図14は、パッケージソフト141のディプロイ処理の流れを概略的に示す図である。図15は、図14に示されるディプロイ処理の続きを示す図である。
コントローラ100のプロセッサ102は、ダウンロードしたパッケージソフトを管理するパッケージ管理モジュール150を含む。メモリカード200Cには、ダウンロード対象のパッケージソフト141がパッケージソフト"X"として示されている。
ステップ(1)において、ある呼出し元が、パッケージソフト"X"のディプロイ命令をパッケージ管理モジュール150に出力する。当該呼出し元としては、たとえば、ファームウェアのUpdater、外部機器200(たとえば、開発支援装置200A)、コントローラ100内のプロセス、コントローラ100内のライブラリなどが挙げられる。
ステップ(2)において、パッケージ管理モジュール150は、メモリカード200C上のパッケージソフト"X"のディプロイメソッドを実行する。ディプロイメソッドは、「Package_X.db」に予め定義されており、パッケージ管理モジュール150は、このメソッドを「Package_X.db」から探し実行する。
ステップ(3),(4)において、ディプロイメソッド141Aは、コントローラ100のプロセッサ102の形式情報がパッケージソフト"X"に対応しているか否かのチェックを開始する。
より具体的には、ディプロイメソッド141Aは、プロセッサ102の固有情報143Aを参照して、プロセッサ102の形式情報を取得する。ディプロイメソッド141Aは、プロセッサ102の形式情報と、パッケージソフト"X"の対応形式情報とを比較し、パッケージソフト"X"をコントローラ100に配置できるか否かをチェックする。ディプロイメソッド141Aは、取得したプロセッサ102の形式がパッケージソフト"X"の対応形式に合致する場合、パッケージソフト"X"をコントローラ100に配置できると判断する。そうでない場合には、ディプロイメソッドは、パッケージソフト"X"をコントローラ100に配置できないと判断する。
ステップ(5),(6)において、ディプロイメソッド141Aは、ダウンロード対象のパッケージソフト141と、コントローラ100に既にダウンロードされているパッケージソフト(以下、「既存のパッケージソフト」ともいう。)との間の依存関係をチェックする。
より具体的には、ディプロイメソッド141Aは、パッケージソフトの一覧テーブル160を参照して、既存のパッケージソフトの一覧を取得する。その後、ディプロイメソッド141Aは、ダウンロード対象のパッケージソフト141と、既存のパッケージソフトとの間の依存関係をチェックする。ダウンロード対象のパッケージソフト141が、既存のパッケージソフトと共存できない関係にある場合、パッケージソフト"X"をコントローラ100に配置できないと判断する。
ステップ(7)において、ディプロイメソッド141Aは、各種ファイル(たとえば、soファイル)をプロセッサ102に配置する。
ステップ(8)において、ディプロイメソッド141Aは、自身の情報を記述したDBファイル「Package_X.db」をプロセッサ102に配置する。当該DBファイルの一例が上述の詳細情報161〜163である。
ステップ(9)において、ディプロイメソッド141Aは、各種ファイルの配置が終了したことに基づいて、パッケージ管理モジュール150にパッケージソフト"X"を登録する。
ステップ(10)において、パッケージ管理モジュール150は、新たに配置したパッケージソフト"X"の情報を、パッケージソフトの一覧テーブル160に追加する。
ステップ(11)において、パッケージ管理モジュール150は、パッケージ変更/追加の記録を変更履歴165に保存する。
なお、図14および図15では、パッケージソフト141をメモリカード200Cからダウンロードする場合のディプロイ処理について説明を行ったが、パッケージソフト141をメモリカード200C以外の外部機器200からパッケージソフト141をダウンロードする場合であっても、図14および図15に示されるディプロイ処理が適用され得る。
<I.パッケージソフト141の移動処理>
コントローラ100にダウンロードされたパッケージソフト141は、外部機器200に移され得る。このとき、パッケージソフト141の実行権139を含むライセンス権142や、ライセンスのチェックを行うための各種機能モジュールがコントローラ100から削除される。これにより、実行権139やライセンス権142が複数存在することがなくなり、ライセンス権142が一意に管理され得る。
以下では、図16を参照して、パッケージソフト141の移動処理について説明する。図16は、コントローラ100とメモリカード200Cとの間でパッケージソフト141を移している様子を示す図である。
図16(A)には、パッケージソフト141をコントローラ100にダウンロードする前の様子が示されている。コントローラ100は、自身の固有情報143Aを格納している。メモリカード200Cは、ダウンロード対象のパッケージソフト141と、その実行権139を含むライセンス権142と、上述の生成モジュール154と、上述のチェックモジュール156と、メモリカード200Cの固有情報243Aとを格納している。
図16(B)には、パッケージソフト141をメモリカード200Cからコントローラ100にダウンロードする場合の様子が示されている。パッケージソフト141が移されたことに基づいて、パッケージソフト141と、その実行権139を含むライセンス権142と、生成モジュール154と、チェックモジュール156とがメモリカード200Cから削除される。メモリカード200Cからコントローラ100へのパッケージソフト141の移動機能は、たとえば、パッケージソフト141自体に組み込まれおり、コントローラ100のプロセッサ102によって実行される。
図16(C)には、パッケージソフト141をコントローラ100からメモリカード200Cに移す場合の様子が示されている。パッケージソフト141が移されたことに基づいて、パッケージソフト141と、その実行権139を含むライセンス権142と、生成モジュール154と、チェックモジュール156とがコントローラ100から削除される。コントローラ100からメモリカード200Cへのパッケージソフト141の移動機能は、たとえば、パッケージソフト141自体に組み込まれおり、コントローラ100のプロセッサ102によって実行される。
なお、図16では、コントローラ100とメモリカード200Cとの間におけるパッケージソフト141の移動処理について説明を行ったが、メモリカード200C以外の外部機器200とコントローラ100との間におけるパッケージソフト141の移動時においても移動機能は応用され得る。
<J.変形例2>
上述では、パッケージソフト141がダウンロード販売される例、および、パッケージソフト141がメモリカード200Cに格納された上で販売される例について説明を行ったが、パッケージソフト141の販売形態はこれらに限定されない。一例として、パッケージソフト141は、BTO販売されてもよい。
以下では、図17を参照して、パッケージソフト141の販売形態のさらに他の例について説明する。図17は、パッケージソフト141をBTO販売する仕組みを示す図である。
図17の例では、会社「A」〜会社「C」が示されている。会社「A」は、パッケージソフト141の管理を行うサーバ200Bを有する。会社「B」は、パッケージソフト141を販売する会社である。会社「C」は、会社「B」や他の会社からパッケージソフト141やコントローラ100などを購入し、これらを組み合わせたシステムを販売する会社である。
より具体的な販売形態として、ステップ(1)において、会社「B」の設計者は、開発支援装置200Aを用いて、販売対象のパッケージソフト141を設計する。
ステップ(2)において、パッケージソフト141の販売元である会社「B」は、販売対象のパッケージソフト141の登録を会社「A」に対して行う。このとき、販売対象のパッケージソフト141に関するパッケージ情報が会社「A」のサーバ200Bに送信される。サーバ200Bは、受信したパッケージ情報に基づいて、パッケージソフト141の登録処理を行う。
ステップ(3)において、会社「C」の購入者は、会社「B」のウェブサイトなどにアクセスし、ダウンロード対象のパッケージソフト141を選択し、購入手続きを行なう。このとき、ダウンロード先のコントローラ100の固有情報が入力される。購入手続きが完了すると、ダウンロード先のコントローラ100を一意に識別するための固有情報からライセンス権142が生成され、購入されたパッケージソフト141とともに会社「C」に送信される。
ステップ(4)において、購入対象のパッケージソフト141とライセンス権142とがコントローラ100にインストールされる。
ステップ(5)において、会社「C」は、パッケージソフト141とライセンス権142とがインストールされたコントローラ100を他の会社に販売する。
<K.まとめ>
以上のように、コントローラ100は、パッケージソフト141のダウンロード時などにコントローラ100の固有情報143Aからパッケージソフト141の実行権139を生成しておく。その後、コントローラ100は、パッケージソフト141の実行時やコントローラ100の起動時などにおいて実行権139から固有情報143Bを生成する。生成された固有情報143Bが本来の固有情報143Aと一致しないときに、コントローラ100は、パッケージソフト141の利用を禁止する。
これにより、たとえば、パッケージソフト141がダウンロード時とは異なるコントローラに不正に移動された場合に、パッケージソフト141の利用することができる。また、ライセンスをチェックする仕組みがパッケージソフト141に組み込まれていることで、ライセンスのチェック機能をコントローラ100に予め搭載する必要がなくなる。
<L.付記>
以上のように、本実施形態は以下のような開示を含む。
[構成1]
制御対象を制御するためのコントローラ(100)であって、
前記コントローラ(100)で利用されるソフトウェア(141)を外部機器(200)から取得するための取得部(101)と、
前記ソフトウェア(141)を実行するためのプロセッサ(102)とを備え、
前記ソフトウェア(141)は、
前記コントローラ(100)または前記外部機器(200)を一意に識別するための第1固有情報から前記ソフトウェア(141)の実行権(139)を生成するための生成モジュール(154)と、
前記実行権(139)の生成後の所定のタイミングにおいて前記実行権(139)から第2固有情報を生成し、当該第2固有情報が前記第1固有情報と一致しないときに、前記ソフトウェア(141)の利用を禁止するためのチェックモジュール(156)とを含む、コントローラ。
[構成2]
前記外部機器(200)は、前記コントローラ(100)と通信可能に構成されている通信機器を含み、
前記取得部(101)は、前記コントローラ(100)と通信接続された前記通信機器から前記ソフトウェア(141)をダウンロードする、構成1に記載のコントローラ。
[構成3]
前記外部機器(200)は、前記コントローラ(100)に電気的に接続され得るメモリカードを含み、
前記取得部(101)は、前記コントローラ(100)に電気的に接続されたメモリカードから前記ソフトウェア(141)を取得する、構成1または2に記載のコントローラ。
[構成4]
前記プロセッサ(102)は、前記取得したソフトウェア(141)を前記コントローラ(100)から前記外部機器(200)に移すときに、前記実行権(139)を削除する、構成1〜3のいずれか1項に記載のコントローラ。
[構成5]
前記プロセッサ(102)は、前記取得したソフトウェア(141)を前記コントローラ(100)から前記外部機器(200)に移すときに、前記生成モジュール(154)および前記チェックモジュール(156)を削除する、構成1〜4のいずれか1項に記載のコントローラ。
[構成6]
前記外部機器(200)から取得され得るソフトウェア(141)は、前記コントローラ(100)のファームウェア上で動作するプログラムと、当該ファームウェアに追加されるプログラムと、前記コントローラ(100)で利用され得るデータとの少なくとも1つを含む、構成1〜5のいずれか1項に記載のコントローラ。
[構成7]
制御対象を制御するコントローラ(100)で利用されるソフトウェア(141)のライセンスの管理方法であって、
前記コントローラ(100)で利用されるソフトウェア(141)と、当該ソフトウェア(141)についての第1ライセンス情報とを外部機器(200)から取得するステップと、
前記ソフトウェア(141)を実行するステップとを備え、
前記実行するステップは、
前記コントローラ(100)または前記外部機器(200)を一意に識別するための第1固有情報から前記ソフトウェア(141)の実行権(139)を生成するステップと、
前記実行権(139)の生成後の所定のタイミングにおいて前記実行権(139)から第2固有情報を生成し、当該第2固有情報が前記第1固有情報と一致しないときに、前記ソフトウェア(141)の利用を禁止するステップとを含む、管理方法。
[構成8]
制御対象を制御するコントローラ(100)で利用されるソフトウェア(141)のライセンスの管理プログラムであって、
前記管理プログラムは、前記コントローラ(100)に、
制御対象を制御するコントローラ(100)で利用されるソフトウェア(141)を外部機器(200)から取得するステップと、
前記ソフトウェア(141)を実行するステップとを実行させ、
前記実行するステップは、
前記コントローラ(100)または前記外部機器(200)を一意に識別するための第1固有情報から前記ソフトウェア(141)の実行権(139)を生成するステップと、
前記実行権(139)の生成後の所定のタイミングにおいて前記実行権(139)から第2固有情報を生成し、当該第2固有情報が前記第1固有情報と一致しないときに、前記ソフトウェア(141)の利用を禁止するステップとを含む、管理プログラム。
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。
10 FAシステム、100,100A,100B コントローラ、101 取得部、101A,211 通信インターフェイス、101B メモリカードインターフェイス、102 プロセッサ、104 チップセット、106,204 主メモリ、110,208 記憶装置、122 内部バスコントローラ、124 フィールドバスコントローラ、126 I/Oユニット、130 制御プログラム、139 実行権、140 システムプログラム、141 パッケージソフト、141A ディプロイメソッド、142 ライセンス権、143A,143B,243A 固有情報、145 ユーザプログラム、145A シーケンスプログラム、145B モーションプログラム、150 パッケージ管理モジュール、154 生成モジュール、155 ソフトウェア管理テーブル、156 チェックモジュール、156A 復号化モジュール、156B 比較モジュール、160 一覧テーブル、160A,160B,160C,160D,160E,160F,161A,161B,161C,161D,162A,162B,162C,162D,163A,163B,163C,163D カラム、161,162,163 詳細情報、165 変更履歴、200 外部機器、200A 開発支援装置、200B サーバ、200C メモリカード、202 制御装置、208A 開発支援プログラム、214 インターフェイス、215 操作部、220 表示インターフェイス、221 表示部、225 内部バス、300 駆動機器、300A ロボットコントローラ、300B サーボドライバ、301A アームロボット、301B サーボモータ。

Claims (8)

  1. 制御対象を制御するためのコントローラであって、
    前記コントローラで利用されるソフトウェアを外部機器から取得するための取得部と、
    前記ソフトウェアを実行するためのプロセッサとを備え、
    前記ソフトウェアは、
    前記コントローラまたは前記外部機器を一意に識別するための第1固有情報から前記ソフトウェアの実行権を生成するための生成モジュールと、
    前記実行権の生成後の所定のタイミングにおいて前記実行権から第2固有情報を生成し、当該第2固有情報が前記第1固有情報と一致しないときに、前記ソフトウェアの利用を禁止するためのチェックモジュールとを含む、コントローラ。
  2. 前記外部機器は、前記コントローラと通信可能に構成されている通信機器を含み、
    前記取得部は、前記コントローラと通信接続された前記通信機器から前記ソフトウェアをダウンロードする、請求項1に記載のコントローラ。
  3. 前記外部機器は、前記コントローラに電気的に接続され得るメモリカードを含み、
    前記取得部は、前記コントローラに電気的に接続されたメモリカードから前記ソフトウェアを取得する、請求項1または2に記載のコントローラ。
  4. 前記プロセッサは、前記取得したソフトウェアを前記コントローラから前記外部機器に移すときに、前記実行権を削除する、請求項1〜3のいずれか1項に記載のコントローラ。
  5. 前記プロセッサは、前記取得したソフトウェアを前記コントローラから前記外部機器に移すときに、前記生成モジュールおよび前記チェックモジュールを削除する、請求項1〜4のいずれか1項に記載のコントローラ。
  6. 前記外部機器から取得され得るソフトウェアは、前記コントローラのファームウェア上で動作するプログラムと、当該ファームウェアに追加されるプログラムと、前記コントローラで利用され得るデータとの少なくとも1つを含む、請求項1〜5のいずれか1項に記載のコントローラ。
  7. 制御対象を制御するコントローラで利用されるソフトウェアのライセンスの管理方法であって、
    前記コントローラで利用されるソフトウェアと、当該ソフトウェアについての第1ライセンス情報とを外部機器から取得するステップと、
    前記ソフトウェアを実行するステップとを備え、
    前記実行するステップは、
    前記コントローラまたは前記外部機器を一意に識別するための第1固有情報から前記ソフトウェアの実行権を生成するステップと、
    前記実行権の生成後の所定のタイミングにおいて前記実行権から第2固有情報を生成し、当該第2固有情報が前記第1固有情報と一致しないときに、前記ソフトウェアの利用を禁止するステップとを含む、管理方法。
  8. 制御対象を制御するコントローラで利用されるソフトウェアのライセンスの管理プログラムであって、
    前記管理プログラムは、前記コントローラに、
    制御対象を制御するコントローラで利用されるソフトウェアを外部機器から取得するステップと、
    前記ソフトウェアを実行するステップとを実行させ、
    前記実行するステップは、
    前記コントローラまたは前記外部機器を一意に識別するための第1固有情報から前記ソフトウェアの実行権を生成するステップと、
    前記実行権の生成後の所定のタイミングにおいて前記実行権から第2固有情報を生成し、当該第2固有情報が前記第1固有情報と一致しないときに、前記ソフトウェアの利用を禁止するステップとを含む、管理プログラム。
JP2018045097A 2018-03-13 2018-03-13 コントローラ、ライセンスの管理方法、およびライセンスの管理プログラム Pending JP2019159752A (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2018045097A JP2019159752A (ja) 2018-03-13 2018-03-13 コントローラ、ライセンスの管理方法、およびライセンスの管理プログラム
CN201980004165.7A CN111095243A (zh) 2018-03-13 2019-01-17 控制器、许可证的管理方法和许可证的管理程序
US16/643,831 US20210110006A1 (en) 2018-03-13 2019-01-17 Controller, Method for Managing License, and Program for Managing License
PCT/JP2019/001250 WO2019176274A1 (ja) 2018-03-13 2019-01-17 コントローラ、ライセンスの管理方法、およびライセンスの管理プログラム
EP19767145.6A EP3767499A4 (en) 2018-03-13 2019-01-17 CONTROL UNIT, LICENSE MANAGEMENT METHOD AND LICENSE MANAGEMENT PROGRAM

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018045097A JP2019159752A (ja) 2018-03-13 2018-03-13 コントローラ、ライセンスの管理方法、およびライセンスの管理プログラム

Publications (1)

Publication Number Publication Date
JP2019159752A true JP2019159752A (ja) 2019-09-19

Family

ID=67906577

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018045097A Pending JP2019159752A (ja) 2018-03-13 2018-03-13 コントローラ、ライセンスの管理方法、およびライセンスの管理プログラム

Country Status (5)

Country Link
US (1) US20210110006A1 (ja)
EP (1) EP3767499A4 (ja)
JP (1) JP2019159752A (ja)
CN (1) CN111095243A (ja)
WO (1) WO2019176274A1 (ja)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07262001A (ja) * 1994-03-18 1995-10-13 Fujitsu Ltd 不正使用防止方法
JP2007148806A (ja) * 2005-11-28 2007-06-14 Toshiba Corp アプリケーション起動制限方法及びアプリケーション起動制限プログラム
JP2011165041A (ja) * 2010-02-12 2011-08-25 Mitsubishi Electric Corp 制御装置及び管理装置
JP2013171346A (ja) * 2012-02-17 2013-09-02 Fuji Electric Co Ltd 制御システム、制御装置及びプログラム実行制御方法
JP2013239036A (ja) * 2012-05-15 2013-11-28 Fuji Electric Co Ltd 制御システム、制御装置及びプログラム実行制御方法
WO2015136972A1 (ja) * 2014-03-14 2015-09-17 オムロン株式会社 制御装置及び制御装置システム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4688169A (en) * 1985-05-30 1987-08-18 Joshi Bhagirath S Computer software security system
DE10155752A1 (de) * 2001-11-14 2003-05-22 Siemens Ag Lizenzierungsverfahren
US20020091645A1 (en) * 2000-12-20 2002-07-11 Kagemoto Tohyama Software licensing system
JP6161314B2 (ja) * 2013-02-18 2017-07-12 キヤノン株式会社 画像形成装置、制御方法およびコンピュータプログラム
WO2015013474A2 (en) * 2013-07-25 2015-01-29 Siemens Healthcare Diagnostics Inc. Anti-piracy protection for software
US10296241B2 (en) 2014-03-14 2019-05-21 Omron Corporation Control device, control system, control method for control device, and control method for control system
CN106062759B (zh) * 2014-03-14 2019-04-02 欧姆龙株式会社 许可信息管理装置、许可信息管理方法及计算机可读存储介质
CN106068481B (zh) 2014-03-14 2020-03-10 欧姆龙株式会社 控制设备、控制系统、支援装置以及控制设备的维护的管理方法
US9953144B2 (en) * 2014-03-27 2018-04-24 Nxp B.V. Constellation based device binding
JP2015203901A (ja) * 2014-04-11 2015-11-16 キヤノン株式会社 管理システム、情報処理装置、管理サーバ、それらの制御方法、およびプログラム
US10372104B2 (en) * 2015-02-27 2019-08-06 Rockwell Automation Technologies, Inc. Industrial automation control system content protection
US10520210B2 (en) * 2016-10-31 2019-12-31 Johnson Controls Technology Company Building automation systems for online, offline, and hybrid licensing of distributed edge devices

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07262001A (ja) * 1994-03-18 1995-10-13 Fujitsu Ltd 不正使用防止方法
JP2007148806A (ja) * 2005-11-28 2007-06-14 Toshiba Corp アプリケーション起動制限方法及びアプリケーション起動制限プログラム
JP2011165041A (ja) * 2010-02-12 2011-08-25 Mitsubishi Electric Corp 制御装置及び管理装置
JP2013171346A (ja) * 2012-02-17 2013-09-02 Fuji Electric Co Ltd 制御システム、制御装置及びプログラム実行制御方法
JP2013239036A (ja) * 2012-05-15 2013-11-28 Fuji Electric Co Ltd 制御システム、制御装置及びプログラム実行制御方法
WO2015136972A1 (ja) * 2014-03-14 2015-09-17 オムロン株式会社 制御装置及び制御装置システム

Also Published As

Publication number Publication date
WO2019176274A1 (ja) 2019-09-19
US20210110006A1 (en) 2021-04-15
EP3767499A1 (en) 2021-01-20
CN111095243A (zh) 2020-05-01
EP3767499A4 (en) 2022-01-12

Similar Documents

Publication Publication Date Title
JP4865634B2 (ja) プログラム編集支援装置、コンピュータプログラム、プログラム編集支援方法及びplcシステム
EP3059647B1 (en) Techniques for improving industrial control systems
JP6520545B2 (ja) サポート装置およびサポートプログラム
JP6945646B2 (ja) 産業用プログラマブルロジックコントローラの、回復力を有しているフェイルオーバー
CN103838584A (zh) 一种移动终端应用的开发方法及装置
JP6737298B2 (ja) コントローラ、制御方法、および制御プログラム
JP2014146070A (ja) 制御装置、制御方法、およびプログラム
JP6866663B2 (ja) プログラマブルコントローラシステム、プログラマブルコントローラ、支援装置、hci装置、二重化プログラマブルコントローラシステム
US11165745B2 (en) Control system, controller, and control method
CN111542790B (zh) 用于处理软件项目的方法
JP6135247B2 (ja) 情報処理装置および情報処理プログラム
WO2019176486A1 (ja) 制御システム、コントローラ、および制御方法
JP7063009B2 (ja) 表示装置、画面生成方法、および画面生成プログラム
WO2019176274A1 (ja) コントローラ、ライセンスの管理方法、およびライセンスの管理プログラム
CN111052010B (zh) 控制系统、开发辅助装置和存储介质
JP7067273B2 (ja) サポート装置、制御システム、および開発支援プログラム
JP6455096B2 (ja) コントロールシステム、その支援装置、プログラマブルコントロール装置
JP6119452B2 (ja) プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ、プログラム
WO2019171794A1 (ja) サポート装置およびサポートプログラム
US20070174202A1 (en) System and method for enabling software programs which need to be enabled
EP3770703B1 (en) Method for configuring an industrial automation component, industrial automation component, computer program and computer-readable medium
CN116157774A (zh) 用于在云计算环境中提供工业设备的工程的方法和系统
JP2009020716A (ja) ツール装置及びメッセージ送信プログラムの作成方法
TWI774469B (zh) 程式編譯管理系統與其作業方法
US11928456B2 (en) Software upgrade system, software upgrade method and non-transitory recording medium

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200306

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200707

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200902

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20210126