IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オムロン株式会社の特許一覧

特開2022-162327制御装置、制御システム、管理方法およびプログラム
<>
  • 特開-制御装置、制御システム、管理方法およびプログラム 図1
  • 特開-制御装置、制御システム、管理方法およびプログラム 図2
  • 特開-制御装置、制御システム、管理方法およびプログラム 図3
  • 特開-制御装置、制御システム、管理方法およびプログラム 図4
  • 特開-制御装置、制御システム、管理方法およびプログラム 図5
  • 特開-制御装置、制御システム、管理方法およびプログラム 図6
  • 特開-制御装置、制御システム、管理方法およびプログラム 図7
  • 特開-制御装置、制御システム、管理方法およびプログラム 図8
  • 特開-制御装置、制御システム、管理方法およびプログラム 図9
  • 特開-制御装置、制御システム、管理方法およびプログラム 図10
  • 特開-制御装置、制御システム、管理方法およびプログラム 図11
  • 特開-制御装置、制御システム、管理方法およびプログラム 図12
  • 特開-制御装置、制御システム、管理方法およびプログラム 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022162327
(43)【公開日】2022-10-24
(54)【発明の名称】制御装置、制御システム、管理方法およびプログラム
(51)【国際特許分類】
   G06F 21/51 20130101AFI20221017BHJP
   G06F 21/57 20130101ALI20221017BHJP
   G05B 19/05 20060101ALI20221017BHJP
