(57)【要約】【課題】送信先の制御装置がデータを受信できる確実性を高める。【解決手段】ファクトリオートメーションの複数の制御装置がネットワークに接続された通信システムであって、各制御装置間の通信プロトコルは、パブリッシュ／サブスクライブ型を含む。各制御装置は、制御データを格納するためのデータ格納部と、自制御装置の状態を含むデータを他の制御装置に送信するパブリッシャ部と、他の制御装置からデータを受信するサブスクライバ部とを備え、サブスクライバ部が受信する他の制御装置の状態が受信可能条件を満たすとき、パブリッシャ部は自制御装置の制御データを送信する。【選択図】図１
2019080164.tif 000002
【特許請求の範囲】
【請求項１】
ファクトリオートメーションを制御する複数の制御装置がネットワークに接続された通信システムであって、
各前記複数の制御装置の間の通信プロトコルは、パブリッシュ／サブスクライブ型を含み、
前記各制御装置は、
前記ファクトリオートメーションの制御データを格納するためのデータ格納部と、
自制御装置の状態を含むデータを他の前記制御装置に送信するパブリッシャ部と、
前記他の制御装置からデータを受信するサブスクライバ部と、を備え、
前記サブスクライバ部が受信する前記他の制御装置の状態が、受信可能条件を満たすとき、前記パブリッシャ部は、前記自制御装置の前記制御データを前記他の制御装置に送信する、通信システム。
【請求項２】
前記データ格納部の前記制御データは、予め定められた周期で更新され、
前記制御データは、複数種類の制御データを含み、
前記パブリッシャ部は、前記複数種類の制御データのうち、予め定められた設定に従う１種類以上の制御データを前記周期に同期して送信する、請求項１に記載の通信システム。
【請求項３】
前記制御データは、複数種類の制御データを含み、
前記受信可能条件は、前記制御データの種類毎に異なる、請求項１または２に記載の通信システム。
【請求項４】
前記受信可能条件は、前記状態が示す値を用いた演算を含んで構成される、請求項１から３のいずれか１項に記載の通信システム。
【請求項５】
前記パブリッシャ部は、前記状態を周期的に送信する、請求項１から４のいずれか１項に記載の通信システム。
【請求項６】
前記パブリッシャ部は、前記他の制御装置から前記制御データを受信したとき通知を送信する、請求項１から５のいずれか１項に記載の通信システム。
【請求項７】
ファクトリオートメーションのネットワークに接続され得る制御装置に情報を設定する設定装置であって、
前記制御装置と他の前記制御装置の間の通信プロトコルは、パブリッシュ／サブスクライブ型を含み、
前記制御装置は、
前記ファクトリオートメーションの制御データを格納するためのデータ格納部と、
自制御装置の状態を含むデータを前記他の制御装置に送信するパブリッシャ部と、
前記他の制御装置からデータを受信するサブスクライバ部と、を備え、
前記設定装置は、
前記他の制御装置の前記サブスクライバ部による前記制御データの受信可能条件を、当該他の制御装置から受信する状態が含まれるように設定する設定部を備える、設定装置。
【請求項８】
前記データ格納部の前記制御データは、予め定められた周期で更新され、
前記制御データは、複数種類の制御データを含み、
前記パブリッシャ部は、前記複数種類の制御データのうち、予め定められた設定に従う１種類以上の制御データを前記周期に同期して送信する、請求項７に記載の設定装置。
【請求項９】
前記設定装置は、
当該設定装置に対するユーザ操作を受付ける操作受付部を、さらに備え、
受付けたユーザ操作内容から、前記受信可能条件を設定する、請求項７または８に記載の設定装置。
【請求項１０】
前記制御データは、複数種類の制御データを含み、
前記設定部は、前記制御データの種類毎に異なる前記受信可能条件を設定する、請求項７から９のいずれか１項に記載の設定装置。
【請求項１１】
前記受信可能条件は、前記状態が示す値を用いた演算を含んで構成される、請求項７から１０のいずれか１項に記載の設定装置。
【請求項１２】
ファクトリオートメーションを制御する複数の制御装置がネットワークに接続された通信システムに適用される前記制御装置であって、
前記制御装置の間の通信プロトコルは、パブリッシュ／サブスクライブ型を含み、
前記ファクトリオートメーションの制御データを格納するためのデータ格納部と、
自制御装置の状態を含むデータを他の前記制御装置に送信するパブリッシャ部と、
前記他の制御装置からデータを受信するサブスクライバ部と、を備え、
前記サブスクライバ部が受信する前記他の制御装置の状態が、受信可能条件を満たすとき、前記パブリッシャ部は、前記自制御装置の前記制御データを前記他の制御装置に送信する、制御装置。
【請求項１３】
前記データ格納部の前記制御データは、予め定められた周期で更新され、
前記制御データは、複数種類の制御データを含み、
前記パブリッシャ部は、前記複数種類の制御データのうち、予め定められた設定に従う１種類以上の制御データを前記周期に同期して送信する、請求項１２に記載の制御装置。
【請求項１４】
ファクトリオートメーションのネットワークに接続され得る制御装置に情報を設定する設定方法であって、
前記制御装置の間の通信プロトコルは、パブリッシュ／サブスクライブ型を含み、
前記制御装置は、
前記ファクトリオートメーションの制御データを格納するためのデータ格納部と、
自制御装置の状態を含むデータを送信するパブリッシャ部と、
他の前記制御装置からデータを受信するサブスクライバ部と、を備え、
前記設定方法は、
プロセッサが、当該プロセッサに対するユーザ操作を受付けるステップと、
前記プロセッサが、前記他の制御装置の前記サブスクライバ部による前記制御データの受信可能条件を、ユーザ操作内容を用いて、当該他の制御装置から受信する状態が含まれるように設定するステップと、を備える、設定方法。
【請求項１５】
前記データ格納部の前記制御データは、予め定められた周期で更新され、
前記制御データは、複数種類の制御データを含み、
前記パブリッシャ部は、前記複数種類の制御データのうち、予め定められた設定に従う１種類以上の制御データを前記周期に同期して送信する、請求項１４に記載の設定方法。
【請求項１６】
請求項１４または１５に記載の前記設定方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ＦＡ（Factory  Automation：ファクトリオートメーション）の通信システム、通信システムの制御装置、および制御装置に情報を設定する設定装置、設定方法およびそのプログラムに関する。
【背景技術】
【０００２】
様々な生産現場において、プログラマブルコントローラなどの制御装置を用いたＦＡ技術が広く普及している。例えば、特開平１０−１６４１６７号公報（特許文献１）は、他のプログラマブルコントローラとサイクリック型通信を行うプログラマブルコントローラを開示する。このプログラマブルコントローラは、一斉同報で他のプログラマブルコントローラにデータを送信する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−１６４１６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１のサイクリック型通信では、プログラマブルコントローラは、他のプログラマブルコントローラがデータを受信できる状態であるかを確認することなく、データを一斉同報で送信する。そのため、他のプログラマブルコントローラがデータを受信できていないケースが生じ得るが、特許文献１は、当該ケースを防止する構成を提案しない。
【０００５】
したがって、送信先の他のプログラマブルコントローラなどの制御装置がデータを受信できる確実性を高める通信システムを提供することを一つの目的としている。
【課題を解決するための手段】
【０００６】
本開示の一例に係る通信システムは、ファクトリオートメーションを制御する複数の制御装置がネットワークに接続された通信システムであって、各複数の制御装置の間の通信プロトコルは、パブリッシュ／サブスクライブ型を含む。各複数の制御装置は、ファクトリオートメーションの制御データを格納するためのデータ格納部と、自制御装置の状態を含むデータを他の制御装置に送信するパブリッシャ部と、他の制御装置からデータを受信するサブスクライバ部と、を備え、サブスクライバ部が受信する他の制御装置の状態が、受信可能条件を満たすとき、パブリッシャ部は、自制御装置の制御データを他の制御装置に送信する。
【０００７】
この開示によれば、パブリッシュ／サブスクライブ型の通信プロトコルに従う通信において、サブスクライバである他の制御装置の状態が受信可能条件を満たすときに制御データのパブリッシュ（送信）がなされる。これにより、コネクションの確立を実施しないパブリッシュ／サブスクライブ型の通信であっても、制御装置が制御データを受信できる確実性を高める通信システムを提供することが可能となる。
【０００８】
上述の開示において、データ格納部の制御データは、予め定められた周期で更新され、制御データは、複数種類の制御データを含み、パブリッシャ部は、複数種類の制御データのうち、予め定められた設定に従う１種類以上の制御データを上記の周期に同期して送信する。
【０００９】
この開示によれば、予め定められた設定に従う種類の制御データを、周期的にパブリッシュ（送信）することができる。
【００１０】
上述の開示において、制御データは、複数種類の制御データを含み、受信可能条件は、制御データの種類毎に異なる。
【００１１】
この開示によれば、パブリッシュ（送信）されるべき複数種類の制御データに、種類毎に異なる受信可能条件を設定することが可能となる。
【００１２】
上述の開示において、受信可能条件は、状態が示す値を用いた演算を含んで構成される。
【００１３】
この開示によれば、受信可能条件を、制御データをサブスクライブ（受信）するべき他の制御装置の状態が示す値を用いた演算により設定することができる。
【００１４】
上述の開示において、パブリッシャ部は、状態を周期的に送信する。
この開示によれば、制御装置は、他の制御装置から周期的に状態を受信することができ、受信可能条件を満たすか否かの判定を、最新に受信した状態を用いて実施することが可能となる。
【００１５】
上述の開示において、パブリッシャ部は、他の制御装置から制御データを受信したとき通知を送信する。
【００１６】
この開示によれば、制御装置は制御データを他の制御装置にパブリッシュ（送信）した場合に、他の制御装置から通知をサブスクライブ（受信）することができる。これにより、制御装置は、他の制御装置が制御データのサブスクライブ（受信）に成功したか否かの判断基準として、通知を利用することができる。
【００１７】
本開示の一例に係る設定装置は、ファクトリオートメーションのネットワークに接続され得る制御装置に情報を設定する設定装置であって、制御装置と他の制御装置の間の通信プロトコルは、パブリッシュ／サブスクライブ型を含み、制御装置は、ファクトリオートメーションの制御データを格納するためのデータ格納部と、自制御装置の状態を含むデータを他の制御装置に送信するパブリッシャ部と、他の制御装置からデータを受信するサブスクライバ部と、を備える。設定装置は、他の制御装置のサブスクライバ部による制御データの受信可能条件を、当該他の制御装置から受信する状態が含まれるように設定する設定部を備える。
【００１８】
この開示よれば、パブリッシュ／サブスクライブ型の通信プロトコルに従う通信において、設定装置は、サブスクライバである他の制御装置の状態が受信可能条件を満たすときに制御データのパブリッシュ（送信）がなされるような当該受信可能条件を、制御装置に設定する。これにより、コネクションの確立を実施しないパブリッシュ／サブスクライブ型の通信であっても、制御装置が制御データを受信できる確実性を高めるような受信可能条件の設定が可能となる。
【００１９】
上述の開示において、データ格納部の制御データは、予め定められた周期で更新され、制御データは、複数種類の制御データを含み、パブリッシャ部は、複数種類の制御データのうち、予め定められた設定に従う１種類以上の制御データを上記の周期に同期して送信する。
【００２０】
この開示によれば、予め定められた設定に従う種類の制御データを、周期的にパブリッシュ（送信）することができる。
【００２１】
上述の開示において、設定装置は、当該設定装置に対するユーザ操作を受付ける操作受付部を、さらに備え、受付けたユーザ操作内容から、受信可能条件を設定する。
【００２２】
この開示によれば、ユーザは設定装置を操作することにより、制御装置に対して受信可能条件を設定することができる。
【００２３】
上述の開示において、制御データは、複数種類の制御データを含み、設定部は、制御データの種類毎に異なる受信可能条件を設定する。
【００２４】
この開示によれば、パブリッシュ（送信）されるべき複数種類の制御データに、種類毎に異なる受信可能条件を設定することが可能となる。
【００２５】
上述の開示において、受信可能条件は、状態が示す値を用いた演算を含んで構成される。
【００２６】
この開示によれば、受信可能条件を、制御データをサブスクライブ（受信）するべき他の制御装置の状態が示す値を用いた演算により設定することができる。
【００２７】
本開示の一例に係る制御装置は、ファクトリオートメーションを制御する複数の制御装置がネットワークに接続された通信システムに適用される制御装置であって、制御装置の間の通信プロトコルは、パブリッシュ／サブスクライブ型を含み、ファクトリオートメーションの制御データを格納するためのデータ格納部と、自制御装置の状態を含むデータを他の制御装置に送信するパブリッシャ部と、他の制御装置からデータを受信するサブスクライバ部と、を備える。サブスクライバ部が受信する他の制御装置の状態が、受信可能条件を満たすとき、パブリッシャ部は、自制御装置の制御データを他の制御装置に送信する。
【００２８】
この開示によれば、パブリッシュ／サブスクライブ型の通信プロトコルに従う通信において、サブスクライバである他の制御装置の状態が受信可能条件を満たすときに制御データのパブリッシュ（送信）がなされる。これにより、コネクションの確立を実施しないパブリッシュ／サブスクライブ型の通信であっても、制御装置が制御データを受信できる確実性を高めることが可能となる。
【００２９】
上述の開示において、データ格納部の制御データは、予め定められた周期で更新され、制御データは、複数種類の制御データを含み、パブリッシャ部は、複数種類の制御データのうち、予め定められた設定に従う１種類以上の制御データを上記の周期に同期して送信する。
【００３０】
この開示によれば、予め定められた設定に従う種類の制御データを、周期的にパブリッシュ（送信）することができる。
【００３１】
本開示の一例に係る設定方法は、ファクトリオートメーションのネットワークに接続され得る制御装置に情報を設定する設定方法であって、制御装置の間の通信プロトコルは、パブリッシュ／サブスクライブ型を含み、制御装置は、ファクトリオートメーションの制御データを格納するためのデータ格納部と、自制御装置の状態を含むデータを送信するパブリッシャ部と、他の制御装置からデータを受信するサブスクライバ部と、を備え、設定方法は、プロセッサが、当該プロセッサに対するユーザ操作を受付けるステップと、プロセッサが、他の制御装置のサブスクライバ部による制御データの受信可能条件を、ユーザ操作内容を用いて、当該他の制御装置から受信する状態が含まれるように設定するステップと、を備える。
【００３２】
この開示によれば、パブリッシュ／サブスクライブ型の通信プロトコルに従う通信において、サブスクライバである他の制御装置の状態が受信可能条件を満たすときに制御データのパブリッシュ（送信）がなされるような設定が可能となる。これにより、コネクションの確立を実施しないパブリッシュ／サブスクライブ型の通信であっても、制御装置が制御データを受信できる確実性を高めることが可能となる。
【００３３】
上述の開示において、データ格納部の制御データは、予め定められた周期で更新され、制御データは、複数種類の制御データを含み、パブリッシャ部は、複数種類の制御データのうち、予め定められた設定に従う１種類以上の制御データを上記の周期に同期して送信する。
【００３４】
この開示によれば、予め定められた設定に従う種類の制御データを、周期的にパブリッシュ（送信）することができる。
【００３５】
本開示の一例では、上記に記載の設定方法をコンピュータに実行させるためのプログラムが提供される。
【発明の効果】
【００３６】
本開示の一例によれば、送信先の他の制御装置が制御データを受信できる確実性を高めることができる。
【図面の簡単な説明】
【００３７】
【図１】本実施の形態に係る通信システム１の適用場面の一例を示す模式図である。
【図２】本実施の形態に係るＰＬＣ１００の構成を示す模式的に示す図である。
【図３】本実施の形態に係るｐｕｂ／ｓｕｂ通信によるデータ共有（データリンク）を模式的に説明する図である。
【図４】本実施の形態に係るフレームの構成の一例を示す図である。
【図５】本実施の形態に係るフレームの構成の一例を示す図である。
【図６】本実施の形態に係るＰＬＣ１００の機能構成の一例を示す図である。
【図７】図６のサブスクライブ設定テーブル６０の構成の一例を示す図である。
【図８】図６のパブリッシュ設定テーブル７０の構成の一例を示す図である。
【図９】図６のパブリッシュステータステーブル８０の構成の一例を示す図である。
【図１０】本実施の形態に係る通信シーケンスの一例を示す図である。
【図１１】本実施の形態に係るサポート装置５００の構成を概略的に示す図である。
【図１２】本実施の形態に係るサポート装置の機能構成を例示する図である。
【図１３】本実施の形態に係る受信可能条件１６１の一例を示す図である。
【図１４】本実施の形態に係るデータ設定処理のフローチャートの一例を示す図である。
【発明を実施するための形態】
【００３８】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００３９】
＜Ａ．適用例＞
まず、図１を参照して、本発明が適用される場面の一例について説明する。図１は、本実施の形態に係る通信システム１の適用場面の一例を示す模式図である。本実施の形態に係るＰＬＣ（プログラマブルコントローラ）１００は、任意の制御対象（例えば、ＦＡの製造装置や設備などの対象）を制御する制御装置の一実施例である。ＰＬＣ１００は、各種の設備や装置などの制御対象を制御する産業用コントローラに相当する。ＰＬＣ１００は、制御演算を実行する一種のコンピュータである。
【００４０】
まず、本実施の形態に従う通信システム１の全体構成について説明する。図１では、本実施の形態に係る通信システム１の構成が模式的に示されている。通信システム１は、ネットワーク３と、ネットワーク３に接続された複数のＰＬＣ１００とを備える。ＰＬＣ１００は、ＦＡの制御対象を、制御データを用いて制御する制御装置に相当する。図１では、制御対象は、ネットワーク２に接続されたフィールド機器３００に含まれる。図１では、ＰＬＣ１００は、４台としているが、複数の台数であれば４台未満または５台以上であってもよい。
【００４１】
フィールド機器３００は、ネットワーク２を介して、ＰＬＣ１００に接続される複数のデバイス２００Ａ〜２００Ｄ（以下、「デバイス２００」と総称することもある。）を含む。各ＰＬＣ１００は、ネットワーク２内のデータ伝送を管理するマスターとして機能し、デバイス２００Ａ〜２００Ｄは、マスターからの指令に従ってデータ伝送を行うスレーブとして機能する。
【００４２】
本実施の形態では、ＰＬＣ１００には、センサ、アクチュエータなどの制御対象が直接に接続され得るまたは図１のようにネットワーク２およびデバイス２００Ａ〜２００Ｄを介して接続され得る。
【００４３】
デバイス２００の各々は、フィールド信号を取得する入力デバイス、および、ＰＬＣ１００からの指示に従ってフィールドに対して何らかのアクションを行なう出力デバイスあるいはアクチュエータを含む。ネットワーク２は、入力およびデバイス制御を主たる機能として提供する。
【００４４】
ＰＬＣ１００において実行される処理は、デバイス２００において収集または生成されたデータを収集する処理、デバイス２００に対する指令などのデータを生成する処理、生成した出力データを対象のデバイス２００へ送信する処理、および他のＰＬＣ１００との間でのデータ通信の処理を含む。このデータ通信処理は、ＰＬＣ１００が、他のＰＬＣ１００との間で生産手順が整合するように対象を制御するための制御データを、１または複数の他のＰＬＣ１００に送信する処理を含む。このような制御データは、例えばレシピデータ（生産手順、生産品種または生産に適したパラメータなどの条件を含むデータ）を含むは、これに限定されない。
【００４５】
本実施の形態に係る通信システム１では、ネットワーク３を介したＰＬＣ１００間の通信に、ＰＬＣ１００間のコネクションの確立を必要としないパブリッシュ・サブスクライブ（publish-subscribe）型の通信プロトコルに従う通信が適用され得る。より特定的には、ＯＰＣ  ＵＡ（OPC  Unified  Architecture）のパブリッシュ・サブスクライブ（publish-subscribe）型の通信プロトコルに従う通信が適用され得る。通信システム１では、パブリッシュ・サブスクライブの通信（以下、ｐｕｂ／ｓｕｂ通信とも称する）において、送信用データを作成（生成）して送信する送信側のＰＬＣ１００をパブリッシャと称し、パブリッシャから送信されたデータをパケットブリッシャから直接受信するまたは他のパブリッシャを経由して受信する受信側のＰＬＣ１００をサブスクライバと称する。
【００４６】
通信システム１では、ｐｕｂ／ｓｕｂ通信において、パブリッシャが同一のデータを１または複数の他のＰＬＣ１００へネットワーク３を介して送信する場合、マルチキャストグループを利用してデータをマルチキャストで送信する。マルチキャストグループは、ネットワーク３に接続され得る複数のＰＬＣ１００であって、互いにデータを送信または受信する関係を有したＰＬＣ１００の集合である。
【００４７】
本実施の形態では、図１に示すようにＰＬＣ１００は、サブスクライバ部１３０とパブリッシャ部１４０とを備え、両者が並列に動作することにより、ＰＬＣ１００は、パブリッシャ部１４０とサブスクライバ部１３０の両方として動作する。これにより、各ＰＬＣ１００は、ｐｕｂ／ｓｕｂ通信において、自己が属するマルチキャストグループの他のＰＬＣ１００にデータを送信することができるとともに、当該マルチキャストグループの他のＰＬＣ１００から送信されたデータを受信することもできる。
【００４８】
通信システム１では、各ＰＬＣ１００のパブリッシャ部１４０は、少なくとも当該ＰＬＣ１００の状態を含むデータをマルチキャストでパブリッシュ（送信）し、サブスクライバ部１３０は、少なくとも他のＰＬＣ１００からの状態を含むデータをサブスクライブ（受信）する。サブスクライバ部１３０が受信する他のＰＬＣ１００の状態が受信可能条件を満たすとき、パブリッシャ部１４０は、自己のＰＬＣ１００が有する制御データを、他のＰＬＣ１００にマルチキャストでパブリッシュ（送信）する。
【００４９】
したがって、ＰＬＣ１００間の通信に、パブリッシュ・サブスクライブ（publish-subscribe）型の通信プロトコルに従う、すなわちコネクションの確立がなされないｐｕｂ／ｓｕｂ通信が適用される場合であっても、各ＰＬＣ１００は、宛先の他のＰＬＣ１００が受信可能条件を満たす状態であるときに、ＦＡの制御データをパブリッシュ（送信）することができる。これにより、送信先の他のＰＬＣ１００が制御データを受信できる確実性を高めることが可能になる。
【００５０】
また、各ＰＬＣ１００に格納される制御データは、周期的に更新され、また、この制御データは、複数種類の制御データを含む。パブリッシャ部１４０は、複数種類の制御データのうち、予め定められた設定に従う１種類以上の制御データを他のＰＬＣ１００に送信する。
【００５１】
このように、本実施の形態では、ＰＬＣ１００間で制御データを共有すること、また当該共有に関して予め定められた設定に従い（すなわちプログラムレスで）１種類以上の制御データを共有すること、および制御データの更新周期に同期して（すなわちサイクリックに）パブリッシュすることを含む、データリンクを実施することができる。
【００５２】
実施の形態では、ＰＬＣ１００のパブリッシャ部１４０は、予め定められた周期で周期的に当該ＰＬＣ１００の状態をパブリッシュ（送信）する。したがって、各ＰＬＣ１００は、他のＰＬＣ１００の最新の状態から上記の受信可能条件が満たされるかを判断することができる。
【００５３】
受信可能条件は、状態が示す値を用いた演算を含んで構成される。パブリッシャ部１４０が送信する状態の種類を変更することで、または演算子を変更することで、受信可能条件を変更することが可能となる。
【００５４】
受信可能条件の設定は、制御データの種類毎に設定することも可能である。制御データはデータの集合であるデータセットを含み得る。制御データとしてデータセットを送信する場合は、受信可能条件を、データセット毎、またはデータセットを構成する各データについて変更することが可能となる。
【００５５】
また、ＰＬＣ１００には、図１に示すようなサポート装置５００が接続され得る。サポート装置５００は、ＰＬＣ１００がネットワーク２またはネットワーク３を管理するための必要な準備および制御対象を制御するために必要な準備などを支援する装置である。サポート装置５００は、ネットワーク２の管理に関連して、例えばＰＬＣ１００に接続されるデバイス２００のパラメータ（コンフィギュレーション）を設定するための設定環境などをユーザに対して提供する。サポート装置５００は、ネットワーク３の管理に関連して、例えばｐｕｂ／ｓｕｂ通信に関する受信可能条件を含む各種パラメータ（コンフィギュレーション）を設定するための設定環境などをユーザに対して提供する「設定装置」の一実施例でもある。サポート装置５００は、設定環境などを提供する設定ツールがインストールされたＰＣ（パーソナルコンピュータ）などを含み得る。
【００５６】
なお、通信システム１においては、サポート装置５００は、図１に示すように、ＰＬＣ１００とは別体として備えられるが、サポート装置５００は、ＰＬＣ１００に一体的に備えられてもよい。すなわち、サポート装置５００が有する機能は、ＰＬＣ１００に内蔵され得る。
【００５７】
以下、本実施の形態のより具体的な応用例について説明する。
＜Ｂ．ＰＬＣ１００の構成例＞
次に、本実施の形態に係るＰＬＣ１００の構成の一例を説明する。図２は、本実施の形態に係るＰＬＣ１００の構成を示す模式的に示す図である。なお、各ＰＬＣ１００は、同様の構成を備える。
【００５８】
図２を参照して、ＰＬＣ１００は、主たるコンポーネントとして、プロセッサ１０２と、メモリ１０４と、ストレージ１０６と、ネットワーク２との通信のためのネットワークコントローラ１１０と、ネットワーク３との通信のためのネットワークインタフェース１２０とを含む。また、ＰＬＣ１００は、サポート装置５００と通信するＩ／Ｆ（Interface）１０３を含む。
【００５９】
ストレージ１０６には、ＰＬＣ１００の各部を制御するためのシステムプログラム１０７に加えて、制御対象などに応じて設計されるユーザアプリケーションプログラム１０８が格納される。プロセッサ１０２は、ストレージ１０６に格納されているシステムプログラム１０７およびユーザアプリケーションプログラム１０８をメモリ１０４に読み出して実行することで、後述するような処理を含む各種処理を実現する。メモリ１０４は、ＤＲＡＭ（Dynamic  Random  Access  Memory）やＳＲＡＭ（Static  Random  Access  Memory）などの揮発性記憶装置からなる。
【００６０】
ネットワークコントローラ１１０は、ＰＬＣ１００がネットワーク２を介して各デバイス２００との間でデータを遣り取りするためのインタフェースを提供する。ネットワークコントローラ１１０は、主たるコンポーネントとして、受信回路（Ｒｘ）１１１と、受信バッファ１１２と、送受信コントローラ１１３と、送信バッファ１１４と、送信回路（Ｔｘ）１１５とを含む。
【００６１】
受信回路１１１は、ネットワークコントローラ１１０上を定周期で伝送されるフレームを受信して、その受信したフレームに格納されているデータを受信バッファ１１２に書込む。送受信コントローラ１１３は、受信バッファ１１２に書込まれた受信フレームを順次読出す。送受信コントローラ１１３は、当該読出されたフレームから、ＰＬＣ１００での処理に必要なデータのみを抽出し、プロセッサ１０２へ出力する。送受信コントローラ１１３は、プロセッサ１０２からの指令に従って、デバイス２００へ送信すべきデータあるいはフレームを送信バッファ１１４へ順次書込む。送信回路１１５は、ネットワークコントローラ１１０上をフレームが伝送される周期に同期して、送信バッファ１１４に格納されているデータを順次ネットワーク２へ送出する。
【００６２】
ネットワークインタフェース１２０は、ＰＬＣ１００がネットワーク３を介して他のＰＬＣ１００との間でデータを遣り取りするためのインタフェースを提供する。ネットワークインタフェース１２０は、主たるコンポーネントとして、受信回路（Ｒｘ）１２１と、受信バッファ１２２と、送受信コントローラ１２３と、送信バッファ１２４と、送信回路（Ｔｘ）１２５とを含む。
【００６３】
受信回路１２１は、ネットワークインタフェース１２０上で伝送されるフレームを受信して、その受信したフレームに格納されているデータを受信バッファ１２２に書込む。送受信コントローラ１２３は、受信バッファ１２２に書込まれた受信フレームを順次読出す。送受信コントローラ１２３は、当該読出されたフレームから、ＰＬＣ１００での処理に必要なデータのみを抽出し、プロセッサ１０２へ出力する。送受信コントローラ１２３は、プロセッサ１０２からの指令に従って、他のＰＬＣ１００へ送信すべきデータあるいはフレームを送信バッファ１２４へ順次書込む。送信回路１２５は、ネットワークインタフェース１２０上をフレームが伝送される周期に同期して、送信バッファ１２４に格納されているデータを順次ネットワーク３へ送出する。
【００６４】
なお、本実施の形態では、ネットワーク２または３を伝送するデータは、フレーム形式としているが、これは一例であり伝送データの形式はフレームに限定されない。
【００６５】
＜Ｃ．ｐｕｂ／ｓｕｂ通信によるデータ共有（データリンク）＞
図３は、本実施の形態に係るｐｕｂ／ｓｕｂ通信によるデータ共有（データリンク）を模式的に説明する図である。本実施の形態では、ＰＬＣ１００どうしが制御データなどのデータを相互に遣り取りしながら当該データを連携させて相互に利用できる、いわゆるデータ共有（データリンク）が実現され得る。本実施の形態ではデータ共有（データリンク）にかかるｐｕｂ／ｓｕｂ通信のデータの送信単位を、データセットとする。データセットのサイズが大きい場合は、例えば複数の単位に分割されて送信され得る。
【００６６】
図３では、通信システム１の各ＰＬＣ１００は、ｐｕｂ／ｓｕｂ通信におけるマルチキャストグループを構成するＰＬＣ（Ａ）、ＰＬＣ（Ｂ）、ＰＬＣ（Ｃ）およびＰＬＣ（Ｄ）として示されている。ＰＬＣ（Ａ）、ＰＬＣ（Ｂ）、ＰＬＣ（Ｃ）およびＰＬＣ（Ｄ）は、自己の制御データのデータセットＡ〜データセットＤをそれぞれメモリ１０４の記憶領域Ｅ３に格納するとともに、自己が属するマルチキャストグループの他のＰＬＣ１００が有するデータセットも格納する。このように、マルチキャストグループに属する全てのＰＬＣ１００は、自己が属するマルチキャストグループが有するデータセットＡ〜Ｄを共有しながら、共有するデータセットＡ〜Ｄを用いてＦＡの制御対象を制御することが可能となる。
【００６７】
また、ＰＬＣ（Ａ）、ＰＬＣ（Ｂ）、ＰＬＣ（Ｃ）およびＰＬＣ（Ｄ）は、自己の状態を示すデータであるステータスＡ〜ステータスＤをそれぞれ記憶領域Ｅ２に格納するとともに、自己が属するマルチキャストグループの他のＰＬＣ１００のステータスも格納する。このように、マルチキャストグループに属する各ＰＬＣ１００は、自己が属するマルチキャストグループが有するステータスＡ〜Ｄを共有しながら、共有するステータスＡ〜Ｄから上記に述べた受信可能条件が満たされるか否かを判断することが可能となる。
【００６８】
図３に示すマルチキャストグループのＰＬＣ１００間のデータセットＡ〜Ｄの共有およびステータスＡ〜Ｄの共有は、ｐｕｂ／ｓｕｂ通信により実現される。具体的には、データセットＡ〜Ｄの共有では、各ＰＬＣ１００のパブリッシャ部１４０は、記憶領域Ｅ２のステータスＡ〜Ｄが示す他のＰＬＣ１００の状態から受信可能条件が満たされると判断したとき、自己のデータセットを記憶領域Ｅ３から読出し、他のＰＬＣ１００にマルチキャストで送信する。他のＰＬＣ１００のサブスクライバ部１３０は、ネットワーク３を介してデータセットを受信し、記憶領域Ｅ３に格納する。
【００６９】
また、ステータスＡ〜Ｄの共有では、各ＰＬＣ１００のパブリッシャ部１４０は、周期的に記憶領域Ｅ２のステータスを読出し、他のＰＬＣ１００にマルチキャストで送信する。他のＰＬＣ１００のサブスクライバ部１３０は、ネットワーク３を介してステータスを受信し、記憶領域Ｅ２に格納する。
【００７０】
＜Ｄ．フレームの構成＞
図４と図５は、それぞれ本実施の形態に係るフレームの構成の一例を示す図である。図４は、データセットを送信するフレームの一例を示す。図４を参照して、フレームは、送信元を示す識別子として、送信元パブリッシャ識別子（ＰＬＣ１００の識別子）と、宛先サブスクラバを示す識別子としてマルチキャストグループの識別子と、送信されるデータセットが格納される。図５は、ＰＬＣ１００の状態を示すステータスを送信するフレームの一例を示す。図５を参照して、フレームは送信元の送信元パブリッシャ識別子（ＰＬＣ１００の識別子）と、宛先サブスクラバを示す識別子としてマルチキャストグループの識別子と、送信されるステータスが格納される。なお、図４と図５のフレームの宛先は、マルチキャストグループの識別子に限定されず、例えばマルチキャストグループに属する他のＰＬＣ１００の識別子が格納されてもよい。また図４と図５のフレームは、宛先サブスクライバが受信したフレームのデータ（データセットまたはステータス）の誤り検出または誤り訂正を行うための情報が格納されてもよい。
【００７１】
＜Ｅ．ＰＬＣ１００の機能構成＞
図６は、本実施の形態に係るＰＬＣ１００の機能構成の一例を示す図である。図６では、ｐｕｂ／ｓｕｂ通信に関するデータを格納する記憶領域Ｅ１〜Ｅ４を有するメモリ１０４と、サブスクライバ部１３０とパブリッシャ部１４０とが示される。サブスクライバ部１３０とパブリッシャ部１４０は、ｐｕｂ／ｓｕｂ通信のミドルウェアを含むプログラム、または当該プログラムと回路の組合せで実現される。この回路は、ＡＳＩＣ（Application  specific  integrated  circuit）またはＦＰＧＡ（Field-Programmable  Gate  Array）などを含み得る。
【００７２】
記憶領域Ｅ１には、ＰＬＣ１００間でデータ交換するための情報が設定（格納）されるサブスクライブ設定テーブル６０、データをパブリッシュするための情報が設定（格納）されるパブリッシュ設定テーブル７０、およびＰＬＣ１００の状態をパブリッシュするための情報が設定（格納）されるパブリッシュステータステーブル８０が格納される。これらテーブルの詳細は後述する。
【００７３】
記憶領域Ｅ２には、ＰＬＣ１００の自己の状態を示す自ステータス１４１、および他の各ＰＬＣ１００に対応して当該他ＰＬＣ１００の状態を示す他ステータス１４２が格納される。本実施の形態では、自ステータス１４１は、ＰＬＣ１００がｐｕｂ／ｓｕｂ通信によるデータを受信し処理可能な状態であるかを示す。例えば、このＰＬＣ１００の状態には、ＦＡの対象を制御するために受信データを処理するユーザアプリケーションプログラム１０８などのプログラムの状態が含まれる。本実施の形態では、このプログラムの状態は、実行中Ｆ１、初期化中Ｆ２および異常Ｆ３の３種類の状態を含む。なお、システムプログラム１０７は、プログラムの状態を常に検出して、自ステータス１４１のフラグＦ１〜Ｆ３のうち検出状態に該当のグラフを「１」にセットし、他のフラグを「０」にセットする。これにより、自ステータス１４１は、常に最新の状態を示し得る。なお、ＰＬＣ１００の状態は、ユーザアプリケーションプログラム１０８の状態に限定されず、またプログラムの状態も上記の３種類に限定されない。
【００７４】
記憶領域Ｅ３は、自ＰＬＣ１００のアプリケーションプログラム１０８によりデータセットが格納されるエリア１５Ａ、および自ＰＬＣ１００が属するマルチキャストグループの他のＰＬＣ１００から受信するデータセットが格納されるエリア１５Ｂ，１５Ｃおよび１５Ｄを含む。
【００７５】
記憶領域Ｅ４には、上記に述べた受信可能条件１６１が格納される。
サブスクライバ部１３０は、ネットワークインタフェース１２０を制御して、ネットワーク２上を伝送されるフレームを受信（サブスクライブ）する。具体的には、ネットワークインタフェース１２０から入力する伝送フレームの宛先と自己のマルチキャストグループの識別子とを比較（照合）し、比較の結果から自己宛てのフレームであると判断したとき、当該フレームの内容を受信し処理する。具体的には、サブスクライバ部１３０は、自己宛てのフレームの中のステータスを読出して、他のステータス１４２として記憶領域Ｅ２に格納するステータス受信処理部１３１、自己宛てのフレームの中のデータセットを読出して、記憶領域Ｅ３のエリア１５Ｂ〜１５Ｄのうちの該当するエリアに格納するデータ受信処理部１３２を備える。
【００７６】
パブリッシャ部１４０は、パブリッシュ判定部２４１、ステータス送信処理部２４２およびデータ送信処理部２４３を含む。ステータス送信処理部２４２は、予め定められた周期（例えば、１ｍｓｅｃ）毎に、記憶領域Ｅ２の自ステータス１４１を読出し、読出された自ステータス１４１を格納したフレーム（図５参照）を生成する。パブリッシャ部１４０は、生成されたフレームを、ネットワーク２を介して送信（パブリッシュ）するようにネットワークインタフェース１２０を制御する。
【００７７】
これにより、各ＰＬＣ１００からは、予め定められた周期毎に、最新の自ステータス１４１が、属するマルチキャストグループの他のＰＬＣ１００宛てに送信される。他のＰＬＣ１００は、サブスクライバ部１３０により当該自ステータス１４１を受信して、他のステータス１４２として記憶領域Ｅ２に格納する。したがって、各ＰＬＣ１００は、属するマルチキャストグループの全てのＰＬＣ１００の最新の状態を常に検出することができる。
【００７８】
また、パブリッシャ部１４０が記憶領域Ｅ３のエリア１５Ａの自ＰＬＣ１００のデータセットが更新された（新たに書き込まれた）ことを検出したとき、パブリッシュ判定部２４１は、記憶領域Ｅ２の他のステータス１４２が示す他のＰＬＣ１００の状態が、受信可能条件１６１を満たすか否かを判断する。例えば、受信可能条件１６１は、マルチキャストグループの他のＰＬＣ１００の実行中の状態を示すフラグＦ１が全て「１」であること（すなわち、フラグＦ１のＡＮＤ演算の値が「１」）を示す。なお、受信可能条件は、これに限定されない。
【００７９】
パブリッシュ判定部２４１により受信可能条件が満たされると判定されたとき、パブリッシャ部１４０はデータ送信処理部２４３を起動する。データ送信処理部２４３は、起動されると、記憶領域Ｅ３のエリア１５Ａから自ＰＬＣ１００のデータセットを読出し、読出されたデータセットを格納したフレーム（図４参照）を生成する。パブリッシャ部１４０は、生成されたフレームを、ネットワーク２を介して送信（パブリッシュ）するようにネットワークインタフェース１２０を制御する。
【００８０】
これにより、各ＰＬＣ１００からは、自ＰＬＣ１００のデータセットを送信する場合は、マルチキャストグループの他のＰＬＣ１００の最新の状態から、送信可能条件１６１を満たすと判定されたときに、当該データセットは、マルチキャストグループの他のＰＬＣ１００宛てにパブリッシュ送信される。したがって、データセットをパブリッシュ送信する場合に他のＰＬＣ１００がデータセットを受信できる確証を得ることができる。
【００８１】
＜Ｆ．各種テーブルの構成＞
図７は、図６のサブスクライブ設定テーブル６０の構成の一例を示す図である。図７では、通信システム１の複数のＰＬＣ１００に、サブスクライブ設定テーブル６０Ａ〜６０Ｄのそれぞれが格納される。サブスクライブ設定テーブル６０Ａ〜６０Ｄに共通の説明を行う場合はサブスクライブ設定テーブル６０と総称する。
【００８２】
サブスクライブ設定テーブル６０は、他のＰＬＣ１００からのデータを、自ＰＬＣ１００で処理可能なデータに変換するためのデータが登録（格納）される。具体的には、サブスクライブ設定テーブル６０には、他のＰＬＣ１００からサブスクライブ（受信）するデータ名（アドレス）と、各データ名に関連付けて、自ＰＬＣ１００のユーザアプリケーションプログラム１０８により参照可能な変数名とが登録される。データ受信処理部１３２は、サブスクライブ（受信）したデータセットを記憶領域Ｅ３に格納する場合、サブスクライブ設定テーブル６０に基づき、データセットの各データを、当該データ名を、サブスクライブ設定テーブル６０において関連付けられた変数名に変換しながら格納する。これにより、ｐｕｂ／ｓｕｂ通信においてＰＬＣ１００間でデータ交換を実施することができる。サブスクライブ設定テーブル６０のサブスクライブするデータには、他のＰＬＣ１００からサブスクライブ（受信）する状態を示すデータが含まれ得る。
【００８３】
図８は、図６のパブリッシュ設定テーブル７０の構成の一例を示す図である。図８では、通信システム１の複数のＰＬＣ１００に、パブリッシュ設定テーブル７０Ａ〜７０Ｄのそれぞれが格納される。パブリッシュ設定テーブル７０Ａ〜７０Ｄに共通の説明を行う場合はパブリッシュ設定テーブル７０と総称する。
【００８４】
本実施の形態では、ＰＬＣ１００は、１または複数種類のデータセットをパブリッシュ（送信）し得る。パブリッシュ設定テーブル７０は、パブリッシャ部１４０によるデータセットなどの制御データのパブリッシュ（送信）を制御するためのデータを含む。具体的には、自ＰＬＣ１００がパブリッシュ（送信）する各種類のデータセットのそれぞれに関連付けて、当該データセットの識別子であるデータセット名７１、当該データセットのメンバ（データ）のアドレスなどの識別子７２、サブスクライブ（受信）すべきＰＬＣ１００の状態を示すフラグの種類７３、受信可能条件７４、および当該データセットのデータが更新される予め定められた更新周期７５を含む。受信可能条件７４は、データセットの種類毎に設定されるのに対し、例えば全ての種類のデータセットに対して適用され得る受信可能条件を同じにする場合は、記憶領域Ｅ４の受信可能条件１６１を適用するとしてもよい。また、更新周期７５は、データセットの種類毎に限定されず、各種のデータセットを構成する各データについて設定されてもよい。
【００８５】
パブリッシャ部１４０は、パブリッシュ設定テーブル７０の内容に従い、各データセットをパブリッシュ（送信）する。本実施の形態では、複数種類のデータセットのうち公開するべきデータセットの種類が予め定められている。パブリッシャ部１４０は、パブリッシュ設定テーブル７０の更新周期７５から、対応のデータセットが更新されたと判断すると、すなわちパブリッシュ（送信）するときが到来したと判断すると、パブリッシュ判定部２４１は、対応のフラグの種類７３が示すフラグを他のステータス１４２のフラグＦ１〜Ｆ３から読出し、読出されたフラグが示す状態が、対応の受信可能条件７４を満たすか否かを判定する。これにより、更新周期７５に同期してサイクリックなパブリッシュ（送信）の実施が可能となる。
【００８６】
また、ステータス受信処理部１３１は、他のＰＬＣ１００からパブリッシュ（送信）される状態フラグのうち、パブリッシュ設定テーブル７０のフラグの種類７３が示すフラグをサブスクライブ（受信）し、記憶領域Ｅ２に他ステータス１４２として格納する。
【００８７】
図８のパブリッシュ設定テーブル７０によれば、ｐｕｂ／ｓｕｂ通信においてパブリッシュするデータセット毎に、受信可能条件７４および当該条件を判定するために用いる状態の種類を異ならせることができる。また、各ＰＬＣ１００のパブリッシュ設定テーブル７０に異なる内容を設定し得て、ＰＬＣ１００毎に受信可能条件７４を異ならせることができる。図８のパブリッシュ設定テーブル７０は、データセット毎に受信可能条件７４を設定したが、当該データセットのメンバ（データ）毎に受信可能条件７４を設定してもよい。
【００８８】
なお、本実施の形態では、図８のパブリッシュ設定テーブル７０には、公開（パブリッシュ）対象として予め定められた種類のデータセットのみが登録されるとしているが、登録方法は、これに限定されない。例えば、パブリッシャ部１４０は、パブリッシュ設定テーブル７０に登録される複数種類のデータセットのうち、予め定められた設定に従う種類のデータセットのみを選択的に読出して、パブリッシュ（送信）するとしてもよい。
【００８９】
図９は、図６のパブリッシュステータステーブル８０の構成の一例を示す図である。図９では、通信システム１の複数のＰＬＣ１００に、パブリッシュステータステーブル８０Ａ〜８０Ｄのそれぞれが格納される。パブリッシュステータステーブル８０Ａ〜８０Ｄに共通の説明を行う場合はパブリッシュステータステーブル８０と総称する。
【００９０】
図９を参照して、パブリッシュステータステーブル８０は、パブリッシャ部１４０による自ステータス１４１のパブリッシュ（送信）を制御するためのデータを含む。具体的には、パブリッシュステータステーブル８０は、自ＰＬＣ１００のステータス送信処理部２４２がパブリッシュ（送信）するべき状態の種類（フラグの種類）と、パブリッシュ（送信）する周期とを含む。これにより、ｐｕｂ／ｓｕｂ通信において各ＰＬＣ１００がパブリッシュする状態の種類と、パブリッシュする周期とを異ならせることが可能となる。
【００９１】
＜Ｇ．通信シーケンス＞
図１０は、本実施の形態に係る通信シーケンスの一例を示す図である。図１０を参照して、通信システム１におけるデータセットのパブリッシュ（送信）のマルチキャストグループにおける通信シーケンスを説明する。
【００９２】
まず、データセットのサブスクライバであるＰＬＣ１００のパブリッシャ部１４０は、ステータス１４１をパブリッシュ（送信）する（ステップＳ２１）。
【００９３】
データセットのパブリッシャであるＰＬＣ１００のサブスクライバ部１３０は、他のＰＬＣ１００からのステータス１４１を受信し、記憶領域Ｅ２に他のステータス１４２として格納する（ステップＳ１、Ｓ３）。パブリッシャであるＰＬＣ１００は、データセットが更新されるかを判定する（ステップＳ５）。更新されないときは（ステップＳ５でＮＯ）、ステップＳ１に戻る。データセットが更新されたとき（ステップＳ５でＹＥＳ）、パブリッシュ判定部２４１は、記憶領域Ｅ２の他のステータス１４２が示す他のＰＬＣ１００の状態から、受信可能条件１６１が満たされるかを判定する（ステップＳ７）。
【００９４】
パブリッシュ判定部２４１は、受信可能条件１６１が満たされないと判定したとき（ステップＳ９でＮＯ）、データセットのパブリッシュ（送信）はなされず、ステップ１に戻る。一方、パブリッシュ判定部２４１は、受信可能条件１６１が満たされると判定したとき（ステップＳ９でＹＥＳ）、パブリッシャ部１４０はデータセットをパブリッシュ（送信）する（ステップＳ１１）。他のＰＬＣ１００は、パブリッシュされたデータセットをサブスクライブ（受信）し、記憶領域Ｅ３に格納する（ステップＳ２３、Ｓ２５）。
【００９５】
また、本実施の形態では、サブスクライバのＰＬＣ１００が、パブリッシュされたデータセットを受信できたとき（ステップＳ２３）、パブリッシャ部１４０は、受信に成功したことを示す通知をパブリッシュ（送信）してもよい（ステップＳ２７）。これにより、データセット送信元のＰＬＣ１００は、通知を受信して（ステップＳ２９）、データセットの送信成功を確認することができる。なお、この通知は、データセットの受信に成功しない場合は、データセットの再送要求の通知を含んでもよい。
【００９６】
図１０の通信シーケンスによれば、データセットが更新されたとき、受信可能条件１６１が満たされない場合は、パブリッシャ部１４０は更新後のデータセットをパブリッシュ（送信）せずに、受信可能条件が満たされたとき更新後のデータセットをパブリッシュ（送信）する。これにより、ＰＬＣ１００間で同じデータセットの共有が可能となる。例えばデータセットが生産手順などを示すレシピデータである場合、レシピデータを共有することができる。したがって、マルチキャストグループ内で更新前後のレシピデータが混在する、すなわち同じレシピデータを共有できていないことで、ＰＬＣ１００間で生産手順が整合しない事態を防止することができる。
【００９７】
また、ｐｕｂ／ｓｕｂ通信では、データセットおよびステータスの通信を開始するに際してＰＬＣ１００間でコネクションを確立しないことで、各ＰＬＣ１００にかかる負荷を低くできて、処理の高速化が可能となる。また、コネクションを確立しないが、サブスクライバとなるＰＬＣ１００の状態が受信可能条件を満たすときにデータセットがパブリッシュ（送信）されるから、サブスクライバとなるＰＬＣ１００は、パブリッシュされるデータセットを確実に受信することができる。
【００９８】
＜Ｈ．サポート装置５００の構成＞
次に、サポート装置５００によるｐｕｂ／ｓｕｂ通信のための情報をＰＬＣ１００に設定する設定装置としての処理を説明する。図１１は、本実施の形態に係るサポート装置５００の構成を概略的に示す図である。図１１を参照して、サポート装置５００は、ＣＰＵ（Central  Processing  Unit）５１０、記憶部としてのメモリ５１２およびハードディスク５１４、タイマ５１３、入力インタフェース５１８、表示コントローラ５２０、通信インタフェース５２４、データリーダ／ライタ５２６を含む。これらの各部は、バス５２８を介して互いにデータ通信が可能なように接続されている。
【００９９】
ＣＰＵ５１０は、ハードディスク５１４に格納されたプログラム（コード）を実行することで、各種の演算を実施する。メモリ５１２は、典型的には、ＤＲＡＭ（Dynamic  Random  Access  Memory）などの揮発性の記憶装置である、メモリ５１２は、ハードディスク５１４から読出されたプログラム・データに加えて、データリーダ／ライタ５２６から受信されたデータ、およびワークデータなどが格納される。
【０１００】
入力インタフェース５１８は、ＣＰＵ５１０とタッチパッド５０４、マウス（図示せず）、キーボード（図示せず）などの入力装置との間のデータ伝送を仲介する。表示コントローラ５２０は、表示装置の典型例であるディスプレイ５０２と接続されて、表示データに従いディスプレイ５０２を駆動する信号を生成し、生成した信号によりディスプレイ５０２を駆動する。なお、タッチパッド５０４とディスプレイ５０２は一体的に構成されたタッチスクリーン５０１として提供されてもよい。
【０１０１】
通信インタフェース５２４は、ＵＳＢ（Universal  Serial  Bus）などを介してＰＬＣ１００との間のデータ伝送を仲介する。データリーダ／ライタ５２６は、ＣＰＵ５１０と外部の記憶媒体５０６との間のデータ伝送を仲介する。また、サポート装置５００には、必要に応じてプリンタなどの他の出力装置が接続されてもよい。
【０１０２】
なお、記憶媒体５０６は、サポート装置５００で実行されるプログラムなどが格納された状態で流通し、データリーダ／ライタ５２６は、この記憶媒体５０６からプログラムを読出す。なお、記憶媒体５０６は、ＣＦ（Compact  Flash）、ＳＤ（Secure  Digital）などの汎用的な半導体記憶デバイスや、フレキシブルディスク（Flexible  Disk）などの磁気記憶媒体や、ＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）などの光学記憶媒体などを含み得る。
【０１０３】
＜Ｉ．サポート装置５００の機能＞
図１２は、本実施の形態に係るサポート装置の機能構成を例示する図である。図１２を参照して、サポート装置５００は、入力インタフェース５１８を介して当該装置に対するユーザ操作を受付ける操作受付部５３、および設定部５４を備える。設定部５４は、操作受付部５３が受付けたユーザ操作の内容から、送信可能条件１６１を含む各種データをサポート装置５００に設定する。
【０１０４】
設定部５４は、サブスクライブ設定部５５とパブリッシュ設定部５６を含む。サブスクライブ設定部５５は、操作受付部５３が受付けたユーザ操作内容から、ＰＬＣ１００のサブスクライブ設定テーブル６０にデータを設定する。また、パブリッシュ設定部５６は、操作受付部５３が受付けたユーザ操作内容から、ＰＬＣ１００のパブリッシュ設定テーブル７０およびパブリッシュステータステーブル８０にデータを設定する。
【０１０５】
なお、ユーザは、サポート装置５００を操作することにより、接続先のＰＬＣ１００およびネットワーク３を介して、他のＰＬＣ１００のそれぞれに、上記と同様に、サブスクライブ設定テーブル６０、パブリッシュ設定テーブル７０およびパブリッシュステータステーブル８０にデータを設定することができる。
【０１０６】
＜Ｊ．受信可能条件の例示＞
図１３は、本実施の形態に係る受信可能条件１６１の一例を示す図である。図１３を参照して、受信可能条件１６１は、ＰＬＣ１００で実行可能なラダープログラムのコードで示される。本実施の形態では、ＰＬＣ１００がデータセットを受信可能な状態とは、ユーザアプリケーションプログラム１０８の状態が実行中（フラグＦ１＝「１」）であるとき示し、他の状態、すなわちアプリケーションプログラム１０８の状態が実行前の初期化中（フラグＦ２＝「１」）または異常（フラグＦ３＝「１」）であるときは、データセットを受信不可能な状態である。
【０１０７】
例えば、データセットをパブリッシュするＰＬＣ１００をＰＬＣ（Ａ）とした場合に、ＰＬＣ（Ａ）に設定される受信可能条件１６１は、図１３に示されるように、データセットＡをパブリッシュするとき（すなわち、データセットＡが更新されたとき）、記憶領域Ｅ２の他ステータス１４２のうち、ＰＬＣ（Ａ）が属するマルチキャストグループの他のＰＬＣ（Ｂ）〜ＰＬＣ（Ｄ）のフラグＦ１の全ての値が実行中（RUN）であるとき、すなわちフラグＦ１のＡＮＤ演算の結果が「１」であるとき、受信可能条件１６１が満たされて、更新後のデータセットＡのパブリッシュ（送信）が許可されることを示している。すなわち、ＡＮＤ演算の結果が「０」であるとき、受信可能条件１６１は満たされず、更新後のデータセットＡのパブリッシュ（送信）が禁止されることを示している。
【０１０８】
また、パブリッシュ設定部７０の受信可能条件７４についても、図１３と同様なラダープログラムのコードで設定される。
【０１０９】
図１３では、受信可能条件１６１の演算子として「ＡＮＤ」を用いたが、これに限定されず、例えば「ＯＲ」、「ＸＯＲ（排他的倫理和）」などであってもよく、またこれら２つ以上の演算子の組合せであってもよい。また、図１３の受信可能条件１６１では被演算子として、他のＰＬＣ１００のフラグＦ１の値を用いたが、他の種類のフラグの値を用いても良い。また、図１３の受信可能条件１６１は、被演算子としてマルチキャストグループの他のＰＬＣ１００の全てのフラグＦ１を用いているが、全てではなく予め定められた他のＰＬＣ１００のフラグＦ１のみを用いてもよい。
【０１１０】
なお、図１３では、受信可能条件１６１をラダープログラムのコードで示したが、ＰＬＣ１００のプロセッサ１０２が実行可能なコードであれば、ラダープログラムのコードに限定されない。
【０１１１】
＜Ｋ．設定処理＞
図１４は、本実施の形態に係るデータ設定処理のフローチャートの一例を示す図である。図１４のフローチャートに従うプログラムは、サブスクライブ設定テーブル６０、パブリッシュ設定テーブル７０およびパブリッシュステータステーブル８０および受信可能条件１６１などのデータを、ＰＬＣ１００に設定するためのデータ設定ツールとしてサポート装置５００に格納されて、ＣＰＵ５１０により実行される。図１４を参照して、一例として、主にパブリッシュ設定テーブル７０にデータセット毎に設定する処理を説明する。
【０１１２】
サポート装置５００においてデータ設定ツールが起動されると、ユーザは、タッチスクリーン５０１などを操作してデータを入力する。操作受付部５３は、ユーザの操作内容を受付ける（ステップＳ４０）。
【０１１３】
設定部５４は、受付けたユーザ操作内容から、ネットワーク３に接続される各ＰＬＣ１００を指定しながら当該ＰＬＣ１００のパブリッシュ設定テーブル７０にデータを設定する（ステップＳ４１〜ステップＳ５１のループ処理）。このループ処理は、各ＰＬＣ１００について、データセット毎のデータを設定する処理（ステップＳ４３〜Ｓ４９のループ処理）を含む。
【０１１４】
データセット毎のデータ設定のループ処理では、設定部５４のパブリッシュ設定部５６は、ＰＬＣ１００がパブリッシュ（送信）するべき状態のフラグの種類と、パブリッシュ（送信）する周期を、パブリッシュステータステーブル８０に設定する（ステップＳ４５）。
【０１１５】
また、パブリッシュ設定部５６は、ＰＬＣ１００のパブリッシュ設定テーブル７０に、データセット毎に、データセット名７１およびデータ（メンバ）の識別子７２を設定するとともに、当該データセットをサブスクライブ（受信）する他のＰＬＣ１００のフラグのうち、受信可能条件７４を判定するためのフラグの種類７３を生成し設定する（ステップＳ４）。
【０１１６】
また、パブリッシュ設定部５６は、データセット毎に、受信可能条件７４を設定する（ステップＳ４９）。例えば、パブリッシュ設定部５６は、受信可能条件７４として、図１３に示されたようなコードを設定する。
【０１１７】
設定部５４は、データ設定するべき次のデータセットが存在するかを判断し（ステップＳ５３、Ｓ４３）、次のデータセットが在ると判断したとき（ステップＳ４３でＹＥＳ）、パブリッシュ設定部５６は、次のデータセットのパブリッシュ設定テーブル７０およびパブリッシュステータステーブル８０について、ステップＳ４５〜Ｓ４９の設定処理を実施する。
【０１１８】
一方、次のデータセットはないと判断したとき（ステップＳ４３でＮＯ）、すなわち当該ＰＬＣ１００のデータ設定は終了したときは、データ設定するべき次のＰＬＣ１００が存在するかを判断する（ステップＳ５１、Ｓ４１）。次のＰＬＣ１００が在ると判断したとき（ステップＳ４１でＹＥＳ）、パブリッシュ設定部５６は、次のＰＬＣ１００のパブリッシュ設定テーブル７０およびパブリッシュステータステーブル８０について、ステップＳ４３〜Ｓ５３の設定処理を実施する。次のＰＬＣ１００はないと判断したとき（ステップＳ４１でＮＯ）、すなわちネットワーク３に接続される全てのＰＬＣ１００についてデータ設定が終了したときは、図１４の処理は終了する。
【０１１９】
図１４のデータ設定ツールによれば、ユーザは、ＰＬＣ１００に接続され得るサポート装置５００を操作することにより、各ＰＬＣ１００についてｐｕｂ／ｓｕｂ通信を実施するための受信可能条件を含むデータの設定が可能となる。
【０１２０】
＜Ｌ．プログラム＞
ＰＬＣ１００のプロセッサ１０２は、ｐｕｂ／ｓｕｂ通信または上記のデータ設定ツールの処理に応じてＰＬＣ１００内の各構成要素の制御を行う。ストレージ１０６は、例えば、ハードディスクドライブ、ソリッドステートドライブなどの補助記憶装置であり、プロセッサ１０２により実行されるシステムプログラム１０１７、アプリケーションプログラム１０８、ｐｕｂ／ｓｕｂ通信および上記のデータ設定ツールに関するプログラムおよびデータなどを記憶し得る。
【０１２１】
サポート装置５００のＣＰＵ５１０は、上記のデータ設定ツールのプログラムを実行するためにサポート装置５００内の各構成要素の制御を行う。ハードディスク５１４は、補助記憶装置であり、ＣＰＵ５１０により実行されるシステムプログラム、データ設定ツールのプログラムおよびデータなどを記憶し得る。補助記憶装置は、ハードディスクに限定されず、例えばソリッドステートなど、または記憶媒体５０６であってもよい。記憶媒体５０６は、コンピュータを含むその他装置、機械などにより、そこに記録されたプログラムなどの情報を読み取り可能なように、当該プログラムなどの情報を、電気的、磁気的、光学的、機械的または化学的作用によって蓄積する媒体である。サポート装置５００は、この記憶媒体５０６から、上記のデータ設定ツールのプログラムを取得してもよい。
【０１２２】
また、ＰＬＣ１００がサポート装置５００の構成を一体的に備える場合は、ＰＬＣ１００が記憶媒体５０６からデータ設定ツールのプログラムを取得し得る。また、記憶媒体５０６は、図１０に示す通信シーケンスのプログラムを記憶し得る。その場合は、ＰＬＣ１００は記憶媒体５０６から通信シーケンスのプログラムを取得し得る。
【０１２３】
なお、ＰＬＣ１００またはサポート装置５００へのプログラムまたはデータは、ネットワーク３を含む各種通信回線を介して、ＰＬＣ１００またはサポート装置５００にダウンロードされるとしてもよい。
【０１２４】
＜Ｍ．作用効果＞
上述したような本実施の形態によれば、ｐｕｂ/ｓｕｂ型の通信プロトコルに従いＰＬＣ間で、制御データを遣り取りすることが可能となる。すなわち、コネクションの確立を実施しないｐｕｂ/ｓｕｂ通信により制御データの遣り取りが可能となる。これにより、コネクション確立を必要とする他の通信方式に比較して、通信を含むＰＬＣ１００の処理の負荷および通信システム１にかかる通信の負荷（トラフィク）を低くすることができるとともに、処理および通信の高速化が可能となる。
【０１２５】
また、パブリッシャ側のＰＬＣ１００は、サブスクライバ側の他のＰＬＣ１００の状態が、受信可能条件１６１（または受信可能条件７４）を満たしたときに、制御データをパブリッシュ（送信）する。これにより、コネクションを確立しないとしても、サブスクライバ側の他のＰＬＣ１００が、制御データをサブスクライブ（受信）できる確実性を高めることができる。
【０１２６】
＜Ｎ．付記＞
本実施の形態では、以下のような技術思想を含む。
【０１２７】
［構成１]
ファクトリオートメーションを制御する複数の制御装置（１００）がネットワーク（３）に接続された通信システム（１）であって、
各前記複数の制御装置の間の通信プロトコルは、パブリッシュ／サブスクライブ型を含み、
前記各制御装置は、
前記ファクトリオートメーションの制御データ（１５Ａ）を格納するためのデータ格納部（Ｅ３）と、
自制御装置の状態（１４１）を含むデータを他の前記制御装置に送信するパブリッシャ部（１４０）と、
前記他の制御装置からデータを受信するサブスクライバ部（１３０）と、を備え、
前記サブスクライバ部が受信する前記他の制御装置の状態（１４２）が、受信可能条件（１６１、７４）を満たすとき、前記パブリッシャ部は、前記自制御装置の前記制御データを前記他の制御装置に送信する、通信システム。
【０１２８】
［構成２]
前記データ格納部の前記制御データは、予め定められた周期で更新され、
前記制御データは、複数種類の制御データを含み、
前記パブリッシャ部は、前記複数種類の制御データのうち、予め定められた設定に従う１種類以上の制御データを前記周期に同期して送信する、構成１に記載の通信システム。
【０１２９】
［構成３］
前記制御データは、複数種類の制御データを含み、
前記受信可能条件は、前記制御データの種類毎に異なる、構成１または２に記載の通信システム。
【０１３０】
［構成４］
前記受信可能条件は、前記状態が示す値を用いた演算を含んで構成される、構成１から３の１に記載の通信システム。
【０１３１】
［構成５］
前記パブリッシャ部は、前記状態を周期的に送信する、構成１から３のいずれか１に記載の通信システム。
【０１３２】
［構成６］
前記パブリッシャ部は、前記他の制御装置から前記制御データを受信したとき通知を送信する、構成１から５のいずれか１に記載の通信システム。
【０１３３】
［構成７］
ファクトリオートメーションのネットワーク（３）に接続され得る制御装置（１００）に情報を設定する設定装置（５００）であって、
前記制御装置と他の前記制御装置の間の通信プロトコルは、パブリッシュ／サブスクライブ型を含み、
前記制御装置は、
前記ファクトリオートメーションの制御データ（１５Ａ）を格納するためのデータ格納部（Ｅ３）と、
自制御装置の状態を含むデータを前記他の制御装置に送信するパブリッシャ部（１４０）と、
前記他の制御装置からデータを受信するサブスクライバ部（１３０）と、を備え、
前記設定装置は、
前記他の制御装置の前記サブスクライバ部による前記制御データの受信可能条件（１６１、７４）を、当該他の制御装置から受信する状態が含まれるように設定する設定部（５４）を備える、設定装置。
【０１３４】
[構成８]
前記データ格納部の前記制御データは、予め定められた周期で更新され、
前記制御データは、複数種類の制御データを含み、
前記パブリッシャ部は、前記複数種類の制御データのうち、予め定められた設定に従う１種類以上の制御データを前記周期に同期して送信する、構成７に記載の設定装置。
【０１３５】
［構成９］
前記設定装置は、
当該設定装置に対するユーザ操作を受付ける操作受付部（５３）を、さらに備え、
受付けたユーザ操作内容から、前記受信可能条件を設定する、構成７または８に記載の設定装置。
【０１３６】
［構成１０］
前記制御データは、複数種類の制御データを含み、
前記設定部は、前記制御データの種類毎に異なる前記受信可能条件を設定する、構成７から９の１に記載の設定装置。
【０１３７】
［構成１１］
前記受信可能条件は、前記状態が示す値を用いた演算を含んで構成される、構成７から１０のいずれか１項に記載の設定装置。
【０１３８】
［構成１２]
ファクトリオートメーションを制御する複数の制御装置（１００）がネットワーク（３）に接続された通信システム（１）に適用される前記制御装置であって、
前記制御装置の間の通信プロトコルは、パブリッシュ／サブスクライブ型を含み、
前記ファクトリオートメーションの制御データ（１５Ａ）を格納するためのデータ格納部（Ｅ３）と、
自制御装置の状態を含むデータを他の前記制御装置に送信するパブリッシャ部（１４０）と、
前記他の制御装置からデータを受信するサブスクライバ部（１３０）と、を備え、
前記サブスクライバ部が受信する前記他の制御装置の状態が、受信可能条件（１６１、７４）を満たすとき、前記パブリッシャ部は、前記自制御装置の前記制御データを前記他の制御装置に送信する、制御装置。
【０１３９】
[構成１３]
前記データ格納部の前記制御データは、予め定められた周期で更新され、
前記制御データは、複数種類の制御データを含み、
前記パブリッシャ部は、前記複数種類の制御データのうち、予め定められた設定に従う１種類以上の制御データを前記周期に同期して送信する、構成１２に記載の制御装置。
【０１４０】
[構成１４]
ファクトリオートメーションのネットワーク（３）に接続され得る制御装置（１００）に情報を設定する設定方法であって、
前記制御装置の間の通信プロトコルは、パブリッシュ／サブスクライブ型を含み、
前記制御装置は、
前記ファクトリオートメーションの制御データ（１５Ａ）を格納するためのデータ格納部（Ｅ３）と、
自制御装置の状態を含むデータを送信するパブリッシャ部（１４０）と、
他の前記制御装置からデータを受信するサブスクライバ部（１３０）と、を備え、
前記設定方法は、
プロセッサ（５１０）が、当該プロセッサに対するユーザ操作を受付けるステップと、
前記プロセッサが、前記他の制御装置の前記サブスクライバ部による前記制御データの受信可能条件（１６１、７４）を、ユーザ操作内容を用いて、当該他の制御装置から受信する状態（１４２）が含まれるように設定するステップと、を備える、設定方法。
【０１４１】
[構成１５]
前記データ格納部の前記制御データは、予め定められた周期で更新され、
前記制御データは、複数種類の制御データを含み、
前記パブリッシャ部は、前記複数種類の制御データのうち、予め定められた設定に従う１種類以上の制御データを前記周期に同期して送信する、構成１４に記載の設定方法。
【０１４２】
[構成１６]
上記の構成１４または１５に記載の前記設定方法をコンピュータ（５１０）に実行させるためのプログラム。
【０１４３】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１４４】
１  通信システム、２，３  ネットワーク、５３  操作受付部、５４  設定部、５５  サブスクライブ設定部、５６  パブリッシュ設定部、６０  サブスクライブ設定テーブル、７０  パブリッシュ設定テーブル、７４，１６１  受信可能条件、８０  パブリッシュステータステーブル、１００  ＰＬＣ。
【図１】
2019080164.tif 000003
【図２】
2019080164.tif 000004
【図３】
2019080164.tif 000005
【図４】
2019080164.tif 000006
【図５】
2019080164.tif 000007
【図６】
2019080164.tif 000008
【図７】
2019080164.tif 000009
【図８】
2019080164.tif 000010
【図９】
2019080164.tif 000011
【図１０】
2019080164.tif 000012
【図１１】
2019080164.tif 000013
【図１２】
2019080164.tif 000014
【図１３】
2019080164.tif 000015
【図１４】
2019080164.tif 000016