(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023151760
(43)【公開日】2023-10-16
(54)【発明の名称】セーフティシステム、セーフティコントローラおよび処理方法
(51)【国際特許分類】
G06F 21/51 20130101AFI20231005BHJP
【FI】
G06F21/51
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2022061564
(22)【出願日】2022-04-01
(71)【出願人】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】藤村 亮輔
(72)【発明者】
【氏名】八木 大介
(57)【要約】
【課題】妥当性確認をより効率的に行うための構成を提供する。
【解決手段】セーフティシステムは、サポート装置およびセーフティコントローラを含む。サポート装置は、セーフティプログラムを生成する第1の生成部と、生成されたセーフティプログラムに基づいて第1の妥当性確認コードを生成する第2の生成部とを含む。セーフティコントローラは、記憶媒体に格納されたセーフティプログラムを読み出して一時的に保持する記憶領域と、一時的に保持されたセーフティプログラムを実行する実行部と、一時的に保持されたセーフティプログラムに基づいて第2の妥当性確認コードを生成する第3の生成部と、ユーザ操作によって入力された第1の妥当性確認コードと、第2の妥当性確認コードとが一致すると、一時的に保持されたセーフティプログラムを通常実行するセーフティプログラムとして決定する管理部とを含む。
【選択図】
図1
【特許請求の範囲】
【請求項1】
サポート装置およびセーフティコントローラを備えるセーフティシステムであって、
前記サポート装置は、
セーフティプログラムを生成する第1の生成部と、
前記生成されたセーフティプログラムに基づいて第1の妥当性確認コードを生成する第2の生成部とを備え、
前記セーフティコントローラは、
記憶媒体に格納されたセーフティプログラムを読み出して一時的に保持する記憶領域と、
前記一時的に保持されたセーフティプログラムを実行する実行部と、
前記一時的に保持されたセーフティプログラムに基づいて第2の妥当性確認コードを生成する第3の生成部と、
ユーザ操作によって入力された前記第1の妥当性確認コードと、前記第2の妥当性確認コードとが一致すると、前記一時的に保持されたセーフティプログラムを通常実行するセーフティプログラムとして決定する管理部とを備える、セーフティシステム。
【請求項2】
前記セーフティコントローラは、前記記憶媒体に格納されたセーフティプログラムを揮発性領域記憶装置に保持し、前記通常実行するセーフティプログラムを不揮発性記憶装置に格納する、請求項1に記載のセーフティシステム。
【請求項3】
前記第2の生成部は、予め定められたアルゴリズムに従って、前記生成されたセーフティプログラムから前記第1の妥当性確認コードを算出し、
前記第3の生成部は、前記予め定められたアルゴリズムに従って、前記一時的に保持されたセーフティプログラムから前記第2の妥当性確認コードを算出する、請求項1または2に記載のセーフティシステム。
【請求項4】
前記第1の妥当性確認コードと同一の妥当性確認コードが前記生成されたセーフティプログラムに組み込まれ、
前記第3の生成部は、前記一時的に保持されたセーフティプログラムに組み込まれた妥当性確認コードを前記第2の妥当性確認コードとして決定する、請求項1または2に記載のセーフティシステム。
【請求項5】
前記サポート装置は、前記第1の妥当性確認コードを表示する出力部をさらに備える、請求項1または2に記載のセーフティシステム。
【請求項6】
前記セーフティコントローラは、前記第1の妥当性確認コードの入力を受け付ける入力部をさらに備える、請求項1または2に記載のセーフティシステム。
【請求項7】
前記セーフティコントローラとは別の装置に対して入力された前記第1の妥当性確認コードが、当該別の装置から前記セーフティコントローラへ提供される、請求項1または2に記載のセーフティシステム。
【請求項8】
記憶媒体に格納されたセーフティプログラムを読み出して一時的に保持する記憶領域を備え、前記セーフティプログラムは、サポート装置によって生成されたものであり、前記サポート装置は、前記生成されたセーフティプログラムに基づいて第1の妥当性確認コードを生成し、
前記一時的に保持されたセーフティプログラムを実行する実行部と、
前記一時的に保持されたセーフティプログラムに基づいて第2の妥当性確認コードを生成する第3の生成部と、
ユーザ操作によって入力された前記第1の妥当性確認コードと、前記第2の妥当性確認コードとが一致すると、前記一時的に保持されたセーフティプログラムを通常実行するセーフティプログラムとして決定する管理部とを備える、セーフティコントローラ。
【請求項9】
サポート装置およびセーフティコントローラを備えるセーフティシステムにおける処理方法であって、
前記サポート装置が、セーフティプログラムを生成するステップと、
前記サポート装置が、前記生成されたセーフティプログラムに基づいて第1の妥当性確認コードを生成するステップと、
前記セーフティコントローラが、記憶媒体に格納されたセーフティプログラムを読み出して記憶領域に一時的に保持するステップと、
前記一時的に保持されたセーフティプログラムを実行するステップと、
前記一時的に保持されたセーフティプログラムに基づいて第2の妥当性確認コードを生成するステップと、
ユーザ操作によって入力された前記第1の妥当性確認コードと、前記第2の妥当性確認コードとが一致すると、前記一時的に保持されたセーフティプログラムを通常実行するセーフティプログラムとして決定するステップとを備える、処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、セーフティシステム、セーフティコントローラおよび処理方法に関する。
【背景技術】
【0002】
生産設備におけるセーフティを確保するために、セーフティコントローラなどが広く普及している。国際規格であるIEC62061は、セーフティコントローラが満たすべきファンクショナルセーフティ要求などを規定する。
【0003】
通常、セーフティコントローラは生産設備に設置されることになるが、セーフティコントローラで実行されるプログラムは、設計者が開発機などを用いて作成することになる。作成されたプログラムは、何らかの方法で、生産設備に設置されたセーフティコントローラに書き込まれる。
【0004】
このようなプログラムのコントローラへの提供に関する技術として、特開2019-148979号公報(特許文献1)は、機能ユニットからCPUユニットに接続された外部メモリにアクセスする技術を開示する。
【0005】
国際公開第2015/136965号(特許文献2)は、制御機器におけるプログラムやデータの書き込みが迅速にかつ簡易に行うことができるようにする構成を開示する。
【0006】
また、特開2011-170581号公報(特許文献3)は、交換および設定データの更新の手順の簡略化および設定データのセキュリティ対策を両立することが可能な安全制御装置を開示する。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2019-148979号公報
【特許文献2】国際公開第2015/136965号
【特許文献3】特開2011-170581号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
IEC62061は、セーフティ関連電気制御システム(SRECS:Safety-related electrical control system)の特定アプリケーションがファンクショナルセーフティ要求事項を満たすことを検査によって確認することを要求する。このようなファンクショナルセーフティ要求事項を満たすことを検査によって確認する手順を妥当性確認(validation)と称す。
【0009】
セーフティコントローラは、このような妥当性確認を行う必要があるが、上述の先行技術では、妥当性確認をより効率的に行うことについては何ら考慮されていない。本発明は、妥当性確認をより効率的に行うための構成を提供することを一つの目的とする。
【課題を解決するための手段】
【0010】
ある実施の形態に従えば、サポート装置およびセーフティコントローラを備えるセーフティシステムが提供される。サポート装置は、セーフティプログラムを生成する第1の生成部と、生成されたセーフティプログラムに基づいて第1の妥当性確認コードを生成する第2の生成部とを含む。セーフティコントローラは、記憶媒体に格納されたセーフティプログラムを読み出して一時的に保持する記憶領域と、一時的に保持されたセーフティプログラムを実行する実行部と、一時的に保持されたセーフティプログラムに基づいて第2の妥当性確認コードを生成する第3の生成部と、ユーザ操作によって入力された第1の妥当性確認コードと、第2の妥当性確認コードとが一致すると、一時的に保持されたセーフティプログラムを通常実行するセーフティプログラムとして決定する管理部とを含む。
【0011】
この構成によれば、セーフティコントローラに対して、記憶媒体を装着してセーフティプログラムを提供するとともに、必要な妥当性確認を行った後に、サポート装置が生成した妥当性確認コードを入力することで、セーフティコントローラに通常の動作を行わせることができる。
【0012】
セーフティコントローラは、記憶媒体に格納されたセーフティプログラムを揮発性領域記憶装置に保持し、通常実行するセーフティプログラムを不揮発性記憶装置に格納するようにしてもよい。この構成によれば、セーフティコントローラの電源をオフすることで、記憶媒体に格納されたセーフティプログラムは消去されることとなり、妥当性確認がなされていないセーフティプログラムが実行されることを防止できる。
【0013】
第2の生成部は、予め定められたアルゴリズムに従って、生成されたセーフティプログラムから第1の妥当性確認コードを算出してもよい。第3の生成部は、予め定められたアルゴリズムに従って、一時的に保持されたセーフティプログラムから第2の妥当性確認コードを算出してもよい。この構成によれば、サポート装置が有している第2の生成部およびセーフティコントローラが有している第3の生成部のいずれもが同じアルゴリズムで妥当性確認コードを算出できるので、対象のセーフティプログラムの同一性を保証できる。
【0014】
第1の妥当性確認コードと同一の妥当性確認コードが生成されたセーフティプログラムに組み込まれてもよい。第3の生成部は、一時的に保持されたセーフティプログラムに組み込まれた妥当性確認コードを第2の妥当性確認コードとして決定してもよい。この構成によれば、セーフティコントローラは、第2の妥当性確認コードを算出する必要がないので、セーフティコントローラに要求される処理リソースなどの増大化を抑制できる。
【0015】
サポート装置は、第1の妥当性確認コードを表示する出力部をさらに含んでいてもよい。この構成によれば、設計者および/または作業者は、サポート装置の出力部の表示により第1の妥当性確認コードを即座に確認できる。
【0016】
セーフティコントローラは、第1の妥当性確認コードの入力を受け付ける入力部をさらに含んでいてもよい。この構成によれば、セーフティコントローラを操作することで、第1の妥当性確認コードを入力でき、別の装置が不要であるので、構成を簡素化できる。
【0017】
セーフティコントローラとは別の装置に対して入力された第1の妥当性確認コードが、当該別の装置からセーフティコントローラへ提供されてもよい。この構成によれば、第1の妥当性確認コードの入力をより容易化できる。
【0018】
別の実施の形態に従うセーフティコントローラは、記憶媒体に格納されたセーフティプログラムを読み出して一時的に保持する記憶領域を含む。セーフティプログラムは、サポート装置によって生成されたものである。サポート装置は、生成されたセーフティプログラムに基づいて第1の妥当性確認コードを生成する。セーフティコントローラは、一時的に保持されたセーフティプログラムを実行する実行部と、一時的に保持されたセーフティプログラムに基づいて第2の妥当性確認コードを生成する第3の生成部と、ユーザ操作によって入力された第1の妥当性確認コードと、第2の妥当性確認コードとが一致すると、一時的に保持されたセーフティプログラムを通常実行するセーフティプログラムとして決定する管理部とを含む。
【0019】
さらに別の実施の形態に従えば、サポート装置およびセーフティコントローラを備えるセーフティシステムにおける処理方法が提供される。処理方法は、サポート装置が、セーフティプログラムを生成するステップと、サポート装置が、生成されたセーフティプログラムに基づいて第1の妥当性確認コードを生成するステップと、セーフティコントローラが、記憶媒体に格納されたセーフティプログラムを読み出して記憶領域に一時的に保持するステップと、一時的に保持されたセーフティプログラムを実行するステップと、一時的に保持されたセーフティプログラムに基づいて第2の妥当性確認コードを生成するステップと、ユーザ操作によって入力された第1の妥当性確認コードと、第2の妥当性確認コードとが一致すると、一時的に保持されたセーフティプログラムを通常実行するセーフティプログラムとして決定するステップとを含む。
【発明の効果】
【0020】
本発明によれば、妥当性確認をより効率的に行うことができる。
【図面の簡単な説明】
【0021】
【
図1】本実施の形態に従うセーフティコントローラにおける妥当性確認に係る処理の概略を示す模式図である。
【
図2】本実施の形態に従うセーフティコントローラのハードウェア構成例を示す模式図である。
【
図3】本実施の形態に従うサポート装置のハードウェア構成例を示す模式図である。
【
図4】関連技術に従うセーフティコントローラのセーフティプログラムの妥当性確認の手順を説明するための図である。
【
図5】本実施の形態に従うセーフティコントローラのセーフティプログラムの妥当性確認の手順を説明するための図である。
【
図6】本実施の形態に従うセーフティプログラムの妥当性確認を実現するための機能構成例を示す模式図である。
【
図7】本実施の形態に従うサポート装置が実行する処理手順の一例を示すフローチャートである。
【
図8】本実施の形態に従うセーフティコントローラが実行する処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0022】
本技術の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【0023】
<A.適用例>
まず、本発明が適用される場面の一例について説明する。
【0024】
図1は、本実施の形態に従うセーフティコントローラ100における妥当性確認に係る処理の概略を示す模式図である。
図1を参照して、本実施の形態に従うセーフティシステム1は、セーフティコントローラ100およびサポート装置200を含む。
【0025】
セーフティコントローラ100は、生産設備に配置されており、セーフティプログラムを実行する。セーフティプログラムは、設置現場にあるセーフティデバイス300からの入力信号に基づいて、セーフティロジックを実行し、その実行結果に基づく出力信号をセーフティデバイス300に出力する。
【0026】
セーフティコントローラ100で実行されるセーフティプログラムは、設置現場とは異なる開発環境に用意されたサポート装置200により開発される。開発環境には、開発用のセーフティコントローラ100Aが用意されていてもよい。
【0027】
設計者は、サポート装置200上でセーフティプログラムを作成する((1)セーフティプログラム作成)。作成されたセーフティプログラムは、メモリカード50などの記憶媒体に格納される((2)セーフティプログラム出力)。
【0028】
メモリカード50は、着脱可能な記憶媒体であり、SDカード、USB(Universal Serial Bus)メモリ、CompactFlashフラッシュ(登録商標)などの任意の可搬型の記憶媒体を包含する。
【0029】
メモリカード50に格納されるセーフティプログラムは、妥当性確認がなされる前のプログラムである。そのため、以下では、メモリカード50に格納されるセーフティプログラムを「未確認セーフティプログラム20」と称す。対象のセーフティコントローラ100において、未確認セーフティプログラム20の妥当性確認が完了すると、未確認セーフティプログラム20が正式なセーフティプログラムとなる。以下では、妥当性確認が完了したセーフティプログラムを「確認済セーフティプログラム30」と称す。
【0030】
サポート装置200は、未確認セーフティプログラム20の出力と同時、あるいは、任意のタイミングで、妥当性確認コード40を出力する((3)妥当性確認コード出力)。
【0031】
妥当性確認コード40は、未確認セーフティプログラム20を確認済セーフティプログラム30として承認するために必要な情報である。すなわち、妥当性確認コード40は、未確認セーフティプログラム20がファンクショナルセーフティ要求事項を満たしていることを設計者および/または作業者が確認したことをセーフティコントローラ100に対して通知するための情報である。
【0032】
妥当性確認の作業者は、メモリカード50をセーフティコントローラ100に装着して、メモリカード50に格納されている未確認セーフティプログラム20をセーフティコントローラ100に書き込む((4)プログラム転送)。この時点において、セーフティコントローラ100は、妥当性確認を行うためのモードになっており、通常の稼働モードではない。
【0033】
作業者は、予め定められた動作確認を行って、未確認セーフティプログラム20を実行するセーフティコントローラ100がファンクショナルセーフティ要求事項を満たしているか否かを確認する((5)妥当性確認)。妥当性確認が問題なく完了すると、作業者は、妥当性確認コード40をセーフティコントローラ100に入力する((6)コード入力)。すると、セーフティコントローラ100は、入力された妥当性確認コード40が未確認セーフティプログラム20に対応するコードであるか否かを検証する((7)コード検証)。
【0034】
入力された妥当性確認コード40が未確認セーフティプログラム20に対応するコードであることが検証されると、セーフティコントローラ100は、未確認セーフティプログラム20を確認済セーフティプログラム30として格納し、確認済セーフティプログラム30の実行を開始する((8)セーフティプログラム実行)。
【0035】
本実施の形態に従うセーフティコントローラ100においては、確認済セーフティプログラム30を実行するために、サポート装置200を接続する必要がない。すなわち、未確認セーフティプログラム20が格納されたメモリカード50と、妥当性確認コード40とがあれば、妥当性確認、および、その後のセーフティコントローラ100を稼働させる処理を行うことができる。
【0036】
<B.ハードウェア構成例>
次に、本実施の形態に従うセーフティコントローラ100およびサポート装置200のハードウェア構成例について説明する。
【0037】
(b1:セーフティコントローラ100)
図2は、本実施の形態に従うセーフティコントローラ100のハードウェア構成例を示す模式図である。
図2を参照して、セーフティコントローラ100は、プロセッサ102と、メインメモリ104と、ストレージ110と、フィールドネットワークコントローラ106と、USBコントローラ108と、入力部112と、メモリカードインターフェイス114と、セーフティローカルバスコントローラ116とを含む。これらのコンポーネントは、プロセッサバス120を介して接続されている。
【0038】
プロセッサ102は、セーフティプログラムを実行する演算処理部であり、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)などで構成される。具体的には、プロセッサ102は、ストレージ110に格納されたプログラムを読み出して、メインメモリ104に展開して実行する。
【0039】
メインメモリ104は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置で構成される。ストレージ110は、例えば、SSD(Solid State Drive)やHDD(Hard Disk Drive)などの不揮発性記憶装置で構成される。
【0040】
メインメモリ104は、後述するように、未確認セーフティプログラム20を一時的に保持するためのプログラム保持領域1042が用意されていてもよい。
【0041】
ストレージ110には、セーフティコントローラ100で必要な基本的な機能を実現するためのシステムプログラム1102、および、確認済セーフティプログラム30が格納される。
【0042】
フィールドネットワークコントローラ106は、図示しないフィールドネットワークを介して、任意のデバイス(例えば、他のコントローラ)との間でデータをやり取りする。
【0043】
USBコントローラ108は、USB接続を介して、任意の装置との間でデータをやり取りする。なお、メモリカード50としてUSBメモリが用いられる場合には、USBコントローラ108は、メモリカード50に格納された未確認セーフティプログラム20を読み出す装置として用いられてもよい。
【0044】
メモリカードインターフェイス114は、装着されたメモリカード50に格納された任意のデータを読み出すとともに、任意のデータをメモリカード50に書き込む。
【0045】
入力部112は、ユーザ操作を受け付ける任意のデバイスである。本実施の形態においては、ユーザは、入力部112を介して、妥当性確認コード40をセーフティコントローラ100に入力する。すなわち、入力部112は、妥当性確認コード40の入力を受け付ける。入力部112はどのようなデバイスであってもよい。入力部112は、例えば、ロータリースイッチ、ディップスイッチ、サービススイッチなどのセーフティコントローラ100の露出面に配置されたデバイスであってもよいし、タッチパネル、HMI(Human Machine Interface)、PT(Programmable Terminal)などのデバイスであってもよい。
【0046】
セーフティローカルバスコントローラ116は、セーフティローカルバスを介して、セーフティIOユニット118に接続されるセーフティデバイス300との間でデータをやり取りする。
【0047】
(b2:サポート装置200)
図3は、本実施の形態に従うサポート装置200のハードウェア構成例を示す模式図である。サポート装置200は、一例として、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコン)を用いて実現される。
【0048】
図3を参照して、サポート装置200は、プロセッサ202と、メインメモリ204と、入力部206と、出力部208と、ストレージ210と、光学ドライブ212と、メモリカードインターフェイス216と、USBコントローラ218とを含む。これらのコンポーネントは、プロセッサバス220を介して接続されている。
【0049】
プロセッサ202は、CPUやGPUなどで構成され、ストレージ210に格納されたプログラム(一例として、OS2102および開発プログラム2104)を読み出して、メインメモリ204に展開して実行することで、サポート装置200としての処理を実現する。
【0050】
メインメモリ204は、DRAMやSRAMなどの揮発性記憶装置で構成される。ストレージ210は、例えば、HDDやSSDなどの不揮発性記憶装置で構成される。
【0051】
ストレージ210には、基本的な機能を実現するためのOS2102、サポート装置200としての機能を提供するための開発プログラム2104、開発環境において設計者により作成されるプロジェクトデータ2106が格納される。
【0052】
サポート装置200は、セーフティコントローラ100で実行されるセーフティプログラムの作成が可能な開発環境を提供する。プロジェクトデータ2106は、セーフティプログラムのソースコードであるセーフティソースプログラム2108を含む。セーフティソースプログラム2108がビルドされることで、セーフティプログラムが生成される。
【0053】
入力部206は、キーボードやマウスなどで構成され、ユーザ操作を受け付ける。
【0054】
出力部208は、ディスプレイ、各種インジケータ、プリンタなどで構成され、プロセッサ202からの処理結果などを出力する。一例として、出力部208は、妥当性確認コード40を表示する。
【0055】
メモリカードインターフェイス216は、装着されたメモリカード50に格納された任意のデータを読み出すとともに、任意のデータをメモリカード50に書き込む。
【0056】
USBコントローラ218は、USB接続を介して、任意の装置との間でデータをやり取りする。なお、メモリカード50としてUSBメモリが用いられる場合には、USBコントローラ218は、メモリカード50に未確認セーフティプログラム20を書き込む装置として用いられてもよい。
【0057】
サポート装置200は、光学ドライブ212を有しており、コンピュータ読取可能なプログラムを非一過的に格納する記憶媒体214(例えば、DVD(Digital Versatile Disc)などの光学記憶媒体)から、その中に格納されたプログラムが読み取られてストレージ210などにインストールされる。
【0058】
サポート装置200で実行される開発プログラム2104などは、コンピュータ読取可能な記憶媒体214を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に従うサポート装置200が提供する機能は、OSが提供するモジュールの一部を利用する形で実現される場合もある。
【0059】
(b3:その他の形態)
図2および
図3には、1または複数のプロセッサがプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。
【0060】
<C.関連技術>
次に、関連技術に従うセーフティコントローラ100のセーフティプログラムの妥当性確認について説明する。
【0061】
図4は、関連技術に従うセーフティコントローラ100のセーフティプログラムの妥当性確認の手順を説明するための図である。関連技術においては、サポート装置200を用いて、セーフティプログラムの妥当性確認を行う。
【0062】
図4を参照して、設計者は、設置現場にサポート装置200を持ち込み、サポート装置200と対象のセーフティコントローラ100とを接続する。そして、設計者は、サポート装置200を操作して、セーフティプログラム(未確認セーフティプログラム20)をセーフティコントローラ100へ転送する(ステップS1)。なお、サポート装置200からセーフティコントローラ100への未確認セーフティプログラム20の転送時には、セーフティコントローラ100はデバッグモードに設定されてもよい。
【0063】
セーフティコントローラ100は、サポート装置200からの未確認セーフティプログラム20をメインメモリ104に一時的に保持する(
図2に示すプログラム保持領域1042)。そして、セーフティコントローラ100は、メインメモリ104に一時的に保持した未確認セーフティプログラム20を実行する。
【0064】
設計者は、未確認セーフティプログラム20を実行しているセーフティコントローラ100を用いて妥当性確認を行う。ファンクショナルセーフティ要求事項が満たされていることを確認すると、設計者は、サポート装置200を操作して、完了通知コマンド60をセーフティコントローラ100へ転送する(ステップS2)。セーフティコントローラ100は、サポート装置200からの完了通知コマンド60に従って、メインメモリ104に一時的に保持していた未確認セーフティプログラム20を確認済セーフティプログラム30としてストレージ110に格納する(ステップS3)。ストレージ110に確認済セーフティプログラム30が格納されることで、セーフティコントローラ100で実行されるセーフティプログラムが確定する。
【0065】
図4に示す関連技術においては、設計者が設置現場にサポート装置200を持ち込む必要がある。そのため、設計者によっては、セーフティコントローラ100を稼働させるのに手間と時間を要し得る。
【0066】
<D.セーフティプログラムの妥当性確認>
次に、本実施の形態に従うセーフティコントローラ100のセーフティプログラムの妥当性確認について説明する。
【0067】
図5は、本実施の形態に従うセーフティコントローラ100のセーフティプログラムの妥当性確認の手順を説明するための図である。
【0068】
図5を参照して、設計者は、サポート装置200(
図5には図示していない)を操作して、セーフティプログラム(未確認セーフティプログラム20)および妥当性確認コード40を用意する。未確認セーフティプログラム20および妥当性確認コード40は、妥当性確認の作業者へ提供される。
【0069】
妥当性確認コード40は、未確認セーフティプログラム20から一意に算出される所定桁数の文字列である。例えば、未確認セーフティプログラム20のCRC(Cyclic Redundancy Check)や、任意のハッシュ関数を用いて未確認セーフティプログラム20から算出されるハッシュ値などが用いられる。すなわち、未確認セーフティプログラム20と妥当性確認コード40との組み合わせは、実質的に一意になるように構成されている。
【0070】
作業者は、設計者から提供された未確認セーフティプログラム20をメモリカード50に書き込む。なお、設計者からの未確認セーフティプログラム20および妥当性確認コード40は、サーバや電子メールによって、電子的に作業者へ提供されてもよい。
【0071】
あるいは、設計者がサポート装置200を操作して、未確認セーフティプログラム20をメモリカード50に書き込み、メモリカード50を作業者に提供するようにしてもよい。
【0072】
続いて、作業者は、メモリカード50をセーフティコントローラ100に装着して、メモリカード50に格納されている未確認セーフティプログラム20をセーフティコントローラ100に書き込む(ステップS11)。
【0073】
セーフティコントローラ100は、メモリカード50からの未確認セーフティプログラム20をメインメモリ104に一時的に保持する(
図2に示すプログラム保持領域1042)。そして、セーフティコントローラ100は、メインメモリ104に一時的に保持した未確認セーフティプログラム20の実行を開始する。
【0074】
なお、作業者がセーフティコントローラ100に対して所定の操作を行うことで、セーフティコントローラ100がメインメモリ104に一時的に保持した未確認セーフティプログラム20の実行を開始するように構成してもよい。
【0075】
例えば、作業者が、セーフティコントローラ100の電源をオフした状態で、ディップスイッチを操作して、セーフティコントローラ100をデバッグモードに変更した上で、セーフティコントローラ100の電源を投入する。すると、セーフティコントローラ100は、メインメモリ104から未確認セーフティプログラム20を読み出して、メインメモリ104に一時的に保持する。このとき、セーフティコントローラ100は、LEDなどで実行開始を通知するようにしてもよい。そして、作業者がセーフティコントローラ100の所定のスイッチを押下することで、セーフティコントローラ100は、未確認セーフティプログラム20の実行を開始する。
【0076】
作業者は、未確認セーフティプログラム20を実行しているセーフティコントローラ100を用いて妥当性確認を行う。ファンクショナルセーフティ要求事項が満たされていることを確認すると、作業者は、セーフティコントローラ100のディップスイッチを操作して、セーフティコントローラ100を、妥当性確認コード40の入力を受け付ける妥当性確認モードに変更する。このとき、セーフティコントローラ100は、未確認セーフティプログラム20の実行を停止する。
【0077】
続いて、作業者は、セーフティコントローラ100のロータリースイッチやサービススイッチなどを用いて、設計者から提供された妥当性確認コード40を入力する(ステップS12)。
【0078】
例えば、作業者がロータリースイッチを操作して値(例えば、16進の値)を設定し、サービススイッチを押下すると、当該設定されている値がセーフティコントローラ100に入力される。作業者は、ロータリースイッチおよびサービススイッチを用いた入力操作を、妥当性確認コード40の先頭から順に桁数分だけ繰り返す。
【0079】
作業者が妥当性確認コード40のすべての桁の値が入力すると、セーフティコントローラ100は、メインメモリ104に一時的に保持している未確認セーフティプログラム20に基づいて、妥当性確認コード42を生成する(ステップS13)。そして、生成した妥当性確認コード42が入力された妥当性確認コード40と一致すると、セーフティコントローラ100は、メインメモリ104に一時的に保持していた未確認セーフティプログラム20を確認済セーフティプログラム30としてストレージ110に格納する(ステップS14)。ストレージ110に確認済セーフティプログラム30が格納されることで、セーフティコントローラ100で実行されるセーフティプログラムが確定する。
【0080】
一連の処理が終了後、作業者は、セーフティコントローラ100のディップスイッチを操作して、セーフティコントローラ100を通常モードに変更した上で、一旦電源をオフした後に電源を再投入する。この操作によって、セーフティコントローラ100は、ストレージ110に格納された確認済セーフティプログラム30の実行を開始する。
【0081】
<E.機能構成例>
次に、本実施の形態に従うセーフティプログラムの妥当性確認を実現するための機能構成例について説明する。
【0082】
図6は、本実施の形態に従うセーフティプログラムの妥当性確認を実現するための機能構成例を示す模式図である。
【0083】
図6を参照して、サポート装置200は、機能構成として、セーフティプログラム生成モジュール250と、妥当性確認コード生成モジュール260とを含む。これらの機能構成は、サポート装置200のプロセッサ202が開発プログラム2104を実行することで実現されてもよい。
【0084】
セーフティプログラム生成モジュール250は、セーフティソースプログラム2108からセーフティプログラム(未確認セーフティプログラム20)を生成する。
【0085】
妥当性確認コード生成モジュール260は、セーフティプログラム生成モジュール250により生成されたセーフティプログラム(未確認セーフティプログラム20)に基づいて妥当性確認コード40を生成する。一例として、妥当性確認コード生成モジュール260は、予め定められたアルゴリズムに従って、生成された未確認セーフティプログラム20から妥当性確認コード40を生成する。より具体的には、妥当性確認コード生成モジュール260は、セーフティプログラム(未確認セーフティプログラム20)のCRCやハッシュ値を算出し、その一部または全部を妥当性確認コード40として出力する。
【0086】
セーフティコントローラ100は、機能構成として、管理モジュール150と、妥当性確認コード生成モジュール160と、実行エンジン170とを含む。これらの機能構成は、セーフティコントローラ100のプロセッサ102がシステムプログラム1102を実行することで実現されてもよい。
【0087】
管理モジュール150は、入力される未確認セーフティプログラム20および妥当性確認コード40に応じて、セーフティプログラムの妥当性確認に必要な処理を実行する。より具体的には、管理モジュール150は、メモリカード50から読み出した未確認セーフティプログラム20をメインメモリ104に一時的に保持するとともに、妥当性確認コード生成モジュール160が生成した妥当性確認コード42と入力された妥当性確認コード40とが一致したことを条件にして、メインメモリ104に保持された未確認セーフティプログラム20をストレージ110に移動させる。
【0088】
このように、管理モジュール150は、ユーザ操作によって入力された妥当性確認コード40と、妥当性確認コード生成モジュール160が生成した妥当性確認コード42とが一致すると、一時的に保持された未確認セーフティプログラム20を通常実行するセーフティプログラム(確認済セーフティプログラム30)として決定する。
【0089】
メインメモリ104は、記憶媒体であるメモリカード50に格納された未確認セーフティプログラム20を読み出して一時的に保持する記憶領域である。ストレージ110は、通常実行するセーフティプログラムを恒久的に格納する記憶領域である。
【0090】
すなわち、セーフティコントローラは、メモリカード50に格納された未確認セーフティプログラム20を揮発性領域記憶装置であるメインメモリ104に保持し、通常実行する確認済セーフティプログラム30を不揮発性記憶装置であるストレージ110に格納する。
【0091】
妥当性確認コード生成モジュール160は、メインメモリ104に一時的に保持された未確認セーフティプログラム20に基づいて妥当性確認コード42を生成する。妥当性確認コード生成モジュール160が妥当性確認コード42を生成するアルゴリズムは、サポート装置200の妥当性確認コード生成モジュール260と実質的に同一である。すなわち、妥当性確認コード生成モジュール160は、妥当性確認コード生成モジュール160と同じアルゴリズムに従って、一時的に保持された未確認セーフティプログラム20から妥当性確認コード42を算出する。
【0092】
実行エンジン170は、管理モジュール150からの指示に従って、メインメモリ104に保持された未確認セーフティプログラム20、または、ストレージ110に格納された確認済セーフティプログラム30を実行する。妥当性確認においては、実行エンジン170は、一時的に保持された未確認セーフティプログラム20を実行する。
【0093】
<F.処理手順>
次に、本実施の形態に従うセーフティプログラムの妥当性確認に係る処理手順について説明する。
【0094】
図7は、本実施の形態に従うサポート装置200が実行する処理手順の一例を示すフローチャートである。
図7には、サポート装置200が未確認セーフティプログラム20および妥当性確認コード40を出力する処理に係る処理手順を示す。
図7に示す各ステップは、サポート装置200のプロセッサ202が開発プログラム2104を実行することで実現されてもよい。
【0095】
図7を参照して、サポート装置200は、セーフティプログラムの生成が指示されると(ステップS100においてYES)、プロジェクトデータ2106に含まれるセーフティソースプログラム2108をビルドする(ステップS102)。そして、サポート装置200は、ビルドが成功したか否かを判断する(ステップS104)。ビルドが失敗すると(ステップS104においてNO)、処理は終了する。
【0096】
ビルドが成功すると(ステップS104においてYES)、サポート装置200は、生成されたセーフティプログラム(オブジェクトコード)を予め定められた領域に格納する(ステップS106)。
【0097】
続いて、サポート装置200は、生成したセーフティプログラムに基づいて妥当性確認コード40を生成する(ステップS108)とともに、生成した妥当性確認コード40を出力部208(例えば、ディスプレイ)に出力する(ステップS110)。そして、処理は終了する。
【0098】
図8は、本実施の形態に従うセーフティコントローラ100が実行する処理手順の一例を示すフローチャートである。
図8には、セーフティコントローラ100がデバッグモードおよび妥当性確認モードで動作する処理手順を示す。
図8に示す各ステップは、セーフティコントローラ100のプロセッサ102がシステムプログラム1102を実行することで実現されてもよい。
【0099】
図8を参照して、セーフティコントローラ100は、デバッグモードで起動すると(ステップS200においてYES)、セーフティコントローラ100に装着されたメモリカード50に対象の未確認セーフティプログラム20が格納されているか否かを判断する(ステップS202)。メモリカード50に対象の未確認セーフティプログラム20が格納されていなければ(ステップS202においてNO)、処理は終了する。
【0100】
メモリカード50に対象の未確認セーフティプログラム20が格納されていれば(ステップS202においてYES)、セーフティコントローラ100は、メモリカード50に格納されている未確認セーフティプログラム20を読み出して、メインメモリ104に一時的に保持する(ステップS204)。そして、セーフティコントローラ100は、セーフティプログラムの実行を停止している状態となり(ステップS206)、サービススイッチが押下されるまで待機する(ステップS208)。
【0101】
サービススイッチが押下されると(ステップS208においてYES)、セーフティコントローラ100は、メインメモリ104に一時的に保持されている未確認セーフティプログラム20の実行を開始し(ステップS210)、ディップスイッチにより妥当性確認モードへの変更が指示されるまで、未確認セーフティプログラム20の実行を継続する(ステップS212においてNO)。
【0102】
ディップスイッチにより妥当性確認モードへの変更が指示されると(ステップS212においてYES)、セーフティコントローラ100は、未確認セーフティプログラム20の実行を停止する(ステップS214)。そして、セーフティコントローラ100は、妥当性確認コード40の入力を待つ(ステップS216)。
【0103】
妥当性確認コード40が入力されると(ステップS216においてYES)、セーフティコントローラ100は、メインメモリ104に一時的に保持されている未確認セーフティプログラム20に基づいて妥当性確認コード42を生成し(ステップS218)、生成した妥当性確認コード42と入力された妥当性確認コード40とが一致するか否かを判断する(ステップS220)。
【0104】
生成した妥当性確認コード42と入力された妥当性確認コード40とが一致していなければ(ステップS220においてNO)、セーフティコントローラ100は、異常終了を通知し(ステップS222)、処理を終了する。
【0105】
生成した妥当性確認コード42と入力された妥当性確認コード40とが一致していれば(ステップS220においてYES)、セーフティコントローラ100は、メインメモリ104に一時的に保持している未確認セーフティプログラム20を確認済セーフティプログラム30(通常実行するセーフティプログラム)としてストレージ110に格納する(ステップS224)。そして、処理は終了する。
【0106】
なお、セーフティコントローラ100は、電源が再度オンされると、ストレージ110に格納されている確認済セーフティプログラム30の実行を開始する。
【0107】
<G.変形例>
上述の実施の形態に関して、以下のような変形例を採用してもよい。
【0108】
(g1:未確認セーフティプログラムの保持)
上述の実施の形態においては、未確認セーフティプログラム20をメインメモリ104に一時的に保持した後に、ストレージ110に移動させる処理を採用した構成を例示したが、これに限らず、未確認セーフティプログラム20についてもストレージ110に格納するようにしてもよい。
【0109】
この場合であっても、未確認セーフティプログラム20が一時的に保持されることを実現するために、セーフティコントローラ100は、電源がオンされたときに、ストレージ110に格納されている未確認セーフティプログラム20を自動的に削除するようにしてもよい。あるいは、セーフティコントローラ100は、電源がオンされたときに、ストレージ110に格納されている未確認セーフティプログラム20については無効化するようにしてもよい。
【0110】
メインメモリ104に一時的に保持する構成を採用しないことで、メインメモリ104の必要な容量が増大することを抑制できる。
【0111】
(g2:妥当性確認コードの組み込み)
上述の実施の形態においては、セーフティコントローラ100が未確認セーフティプログラム20に基づいて妥当性確認コード42を算出し、算出された妥当性確認コード42と入力された妥当性確認コード40との一致を判断する構成を例示したが、サポート装置200が生成する未確認セーフティプログラム20に妥当性確認コード42を組み込むようにしてもよい。このように、妥当性確認コード40と同一の妥当性確認コードが生成された未確認セーフティプログラム20に組み込まれもよい。
【0112】
一方、セーフティコントローラ100の妥当性確認コード生成モジュール160は、一時的に保持された未確認セーフティプログラム20に組み込まれた妥当性確認コードを比較用の妥当性確認コード42として決定する。
【0113】
すなわち、セーフティコントローラ100は、メモリカード50から読み出した未確認セーフティプログラム20に組み込まれた妥当性確認コードと、入力された妥当性確認コード40との一致を判断するようにしてもよい。
【0114】
この構成によれば、セーフティコントローラ100において妥当性確認コード42を算出する必要がないので、セーフティコントローラ100に要求される処理リソースなどの増大化を抑制できる。
【0115】
(g3:外部装置を介した妥当性確認コード40の入力)
上述の実施の形態においては、セーフティコントローラ100に設けられたロータリースイッチやサービススイッチを用いて妥当性確認コード40が入力される構成を例示したが、セーフティコントローラ100とは異なる装置(例えば、タッチパネル、HMI、PTなどのデバイスや、上位のコントローラなど)から妥当性確認コード40を入力するようにしてもよい。
【0116】
このように、セーフティコントローラ100とは別の装置に対して入力された妥当性確認コード40が、当該別の装置からセーフティコントローラ100へ提供されるようにしてもよい。この構成によれば、妥当性確認コード40をより容易に入力することができる。
【0117】
(g4:サポート装置200および未確認セーフティプログラム20)
本実施の形態に従うサポート装置200は、セーフティコントローラ100を所有している組織の所有であってもよいし、第三者の所有であってもよい。例えば、セーフティコントローラ100を製造販売しているメーカあるいは販売会社などがサポート装置200を所有していてもよい。
【0118】
また、サポート装置200が未確認セーフティプログラム20を生成する操作は、セーフティコントローラ100を所有している組織の設計者が行ってもよいし、別の組織(例えば、セーフティコントローラ100を製造販売しているメーカや、セーフティコントローラ100を含むシステムを構築するシステムインテグレータなど)に属する設計者が行ってもよい。
【0119】
また、設計者が対象のセーフティコントローラ100に応じたセーフティロジックをサポート装置200上で都度開発することで、未確認セーフティプログラム20が生成されてもよいし、既存の生産ラインを増設するような場合には、予め作成されたセーフティプログラムのプロジェクトを再度ビルドすることで、未確認セーフティプログラム20が生成されてもよい。この場合には、サポート装置200が自動的に未確認セーフティプログラム20および妥当性確認コードを生成するようにしてもよい。
【0120】
<H.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
【0121】
[構成1]
サポート装置(200)およびセーフティコントローラ(100)を備えるセーフティシステム(1)であって、
前記サポート装置は、
セーフティプログラム(20)を生成する第1の生成部(250)と、
前記生成されたセーフティプログラムに基づいて第1の妥当性確認コード(40)を生成する第2の生成部(260)とを備え、
前記セーフティコントローラは、
記憶媒体(50)に格納されたセーフティプログラム(20)を読み出して一時的に保持する記憶領域(104)と、
前記一時的に保持されたセーフティプログラムを実行する実行部(170)と、
前記一時的に保持されたセーフティプログラムに基づいて第2の妥当性確認コード(42)を生成する第3の生成部(160)と、
ユーザ操作によって入力された前記第1の妥当性確認コードと、前記第2の妥当性確認コードとが一致すると、前記一時的に保持されたセーフティプログラムを通常実行するセーフティプログラム(30)として決定する管理部(150)とを備える、セーフティシステム。
【0122】
[構成2]
前記セーフティコントローラは、前記記憶媒体に格納されたセーフティプログラムを揮発性領域記憶装置(104)に保持し、前記通常実行するセーフティプログラムを不揮発性記憶装置(110)に格納する、構成1に記載のセーフティシステム。
【0123】
[構成3]
前記第2の生成部は、予め定められたアルゴリズムに従って、前記生成されたセーフティプログラムから前記第1の妥当性確認コードを算出し、
前記第3の生成部は、前記予め定められたアルゴリズムに従って、前記一時的に保持されたセーフティプログラムから前記第2の妥当性確認コードを算出する、構成1または2に記載のセーフティシステム。
【0124】
[構成4]
前記第1の妥当性確認コードと同一の妥当性確認コードが前記生成されたセーフティプログラムに組み込まれ、
前記第3の生成部は、前記一時的に保持されたセーフティプログラムに組み込まれた妥当性確認コードを前記第2の妥当性確認コードとして決定する、構成1または2に記載のセーフティシステム。
【0125】
[構成5]
前記サポート装置は、前記第1の妥当性確認コードを表示する出力部(208)をさらに備える、構成1~4のいずれか1項に記載のセーフティシステム。
【0126】
[構成6]
前記セーフティコントローラは、前記第1の妥当性確認コードの入力を受け付ける入力部(112)をさらに備える、構成1~5のいずれか1項に記載のセーフティシステム。
【0127】
[構成7]
前記セーフティコントローラとは別の装置に対して入力された前記第1の妥当性確認コードが、当該別の装置から前記セーフティコントローラへ提供される、構成1~6のいずれか1項に記載のセーフティシステム。
【0128】
[構成8]
記憶媒体(50)に格納されたセーフティプログラム(20)を読み出して一時的に保持する記憶領域(104)を備え、前記セーフティプログラムは、サポート装置(200)により生成されたものであり、前記サポート装置は、前記生成されたセーフティプログラムに基づいて第1の妥当性確認コード(20)を生成し、
前記一時的に保持されたセーフティプログラムを実行する実行部(170)と、
前記一時的に保持されたセーフティプログラムに基づいて第2の妥当性確認コードを生成する第3の生成部(160)と、
ユーザ操作によって入力された前記第1の妥当性確認コードと、前記第2の妥当性確認コードとが一致すると、前記一時的に保持されたセーフティプログラムを通常実行するセーフティプログラム(30)として決定する管理部(150)とを備える、セーフティコントローラ。
【0129】
[構成9]
サポート装置(200)およびセーフティコントローラ(100)を備えるセーフティシステム(1)における処理方法であって、
前記サポート装置が、セーフティプログラム(20)を生成するステップ(S102~S106)と、
前記サポート装置が、前記生成されたセーフティプログラムに基づいて第1の妥当性確認コード(40)を生成するステップ(S108)と、
前記セーフティコントローラが、記憶媒体(50)に格納されたセーフティプログラム(20)を読み出して記憶領域(104)に一時的に保持するステップ(S108)と、
前記一時的に保持されたセーフティプログラムを実行するステップ(S210)と、
前記一時的に保持されたセーフティプログラムに基づいて第2の妥当性確認コード(42)を生成するステップ(S218)と、
ユーザ操作によって入力された前記第1の妥当性確認コードと、前記第2の妥当性確認コードとが一致すると、前記一時的に保持されたセーフティプログラムを通常実行するセーフティプログラムとして決定するステップ(S220~S224)とを備える、処理方法。
【0130】
<I.利点>
セーフティコントローラ100を稼働させるためには、ファンクショナルセーフティ要求事項を満たすことを設置現場で確認する必要がある。
【0131】
上述した関連記述においては、サポート装置をセーフティコントローラ100に接続して各種の操作および処理を行う必要がある。そのため、サポート装置の設置現場への持ち込みの手間や、サポート装置を操作するスキルを有する設計者が出向かなければならないといった負荷が生じ得る。
【0132】
これに対して、本実施の形態においては、メモリカードなどの記憶媒体に格納されたセーフティプログラムをセーフティコントローラ100に提供するとともに、一連の妥当性確認が完了すると、妥当性確認コード40を追加的に入力するだけで、セーフティコントローラ100を稼働できる状態にすることができる。この結果、設計者がサポート装置を持参してセーフティコントローラ100の設置現場などへ出向く必要がなくなるとともに、サポート装置を操作するスキルを有していない作業者であっても、妥当性確認さえ行えれば、セーフティコントローラ100を通常の稼働状態にすることができる。
【0133】
さらに、本実施の形態の仕組みを用いることで、遠隔地にいる設計者と設置現場にいる作業者とが連係して、セーフティコントローラ100を稼働させるために必要な処理を完結させることができる。
【0134】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0135】
1 セーフティシステム、20 未確認セーフティプログラム、30 確認済セーフティプログラム、40,42 妥当性確認コード、50 メモリカード、100,100A セーフティコントローラ、102,202 プロセッサ、104,204 メインメモリ、106 フィールドネットワークコントローラ、108,218 USBコントローラ、110,210 ストレージ、112,206 入力部、114,216 メモリカードインターフェイス、116 セーフティローカルバスコントローラ、118 セーフティIOユニット、120,220 プロセッサバス、150 管理モジュール、160,260 妥当性確認コード生成モジュール、170 実行エンジン、200 サポート装置、208 出力部、212 光学ドライブ、214 記憶媒体、250 セーフティプログラム生成モジュール、300 セーフティデバイス、1042 プログラム保持領域、1102 システムプログラム、2102 OS、2104 開発プログラム、2106 プロジェクトデータ、2108 セーフティソースプログラム。