【FI】
G06F21/51
G06F21/57 370
G05B19/05 D
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2021067106
(22)【出願日】2021-04-12
(71)【出願人】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】片岡 仁之
【テーマコード(参考)】
5H220
【Fターム(参考)】
5H220AA04
5H220BB09
5H220CX02
5H220JJ12
5H220KK06
5H220LL03
5H220LL04
5H220MM07
(57)【要約】
【課題】ユーザの負担を軽減しつつ制御装置のセキュリティを担保する。
【解決手段】制御エンジン142が実行する格納部の第1のユーザプログラムおよび第1の設定情報を、それぞれ、受付けた第2のユーザプログラムおよび第2の設定情報を用いて変更する場合、セキュリティエンジン230は、第1のユーザプログラムおよび第2のユーザプログラムの同一性の検証と、第2の設定情報が示す設定の妥当性の評価を実施し、この検証結果と評価とから、上記の変更の実施を許可または禁止する。
【選択図】図1
【特許請求の範囲】
【請求項1】
対象の制御に関する第1のユーザプログラムと、前記制御に関する設定を示す第1の設定情報を格納する格納部と、
前記対象の制御に関する第2のユーザプログラムと、前記制御に関する設定を示す第2の設定情報とを受付ける受付部と、
前記格納部の前記第1のユーザプログラムおよび前記第1の設定情報を、それぞれ、前記第2のユーザプログラムおよび前記第2の設定情報を用いて変更する変更部と、
前記第1の設定情報を用いて前記第1のユーザプログラムを実行する制御エンジンと、
前記第1の設定情報と前記第1のユーザプログラムのセキュリティを管理するセキュリティエンジンと、を備え、
前記セキュリティエンジンは、
前記第1のユーザプログラムおよび前記第2のユーザプログラムについて、プログラムの同一性を満たすかを検証するプログラム検証部と、
前記第2の設定情報が示す前記設定の妥当性を評価する評価部と、
前記プログラム検証部の検証結果と前記評価部の評価から、前記変更部に前記変更の実施を許可または禁止する変更制御部と、を有する、制御装置。
【請求項2】
前記評価部は、
前記第2の設定情報が前記対象の制御に関する制約条件を満たすかを検査する検査部を有する、請求項1に記載の制御装置。
【請求項3】
前記制御装置は、さらに、
前記対象が備えられる製造ラインの段取り換えの時期を含む生産計画情報が示す時間情報に基づき、前記変更の実施を許可または禁止する、請求項1または2に記載の制御装置。
【請求項4】
前記プログラム検証部は、
前記第1のユーザプログラムおよび前記第2のユーザプログラムそれぞれから、当該プログラムの同一性を検証するプログラム検証コードを生成し、プログラム検証コードどうしの照合に基づき前記同一性を検証する、請求項1から3のいずれか1項に記載の制御装置。
【請求項5】
前記プログラム検証コードは、前記第1のユーザプログラムおよび前記第2のユーザプログラムそれぞれから生成されるハッシュ値を含む、請求項4に記載の制御装置。
【請求項6】
前記変更部によって前記変更が実施されたとき、前記第2のユーザプログラムから生成された前記ハッシュ値を、変更後の前記第1のユーザプログラムのハッシュ値として保存する、請求項5に記載の制御装置。
【請求項7】
前記制御装置は、
前記セキュリティエンジンを有するセキュリティユニットと、
前記セキュリティユニットとは独立したユニットであって、前記制御エンジンを有する制御ユニットとを備える、請求項1から6のいずれか1項に記載の制御装置。
【請求項8】
ネットワーク接続される請求項1から7のいずれか1項に記載の複数の制御装置を備える制御システムであって、
前記複数の制御装置のうちの1つの制御装置が、他の前記制御装置についての前記セキュリティエンジンの機能を備える、制御システム。
【請求項9】
制御装置のセキュリティを管理する管理方法であって、
前記制御装置は、
対象の制御に関する第1のユーザプログラムと、前記制御に関する設定を示す第1の設定情報を格納する格納部と、
前記対象の制御に関する第2のユーザプログラムと、前記制御に関する設定を示す第2の設定情報とを受付ける受付部と、
前記第1の設定情報を用いて前記第1のユーザプログラムを実行する制御エンジンと、を備え、
前記管理方法は、
前記第1のユーザプログラムおよび前記第2のユーザプログラムについて、プログラムの同一性を満たすかを検証するステップと、
前記第2の設定情報が示す前記設定の妥当性を評価するステップと、
前記検証するステップにおける検証結果と前記評価するステップにおける評価に基づき、前記格納部の前記第1のユーザプログラムおよび前記第1の設定情報を、それぞれ、前記第2のユーザプログラムおよび前記第2の設定情報を用いて変更する変更処理を、前記制御装置に実施させるか否かを判定するステップと、を有する、管理方法。
【請求項10】
請求項9に記載の前記管理方法を、コンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、制御装置、制御システム、管理方法およびプログラムに関する。
【背景技術】
【0002】
様々な製造現場において、PLC(Programmable Logic Controller)などの制御装置が導入されている。このような制御装置は、一種のコンピュータであり、製造装置または製造設備などの制御対象に応じて設計された制御プログラムを、制御パラメータ等を含む設定情報に基づき実行する。
【0003】
近年、制御装置のIoT化が進んでおり、制御装置をインターネットやクラウド等の外部装置または外部ネットワークに接続可能な環境が提供されつつある。このような環境においては、制御装置の制御プログラムを外部装置によって書換え可能であるから、その書き換えが、悪意の改ざんである場合は、深刻なインシデントが引き起こされるおそれがある。
【0004】
特開2008-065678号公報(特許文献1)は、このようなリスクに対処する一の方法を開示する。具体的には、特許文献1は、PLCが、制御プログラムを暗号化したプログラムが設備機器に固有なプログラムであるか否かを判断し、設備機器に固有なプログラムであれば、当該プログラムから制御プログラムを復号し、制御プログラムを実行して設備機器を制御する方法を開示する。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2008-065678号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1で示された方法では、PLCは、予め入力された識別データと暗号ルールとを格納する記憶手段を備え、当該識別データを用いて、暗号化したプログラムが設備機器に固有なプログラムであるか否かを判断する。暗号化したプログラムが設備機器に固有なプログラムであると判断された場合、PLCは、暗号ルールに従って、暗号化したプログラムを復号することにより制御プログラムを得て、当該制御プログラムを利用する。そのため、制御プログラムを悪意の改ざんから保護するために、すなわち正当なユーザによる善意の改ざんのみを許容するために、識別データおよび暗号ルールを準備する必要があり、ユーザに負担をかけていた。
【0007】
本開示は、ユーザの負担を軽減しつつ制御装置のセキュリティを担保できることを一つの目的とする。
【課題を解決するための手段】
【0008】
本開示の一例に従う制御装置は、対象の制御に関する第1のユーザプログラムと、制御に関する設定を示す第1の設定情報を格納する格納部と、対象の制御に関する第2のユーザプログラムと、制御に関する設定を示す第2の設定情報とを受付ける受付部と、格納部の第1のユーザプログラムおよび第1の設定情報を、それぞれ、第2のユーザプログラムおよび第2の設定情報を用いて変更する変更部と、第1の設定情報を用いて第1のユーザプログラムを実行する制御エンジンと、第1の設定情報と第1のユーザプログラムのセキュリティを管理するセキュリティエンジンと、を備え、セキュリティエンジンは、第1のユーザプログラムおよび第2のユーザプログラムについて、プログラムの同一性を満たすかを検証するプログラム検証部と、第2の設定情報が示す設定の妥当性を評価する評価部と、プログラム検証部の検証結果と評価部の評価から、変更部に前記変更の実施を許可または禁止する変更制御部と、を有する。
【0009】
上述の開示によれば、制御エンジンが実行する格納部の第1のユーザプログラムおよび第1の設定情報を、それぞれ、受付けた第2のユーザプログラムおよび第2の設定情報を用いて変更する場合、セキュリティエンジンは、第1のユーザプログラムおよび第2のユーザプログラムの同一性の検証と、第2の設定情報が示す設定の妥当性の評価を実施し、この検証結果と評価とから、上記の変更の実施を許可または禁止する。
【0010】
したがって、ユーザに特別な入力を要求することなく、制御エンジンが実行する第1のユーザプログラムおよび第1の設定情報の変更の禁止または許可を制御できる。その結果、ユーザの負担を軽減しつつ、制御プログラムまたは設定情報が不適切に改ざんされることによるインシデント発生を回避できて、制御装置のセキュリティを担保できる。
【0011】
上述の開示において、評価部は、第2の設定情報が対象の制御に関する制約条件を満たすかを検査する検査部を有する。
【0012】
上述の開示によれば、第2の設定情報が示す設定の妥当性の評価を、第2の設定情報が対象の制御に関する制約条件を満たすかを検査することで実現できる。
【0013】
上述の開示において、制御装置は、さらに、対象が備えられる製造ラインの段取り替えの時期を含む生産計画情報が示す時間情報に基づき、上記の変更の実施を許可または禁止する。
【0014】
上述の開示によれば、制御プログラムまたは設定情報が、生産計画情報とは全く無関係に改ざんされることによるインシデントの発生を防止できる。
【0015】
上述の開示において、プログラム検証部は、第1のユーザプログラムおよび第2のユーザプログラムそれぞれから、当該プログラムの同一性を検証するプログラム検証コードを生成し、プログラム検証コードどうしの照合に基づき同一性を検証する。
【0016】
上述の開示によれば、プログラムの検証を、各プログラム自体から生成できる検証コードを用いて実施できる。
【0017】
上述の開示において、上記のプログラム検証コードは、第1のユーザプログラムおよび第2のユーザプログラムそれぞれから生成されるハッシュ値を含む。
【0018】
上述の開示によれば、検証コードとして、ハッシュ値を用いることができる。
上述の開示において、変更部によって変更が実施されたとき、第2のユーザプログラムから生成されたハッシュ値を、変更後の第1のユーザプログラムのハッシュ値として保存する。
【0019】
上述の開示によれば、検証のために第2のユーザプログラムから生成されたハッシュ値を、変更部によって変更がなされたときは、変更後の第1のユーザプログラムのハッシュ値として保存できる。これにより、その後の検証においては、第1のユーザプログラムからハッシュ値を生成せずに、この保存されたハッシュ値を用いることができる。
【0020】
上述の開示において、制御装置は、セキュリティエンジンを有するセキュリティユニットと、セキュリティユニットとは独立したユニットであって、制御エンジンを有する制御ユニットとを備える。
【0021】
上述の開示によれば、セキュリティエンジンを、制御エンジンの制御ユニットとは独立したユニットとして提供することができる。
【0022】
本開示の別の一例において、ネットワーク接続される上記の複数の制御装置を備える制御システムでは、複数の制御装置のうちの1つの制御装置が、他の制御装置についての上記のセキュリティエンジンの機能を備える。
【0023】
本開示の別の一例によれば、ネットワーク接続された複数の制御装置のうちの1の制御装置は、全ての制御装置についての、上記に述べたセキュリティエンジンの機能を提供できる。
【0024】
本開示の別の一例において、制御装置のセキュリティを管理する管理方法が提供される。制御装置は、対象の制御に関する第1のユーザプログラムと、制御に関する設定を示す第1の設定情報を格納する格納部と、対象の制御に関する第2のユーザプログラムと、制御に関する設定を示す第2の設定情報とを受付ける受付部と、第1の設定情報を用いて第1のユーザプログラムを実行する制御エンジンと、を備える。管理方法は、第1のユーザプログラムおよび第2のユーザプログラムについて、プログラムの同一性を満たすかを検証するステップと、第2の設定情報が示す設定の妥当性を評価するステップと、検証するステップにおける検証結果と評価するステップにおける評価に基づき、格納部の第1のユーザプログラムおよび第1の設定情報を、それぞれ、第2のユーザプログラムおよび第2の設定情報を用いて変更する変更処理を、制御装置に実施させるか否かを判定するステップと、を有する。
【0025】
上述の開示によれば、制御エンジンが実行する格納部の第1のユーザプログラムおよび第1の設定情報を、それぞれ、受付けた第2のユーザプログラムおよび第2の設定情報を用いて変更する場合、第1のユーザプログラムおよび第2のユーザプログラムの同一性の検証と、第2の設定情報が示す設定の妥当性の評価を実施し、この検証結果と評価とから、上記の変更の実施を許可または禁止できる。
【0026】
したがって、ユーザに特別な入力を要求することなく、制御エンジンが実行する第1のユーザプログラムおよび第1の設定情報の変更の禁止または許可を制御できる。その結果、ユーザの負担を軽減しつつ、制御プログラムまたは設定情報が不適切に改ざんされることによるインシデント発生を回避できて、制御装置のセキュリティを担保できる。
【0027】
本開示の別の一例において、上記の管理方法を、コンピュータに実行させるプログラムが提供される。
【0028】
この開示によっても、制御エンジンが実行する格納部の第1のユーザプログラムおよび第1の設定情報を、それぞれ、受付けた第2のユーザプログラムおよび第2の設定情報を用いて変更する場合、第1のユーザプログラムおよび第2のユーザプログラムの同一性の検証と、第2の設定情報が示す設定の妥当性の評価を実施し、この検証結果と評価とから、上記の変更の実施を許可または禁止できる。
【0029】
したがって、ユーザに特別な入力を要求することなく、制御エンジンが実行する第1のユーザプログラムおよび第1の設定情報の変更の禁止または許可を制御できる。その結果、ユーザの負担を軽減しつつ、制御プログラムまたは設定情報が不適切に改ざんされることによるインシデント発生を回避して、制御装置のセキュリティを担保できる。
【発明の効果】
【0030】
本開示によれば、ユーザの負担を軽減しつつ制御装置のセキュリティを担保できる。
【図面の簡単な説明】
【0031】
図1】実施の形態に係る制御装置1を適用した場面の一例を示す図である。
図2】本実施の形態に係る制御装置1を含む制御システム10の全体構成を示す模式図である。
図3】本実施の形態に従う制御装置1を構成する制御ユニット100のハードウェア構成例を示す模式図である。
図4】本実施の形態に従う制御装置1を構成するセキュリティユニット200のハードウェア構成例を示す模式図である。
図5】本実施の形態に係るサポート装置520のハードウェア構成を概略的に示す図である。
図6】本実施の形態に係る生産計画情報と機械制約情報との関係を説明する図である。
図7】本実施の形態に係る制御プログラム140および機械制約情報53のインストール処理の概略フローチャートである。
図8】本実施の形態に係る制御プログラムの改ざんの態様を模式的に例示する図である。
図9】本実施の形態に係る制御プログラムの改ざんの態様を模式的に例示する図である。
図10】本実施の形態に係る制御プログラムの改ざんの態様を模式的に例示する図である。
図11】本実施の形態に係る制御プログラムの改ざんの態様を模式的に例示する図である。
図12】本実施の形態に係る制御プログラムの改ざんの態様を模式的に例示する図である。
図13】本実施の形態に係る制御プログラムの改ざんの態様を模式的に例示する図である。
【発明を実施するための形態】
【0032】
以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。
【0033】
<A.適用例>
まず、図1を参照して、本発明が適用される場面の一例について説明する。図1は、実施の形態に係る制御装置1を適用した場面の一例を示す図である。制御装置1は、格納されている制御プログラムを含むユーザプログラムを、制御パラメータを含む設定情報を用いて実行することにより、制御対象の一例である製造設備または生産設備のフィールド機器90を制御する。
【0034】
本実施の形態では、制御装置1は、ユーザ外部から受付けるユーザプログラムおよび設定情報を用いて、格納されているユーザプログラムおよび設定情報を変更することができる。製造現場の保守者は、ユーザプログラムの変更に整合するように、製造ラインに備えられる実機のフィールド機器90の属性に基づく設定情報を仕様に従い変更し、変更後の設定情報を用いて制御装置1に格納されている設定情報を変更する。対照的に、保守者等の善意のユーザでない、悪意の者は実機のフィールド機器90の属性または仕様を知りえないから、当該悪意の者からの設定情報は当該属性または仕様に反した情報となる。このような背景を踏まえて、制御装置1は、格納されているユーザプログラムが、悪意の改ざんまたは善意の改ざんのいずれのルートで実施されようとしているかを、ユーザプログラムとともに受付ける設定情報を評価して判定できる。
【0035】
より具体的には、制御装置1は、格納されているユーザプログラムと外部から受付けたユーザプログラムとの間において、ユーザプログラムの同一性を検証するとともに、外部からユーザプログラムとともに受付けた設定情報を評価する。以下では、ユーザプログラムの同一性を、単に「プログラム同一性」と称する。
【0036】
制御装置1は、上記のプログラム同一性の検証結果と評価に基づき、格納されているユーザプログラムを外部から受付けたユーザプログラムを用いて変更することを許可または禁止する、いわゆる許否の判定を実施する。これにより、制御装置1は、当該許否の判定を、識別データおよび暗号ルールなどをユーザに要求せずに実施できる。
【0037】
図1を参照して、制御装置1は、制御プログラム140を各フィールド機器90に対応の機械制約情報53を用いて実行する制御エンジン142と、格納部236の情報を参照するセキュリティエンジン230と、一時的な格納領域である内部バッファ235を有する受付部231と、変更部240とを備える。格納部236は、後述する二次記憶装置208を含んで構成されて、二次記憶装置208に情報505と、ハッシュ値情報20とを含む各種情報を格納する。情報505は、FAの製造ラインを用いて生産されるワークの種類と生産数と生産時間(生産開始~終了までの時間)、段取り替えの時期などからなるスケジュールを含む生産計画情報52と、各フィールド機器90に対応の仕様情報54とを含む。
【0038】
機械制約情報53は、ユーザプログラムの一例である制御プログラム140の制御パラメータなどを含み、制御に関する設定を示す設定情報の一例である。機械制約情報53は、対応のフィールド機器90の機械的な条件を示す。条件は、フィールド機器90の属性に係る閾値(目標値)を用いた条件で示すことができる。例えばフィールド機器90がサーボモータであれば制約条件は、フィールド機器90の機械的属性に基づくモータの回転量(回転数、角度)が閾値を超えないことを示し、または、PID(Proportional-Integral-Differential)制御がなされる機器(ヒータなど)であればヒータ温度の目標値が閾値を超えないことを示す。なお、条件は、機械的属性に限定されず、摩擦係数、弾性などの物理的属性に基づいた条件であってもよい。ここでは、機械的条件を説明する。
【0039】
仕様情報54は、フィールド機器90の機械的制約条件を示す。上記に述べた機械的属性に係る閾値は、仕様情報54によって規定される機械的制約条件が示す上限値または下限値などのリミット値を超えないように設定される。
【0040】
ハッシュ値情報20は、制御エンジン142が実行するべき制御プログラム140のプログラムハッシュ値201と、制御エンジン142が制御プログラム140の実行時に用いる各機械制約情報53の制約情報ハッシュ値203とを含む。制御プログラム140または各機械制約情報53は、制御装置1において、実行可能な形式のバイナリデータで格納されるので、セキュリティエンジン230は、予め定められたアルゴリズムを用いて、これらバイナリデータから、ハッシュ値を算出することにより、ハッシュ値を生成する。なお、ハッシュ値生成用のアルゴリズムは、制御プログラム140と機械制約情報53の間で共通してもよく、また、異なってもよい。
【0041】
変更部240は、制御プログラム140およびフィールド機器90に対応の機械制約情報53を、それぞれを、受付部231が受付けた制御プログラム141および当該フィールド機器90の機械制約情報531を用いて変更する変更処理を実施する。この変更処理は、制御プログラム140および機械制約情報53を、それぞれ、受付部231が受付けた制御プログラム141および機械制約情報531を用いて書換える処理、または、制御プログラム140および機械制約情報53を、それぞれ、受付部231が受付けた制御プログラム141および機械制約情報531でリプレースするなどの更新処理を含み得る。
【0042】
制御エンジン142は、機械制約情報53を、例えば制御パラメータとして用いて、制御プログラム140を実行する。これにより、制御エンジン142は、変更前または変更後の制御プログラム140を、各フィールド機器90に対応の変更前または変更後の機械制約情報53を用いて実行し、実行結果に従い、当該フィールド機器90を制御する。
【0043】
本実施の形態では、セキュリティエンジン230は、制御エンジン142が実行する制御プログラム140と、当該制御に用いられる1つ以上の機械制約情報53とのセキュリティを管理することで、制御に係るインシデントの発生を防止する。
【0044】
より具体的には、セキュリティエンジン230は、制御プログラム140と受付けられる制御プログラム141との間のプログラム同一性を検証する検証部232と、制御プログラム141とともに受付けられた機械制約情報531の設定を制御に用いることが妥当であるかの妥当性を評価する評価部238と、プログラム同一性の検証結果と妥当性の評価の結果から、変更部240に上記の変更処理の実施を許可または禁止する変更制御部234とを有する。
【0045】
検証部232は、制御プログラム141のプログラムハッシュ値201を、外部から受付けた制御プログラム141から生成されたハッシュ値と照合し、照合の結果から、プログラム同一性を検証する。
【0046】
評価部238は、制約情報検証部239と、制約情報検査部242とを有する。制約情報検証部239は、格納されている制約情報ハッシュ値203を、外部から受付けた機械制約情報531から生成されたハッシュ値と照合し、照合の結果から、両者の同一性を検証する。制約情報検査部242は、受付けられた機械制約情報531が、対象の制御に関する制約条件を満たすかを検査する。より具体的には、制約情報検査部242は、機械制約情報531が示す条件に関する閾値を、仕様情報54が示す制約条件のリミット値と比較し、比較の結果が、閾値は制約条件のリミット値を超えないことを示す場合、機械制約情報531において設定される閾値の条件は、仕様情報54の制約条件を満たし、制御に用いる設定として妥当であると検出し、そうでないとき妥当でないと検出する。評価部238は、制約情報検証部239によって両者のハッシュ値が一致して機械制約情報の同一性が検証されたとき、または、制約情報検査部242によって機械制約情報531が妥当であることが検出されたとき、機械制約情報531が適切であることを出力する。
【0047】
変更制御部234は、検証部232のプログラム同一性の検証結果と、評価部238の評価結果とに基づき、変更処理の実施の許否を判定する。
【0048】
より具体的には、(i)プログラムの同一性があり、制約情報検証部239によって機械制約情報の同一性が検出されたとき、変更制御部234は、変更部240に変更処理の許可指令を出力し、(ii)プログラムの同一性はないが、制約情報検査部242によって機械制約情報531が妥当であることが検出されたとき、変更部240に変更処理の許可指令を出力し、(iii)プログラムの同一性はなく、制約情報検査部242によって機械制約情報531が妥当であることが検出されないとき、変更部240に変更処理の禁止指令を出力する。
【0049】
また、本実施の形態では、「改ざん」は善意の改ざんと、悪意の改ざんとを含み得る。悪意の改ざんを判定するために、制御装置1は生産計画情報52を用いる。通常、現場の製造ラインでは、生産計画情報52で示されるスケジュールの時間情報が示す時期に従って、ワークの種類または生産量が変更、製造ラインの段取り替え等が行われ、その結果、製造ラインに備えられるフィールド機器90の機種等が変更される。フィールド機器90の機種が変更されると、当該変更に伴い制御プログラム140または当該フィールド機器90の機械制約情報53の変更が必要となる。悪意の者は、このスケジュールを知りえない。したがって、制御装置1は、受付部231から制御プログラム141または機械制約情報531を受付けたとき、受付けた時期を生産計画情報52で示されるスケジュールと照合する。照合の結果が、受付けた時期がスケジュールに反することを示す場合、悪意の改ざんの可能性があると判定できる。
【0050】
本実施の形態では、「スケジュールに反する」とは、例えば、制御プログラム141または機械制約情報531を受付けた時期が、生産計画情報52が示す日程に一致しないケースを示す。また、当該時期が、生産計画情報52が示す日程に合致するケースは、「スケジュールに整合する」と呼ぶ。
【0051】
なお、本実施の形態では、制御プログラム141または機械制約情報53の同一性の検証コードとして、予め定められたアルゴリズムに従って生成されるハッシュ値を用いたが、これに限定されない。このような検証コードとしては、例えばチェックサム値であってもよい。
【0052】
<B.制御システム>
図2は、本実施の形態に係る制御装置1を含む制御システム10の全体構成を示す模式図である。図2を参照して、制御システム10は、ネットワーク2に接続される1つ以上の制御装置1を備える。制御システム10は、例えば、ワークの搬送工程、搬送されたワークの組立工程、組立てられたワークの塗装工程、ワークの検査工程などを含む複数の工程を有する製造ラインに適用される。制御システム10は、各工程について制御装置1を備える分散制御システムを構成する。各工程の制御装置1は、ネットワーク2に接続されて、互いにデータを遣り取りする。ネットワーク2は、たとえば、EtherNet/IP(登録商標)または、ベンダやOS(Operating System)の種類などに依存することなくデータ交換を実現することができるOPC UA(Object Linking and Embedding for Process Control Unified Architecture)などの通信規格に従ったネットワークである。
【0053】
制御装置1は、制御対象を制御する。制御対象は、生産工程を自動化するための種々の産業用機器を含み、製造装置や製造ラインなど(以下、「フィールド」とも総称する。)に対して何らかの物理的な作用を与える装置と、フィールドとの間で情報を遣り取りする入出力装置とを含む。
【0054】
制御装置1は、ネットワーク2に接続される中継機器3を介して、他の情報処理装置と通信する。他の情報処理装置は、例えば、製造実行システムのMES(Manufacturing Execution System)500と、クラウドベースのWebサーバ510と、サポート装置520と、HMI装置530とを含む。MES500は、製造ラインの集中的に監視および管理する。MES500は、製造ラインの段取り替えのスケジュール、生産するべきワークの種類および数量の変更のスケジュールなどを管理する。MES500は、ストレージ501において、これらスケジュールに連動した生産計画情報52および仕様情報54などを格納する。HMI(Human Machine Interface)530は、制御装置1での制御プログラム140に従う制御演算によって得られる各種情報をオペレータへ提示するとともに、オペレータからの操作に従って、制御装置1に対して内部コマンドなどを生成するHMI(Human Machine Interface)を含み得る。サポート装置520は、製造ラインの各制御装置1とインタラクティブに対話するためのUI(User Interface)ツール、制御プログラム140などのユーザプログラムを開発するUIツール、生産計画情報52またはフィールド機器90の機械制約情報53を作成するUIツールなどを提供する。サポート装置520は、中継機器3に直接通信することもでき、また、クラウド環境を経由して中継機器3と通信する。また、サポート装置520およびHMI装置530は、ネットワーク2に接続されてもよい。Webサーバ510は、制御システム10で収集されて転送されるデータをDB(Data Base)511に格納して管理する。各制御装置1の格納部236は、MES500から転送される生産計画情報52を格納し、また、MES500またはサポート装置520またはHMI装置530から転送される制御プログラム141またはフィールド機器90の機械制約情報531を格納する。
【0055】
制御装置1は、1つ以上のデバイスを含む。図2に示す例では、制御装置1は、制御ユニット100と、セキュリティユニット200と、I/O(Input/Output)ユニット300とから構成される。なお、制御装置1は電源ユニットを含んでもよい。
【0056】
制御ユニット100は、制御装置1を構成する制御デバイスの一例であって、制御対象を制御するための制御プログラム140などのユーザプログラムを実行し、制御装置1において中心的な処理を実行する。制御ユニット100は、図1に示す制御エンジン142を構成する。
【0057】
セキュリティユニット200は、制御装置1を構成するセキュリティデバイスの一例であって、図1に示すセキュリティエンジン230を構成する。セキュリティユニット200には、ポータブル型で構成され得るサポート装置520を脱着自在に接続され得る。
【0058】
制御ユニット100はセキュリティユニット200に、たとえば、任意のデータ伝送路(例えば、PCI ExpressあるいはEtherNet/IP(登録商標)など)を介して接続されている。
【0059】
I/Oユニット300は、制御装置1を構成するデバイスの一例であって、一般的な入出力処理に関するユニットである。I/Oユニット300は、各種センサ、各種スイッチ、エンコーダなどを含むIOデバイスから検出値を収集する。
【0060】
制御ユニット100はI/Oユニット300に、内部バスを介して通信可能に接続されている。制御ユニット100は、I/Oユニット300により収集された検出値を用いて制御プログラムの演算を実行し、演算結果の値をI/Oユニット300に出力する。
【0061】
制御ユニット100は、フィールドネットワーク11を介して、複数のフィールド機器90と通信する。制御ユニット100は、フィールドネットワーク11を介して、フィールド機器90から状態値を収集し、収集した状態値に基づき制御プログラム140を実行し、実行結果としての制御指令を、フィールドネットワーク11を介してフィールド機器90に出力する。フィールド機器90は、制御指令に従って、自機器の状態値を変更させる。
【0062】
フィールドネットワーク11としては、典型的には、各種の産業用イーサネット(登録商標)を用いることができる。産業用イーサネット(登録商標)としては、例えば、EtherCAT(登録商標)が採用してもよい。さらに、産業用イーサネット(登録商標)以外のフィールドネットワークを用いてもよい。
【0063】
なお、制御装置1を構成するデバイスは、図2に示したデバイスに限られない。制御装置1を構成するデバイスは、I/Oユニット300ではサポートしない機能を有する特殊ユニット、設備や機械などによって人の安全が脅かされることを防止するためのセーフティ機能を提供するセーフティユニットなどを含み得る。
【0064】
制御装置1は、PLCまたは産業用のコンピュータ(所謂IPC:Industrial Personal Computer)として構成されてもよい。
【0065】
<C.制御装置1の構成>
本実施の形態に従う制御装置1を構成する主なデバイスのハードウェア構成例について説明する。
【0066】
(c1.制御ユニット)
図3は、本実施の形態に従う制御装置1を構成する制御ユニット100のハードウェア構成例を示す模式図である。図3を参照して、制御ユニット100は、主たるコンポーネントとして、CPU(Central Processing Unit)やGPU(Graphical Processing Unit)などのプロセッサ102と、チップセット104と、主記憶装置106と、二次記憶装置108と、通信コントローラ110と、USB(Universal Serial Bus)コントローラ112と、メモリカードインターフェイス114と、フィールドネットワークコントローラ116と、内部バスコントローラ118と、ネットワークコントローラ120とを含む。
【0067】
プロセッサ102は、二次記憶装置108またはメモリカード115に格納された制御プログラム140を含むユーザプログラムを読み出して、主記憶装置106に展開して実行することで、制御対象を制御するための制御演算処理を実現する。
【0068】
主記憶装置106は、DRAM(Dynamic Random Access Memory)またはSRAM(Static Random Access Memory)などの揮発性記憶装置などで構成される。二次記憶装置108は、例えば、HDD(Hard Disc Drive)またはSSD(Solid State Drive)などの不揮発性記憶装置などで構成される。
【0069】
チップセット104は、プロセッサ102と各コンポーネントとの間のデータの遣り取りを仲介することで、制御ユニット100全体としての処理を実現する。
【0070】
二次記憶装置108には、制御ユニット100の基本的な機能を実現するためのリアルタイムOS(Operating System)130およびインストールプログラム135を有するシステムプログラム1082に加えて、設備や機械などの制御対象に応じて作成される制御プログラム140と、上記に述べた制御指令および状態値を各フィールド機器90との間で遣り取りするためのリフレッシュプログラム40と、制御対象の各フィールド機器90に対応の機械制約情報53とが格納されている。制御ユニット100は、制御プログラム140およびリフレッシュプログラム40を予め定められた周期(例えば制御周期)で繰り返し実行することにより、フィールド機器90を周期的に制御する。制御プログラム140は、リアルタイムOS130で実行される任意の制御プログラムで構成され得る。制御プログラム140は、リアルタイムOS130がインタプリタの機能を提供する場合には、ソースコードまたは中間コードの形で格納されていてもよいし、あるいは、オブジェクト形式などの実行可能な状態で格納されていてもよい。なお、リフレッシュプログラム40は、制御プログラム140とともにユーザプログラムを構成し得るが、本実施の形態では、説明を簡単にするために、リフレッシュプログラム40は、セキュリティユニット200による改ざんの検査対象に含まれない。システムプログラム1082は、リアルタイムOS130のもとで制御プログラム140を実行する制御エンジン142としての機能を提供する。
【0071】
通信コントローラ110は、他のユニットとの間のデータの遣り取りを担当する。通信コントローラ110としては、例えば、PCI Expressあるいはイーサネット(登録商標)などに対応する通信チップを採用できる。セキュリティエンジン230を実現するセキュリティユニット200が制御装置1に外付けされる場合、上記の他のユニットは、外付けされるセキュリティユニット200を含む。
【0072】
USBコントローラ112は、USB接続を介して任意の情報処理装置との間のデータの遣り取りを担当する。任意の情報処理装置は、たとえば、制御プログラム140の作成または編集、デバッグ、各種パラメータの設定などの機能をユーザに提供するサポート装置520またはHMI装置530などを含む。
【0073】
メモリカードインターフェイス114は、記憶媒体の一例であるメモリカード115が脱着自在に構成される。メモリカードインターフェイス114は、メモリカード115に対して制御プログラム140や各種設定などのデータを書込み、あるいは、メモリカード115から制御プログラム140や各種設定などのデータを読出すことが可能になっている。
【0074】
フィールドネットワークコントローラ116は、フィールドネットワーク11を介したフィールド機器90を含む他の装置との間のデータの遣り取りを制御する。
【0075】
内部バスコントローラ118は、内部バスを介した他の装置(I/Oユニット300など)との間のデータの遣り取りを制御する。内部バスには、メーカ固有の通信プロトコルを用いてもよいし、いずれかの産業用ネットワークプロトコルと同一あるいは準拠した通信プロトコルを用いてもよい。
【0076】
ネットワークコントローラ120は、ネットワーク2を介した他の制御装置1または中継機器3との間のデータの遣り取りを制御する。
【0077】
図3には、プロセッサ102がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)、またはFPGA(Field-Programmable Gate Array)を用いて実装してもよい。あるいは、制御ユニット100の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、マルチコア技術を適用して処理を並列に実行してもよい。または、仮想化技術を用いて、用途の異なる複数のOSを並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
【0078】
(c2.セキュリティユニット)
図4は、本実施の形態に従う制御装置1を構成するセキュリティユニット200のハードウェア構成例を示す模式図である。図4を参照して、セキュリティユニット200は、主たるコンポーネントとして、CPUやGPUなどのプロセッサ202と、チップセット204と、主記憶装置206と、二次記憶装置208と、通信コントローラ210と、USBコントローラ212と、メモリカードインターフェイス214と、ネットワークコントローラ220とを含む。
【0079】
プロセッサ202は、二次記憶装置208またはメモリカード215に格納された各種プログラムを読み出して、主記憶装置206に展開して実行することで、制御装置1に関するセキュリティ機能を実現する。主記憶装置206は、DRAMまたはSRAMなどの揮発性記憶装置などで構成される。二次記憶装置208は、例えば、HDDまたはSSDなどの不揮発性記憶装置などで構成される。
【0080】
チップセット204は、プロセッサ202と各コンポーネントとの間のデータの遣り取りを仲介することで、セキュリティユニット200全体としての処理を実現する。
【0081】
二次記憶装置208には、セキュリティユニット200の基本的な機能を実現するためのOS等のシステムプログラム2082に加えて、ハッシュ値情報と、管理情報30が格納されている。
【0082】
システムプログラム2082には、ハッシュ値生成プログラム250を有するセキュリティプログラム243が組み込まれている。セキュリティプログラム243は、制御装置1に関するセキュリティを管理するプログラムであり、セキュリティエンジン230によって実行される。ハッシュ値生成プログラム250は、制御プログラム140のプログラムハッシュ値201と各機械制約情報53に対応の制約情報ハッシュ値203を、予め定められたアルゴリズムに従い生成する。セキュリティユニット200では、OSがセキュリティプログラム243を実行するセキュリティエンジン230の機能を提供する。
【0083】
管理情報30は、MES500から転送される生産計画情報52および各フィールド機器90についての仕様情報54を有する。
【0084】
通信コントローラ210は、セキュリティユニット200と制御ユニット100との間のデータの遣り取りを担当する。通信コントローラ210としては、制御ユニット100に通信コントローラ210と同様に、例えば、PCI Expressあるいはイーサネット(登録商標)などに対応する通信チップを採用できる。
【0085】
USBコントローラ212は、USB接続を介して任意の情報処理装置との間のデータの遣り取りを担当する。任意の情報処理装置は、たとえば、サポート装置520またはHMI装置530を含む。サポート装置520またはHMI装置530は、セキュリティプログラム243の設定などの機能をユーザに提供する。
【0086】
メモリカードインターフェイス214は、記憶媒体の一例であるメモリカード215を脱着可能に構成される。メモリカードインターフェイス214は、メモリカード215に対してプログラムや各種設定などのデータを書込み、あるいは、メモリカード215からプログラムや各種設定などのデータを読出すことが可能になっている。
【0087】
ネットワークコントローラ220は、ネットワーク2を介した他の制御装置1を含む各種装置との間のデータの遣り取りを制御する。ネットワークコントローラ220は、イーサネット(登録商標)などの汎用的なネットワークプロトコルを採用してもよい。
【0088】
図4には、プロセッサ202がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。あるいは、セキュリティユニット200の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、プロセッサ202はマルチコアで構成されて、アプリケーションを並列に実行してもよい。または、セキュリティユニット200は、仮想化技術を用いて、用途の異なる複数のOSを並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
【0089】
なお、図3および図4において、制御装置1は、ネットワーク2へ、制御ユニット100のネットワークコントローラ120を介して接続されていてもよく、また、セキュリティユニット200のネットワークコントローラ220を介して接続されていてもよい。本実施の形態において、制御装置1は、セキュリティユニット200のネットワークコントローラ220を介して接続されているものとして説明する。
【0090】
<D.サポート装置520の構成>
図5は、本実施の形態に係るサポート装置520のハードウェア構成を概略的に示す図である。図5を参照して、サポート装置520は、CPU521、ROM(Read Only Memory)522、RAM(Random Access Memory)523、各種のプログラムおよびデータを不揮発的に格納するためのフラッシュROM524、時計525、ユーザの操作を受付けるための操作キー526、データリーダ/ライタ527、タッチスクリーン528および通信インターフェイス529を備える。なお、これらの各部は、内部バスを介して互いに接続される。
【0091】
タッチスクリーン528は、ディスプレイ5281およびオペレータの入力を受付けるためのタッチパネル5282を含む。通信インターフェイス529は、サポート装置520と中継機器3またはUSBコントローラ122との通信を制御する。データリーダ/ライタ527は、CPU521と外部の記憶媒体であるメモリカード5271との間のデータ伝送を仲介する。HMI装置530も、サポート装置520と同様の構成を備える。
【0092】
<E.設定情報の転送>
図6は、本実施の形態に係る生産計画情報と機械制約情報との関係を説明する図である。本実施の形態では、MES500は、ストレージ511において、生産計画情報52と、各フィールド機器90の仕様情報54とを格納する。MES500は、生産計画情報52と仕様情報54を制御装置1のセキュリティユニット200に転送する。制御装置1は、制御プログラム140を、各フィールド機器90の機械制約情報53を用いて実行することにより、これらフィールド機器90を制御する。図6では、各フィールド機器90について、機械制約情報(1)、機械制約情報(2)、機械制約情報(3)が示されている。
【0093】
これら機械制約情報53および制御プログラム140は、例えば、HMI装置530またはサポート装置520においてユーザ操作により生成されて、ネットワーク2を介して制御装置1に転送されて、受付部231は、転送される機械制約情報53および制御プログラム140を受付ける。なお、外部装置から、機械制約情報53および制御プログラム140を制御装置1に転送するルートは、ネットワーク2を経由するルートに限定されない。例えば、USBコントローラ112を経由するルート、または、メモリカード115,215からメモリカードインターフェイス114,214を経由するルートであってもよい。
【0094】
<F.処理の概略>
制御装置1に、制御プログラム140および機械制約情報53をインストールする処理を説明する。図7は、本実施の形態に係る制御プログラム140および機械制約情報53のインストール処理の概略フローチャートである。図7では、HMI装置530から制御プログラム141および各フィールド機器90に対応の機械制約情報531が制御装置1に転送されて、インストールプログラム135が実行されて、転送された制御プログラム141および機械制約情報531が制御装置1にインストールされるシーンを例示して説明する。なお、本実施の形態に係るインストールでは、受付部231が、外部装置から転送された制御プログラム141および各フィールド機器90の機械制約情報531を受付けて、格納部236は、受付けられた制御プログラム141および機械制約情報531を実行可能な形式に変換して二次記憶装置108の予め定められた領域に格納する。インストールプログラム135が実行されることにより、格納部236および変更部240が実現される。
【0095】
図7を参照して、セキュリティユニット200のプロセッサ202は、受付部231として、HMI装置530から転送された、制御プログラム141および各フィールド機器90の機械制約情報531を受付けて、内部バッファ235に一時的に格納する(ステップS3)。
【0096】
プロセッサ202は、設定されたパラメータに基づき、制御装置1にセキュリティエンジン230の利用が設定されているかを判定する(ステップS5)。利用が設定されていないと判定されると(ステップS5でNO)、格納部236は、内部バッファ235に格納されている制御プログラム141および各フィールド機器90の機械制約情報531を読出し、二次記憶装置108に格納する(ステップS17)。これにより、二次記憶装置108には、制御プログラム141および各フィールド機器90の機械制約情報531が、それぞれ、制御プログラム140および各フィールド機器90の機械制約情報53として、実行可能な形式で格納される。また、このとき、プロセッサ202は、格納された制御プログラム140のプログラムハッシュ値201と各機械制約情報53の制約情報ハッシュ値203とを生成し、二次記憶装置208に格納する。
【0097】
プロセッサ202は、制御装置1にセキュリティエンジン230の利用が設定されていると判定すると(ステップS5でYES)、プロセッサ202は、セキュリティエンジン230を起動する。
【0098】
セキュリティエンジン230が起動されると、プロセッサ202は、検証部232として、内部バッファ235に格納されている制御プログラム141および各機械制約情報531を実行可能形式に変換し、変換後の制御プログラム141および各機械制約情報531について、それぞれ、プログラムハッシュ値と制約情報ハッシュ値とを生成する(ステップS7)。プロセッサ202は、生成されたハッシュ値と、二次記憶装置208に格納されているハッシュ値とを比較する(ステップS9)。
【0099】
より具体的には、プロセッサ202は、検証部232として、上記の生成されたプログラムハッシュ値を格納されているプログラムハッシュ値201と照合し、照合結果に基づき両者は一致するかを判定する(ステップS11)。両者は一致すると判定されると(ステップS11でYES)、プロセッサ202は、制約情報検証部239として、各フィールド機器90に対応の機械制約情報531から生成された制約情報ハッシュ値を、格納されている当該フィールド機器90の機械制約情報53の制約情報ハッシュ値203と照合し、照合の結果に基づき、両者は一致するかを判定する(ステップS13)。両者は一致すると判定されると(ステップS13でYES)、プロセッサ202は、制御プログラム140および機械制約情報53の変更がない旨の通知をユーザに出力する(ステップS15)。なお、このとき、プロセッサ102は、変更制御部234として、検証部232の出力と制約情報検証部239の出力とに基づき、変更処理の実施を許可する許可指令を出力して、変更部240に変更処理を実施させてもよい。
【0100】
一方、上記の生成されたプログラムハッシュ値はプログラムハッシュ値201と一致しないと判定されると(ステップS11でNO)、プロセッサ202は、制御プログラム140を変更する旨の通知をユーザに出力し(ステップS20)、ステップS21に移行する。また、いずれかのフィールド機器90の機械制約情報531について、上記の生成された制約情報ハッシュ値は格納されている制約情報ハッシュ値203と一致しないと判定されると(ステップS13でNO)、プロセッサ202は、機械制約情報53を変更する旨の通知をユーザに出力し(ステップS19)、ステップS21に移行する。これら通知は、例えばHMI装置530,サポート装置520を介してディスプレイなどに出力される。ユーザは、制御プログラム140または機械制約情報53の変更を実施するか否かの指示を、HMI装置530,サポート装置520を操作して入力すると、HMI装置530,サポート装置520は、ユーザ操作に基づく指示を制御装置1に転送する。
【0101】
プロセッサ202は、HMI装置530,サポート装置520からのユーザ指示に基づき、制御プログラム140または機械制約情報53の変更実施が許可(OK)されたか否(NG)かを判定する(ステップS21)。変更はNGと入力された場合(ステップS21で“NG”)、処理は終了するが、変更はOKと入力された場合(ステップS21で“OK”)、ステップS23に移行する。
【0102】
プロセッサ202は、二次記憶装置208に生産計画情報52と各フィールド機器90の機械制約情報53が格納されているかを判定する(ステップS23)。これら情報は格納されていないと判定されると(ステップS23でNO)、ステップS29に移行する。一方、これら情報は格納されていると判定されると(ステップS23でYES)、プロセッサ202は、インストールする時期は生産計画情報52のスケジュールに反しないか、または、インストールされるべき情報は仕様情報54の制約条件を満たすかを判定する(ステップS25)。
【0103】
より具体的には、プロセッサ202は、今回のインストールの時期を生産計画情報52のスケジュールと照合し、照合の結果に基づき、インストール時期がスケジュールに整合するか否かを判定する(ステップS25)。インストール時期はスケジュールに反すると判定されると(ステップS25でNO)、プロセッサ202は、HMI装置530,サポート装置520に、制御プログラム140の変更がスケジュールに反して実施されようとしている旨の違反情報を転送し、HMI装置530,サポート装置520を介してユーザに提示(出力)する(ステップS27)。または、プロセッサ202は、制約情報検査部242として、各機械制約情報531の閾値などの条件を仕様情報54の制約条件と照合し、照合の結果に基づき、閾値などの条件が仕様の制約条件反していないかを判定する(ステップS25)。例えば、機械制約情報531の閾値が、仕様情報54の制約条件のリミット値を超えていないかを判定する。
【0104】
条件の閾値がリミット値を超えているために、機械制約情報531は仕様情報54の制約条件に反していると判定されると(ステップS25でNO)、プロセッサ202は、HMI装置530,サポート装置520に、制御プログラム140の変更が仕様に反して実施されようとしている旨の違反情報を転送し、HMI装置530,サポート装置520を介してユーザに提示(出力)する(ステップS27)。
【0105】
一方、インストール時期は生産計画情報52のスケジュールに整合する、および、機械制約情報531の制約条件は仕様情報54に整合していると判定されると(ステップS25でYES)、プロセッサ202は、変更制御部234として、変更許可指令を、変更部240に出力する。
【0106】
プロセッサ202は、変更許可指令に従い、ステップS7で既に算出されていた制御プログラム141のハッシュ値と各機械制約情報531のハッシュ値とを用いて、二次記憶装置208にプログラムハッシュ値201および各制約情報ハッシュ値203を変更する(書換える)。これにより、制御プログラム141のハッシュ値と各機械制約情報531のハッシュ値は二次記憶装置208に、ハッシュ値情報20として格納される(ステップS29)。
【0107】
また、プロセッサ102は、変更許可指令に従い、変更部240として、制御プログラム141および各フィールド機器90の機械制約情報531を用いて、二次記憶装置108の制御プログラム140および各機械制約情報53について変更処理を実施する(ステップS31)。
【0108】
これにより、制御装置1が、インストール時に、外部から改ざんされた制御プログラム141(プログラムハッシュ値が一致しない制御プログラム141)を受付けた場合、セキュリティユニット200は、制御プログラム141とともに受付けた機械制約情報531を仕様情報54に基づき検査し、当該検査の結果から、フィールド機器90の機械制約情報531が示す閾値などの条件の設定が当該フィールド機器90の制御について妥当かを評価する。妥当と評価されたとき、セキュリティユニット200は、制御プログラム141と機械制約情報531を、制御プログラム140および機械制約情報53としてインストールすることを、制御装置1に許可する。
【0109】
<G.改ざんの態様>
図8図13は、本実施の形態に係る制御プログラムの改ざんの態様を模式的に例示する図である。改ざんは、上記に述べた変更処理が実施されることを示し、例えばインスト-ルを含む。また、改ざんは、善意の者による改ざんと悪意に者による改ざんとを含む。
【0110】
図8は、保守者が、会社または自宅においてサポート装置520をUIツールを操作することにより、当該サポート装置520から、クラウド、中継機器3およびネットワーク2を経由して、制御装置1の制御プログラム140を改ざんするケースを示す。対照的に、図9図10は、工場内にいる保守者が、制御装置1の制御プログラム140を改ざんするケースを示し、制御装置1にUSB接続されるサポート装置520を操作して(図9参照)、または制御プログラムを格納したメモリカード215を制御装置1に装着して(図10参照)、制御装置1の制御プログラム140を改ざんするケースを示す。
【0111】
図11図12は、段取り替え時の製造ラインの調整に伴うフィールド機器90の交換により、機械制約情報53の変更処理を実施するケースを示す。保守者は、サポート装置520を操作して、交換後のフィールド機器90について機械制約情報531を作成しインストールするとき、図11は、セキュリティエンジン230が当該機械制約情報531は仕様情報54の制約条件(リミット値などの条件)を満たすと判定する場合を示す。対照的に、図12は、保守者の設定ミスに起因して、セキュリティエンジン230が当該機械制約情報531は仕様情報54の制約条件を満たさないと判定する場合を示す。
【0112】
図13は、悪意の者が、製造ラインの破壊目的に制御プログラム140とともに機械制約情報531をインストールしようとするケースを示す。このケースでは、悪意の者は、機械制約情報531の条件が示す閾値に異常値、すなわち仕様情報54の制約条件が示すリミット値を超える値を設定する。セキュリティエンジン230は、当該機械制約情報531は仕様情報54の制約条件を満たさないと判定し、変更処理の実施を禁止する禁止指令を、変更部240に出力する。
【0113】
また、図11のケースでは、変更処理を実施後に、制御装置1はインストール後の機械制約情報531を用いた制御プログラム140を実行するように起動されるが、図12図13のケースでは、機械制約情報53の条件の閾値に異常値が設定されていることが検出されて、変更処理の実施が禁止され、制御装置1は起動されない。
【0114】
<H.変形例>
上記の実施の形態では、以下の変形例を適用することができる。
【0115】
(h1.変形例1)
図2の制御システム10では、複数の制御装置1のうちの1台の制御装置1が、他の制御装置1についてのセキュリティエンジン230の機能を担うようにしてもよい。この場合、1台の制御装置1は、他の制御装置1について、制御プログラム140と機械制約情報53のそれぞれについてハッシュ値情報に基づく検証と、機械制約情報53の検査とを実施し、検証と検査の結果に基づき、他の制御装置1に変更処理の実施の許可または禁止の指令を転送する。
【0116】
(h2.変形例2)
上記の実施の形態では、セキュリティエンジン230は、制御ユニット100とは独立したユニットであるセキュリティユニット200に設けられるよう構成されたが、この構成に限定されない。例えば、セキュリティエンジン230は、制御ユニット100に内蔵される構成であってもよい。この場合、制御ユニット100において、セキュリティエンジン230と制御エンジン142の両方がサポートされる。
【0117】
(h3.変形例3)
上記の実施の形態では、セキュリティエンジン230を、制御プログラム141のインストール時に起動したが、セキュリティエンジン230を起動するタイミングは、制御プログラム141のダウンロード時であってもよい。または、制御装置1が起動するタイミングでセキュリティエンジン230が起動されてもよい。
【0118】
<I.プログラム>
セキュリティユニット200のプロセッサ202は、二次記憶装置208のプログラムを実行することにより、上記に述べた制御プログラム140および機械制約情報53の適切でない改ざんを検出して通知するセキュリティ機能を実現する。
【0119】
セキュリティ機能は主にセキュリティプログラム243を実行することにより実現されるが、このようなプログラムおよびデータは、外部装置から二次記憶装置208にダウンロードされてもよい。より具体的には、メモリカード215から、メモリカードインターフェイス214を介してダウンロードされる、または、ネットワーク2に接続される外部装置からネットワークコントローラ220を介してダウンロードされる、またはサポート装置520またはHMI装置530からUSBコントローラ212を介してダウンロードされるとしてもよい。メモリカード215は、コンピュータその他装置、機械等が記録されたプログラム等の情報を読み取り可能なように、当該プログラム等の情報を、電気的、磁気的、光学的、機械的または化学的作用によって蓄積する媒体である。
【0120】
プログラムは、CPU等の1つ以上のプロセッサ回路により、またはプロセッサ回路とASIC(Application Specific Integrated Circuit),FPGA(Field-Programmable Gate Array)等の回路との組合せにより実行され得る。
【0121】
また、プログラムの少なくとも一部は、ASIC,FPGA等の回路により構成されてもよい。
【0122】
<J.付記>
上記の実施の形態は以下のような技術思想を含む。
[構成1]
対象(90)の制御に関する第1のユーザプログラム(140)と、前記制御に関する設定を示す第1の設定情報(53)を格納する格納部(108)と、
前記対象の制御に関する第2のユーザプログラム(141)と、前記制御に関する設定を示す第2の設定情報(531)とを受付ける受付部(231)と、
前記格納部の前記第1のユーザプログラムおよび前記第1の設定情報を、それぞれ、前記第2のユーザプログラムおよび前記第2の設定情報を用いて変更する変更部(240)と、
前記第1の設定情報を用いて前記第1のユーザプログラムを実行する制御エンジン(142)と、
前記第1の設定情報と前記第1のユーザプログラムのセキュリティを管理するセキュリティエンジン(230)と、を備え、
前記セキュリティエンジンは、
前記第1のユーザプログラムおよび前記第2のユーザプログラムについて、プログラムの同一性を満たすかを検証するプログラム検証部(232)と、
前記第2の設定情報が示す前記設定の妥当性を評価する評価部(238)と、
前記プログラム検証部の検証結果と前記評価部の評価から、前記変更部に前記変更の実施を許可または禁止する変更制御部(234)と、を有する、制御装置(1)。
[構成2]
前記評価部は、
前記第2の設定情報が前記対象の制御に関する制約条件(54)を満たすかを検査する検査部(242)を有する、構成1に記載の制御装置。
[構成3]
前記制御装置は、さらに、
前記対象が備えられる製造ラインの段取り換えの時期を含む生産計画情報(52)が示す時間情報に基づき、前記変更の実施を許可または禁止する、構成1または2に記載の制御装置。
[構成4]
前記プログラム検証部は、
前記第1のユーザプログラムおよび前記第2のユーザプログラムそれぞれから、当該プログラムの同一性を検証するプログラム検証コードを生成し、プログラム検証コードどうしの照合に基づき前記同一性を検証する、構成1から3のいずれか1に記載の制御装置。
[構成5]
前記プログラム検証コードは、前記第1のユーザプログラムおよび前記第2のユーザプログラムそれぞれから生成されるハッシュ値を含む、構成4に記載の制御装置。
[構成6]
前記変更部によって前記変更が実施されたとき、前記第2のユーザプログラムから生成された前記ハッシュ値を、変更後の前記第1のユーザプログラムのハッシュ値として保存する、構成5に記載の制御装置。
[構成7]
前記制御装置は、
前記セキュリティエンジンを有するセキュリティユニット(200)と、
前記セキュリティユニットとは独立したユニットであって、前記制御エンジンを有する制御ユニット(100)とを備える、構成1から6のいずれか1に記載の制御装置。
[構成8]
ネットワーク(2)接続される構成1から7のいずれか1に記載の複数の制御装置を備える制御システム(10)であって、
前記複数の制御装置のうちの1つの制御装置が、他の前記制御装置についての前記セキュリティエンジンの機能を備える、制御システム。
[構成9]
制御装置(1)のセキュリティを管理する管理方法であって、
前記制御装置は、
対象の制御に関する第1のユーザプログラム(140)と、前記制御に関する設定を示す第1の設定情報(53)を格納する格納部(108)と、
前記対象の制御に関する第2のユーザプログラム(141)と、前記制御に関する設定を示す第2の設定情報(531)とを受付ける受付部(231)と、
前記第1の設定情報を用いて前記第1のユーザプログラムを実行する制御エンジン(142)と、を備え、
前記管理方法は、
前記第1のユーザプログラムおよび前記第2のユーザプログラムについて、プログラムの同一性を満たすかを検証するステップと、
前記第2の設定情報が示す前記設定の妥当性を評価するステップと、
前記検証するステップにおける検証結果と前記評価するステップにおける評価に基づき、前記格納部の前記第1のユーザプログラムおよび前記第1の設定情報を、それぞれ、前記第2のユーザプログラムおよび前記第2の設定情報を用いて変更する変更処理を、前記制御装置に実施させるか否かを判定するステップと、を有する、管理方法。
[構成10]
構成9に記載の前記管理方法を、コンピュータに実行させるプログラム。
【0123】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。また、実施の形態および各変形例において説明された発明は、可能な限り、単独でも、組み合わせても、実施することが意図される。
【符号の説明】
【0124】
1 制御装置、2 ネットワーク、3 中継装置、10 制御システム、20 ハッシュ値情報、52 生産計画情報、53,531 機械制約情報、54 仕様情報、90 フィールド機器、100 制御ユニット、135 インストールプログラム、140,141 制御プログラム、142 制御エンジン、200 セキュリティユニット、201 プログラムハッシュ値、203 制約情報ハッシュ値、230 セキュリティエンジン、231 受付部、232 検証部、234 変更制御部、235 内部バッファ、236 格納部、238 評価部、239 制約情報検証部、240 変更部、242 制約情報検査部、243 セキュリティプログラム、250 ハッシュ値生成プログラム。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13