(57)【要約】【課題】入出力データを生成する制御プログラムの周期でしか、被制御機器や制御アプリケーションプログラムに関するイベントを検出できないこと。【解決手段】制御装置は、制御プログラムに従って第１の周期で被制御機器を制御し、第１の周期より短い第２の周期で、被制御機器の制御に関するイベントを検出する制御部を備える。制御方法は、制御プログラムに従って第１の周期で被制御機器を制御する段階と、第１の周期より短い第２の周期で、被制御機器の制御に関するイベントを検出する段階とを備える。【選択図】図５
2018022288.tif 000002
【特許請求の範囲】
【請求項１】
制御プログラムに従って第１の周期で被制御機器を制御し、前記第１の周期より短い第２の周期で、前記被制御機器の制御に関するイベントを検出する制御部
を備える制御装置。
【請求項２】
前記制御部は、前記制御プログラムに従って、前記被制御機器に対する制御データを生成し、
前記制御装置は、
前記第１の周期で前記制御データを前記被制御機器へ出力する出力部
をさらに備える請求項１に記載の制御装置。
【請求項３】
前記制御部は、２個以上のＮ個のタクト毎に前記被制御機器を制御し、Ｎ個より少ないＭ個のタクト毎に前記イベントを検出する
請求項１又は２に記載の制御装置。
【請求項４】
前記制御部は、１個のタクト毎に、前記イベントを検出する
請求項３に記載の制御装置。
【請求項５】
前記制御部は、前記第１の周期より短い第２の周期で、前記制御プログラムとは異なるシステムプログラムに従って、前記イベントを検出する
請求項１から４のいずれか一項に記載の制御装置。
【請求項６】
各タクトにおいて、前記制御部が前記制御プログラムを実行する第１の期間と、前記制御部がシステムプログラムを実行する第２の期間とが定められており、
前記制御部は、前記システムプログラムに従って、１つのタクトにおける前記第２の期間内で、前記イベントを検出する
請求項１から５のいずれか一項に記載の制御装置。
【請求項７】
前記制御部が前記システムプログラムに従って実行する処理は、
前記制御プログラムのタスクの実行をスケジューリングする処理、
前記被制御機器からの入力データをＩＯメモリに記憶する処理、
前記制御プログラムを実行することにより生成された前記被制御機器に対する制御データを前記被制御機器へ出力するための処理、及び、
外部の監視装置との間でメッセージを送受信するための処理
のうちの少なくとも１つを含む
請求項５又は６に記載の制御装置。
【請求項８】
前記イベントを検出するための検出条件を記憶する検出条件記憶部と、
外部の監視装置から、前記検出条件に対して更新、追加又は削除を指示するメッセージを受信する受信部と
をさらに備え、
前記制御部は、前記受信部が前記メッセージを受信した場合に、前記制御プログラムを稼働させたまま、システムプログラムに従って前記検出条件記憶部に記憶されている検出条件を更新、追加又は削除する
請求項５から７のいずれか一項に記載の制御装置。
【請求項９】
前記制御部は、前記第１の周期より短い周期で、前記制御プログラムが演算に用いる変数を検証することによって、前記イベントを検出する
請求項１から８のいずれか一項に記載の制御装置。
【請求項１０】
前記制御部は、前記第１の周期より短い周期で前記被制御機器からの入力データを取得し、前記制御部は、前記第２の周期で前記入力データを検証することによって、前記イベントを検出する
請求項１から９のいずれか一項に記載の制御装置。
【請求項１１】
前記第２の周期で検出された前記イベントを、外部の監視装置に送信する送信部
をさらに備える請求項１から１０のいずれか一項に記載の制御装置。
【請求項１２】
請求項１から１１のいずれか一項に記載の制御装置と、
監視装置と
を備え、
前記制御装置は、前記第２の周期で検出された前記イベントを、前記監視装置に送信する
制御システム。
【請求項１３】
請求項１から１１のいずれか一項に記載の制御装置と、
前記制御装置による制御に従って、前記被制御機器との間でデータの入出力を行う入出力装置と
を備える制御システム。
【請求項１４】
制御プログラムに従って第１の周期で被制御機器を制御する段階と、
前記第１の周期より短い第２の周期で、前記被制御機器の制御に関するイベントを検出する段階と
を備える制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置、制御システム及び制御方法に関する。
【背景技術】
【０００２】
各アナログ入力信号を第１の所定周期毎に収集してタイムスタンプを付してサンプリングデータとして格納する制御装置が知られている（例えば特許文献１参照）。
特許文献１  特開２００８−２０４１６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００３】
従来、制御プログラムが被制御機器を制御する周期より短い周期で被制御機器の制御に関するイベントを検出できないという課題があった。
【課題を解決するための手段】
【０００４】
第１の態様において、制御装置は、制御プログラムに従って第１の周期で被制御機器を制御し、第１の周期より短い第２の周期で、被制御機器の制御に関するイベントを検出する制御部を備える。
【０００５】
制御部は、制御プログラムに従って、被制御機器に対する制御データを生成し、制御装置は、第１の周期で制御データを被制御機器へ出力する出力部をさらに備えてよい。
【０００６】
制御部は、２個以上のＮ個のタクト毎に被制御機器を制御し、Ｎ個より少ないＭ個のタクト毎にイベントを検出してよい。
【０００７】
制御部は、１個のタクト毎に、イベントを検出してよい。
【０００８】
制御部は、第１の周期より短い第２の周期で、制御プログラムとは異なるシステムプログラムに従って、イベントを検出してよい。
【０００９】
各タクトにおいて、制御部が制御プログラムを実行する第１の期間と、制御部がシステムプログラムを実行する第２の期間とが定められており、制御部は、システムプログラムに従って、１つのタクトにおける第２の期間内で、イベントを検出してよい。
【００１０】
制御部がシステムプログラムに従って実行する処理は、制御プログラムのタスクの実行をスケジューリングする処理、被制御機器からの入力データをＩＯメモリに記憶する処理、制御プログラムを実行することにより生成された被制御機器に対する制御データを被制御機器へ出力するための処理、及び、外部の監視装置との間でメッセージを送受信するための処理のうちの少なくとも１つを含んでよい。
【００１１】
イベントを検出するための検出条件を記憶する検出条件記憶部と、外部の監視装置から、検出条件に対して更新、追加又は削除を指示するメッセージを受信する受信部とをさらに備え、制御部は、制御プログラムを稼働させたまま、受信部が受信したメッセージに従って、検出条件記憶部に記憶されている検出条件を更新、追加又は削除してよい。
【００１２】
制御部は、第１の周期より短い周期で、制御プログラムが演算に用いる変数を検証することによって、前記イベントを検出してよい。
【００１３】
制御部は、第１の周期より短い周期で被制御機器からの入力データを取得し、制御部は、第２の周期で入力データを検証することによって、イベントを検出してよい。
【００１４】
第２の周期で検出されたイベントを、外部の監視装置に送信する送信部をさらに備えてよい。
【００１５】
第２の態様において、制御システムは、上記の制御装置と、監視装置とを備え、制御装置は、第２の周期で検出されたイベントを、監視装置に送信する。
【００１６】
第３の態様において、制御システムは、上記の制御装置と、制御装置による制御に従って、被制御機器との間でデータの入出力を行う入出力装置とを備える。
【００１７】
第４の態様において、制御方法は、制御プログラムに従って第１の周期で被制御機器を制御する段階と、第１の周期より短い第２の周期で、被制御機器の制御に関するイベントを検出する段階とを備える。
【００１８】
なお、上記の発明の概要は、本発明の特徴の全てを列挙したものではない。また、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【図面の簡単な説明】
【００１９】
【図１】一実施形態における制御システム１０の概略的な構成を示す。
【図２】ＣＰＵモジュール１００の機能構成を概略的に示す。
【図３】監視装置２０において設定される検出条件データの一例を示す。
【図４】制御部２００において行うイベント検出処理を概略的に示す。
【図５】制御部２００が実行する処理のタイムシーケンスを示す。
【図６】制御部２００がイベントを検出する処理のフローチャートを示す。
【図７】監視装置２０が表示するイベント一覧情報を示す。
【発明を実施するための形態】
【００２０】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００２１】
図１は、一実施形態における制御システム１０の概略的な構成を示す。制御システム１０は、監視装置２０と、ＣＰＵモジュール１００と、ＩＯモジュール１２０ａ及びＩＯモジュール１２０ｂと、被制御機器４０ａ、被制御機器４０ｂ及び被制御機器４０ｃとを備える。
【００２２】
本実施形態において、ＩＯモジュール１２０ａ及びＩＯモジュール１２０ｂを、ＩＯモジュール１２０と総称する場合がある。また、被制御機器４０ａ、被制御機器４０ｂ及び被制御機器４０ｃを、被制御機器４０と総称する場合がある。ＣＰＵモジュール１００は、制御装置の一例である。ＩＯモジュール１２０は、ＣＰＵモジュール１００による制御に従って、被制御機器４０との間でデータの入出力を行う入出力装置の一例である。
【００２３】
監視装置２０は、パーソナルコンピュータ等のコンピュータにより実現される。監視装置２０は、ネットワークを通じてＣＰＵモジュール１００と通信する。ＣＰＵモジュール１００は、ネットワーク又はバスを通じて、ＩＯモジュール１２０ａ及びＩＯモジュール１２０ｂと通信する。ＩＯモジュール１２０ａは、被制御機器４０ａに接続される。ＩＯモジュール１２０ａは、被制御機器４０ａとの間のデータの入出力を担う。ＩＯモジュール１２０ｂは、被制御機器４０ｂ及び被制御機器４０ｃに接続される。ＩＯモジュール１２０ｂは、被制御機器４０ｂ及び被制御機器４０ｃのそれぞれのとの間のデータの入出力を担う。なお、ＣＰＵモジュール１００の数、ＩＯモジュール１２０の数、及び、被制御機器４０の数は、本実施形態に示される数に限定されない。
【００２４】
制御システム１０は、工場やプラント等の産業施設において用いられてよい。制御システム１０は、ファクトリーオートメーションの少なくとも一部として用いられてよい。監視装置２０、ＣＰＵモジュール１００及びＩＯモジュール１２０は、産業用制御システムであってよい。被制御機器４０は、監視装置２０、ＣＰＵモジュール１００及びＩＯモジュール１２０による制御対象となる機器である。被制御機器４０は、モータ、エンコーダ、ポンプ、バルブ、カメラ、各種センサ等であってよい。被制御機器４０は、例えば産業機械であってよい。ＣＰＵモジュール１００及びＩＯモジュール１２０は、それぞれプログラマブルロジックコントローラ（ＰＬＣ）であってよい。
【００２５】
監視装置２０は、制御システム１０の監視制御をする。監視装置２０は、ＣＰＵモジュール１００との間でメッセージを送受信することにより、制御システム１０を監視制御する。監視装置２０は、ＣＰＵモジュール１００からステータス情報を読み出し、制御システム１０が制御する工程に従って、ＣＰＵモジュール１００に各種の制御指示を出力する。また、監視装置２０は、イベント設定ツールとして機能する。例えば、監視装置２０は、ユーザからの支持に基づいて、制御システム１０におけるイベントの検出条件を設定する。監視装置２０は、ユーザからの指示に基づいて、イベントの検出条件の追加、更新又は削除をする。
【００２６】
ＩＯモジュール１２０は、被制御機器４０の状態を示す情報や、被制御機器４０が計測した結果を示す情報等のデータを、監視データとして被制御機器４０から取得する。ＩＯモジュール１２０は、被制御機器４０から入力された監視データを、ＣＰＵモジュール１００に出力する。なお、監視データは、被制御機器４０からの入力データの一例である。
【００２７】
ＣＰＵモジュール１００は、ラダー図等を通じて生成されたシーケンス制御のための制御アプリケーションプログラムを有する。制御アプリケーションプログラムは、被制御機器４０を制御するための制御プログラムの一例である。ＣＰＵモジュール１００は、監視装置２０から取得したメッセージと、ＩＯモジュール１２０を通じて取得した監視データとに基づいて、被制御機器４０への制御データを生成して、ＩＯモジュール１２０に出力する。ＩＯモジュール１２０は、ＣＰＵモジュール１００から取得した制御データに基づいて、被制御機器４０に制御信号を出力する。
【００２８】
図２は、ＣＰＵモジュール１００の機能構成を概略的に示す。ＣＰＵモジュール１００は、制御部２００と、ＩＯメモリ部２２０と、制御用変数メモリ部２３０と、入出力部２４０と、イベントログメモリ部２８０と、イベント設定メモリ部２８２と、通信部２７０と、バス２９０とを備える。
【００２９】
制御部２００は、ＩＯメモリ部２２０、入出力部２４０、制御用変数メモリ部２３０、イベントログメモリ部２８０、イベント設定メモリ部２８２、通信部２７０と、バス２９０を通じて接続される。制御部２００、ＩＯメモリ部２２０、入出力部２４０、制御用変数メモリ部２３０、イベントログメモリ部２８０、イベント設定メモリ部２８２、通信部２７０は、バス２９０を通じて互いにデータを送受信する。
【００３０】
制御部２００は、プロセッサであってよい。制御部２００は、マイクロコントローラであってよい。制御部２００は、中央処理装置（ＣＰＵ）、ＲＯＭ、ＲＡＭ等を含む半導体集積回路で構成される。制御部２００のＲＯＭは、システムプログラム及び制御アプリケーションプログラムを格納する。ＣＰＵモジュール１００は、システムプログラムが制御部２００のＲＯＭに書き込まれた状態で出荷される。
【００３１】
制御アプリケーションプログラムは、制御システム１０のユーザによって提供される。制御アプリケーションプログラムは、ＣＰＵモジュール１００が被制御機器４０を制御する動作を停止している場合に、監視装置２０からＣＰＵモジュール１００に提供されて、制御部２００のＲＯＭに書き込まれる。ＣＰＵモジュール１００が起動すると、制御部２００はブート処理中に、ＲＯＭに書き込まれたシステムプログラム及び制御アプリケーションプログラムをロードする。これにより、制御アプリケーションプログラムのタスクが稼働する。
【００３２】
制御部２００は、ＣＰＵモジュール１００における主処理を担う。例えば、制御部２００は、制御アプリケーションプログラムに従って、ＩＯモジュール１２０から取得した監視データの処理や、監視データに基づいてＩＯモジュール１２０に対する制御データを生成する処理を行う。また、制御部２００は、システムプログラムに従って、実行するべき制御アプリケーションプログラムのタスクを決定する処理、被制御機器４０からの監視データをＩＯメモリ部２２０に記憶する処理、制御アプリケーションプログラムを実行することにより生成された被制御機器４０に対する制御データを被制御機器４０へ出力するための処理、及び、監視装置２０との間でメッセージを送受信するための処理を行う。
【００３３】
入出力部２４０は、ＩＯモジュール１２０との間のデータの入出力を担う。入出力部２４０は、ＩＯモジュール１２０から監視データを取得し、ＩＯモジュール１２０に制御データを出力する。ＩＯメモリ部２２０は、被制御機器４０との間のＩＯデータを格納する。例えば、ＩＯメモリ部２２０は、入出力部２４０が取得した監視データを格納する。また、ＩＯメモリ部２２０は、ＩＯモジュール１２０に出力される制御データを格納する。
【００３４】
制御用変数メモリ部２３０は、制御アプリケーションプログラムが演算に用いる変数である制御用変数を格納する。制御部２００は、制御アプリケーションプログラムに従って、制御用変数メモリ部２３０に格納された制御用変数を用いて処理を行う。制御用変数は、制御アプリケーションプログラムの動作パラメータを定める変数であってよい。制御用変数は、制御アプリケーションプログラムの状態等を表す変数であってよい。制御部２００は、制御アプリケーションプログラムに従って動作して、制御用変数メモリ部２３０に格納されている制御用変数を更新してよい。
【００３５】
制御部２００は、ＩＯメモリ部２２０に格納されている監視データを読み出す。制御部２００は、制御アプリケーションプログラムに従って、監視データに基づいて制御データを生成する。制御部２００は、生成した制御データを、ＩＯメモリ部２２０に格納する。入出力部２４０は、ＩＯメモリ部２２０に格納された制御データをＩＯモジュール１２０に出力する。
【００３６】
通信部２７０は、監視装置２０との通信を担う。通信部２７０は、監視装置２０からのメッセージを受信して、受信したメッセージを制御部２００に出力する。また、通信部２７０は、監視装置２０へのメッセージを制御部２００から受信して、受信したメッセージを監視装置２０に送信する。制御部２００が監視装置２０に送信するメッセージは、被制御機器４０の制御に関するイベントを示す情報を含む。
【００３７】
ＩＯメモリ部２２０及び制御用変数メモリ部２３０は、揮発性のメモリであってよい。ＩＯメモリ部２２０及び制御用変数メモリ部２３０は、ＳＲＡＭ等であってよい。ＩＯメモリ部２２０及び制御用変数メモリ部２３０は、別個のメモリであってよい。
【００３８】
イベント設定メモリ部２８２は、被制御機器４０の制御に関するイベントを検出するための検出条件を格納する。イベント設定メモリ部２８２は、フラッシュメモリ等の不揮発性メモリである。検出条件は、監視装置２０から提供されて、イベント設定メモリ部２８２に格納される。制御部２００は、ＣＰＵモジュール１００が稼働中であっても、イベント設定メモリ部２８２に格納されているデータを変更することができる。
【００３９】
検出条件は、制御用変数についての検出条件、監視データについての検出条件、制御データについての検出条件を含む。制御部２００は、制御用変数が検出条件を満たす場合に、イベントを検出する。また、制御部２００は、イベントログメモリ部２８０から検出条件を読み出して、監視データが検出条件を満たす場合に、イベントを検出する。また、制御部２００は、制御データが検出条件を満たす場合に、イベントを検出する。検出条件は、監視データ、制御データ及び制御用変数のうちの２つ以上を含んでよい。
【００４０】
イベントログメモリ部２８０は、制御部２００が検出したイベントのログデータを格納する。イベントログメモリ部２８０は、ＳＲＡＭ等の揮発性メモリであってよい。通信部２７０は、制御部２００により検出されたイベントを、監視装置２０に送信してよい。制御部２００は、イベントログメモリ部２８０に格納されているイベントログデータを読み出して、読み出したイベントログデータを、通信部２７０を通じて監視装置２０に送信してよい。制御部２００は、監視装置２０に送信したイベントログデータを、イベントログメモリ部２８０から削除してよい。
【００４１】
制御部２００は、制御アプリケーションプログラムに従って第１の周期で被制御機器４０を制御し、第１の周期より短い第２の周期で、被制御機器４０の制御に関するイベントを検出する。例えば、制御部２００は、第１の周期より短い周期で、制御用変数を検証することによって、前記イベントを検出してよい。また、制御部２００は、第１の周期より短い周期で被制御機器４０からの監視データを取得し、第２の周期で監視データを検証することによって、イベントを検出してよい。また、制御部２００は、制御アプリケーションプログラムに従って、被制御機器４０に対する制御データを生成し、入出力部２４０は、第１の周期で制御データを被制御機器４０へ出力する。そのため、制御アプリケーションプログラムによる制御周期である第１の周期の経過を待つことなく、イベントを検出することができる。これにより、よりリアルタイムにイベントを検出することができる。
【００４２】
また、制御部２００は、第１の周期より短い第２の周期で、制御アプリケーションプログラムとは異なるシステムプログラムに従って、イベントを検出する。制御部２００は、制御アプリケーションプログラムではなく、システムプログラムに従って、イベントを検出するので、アプリケーションプログラムをＲＯＭに再ロードしなくても、イベントの検出条件を変更することができる。また、アプリケーションプログラムが稼働させた状態で、イベントの検出条件を変更することができる。
【００４３】
図３は、監視装置２０において設定される検出条件データの一例を示す。検出条件データは、イベント番号、イベント名、検出条件、有効／無効、レベル、種別、対応手段及び場所の情報を含む。監視装置２０は、ユーザが編集可能なように、検出条件データをテーブル形式で表示する。
【００４４】
「イベント番号」は、イベントを識別する値である。「イベント名」は、イベントに付与される名前を示す。「検出条件」は、１つ又は複数の評価式を含む検出条件を文字列で記したものである。例えば、検出条件は、１つ又は複数の等式又は不等式を含む。
【００４５】
図示されるように、イベントの検出条件は、イベント検出用変数を用いた１以上の評価式で設定される。イベント番号１〜３に示す検出条件は、単一のイベント検出用変数を用いた単一の評価式で表される。イベント番号４〜５に示す検出条件は、複数のイベント検出用変数を用いた複数の評価式で表される。各評価式の評価結果は、論理値ＴＲＵＥ又はＦＡＬＳＥとなる。
【００４６】
例えば、イベント番号１の検出条件は、「Ｖａｒ０１＝ＦＡＬＳＥ」という評価式を１つ含む。この検出条件は、Ｖａｒ０１の値がＦＡＬＳＥである場合に、イベント名「イベントＡ」のイベントが生じていることを示す。なお、Ｖａｒ０１は、イベントを検出するためのイベント検出用変数であり、ＩＯメモリ部２２０に格納された監視データ、ＩＯメモリ部２２０に格納された制御データ、又は、制御用変数メモリ部２３０に格納されている制御用変数のいずれかを示す。イベント設定メモリ部２８２には、イベント検出用変数の値がＩＯメモリ部２２０又は制御用変数メモリ部２３０のどのアドレスに格納されているかを示すアドレス情報が格納されている。制御部２００は、当該アドレス情報を参照して、検出条件に含まれる評価式を評価する。
【００４７】
また、イベント番号４の検出条件は、ＡＮＤで結合される「Ｖａｒ０１＝ＦＡＬＳＥ」の項と「Ｖａｒ０２＞１０００」の項の２つの評価式を含む。この検出条件は、イベント検出用Ｖａｒ０１の値がＦＡＬＳＥであり、かつ、イベント検出用Ｖａｒ０２が１０００より大きい場合に、イベント名「イベントＣ」のイベントが生じていることを示す。
【００４８】
「有効／無効」は、検索条件が有効であるか無効であるかを示す。「有効／無効」に有効を示す値が設定されている場合、対応するイベントの検出を行うことを示す。「有効／無効」に無効を示す値が設定されている場合、対応するイベントの検出を行わないことを示す。
【００４９】
「レベル」は、対応するイベントの重要度を示す。Ｈｉは、対応するイベントの重要度が高いことを示す。Ｌｏｗは、対応するイベントの重要度が低いことを示す。
【００５０】
「種別」は、イベントの種別を示す。Ｓｙｓは、システムに関するイベントであることを示す。例えば、ＣＰＵモジュール１００におけるプログラムの処理に関するイベントであることを示す。Ｍａｃｈｉｎｅは、被制御機器に関するイベントであることを示す。Ｍｏｄｕｌｅは、ＣＰＵモジュール１００又はＩＯモジュール１２０に関するイベントであることを示す。
【００５１】
「対応手段」は、イベントへの対処方法を示す。「場所」は、イベントに対応づけられた場所を示す。例えば、「場所」は、対応するイベントが生じる原因となった被制御機器４０が設けられた場所を示してよい。なお、「レベル」、「種別」、「対応手段」及び「場所」は、対応するイベントが検出された場合にユーザに通知されてよい。
【００５２】
図４は、制御部２００において行うイベント検出処理を概略的に示す。
【００５３】
ＩＯメモリ部２２０には、監視データ及び制御データの今回値が格納されている。制御用変数メモリ部２３０には、制御用変数の今回値が格納されている。制御部２００のＲＡＭには、監視データ、制御データ及び制御用変数の前回値が格納されている。制御部２００は、検出条件に含まれる変数の前回値と今回値とを比較する処理４３０を行う。制御部２００は、処理４３０によって今回値が前回値と異なる場合、今回値について条件式を評価する処理４４０を行う。
【００５４】
制御部２００は、処理４４０において、検出条件に含まれる条件式に今回値を適用して、条件式を評価する。条件式の評価結果が、偽（ＦＡＬＳＥ）から真（ＴＲＵＥ）に変化した場合、制御部２００は、イベント番号及び時刻を含むイベントログ情報４５０を生成して、イベントログメモリ部２８０に格納する。また、制御部２００は、評価結果が真（ＴＲＵＥ）から偽（ＦＡＬＳＥ）に変化した場合も、イベントログ４５０を生成して、制御部２００内のＲＡＭ又はイベントログメモリ部２８０に格納する。
【００５５】
図５は、制御部２００が実行する処理のタイムシーケンスを示す。制御部２００は、タクト周期で処理を実行する。タクト周期は、例えば１ｍｓ〜１０ｍｓの間で設定することができる。制御周期は、制御アプリケーションプログラムを実行することにより生成されるタスクの制御周期である。タスクの制御周期は、例えば１０ｍｓ〜２００ｍｓの範囲内で設定することができる。制御周期及びタクト周期は、これらの値に限られない。
【００５６】
図５において、「ＳＹＳ」で示される期間は、制御部２００がシステムプログラムを実行する期間である。この期間を、「システム実行期間」と呼ぶ。「ＡＰＬ」で示される期間は、制御部２００が制御アプリケーションプログラムを実行する期間である。この期間を、「アプリケーション実行期間」と呼ぶ。１タクトは、第１のシステム実行期間と、第１のシステム実行期間に続くアプリケーション実行期間と、アプリケーション実行期間に続く第２のシステム実行期間とを含んで構成される。なお、１タクト内におけるシステム実行期間及びアプリケーション実行期間の長さは、設定によって変更することができる。
【００５７】
制御部２００は、第１のシステム実行期間及び第２のシステム実行期間の少なくとも一方において、制御アプリケーションプログラムで定められるタスクの実行スケジュールを決定する。制御部２００は、各タスクの優先順位と、各タスクの制御周期とに基づいて、制御アプリケーションプログラムのタスクの実行をスケジューリングしてよい。このように、制御部２００がシステムプログラムに従って実行する処理は、制御アプリケーションプログラムのタスクをスケジューリングする処理を含む。
【００５８】
図５は、特定のタスクに着目したタイムシーケンスを示している。このタスクの制御周期は、Ｎ個のタクト周期に相当するものとする。分かり易く説明するために、このタスクを開始したタクトを第１タクトと呼び、当該タスクが終了するタクトを第Ｎタクトとする。
【００５９】
制御部２００は、第１のシステム実行期間において、被制御機器４０からの監視データをＩＯメモリ部２２０に記憶する処理を行う。例えば、制御部２００は、入出力部２４０を制御して、ＩＯモジュール１２０が取得した監視データをＩＯモジュール１２０から取得して、ＩＯメモリ部２２０に記憶する。このように、制御部２００がシステムプログラムに従って実行する処理は、被制御機器４０からの監視データをＩＯメモリ部２２０に記憶する処理を含む。
【００６０】
制御部２００は、アプリケーション実行期間において、制御アプリケーションプログラムを実行することにより、スケジューリングしたタスクを実行する。制御部２００は、制御アプリケーションプログラムに従って、監視データや制御用変数を用いて、対象とする被制御機器４０の制御データを生成するための演算を行う。
【００６１】
アプリケーション実行期間に続く第２のシステム実行期間において、制御部２００は、イベントの検出を行う。具体的には、図４に関連して説明したように、検出条件の条件式に今回値を適用して条件式を評価することにより、イベントの検出を行う。なお、イベント検出処理の具体的なフローチャートは、図６に関連して説明する。
【００６２】
第２のシステム実行期間において、制御部２００は、イベント検出の処理に続いて、監視装置２０に対するメッセージに関する処理を実行する。例えば、検出されたイベントを監視装置２０にメッセージで通知する処理を行う。このように、制御部２００がシステムプログラムに従って実行する処理は、外部の監視装置２０との間でメッセージを送受信するための処理を含む。
【００６３】
制御部２００は、各タクト周期においても同様の処理を繰り返す。第Ｎタクトにおけるアプリケーション実行期間においてタスクが終了すると、制御部２００は、第Ｎタクトにおけるシステム実行期間において、ＩＯメモリ部２２０に格納されている制御データを、入出力部２４０からＩＯモジュール１２０へと出力させる。このように、１つのタスクは、複数のタクトにわたる期間内で実行される。１つのタスクが開始してから終了するまでの制御周期毎に、制御データが生成されて、ＩＯモジュール１２０へ出力される。このように、制御部２００がシステムプログラムに従って実行する処理は、制御アプリケーションプログラムを実行することにより生成された被制御機器４０に対する制御データを、被制御機器４０へ出力するための処理を含む。すなわち、制御部２００がシステムプログラムに従って実行する処理は、ＩＯリフレッシュ処理を含む。
【００６４】
これに対し、制御部２００は、１タスク毎にイベントを検出するので、タスクの制御周期を待つことなく、イベントを検出できる。そのため、よりリアルタイムに近い時間間隔で故障やエラー等のイベントを検出できる。例えば、１つの故障やエラーが原因で多数の故障やエラーが連鎖的に生じた場合において、タスクの制御周期でイベントを検出していると、どの故障やエラーが最初の原因であったかを全く特定できない場合がある。しかし、制御部２００が１タスク毎にイベントを検出するので、どの故障やエラーが最初の原因であったかを容易に特定できる場合がある。また、制御部２００によれば、タスクの制御周期内で一旦生じたエラーが復帰したことを検出することができる。
【００６５】
なお、通信部２７０は、監視装置２０から、検出条件に対して更新、追加又は削除を指示するメッセージを受信する。制御部２００は、通信部２７０がメッセージを受信した場合、制御アプリケーションプログラムを稼働させたまま、システムプログラムに従って、イベント設定メモリ部２８２に記憶されている検出条件を更新、追加又は削除してよい。制御部２００は、検出条件を更新、追加又は削除する処理を、システム実行期間において実行する。すなわち、制御部２００は、システムプログラムに従って、検出条件を更新、追加又は削除する処理を実行する。イベントの検出をシステムプログラムが行うので、制御アプリケーションプログラムが稼働した状態で、検索条件の更新、追加又は削除を行うことができる。
【００６６】
ここで、制御アプリケーションプログラムを稼働した状態とは、制御アプリケーションを制御部２００のＲＡＭにロードした状態を意味してよい。すなわち、制御アプリケーションを制御部２００のＲＡＭにロードした状態で、検索条件の更新、追加又は削除を行うことができる。このように、検索条件を設定するために制御アプリケーションプログラムを変更する必要がないので、制御アプリケーションプログラムを再ロードする必要がない。したがって、検索条件を設定するために制御アプリケーションプログラムにバグが入り込んだり、制御アプリケーションプログラムの変更ミスが生じたりすることがない。
【００６７】
以上、図５に関連して説明したように、各タクトにおいて、制御部２００が制御アプリケーションプログラムを実行する第１の期間と、制御部２００がシステムプログラムを実行する第２の期間とが定められている。そして、制御部２００は、システムプログラムに従って、１つのタクトにおける第２の期間内で、イベントを検出する。
【００６８】
なお、図５に示す例において、Ｎは２以上の整数であってよい。すなわち、制御部２００は、２個以上のＮ個のタクト毎に被制御機器４０を制御してよい。図５の例では、制御部２００が１個のタクト毎にイベントを検出するが、制御部２００は、Ｎ個より少ないＭ個のタクト毎にイベントを検出してよい。
【００６９】
図６は、制御部２００がイベントを検出する処理のフローチャートを示す。Ｓ６００において、制御部２００は、現在の日時情報を取得する。続いて、Ｓ６０２からＳ６２６におけるイベント検出のループ処理を行う。このループ処理では、ループ毎にイベントの検出条件を選択する。
【００７０】
Ｓ６０４において、制御部２００は、選択した検出条件が有効に設定されているか否かを判断する。制御部２００は、検出条件の「有効／無効」の情報を参照して、Ｓ６０４の判断を行う。検出条件が無効の場合、「イベント検出」のループ処理における次の検索条件に進む。検出条件が有効の場合、Ｓ６０６に進む。
【００７１】
Ｓ６０６において、制御部２００は、検索条件に用いられている全変数の今回値が、前回値から変化しているか否かを判断する。全変数の今回値が前回値から変化していない場合、「イベント検出」のループ処理における次の検索条件に進む。少なくとも１つの変数の今回値が前回値から変化している場合、Ｓ６０８に進む。
【００７２】
Ｓ６０８において、制御部２００は、検索条件の条件式に含まれる各項の数を取得する。具体的には、制御部２００は、ＡＮＤで結合された各項の数を取得する。続いて、Ｓ６１０からＳ６１４における、条件式の項の評価のループ処理を行う。このループ処理では、ループ毎に条件式の次の項を選択する。
【００７３】
Ｓ６１２において、項の評価式が真か否かを判断する。項の評価式が偽の場合、「条件式の項の評価」のループ処理を終了する。項の評価式が真の場合は、「条件式の項の評価」のループ処理における次の項を選択する。
【００７４】
Ｓ６１０からＳ６１４のループ処理が終了すると、Ｓ６２０において、イベントステータスを更新する。なお、Ｓ６１２において評価式が偽と判断された項が存在する場合は、イベントが生じていないと判断する。Ｓ６１２において全ての項の評価式が真と判断された場合は、イベントが生じていると判断する。
【００７５】
続いて、Ｓ６２２においてイベントステータスが変更されたか否かを判断する。イベントステータスが変更されていない場合は、「イベント検出」のループ処理における次の検索条件に進む。イベントステータスが変更されている場合は、Ｓ６２４において、イベントログデータを生成する。イベントログデータは、イベント番号と、Ｓ６００で取得した日時とを含む。そして、「イベント検出」のループ処理における次の検索条件に進む。
【００７６】
図７は、監視装置２０が表示するイベント一覧情報を示す。監視装置２０は、ＣＰＵモジュール１００から、イベントログデータをメッセージで受信する。監視装置２０は、設定したイベントログデータを、テーブル形式で一覧表示する。監視装置２０は、イベントログを、検出条件で設定されている「場所」、検出条件で設定される「対応手段」の情報を含んで表示する。監視装置２０は、検出条件で設定されている「レベル」や「重要度」の値に応じて、対応するイベントの行を色等で強調表示してよい。
【００７７】
以上に説明したように、制御システム１０によれば、よりリアルタイムに近い頻度でイベント検出を行うことができる。また、制御アプリケーションプログラムが用いる変数等に基づくイベント検出を、システムプログラムの実行時間で行うので、制御アプリケーションプログラムを変更せずに、検出条件を設定することが容易になる。
【００７８】
なお、一実施形態における制御システム１０は、制御装置としてＰＬＣを用いたＰＬＣシステムである。他の形態において、制御システムは、分散制御システム（ＤＣＳ）であり得る。
【００７９】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更又は改良を加えることが可能であることが当業者に明らかである。その様な変更又は改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【００８０】
特許請求の範囲、明細書、及び図面中において示した装置、システム、プログラム、及び方法における動作、手順、ステップ、及び段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、及び図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。
【符号の説明】
【００８１】
１０  制御システム
２０  監視装置
４０  被制御機器
１００  ＣＰＵモジュール
１２０  ＩＯモジュール
２００  制御部
２２０  ＩＯメモリ部
２３０  制御用変数メモリ部
２４０  入出力部
２７０  通信部
２８０  イベントログメモリ部
２８２  イベント設定メモリ部
２９０  バス
４３０  処理
４４０  処理
４５０  イベントログ情報
【図１】
2018022288.tif 000003
【図２】
2018022288.tif 000004
【図３】
2018022288.tif 000005
【図４】
2018022288.tif 000006
【図５】
2018022288.tif 000007
【図６】
2018022288.tif 000008
【図７】
2018022288.tif 000009