(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-18
(45)【発行日】2024-11-26
(54)【発明の名称】制御システム、サポート方法およびプログラム
(51)【国際特許分類】
G05B 19/05 20060101AFI20241119BHJP
【FI】
G05B19/05 L
(21)【出願番号】P 2021038267
(22)【出願日】2021-03-10
【審査請求日】2024-01-16
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】澤田 成憲
(72)【発明者】
【氏名】江口 重行
【審査官】田中 成彦
(56)【参考文献】
【文献】特開2019-161523(JP,A)
【文献】特開平06-075786(JP,A)
【文献】特開2014-120187(JP,A)
【文献】特開2011-193149(JP,A)
【文献】特開2010-160600(JP,A)
【文献】特開2006-309345(JP,A)
【文献】特開2006-106858(JP,A)
【文献】特開2004-280222(JP,A)
【文献】特開平09-171405(JP,A)
【文献】特許第5808450(JP,B1)
【文献】国際公開第2018/180004(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/02 - 19/05
H04L 12/28
G06F 9/46
(57)【特許請求の範囲】
【請求項1】
制御対象を制御する制御システムであって、
複数の通信スレーブと、
通信マスタとして動作する複数の制御装置とを含み、
前記複数の制御装置の各々はプロセッサを含み、
前記制御システムは、さらに、
前記制御対象を制御するためのユーザプログラムを複数の部分プログラムに分割する分割手段と、
前記複数の部分プログラムを前記複数の制御装置に割り当てる複数の組み合わせの各々について、前記複数の制御装置および前記複数の通信スレーブの接続関係を示す情報と割り当てられた部分プログラムとを用いて、前記複数の制御装置の各々の通信スケジュールと、前記複数の制御装置の各々の前記プロセッサによる演算スケジュールとを決定するスケジューリング手段と、
前記複数の組み合わせの各々について、前記通信スケジュールと前記演算スケジュールとに応じた評価値を算出する算出手段と、を備え、
前記ユーザプログラムは、前記複数の通信スレーブからの入力データを監視する監視プログラムを含み、
前記複数の制御装置は、前記監視プログラムが割り当てられない第1制御装置と、前記監視プログラムが割り当てられる第2制御装置とを含み、
前記スケジューリング手段は、
前記複数の通信スレーブのうちのいずれかの通信スレーブから前記第1制御装置への通信方式を、前記第1制御装置と前記第2制御装置とを宛先として指定したマルチキャストに設定し、
前記第2制御装置の通信スケジュールに、前記マルチキャストによって送信された前記入力データを読み出すための読出時間を組み込む、制御システム。
【請求項2】
前記評価値に基づいて、前記複数の組み合わせの中から1つの組み合わせを選択する選択手段と、
前記複数の制御装置の各々に、前記1つの組み合わせにおいて割り当てられている部分プログラムを設定する設定手段と、をさらに備える、請求項1に記載の制御システム。
【請求項3】
前記複数の制御装置の各々は、予め定められた制御周期毎に、前記複数の通信スレーブのうちの少なくとも1つとの間の入出力データの通信と前記入出力データを用いた演算とを実行し、
前記複数の制御装置は、
2つの制御装置を含み、
前記制御システムは、さらに、
前記
2つの制御装置の間の通信タイミングに応じて、前記
2つの制御装置
の一方における前記制御周期の開始タイミングと前記
2つの制御装置
の他方における前記制御周期の開始タイミングとの時間差を調整する調整手段を備える、請求項1または2に記載の制御システム。
【請求項4】
前記複数の制御装置の各々は、予め定められた制御周期毎に、前記複数の通信スレーブのうちの少なくとも1つとの間の入出力データの通信と前記入出力データを用いた演算とを実行し、
前記制御システムは、さらに、
前記読出時間に応じて、前記第1制御装置における前記制御周期の開始タイミングと前記第2制御装置における前記制御周期の開始タイミングとの時間差を調整する調整手段を備える、請求項
1または2に記載の制御システム。
【請求項5】
前記複数の制御装置の各々は、予め定められた制御周期毎に、前記複数の通信スレーブのうちの少なくとも1つへの出力データの送信を実行し、
前記設定手段は、さらに、
前記1つの組み合わせに対して決定された、前記複数の制御装置の各々の前記通信スケジュールに基づいて、前記制御周期内において、前記複数の通信スレーブに前記出力データが到達するタイミングのうち最も遅い第1タイミングを特定し、
前記複数の通信スレーブが処理を開始する第2タイミングを前記第1タイミング以降に設定する、請求項2に記載の制御システム。
【請求項6】
制御対象を制御する制御システムをサポートするサポート方法であって、
前記制御システムは、
複数の通信スレーブと、
通信マスタとして動作する複数の制御装置とを含み、
前記複数の制御装置の各々はプロセッサを含み、
前記サポート方法は、
前記制御対象を制御するためのユーザプログラムを複数の部分プログラムに分割するステップと、
前記複数の部分プログラムを前記複数の制御装置に割り当てる複数の組み合わせの各々について、前記複数の制御装置および前記複数の通信スレーブの接続関係を示す情報と割り当てられた部分プログラムとを用いて、前記複数の制御装置の各々の通信スケジュールと、前記複数の制御装置の各々の前記プロセッサによる演算スケジュールとを決定するステップと、
前記複数の組み合わせの各々について、前記通信スケジュールと前記演算スケジュールとに応じた評価値を算出するステップと、を備
え、
前記ユーザプログラムは、前記複数の通信スレーブからの入力データを監視する監視プログラムを含み、
前記複数の制御装置は、前記監視プログラムが割り当てられない第1制御装置と、前記監視プログラムが割り当てられる第2制御装置とを含み、
前記通信スケジュールを決定するステップは、
前記複数の通信スレーブのうちのいずれかの通信スレーブから前記第1制御装置への通信方式を、前記第1制御装置と前記第2制御装置とを宛先として指定したマルチキャストに設定することと、
前記第2制御装置の通信スケジュールに、前記マルチキャストによって送信された前記入力データを読み出すための読出時間を組み込むこととを含む、サポート方法。
【請求項7】
請求項
6に記載のサポート方法をコンピュータに実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、制御システム、サポート方法およびプログラムに関する。
【背景技術】
【0002】
様々な製造現場において、PLC(Programmable Logic Controller)などの制御装置と制御装置に接続される複数の通信スレーブとを備える制御システムが導入されている。製造現場では、制御システムの規模を増大させたいという要望が生じうる。このような要望に対して、現状のPLCの能力が不足している場合、高性能のPLCに置き換えることが考えられる。そのため、PLCを提供するベンダーは、制御システムの規模に応じた多種類の商品を開発しておく必要がある。
【0003】
近年、ネットワークを介して複数のPLCを接続し、PLC間でデータの送受を行ないながら、協働,同期運転等を行なう分散コントローラシステムが開発されている(特開2010-097624号公報(特許文献1)参照)。分散コントローラシステムを用いることにより、既存のPLCと同じ機種のPLCを増設することにより、制御システムの規模の増大に対応できる。これにより、ベンダーが準備しておく商品の種類の数を減らすことができる。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
複数のPLCを用いた分散コントローラシステムを構築する場合、制御システム内の通信および各PLCの演算内容を最適化するための作業が必要となる。特許文献1は、このような作業の効率化について考慮されていない。
【0006】
本開示は、上記の問題に鑑みてなされたものであり、その目的は、通信および各制御装置の演算内容の最適化を効率的に進めることが可能な制御システム、サポート方法およびプログラムを提供することである。
【課題を解決するための手段】
【0007】
本開示の一例によれば、制御対象を制御する制御システムは、複数の通信スレーブと、通信マスタとして動作する複数の制御装置とを含む。複数の制御装置の各々はプロセッサを含む。制御システムは、分割手段と、スケジューリング手段と、算出手段と、を備える。分割手段は、制御対象を制御するためのユーザプログラムを複数の部分プログラムに分割する。スケジューリング手段は、複数の部分プログラムを複数の制御装置に割り当てる複数の組み合わせの各々について、複数の制御装置および複数の通信スレーブの接続関係を示す情報と割り当てられた部分プログラムとを用いて、複数の制御装置の各々の通信スケジュールと、複数の制御装置の各々のプロセッサによる演算スケジュールとを決定する。算出手段は、複数の組み合わせの各々について、通信スケジュールと演算スケジュールとに応じた評価値を算出する。
【0008】
この開示によれば、ユーザは、評価値を参照することにより、複数の組み合わせについて、各制御装置の通信スケジュールと演算スケジュールとの良否を判断できる。その結果、ユーザは、制御システム内の通信および各制御装置の演算内容の最適化を効率的に進めることができる。
【0009】
上述の開示において、制御システムは、評価値に基づいて、複数の組み合わせの中から1つの組み合わせを選択する選択手段と、複数の制御装置の各々に、1つの組み合わせにおいて割り当てられている部分プログラムを設定する設定手段と、をさらに備える。
【0010】
この開示によれば、評価値に基づいて選択された1つの組み合わせに従って、部分プログラムを制御装置にインストールできる。
【0011】
上述の開示において、複数の制御装置の各々は、予め定められた制御周期毎に、複数の通信スレーブのうちの少なくとも1つとの間の入出力データの通信と入出力データを用いた演算とを実行する。複数の制御装置は、第1制御装置と第2制御装置とを含む。制御システムは、さらに、第1制御装置と第2制御装置との間の通信タイミングに応じて、第1制御装置における制御周期の開始タイミングと第2制御装置における制御周期の開始タイミングとの時間差を調整する調整手段を備える。
【0012】
この開示によれば、第1制御装置と第2制御装置との間の通信タイミングに応じて、第1制御装置における制御周期の開始タイミングと第2制御装置における制御周期の開始タイミングとの時間差が調整されることにより、無駄な待機時間の発生が抑制される。
【0013】
上述の開示において、ユーザプログラムは、複数の通信スレーブからの入力データを監視する監視プログラムを含む。複数の制御装置は、監視プログラムが割り当てられない第1制御装置と、監視プログラムが割り当てられる第2制御装置とを含む。スケジューリング部は、複数の通信スレーブのうちのいずれかの通信スレーブから第1制御装置への通信方式を、第1制御装置と第2制御装置とを宛先として指定したマルチキャストに設定する。さらに、スケジューリング部は、第2制御装置の通信スケジュールに、マルチキャストによって送信された入力データを読み出すための読出時間を組み込む。
【0014】
この開示によれば、通信方式がマルチキャストに設定されることにより、制御システムの通信が効率化される。
【0015】
上述の開示において、複数の制御装置の各々は、予め定められた制御周期毎に、複数の通信スレーブのうちの少なくとも1つとの間の入出力データの通信と入出力データを用いた演算とを実行する。制御システムは、さらに、読出時間に応じて、第1制御装置における制御周期の開始タイミングと第2制御装置における制御周期の開始タイミングとの時間差を調整する調整手段を備える。
【0016】
この開示によれば、無駄が待機時間の発生が抑制される。その結果、制御システムの通信が効率化される。
【0017】
上述の開示において、複数の制御装置の各々は、予め定められた制御周期毎に、複数の通信スレーブのうちの少なくとも1つへの出力データの送信を実行する。設定部は、さらに、1つの組み合わせに対して決定された、複数の制御装置の各々の通信スケジュールに基づいて、制御周期内において、複数の通信スレーブに出力データが到達するタイミングのうち最も遅い第1タイミングを特定し、複数の通信スレーブが処理を開始する第2タイミングを第1タイミング以降に設定する。この開示によれば、複数の通信スレーブの処理を同期させることができる。
【0018】
本開示の別の一例によれば、制御対象を制御する制御システムをサポートするサポート方法は、第1~第3のステップを備える。第1のステップは、制御対象を制御するためのユーザプログラムを複数の部分プログラムに分割するステップである。第2のステップは、複数の部分プログラムを複数の制御装置に割り当てる複数の組み合わせの各々について、複数の制御装置および複数の通信スレーブの接続関係を示す情報と割り当てられた部分プログラムとを用いて、複数の制御装置の各々の通信スケジュールと、複数の制御装置の各々のプロセッサによる演算スケジュールとを決定するステップである。第3のステップは、複数の組み合わせの各々について、通信スケジュールと演算スケジュールとに応じた評価値を算出するステップである。
【0019】
本開示の別の一例によれば、プログラムは、上記のサポート方法をコンピュータに実行させる。
【0020】
これらの開示によっても、ユーザは、制御システム内の通信および各制御装置の演算内容の最適化を効率的に進めることができる。
【発明の効果】
【0021】
本開示によれば、ユーザは、制御システム内の通信および各制御装置の演算内容の最適化を効率的に進めることができる。
【図面の簡単な説明】
【0022】
【
図1】実施の形態に係るサポート装置が適用される制御システムの一例を示す図である。
【
図2】制御システムの規模を増大させる例を示す図である。
【
図3】分散コントローラシステムを用いて規模が増大された制御システムの一例を示す図である。
【
図4】分散コントローラシステムにおける処理の流れを示す図である。
【
図5】サポート装置のハードウェア構成の一例を示す図である。
【
図6】PLCのハードウェア構成の一例を示す図である。
【
図7】サポート装置の機能構成の一例を示す図である。
【
図9】
図1に示される制御システムに含まれるモジュールの例を示す図である。
【
図11】ユーザプログラムに組み込まれた演算ブロックの一例を示す図である。
【
図12】演算の定義および割り付け情報に従って作成されるユーザプログラムの一部を示す図である。
【
図13】ユーザプログラムを複数の部分プログラムに分割する例を示す図である。
【
図14】ユーザプログラムから分割された部分プログラムの例を示す図である。
【
図15】スケジューリング部によって特定される複数の組み合わせのうちの1つを示す図である。
【
図16】制御システムにおいて実施される通信の一例を示す図である。
【
図17】組み合わせ(2)において実施されるフレーム通信を示す図である。
【
図18】PLCにおけるIOデータの通信スケジュールの一例を示す図である。
【
図19】ユーザプログラムに含まれる各種プログラムのタスクへの割り当ての一例を示す図である。
【
図20】スケジューリング部によって決定されたスケジュールの一例を示す図である。
【
図21】ユーザプログラムに含まれる各種プログラムのタスクへの割り当ての別の例を示す図である。
【
図22】スケジューリング部によって決定されたスケジュールの別の例を示す図である。
【
図23】部分プログラム222d,222eをPLC200aに割り当てる組み合わせ(1)のときの、PLC200aのスケジュールを示す図である。
【
図24】組み合わせ(2)のときのPLC200a,200bのスケジュールを示す図である。
【
図25】通信スケジュールおよび演算スケジュールから算出される評価値の一例を示す図である。
【
図26】通信スケジュールおよび演算スケジュールから算出される評価値の別の例を示す図である。
【
図27】制御システムにおいて実施される通信の別の例を示す図である。
【
図28】組み合わせ(2)において部分プログラム222eが監視プログラムを含むときのPLC200a,200bのスケジュールを示す図である。
【
図29】通信スレーブの処理スケジュールの設定方法の一例を示す図である。
【発明を実施するための形態】
【0023】
以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。なお、以下で説明される各実施の形態および各変形例は、適宜選択的に組み合わせてもよい。
【0024】
§1.適用例
本実施の形態にかかる制御システムの概略について説明する。
図1は、実施の形態に係る制御システムの一例を示す図である。
図1に例示される制御システム1は、ロボット、搬送装置、セーフティ装置などの各種の制御対象を制御する。
【0025】
図1に示されるように、制御システム1は、サポート装置100と、複数のPLC200と、複数の通信スレーブ300と、1以上のスイッチ400と、を備える。PLC200は、通信マスタとして動作する制御装置の一例である。
図1に示す例では、複数のPLC200は、PLC200a,200bを含む。複数の通信スレーブ300は、通信スレーブ300a~300iを含む。ただし、PLC200の個数は、2個に限定されず、3個以上であってもよい。通信スレーブ300の個数は、8個に限定されず、2個以上であればよい。
【0026】
制御システム1では、複数のPLC200の同期をとるために、TSN(Time-Sensitive Networking)技術が採用される。TSN技術は、標準のEthernet(登録商標)を拡張する産業用ネットワークと情報系ネットワークとを相互運用するためのネットワーク技術であり、Ethernet(登録商標)をベースにしながら時間の同期性を保証するとともに、リアルタイム性を担保する。TSN技術の仕様は、ネットワーク規格の「IEEE 802.1 AS-Rev Timing and Synchronization for Time-Sensitive Applications」によって定義されている。TSNのスケジューリングは、複数のPLC200のうちCNC(Central Network Controller)が実装されたネットワークコントローラとして機能するPLCが担当する。あるいは、制御システム1は、スイッチ400に接続されるネットワークコントローラを備えてもよい。この場合、ネットワークコントローラがTSNのスケジューリングを行なえばよい。
【0027】
PLC200は、プロセッサ202を有するCPU(Central Processing Unit)ユニットを含む。さらに、PLC200は、通信ユニット、セーフティユニットなどの拡張ユニットをさらに含んでもよい。通信スレーブ300は、入出力装置などのデバイスである。
【0028】
複数のPLC200の各々は、予め定められた制御周期毎に、複数の通信スレーブ300のうちの少なくとも1つとの間の入出力データ(IOデータ)の通信とIOデータを用いた演算とを実行する。
【0029】
スイッチ400は、たとえばL2スイッチである。スイッチ400は、接続された機器のMACアドレスを記憶しており、MACアドレスを用いて送信先にのみデータを送信する。
【0030】
サポート装置100は、制御システム1をサポートする。サポート装置100は、複数のPLC200が制御対象を制御するために必要な準備を支援する情報処理装置(コンピュータの一例)である。
【0031】
具体的には、サポート装置100は、PLC200間の通信および各PLC200の演算内容の最適化を支援するためのサポート処理を実行する。サポート処理は、以下の(1)~(3)のステップを含む。
【0032】
(1)サポート装置100は、制御対象を制御するためのユーザプログラムを複数の部分プログラムに分割する。
【0033】
(2)サポート装置100は、複数の部分プログラムを複数のPLC200に割り当てる複数の組み合わせを特定する。サポート装置100は、複数のPLC200と複数の通信スレーブ300との接続関係を示す接続情報を取得する。サポート装置100は、複数の組み合わせの各々について、接続情報と割り当てられた部分プログラムとを用いて、各PLC200の通信スケジュールと、各PLC200のプロセッサ202による演算スケジュールとを決定する。
【0034】
(3)サポート装置100は、複数の組み合わせの各々について、通信スケジュールと演算スケジュールとに応じた評価値を算出する。
【0035】
ユーザは、上記のサポート処理によって算出された評価値を確認することにより、複数の組み合わせのうち、各PLC200の通信スケジュールと各PLC200のプロセッサ202による演算スケジュールとの良否を判断できる。その結果、ユーザは、制御システム1内の通信および各PLC200の演算内容の最適化を効率的に進めることができる。
【0036】
なお、サポート装置100は、ユーザプログラムの開発環境(プログラム作成編集ツール、パーサ、コンパイラなど)、複数のPLC200および複数の通信スレーブ300のパラメータ(コンフィギュレーション)を設定するための設定環境などを提供してもよい。サポート装置100は、公知の技術を用いて、これらの環境を提供する。そのため、開発環境および設定環境の提供の詳細について、説明を省略する。
【0037】
§2.具体例
<A.制御システムの規模の増大>
図2は、制御システムの規模を増大させる例を示す図である。
図2には、互いに関連する2つの通信スレーブ300からなるモジュールの個数が1個から3個に増大される例が示される。
【0038】
規模の増大前の制御システム1Xは、PLC200XとモジュールMaとを含む。PLC200Xには、モジュールMaを制御するためのユーザプログラム122Xがインストールされる。
【0039】
規模の増大後の制御システム1Yは、モジュールMaに加えて、モジュールMb,Mcをさらに含む。PLC200Xは、3個のモジュールMa,Mb,Mcを制御する能力を有していない。そのため、制御システム1Yは、PLC200Xの代わりに高性能のPLC200Yを備える。高性能のPLC200Yは、一般にコストが高い。そのため、PLC200XをPLC200Yに置き換えるためのコストが高くなる。さらに、PLCを提供するベンダーは、制御システムの規模に応じた多品種のPLCを開発しておく必要が生じる。
【0040】
PLC200Yには、モジュールMa,Mb,Mcを制御するためのユーザプログラム122Yがインストールされる。1台のPLC200YによってモジュールMa,Mb,Mcを制御するため、ユーザプログラム122Yには、各モジュールの有効化処理および無効化処理が含まれ得る。そのため、ユーザプログラム122Yの作成に手間がかかる。
【0041】
このように、制御システムの規模の増大に応じて、PLC200Xを高性能のPLC200Yに置き換える場合、コストおよびユーザプログラムの作成の手間が増大するという問題が生じる。
【0042】
図3は、分散コントローラシステムを用いて規模が増大された制御システムの一例を示す図である。
図3に例示される制御システム1Zは、モジュールMa,Mb,McとモジュールMa,Mb,Mcをそれぞれ制御するPLC200Xa,200Xb,200Xcとスイッチ400Zとを備える。スイッチ400Zは、PLC200Xa,200Xb,200Xc間の通信を切り替える。
【0043】
制御システム1Zでは、PLC200Xa,200Xb,200Xcの各々は、1個のモジュールを制御するため、
図2に示す制御システム1XのPLC200Xと同じ性能を有していればよい。そのため、制御システム1Xから制御システム1Zに規模を増大する場合、安価なPLC200Xを2個追加すればよい。
【0044】
さらに、ユーザは、モジュールMa,Mb,Mcをそれぞれ制御するためのプログラム122Za,122Zb,122Zcを組み合わせることにより、ユーザプログラム122Zを作成すればよい。そして、プログラム122Za,122Zb,122ZcがPLC200Xa,200Xb,200Xcにそれぞれインストールされる。そのため、ユーザは、ユーザプログラム122Zの作成の際に、モジュールの有効化処理および無効化処理の追加を省略できる。その結果、ユーザプログラムの作成の手間が削減される。
【0045】
このように、分散コントローラシステムを用いることにより、PLCに要するコストの増大、ユーザプログラムの作成の手間が抑制され得る。しかしながら、制御システムに含まれる通信スレーブの個数、PLCの個数が多くなると、制御システム内の通信および各PLCの演算内容を最適化するための作業が必要となる。そのため、本実施の形態に係るサポート装置100は、制御システム内の通信および各PLCの演算内容を最適化するための作業を支援する。
【0046】
<B.分散コントローラシステムにおける処理の流れ>
図4は、分散コントローラシステムにおける処理の流れを示す図である。
図4には、PLC200a,200bを用いて分散コントローラシステムを構築したときの、PLC200a,200bの処理の流れが示される。
【0047】
まず、ステップS1a,S1bにおいて、PLC200a,200bは、内部タイマの時刻補正を行なう。これにより、PLC200a,200bの内部タイマが同期される。
【0048】
次に、PLC200a,200bは、スケジューラの動作を開始する(ステップS2a,S2b)。PLC200a,200bは、アドレス解決を行なう(ステップS3a,S3b)。
【0049】
次に、PLC200a,200bは、接続されている通信スレーブ300との間で照合を行なう(ステップS4a,S4b)。照合結果に応じて、PLC200a,200bは、接続されている通信スレーブ300との間でコネクションを確立する(ステップS5a,S5b)。
【0050】
次に、PLC200a,200bは、同期トリガの送受信を行なう(ステップS6a,S6b)。PLC200a,200bは、同期トリガに応じて、通信を開始する(S7a,S7b)。これにより、PLC200a,200bの通信処理が同期される。
【0051】
<C.ハードウェア構成>
(C-1.サポート装置のハードウェア構成)
図5は、サポート装置のハードウェア構成の一例を示す図である。
図5に示されるように、サポート装置100は、CPU102と、ROM(Read Only Memory)103と、RAM(Random Access Memory)104と、HDD(Hard Disk Drive)105と、通信コントローラ107と、I/O(Input/Output)インターフェイス108と、を含む。サポート装置100には、キーボード109およびディスプレイ110が接続される。キーボード109は、ユーザからのサポート装置100に対する指示を含む入力を受付ける。当該入力を受付けるために、サポート装置100には、マウス等の他のデバイスが接続されてもよい。ディスプレイ110は、LCD(Liquid Crystal Display)または有機EL(Electro Luminescence)を含み、サポート装置100から出力される映像信号または画像信号に従う映像または画像を表示する。サポート装置100は、外部の記憶媒体101を脱着自在に装着し、装着された記憶媒体101にプログラムおよび/またはデータを読み書きするR/W(リーダライタ)デバイス106を備える。
【0052】
通信コントローラ107は、ネットワークを介した外部装置(PLC200を含む)との通信を制御する。通信コントローラ107は、例えばNIC(Network Interface Card)を含んで構成される。I/Oインターフェイス108は、CPU102とキーボード109およびディスプレイ110との間のデータの遣り取りを制御する。
【0053】
HDD305は、OSを含むシステムプログラム120、ユーザプログラム122を生成するためのUPG生成プログラム121、ユーザプログラム122、接続情報123、および分散設計プログラム124を記憶する。
【0054】
UPG生成プログラム121は、キーボード109から受け付けるユーザ操作に従い、ユーザプログラム122を編集(生成)するエディタ、編集されたユーザプログラム122をコンパイルするコンパイラ、ユーザプログラム122を実行可能な形式に変換するビルダなどを含む。なお、ビルダが、コンパイルの機能を含んでもよい。
【0055】
接続情報123は、制御システム1の機器間の接続関係を示す。具体的には、接続情報123は、機器間の物理的な配線、配線の長さなどを示す。たとえば
図1に示す構成の場合、PLC200a,200b、通信スレーブ300a~300iおよびスイッチ400の接続関係を示す接続情報123が予め作成され、HDD105に格納される。
【0056】
分散設計プログラム124は、分散コントロールシステムとして制御システム1を構築するときの設計支援を行なう。
【0057】
(C-2.PLCのハードウェア構成)
図6は、PLCのハードウェア構成の一例を示す図である。
図6に示されるように、PLC200は、主たるハードウェアコンポーネントとして、プロセッサ202と、メインメモリ204と、ストレージ206と、フィールドネットワークコントローラ212と、通信コントローラ213と、ローカルバスコントローラ214とを含む。これらのハードウェアコンポーネントは、内部バス218を介して電気的に接続される。
【0058】
プロセッサ202は、演算処理部に相当し、CPUやGPU(Graphics Processing Unit)などで構成される。具体的には、プロセッサ202は、ストレージ210に格納されたプログラムを読出して、メインメモリ204に展開して実行することで、制御対象に応じた演算処理および各種処理を実現する。
【0059】
メインメモリ204は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置などで構成される。ストレージ206は、例えば、SSD(Solid State Drive)やHDD(Hard Disk Drive)などの不揮発性記憶装置などで構成される。
【0060】
ストレージ206には、基本的な機能を実現するためのシステムプログラム220、制御対象に応じて作成されたユーザプログラム122の一部である部分プログラム222、および、通信スケジュールおよび演算スケジュールを定義付けるシステム設定情報224などが格納される。システムプログラム220は、PLC200における基本的な機能を実現するため、制御プログラムの少なくとも一部とみなすことができる。
【0061】
フィールドネットワークコントローラ212は、フレームが一巡するように構成されたネットワークに接続される。より具体的には、フィールドネットワークコントローラ212は、EtherCAT(登録商標)やEtherNet/IPなどの通信プロトコルを用いて、フレームの送受信処理を担当するポートを有する。フィールドネットワークコントローラ212は、通信マスタ(マスタ)として機能する。なお、フィールドネットワークコントローラ212は、フレームを周期的に送受信するための同期カウンタを有していてもよい。
【0062】
通信コントローラ213は、ネットワークを介した外部装置(サポート装置100を含む)との通信を制御する。
【0063】
ローカルバスコントローラ214は、内部バス218を介して、1または複数の拡張ユニット216と電気的に接続される。拡張ユニット216は、制御対象との間で各種の信号をやり取りする機能などを含む。拡張ユニット216は、例えば、制御対象からのデジタル信号を受取るDI(Digital Input)機能、制御対象に対してデジタル信号を出力するDO(Digital Output)機能、制御対象からのアナログ信号を受取るAI(Analog Input)機能、制御対象に対してアナログ信号を出力するAO(Analog Output)機能のうち1または複数の機能を有している。さらに、拡張ユニット216としては、PID(Proportional Integral Derivative)制御やモーション制御といった特殊機能を実装したコントローラを含み得る。
【0064】
図6には、プロセッサ202がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。あるいは、PLC200の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOS(Operating System)を並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
【0065】
<D.サポート装置の機能構成>
図7は、サポート装置の機能構成の一例を示す図である。
図7に示されるように、サポート装置100は、記憶部10と、分割部11と、スケジューリング部12と、算出部13と、選択部14と、設定部15と、を備える。記憶部10は、
図4に示すROM103、RAM104およびHDD105によって実現される。分割部11、スケジューリング部12、算出部13、選択部14、および設定部15は、CPU102が分散設計プログラム124を実行することにより実現される。
【0066】
記憶部10は、ユーザプログラム122と、接続情報123と、変数リスト125とを記憶する。
【0067】
図8は、変数リストの一例を示す図である。
図8に示されるように、変数リスト125は、各通信スレーブ300について、デバイス名と、当該通信スレーブ300によって使用される変数名と、グルーバル変数名との一覧である。変数リスト125は、サポート装置100によって提供される設定環境を利用して予め作成される。
【0068】
分割部11(
図6参照)は、ユーザプログラム122を複数の部分プログラム222に分割する。ユーザプログラム122を複数の部分プログラム222に分割する方法については後述する。
【0069】
スケジューリング部12は、制御システム1に含まれる複数のPLC200に複数の部分プログラムを割り当てる複数の組み合わせを特定する。スケジューリング部12は、接続情報123を参照することにより、制御システム1に含まれるPLC200の個数を認識すればよい。スケジューリング部12は、複数の組み合わせの各々について、接続情報と割り当てられた部分プログラムとを用いて、各PLC200の通信スケジュールと、各PLC200のプロセッサ202による演算スケジュールとを決定する。
【0070】
算出部13は、複数の組み合わせの各々について、通信スケジュールと演算スケジュールとに応じた評価値を算出する。
【0071】
選択部14は、評価値に基づいて、複数の組み合わせの中から1つの組み合わせを選択する。たとえば、選択部14は、複数の組み合わせの各々の評価値をディスプレイ110に表示し、キーボード109への入力に応じて1つの組み合わせを選択する。あるいは、選択部14は、複数の組み合わせの中から、評価値の最も高い1つの組み合わせを選択してもよい。
【0072】
設定部15は、複数のPLC200の各々に、選択された1つの組み合わせにおいて割り当てられている部分プログラム222を設定する。具体的には、設定部15は、PLC200に部分プログラム222をインストールする。さらに、設定部15は、複数のPLC200の各々に、選択された1つの組み合わせに対応する通信スケジュールおよび演算スケジュールを設定する。具体的には、設定部15は、各PLC200に対して、通信スケジュールおよび演算スケジュールを定義付けるためのシステム設定情報224を生成し、生成したシステム設定情報224を設定する。
【0073】
<E.ユーザプログラムの分割方法>
制御システム1に備えられる複数の通信スレーブ300の各々は、生産ラインに設置される複数の機構のいずれかに関連付けられる。そのため、複数の通信スレーブ300は、関連する機構に応じて、複数のモジュールに分類され得る。
【0074】
図9は、
図1に示される制御システムに含まれるモジュールの例を示す図である。
図9に示されるように、制御システム1は、互いに関連する通信スレーブ300b~300dからなるモジュールMdと、互いに関連する通信スレーブ300e~300iからなるモジュールMeとを含む。
【0075】
分割部11は、たとえば、モジュール単位でユーザプログラム122を複数の部分プログラム222に分割する。
【0076】
図10は、演算の定義の一例を示す図である。
図9に示される定義50は、入力「A_in1」~「A_inN」と、ロジックと、出力「A_out1」~「A_outM」とを定義する。ロジックは、「A_in1」~「A_inN」を参照して、「A_out1」~「A_outM」を出力するための演算を定義する。
【0077】
ユーザは、
図10に示される定義50を含む複数の定義を用いて、ユーザプログラム122を作成する。たとえば、ユーザは、定義50の入力「A_in1」~「A_inN」に割り付ける変数またはデバイスと、定義50の出力「A_out1」~「A_outM」に割り付ける変数またはデバイスとを設定することにより、定義50の演算を含むユーザプログラム122を作成する。
【0078】
図11は、ユーザプログラムに組み込まれた演算ブロックの一例を示す図である。
図10に示される演算ブロック52は、
図9に示される定義50の入力および出力に変数またはデバイスが割り付けられることにより作成される。たとえば、入力「A_in1」にセンサ60が割り付けられ、入力「A_inN」に変数61が割り付けられ、出力「A_out1」にアクチュエータ62が割り付けられ、出力「A_outM」に変数63が割り付けられる。この場合、演算ブロック52は、センサ60から入力されたデータおよび変数61を用いた演算を行ない、演算によって得られたデータをアクチュエータ62に出力するとともに、変数63を更新する。
【0079】
演算ブロック52は、定義50と、割り付け情報とに基づいて作成される。割り付け情報は、各入力に割り付けられる変数またはデバイスと、各出力に割り付けられる変数またはデバイスとを示す。割り付け情報は、ユーザプログラム122を作成する際に、ユーザ入力に応じて作成される。
【0080】
図12は、演算の定義および割り付け情報に従って作成されるユーザプログラムの一部を示す図である。
図12に示されるように、ユーザプログラム122を設計するための設計情報は、演算の定義50,51と、割り付け情報70~72とを含む。
【0081】
演算ブロック52は、定義50と割り付け情報70とに基づいて作成される。演算ブロック52は、センサ60から入力されたデータと変数61とを用いた演算を行ない、演算によって得られたデータをアクチュエータ62に出力するとともに、変数63を更新する。
【0082】
演算ブロック53は、定義50と割り付け情報71とに基づいて作成される。演算ブロック53は、センサ64から入力されたデータと変数65とを用いた演算を行ない、演算によって得られたデータをアクチュエータ66に出力するとともに、変数67を更新する。
【0083】
演算ブロック54は、定義51と割り付け情報72とに基づいて作成される。演算ブロック54は、ネットワーク上の機器80から入力されたデータと変数63,67とを用いた演算を行ない、演算によって得られたデータを機器80に出力するとともに、変数61,65を更新する。
【0084】
分割部11は、センサ60,64およびアクチュエータ62,66を含む機構を特定し、特定結果に応じて、ユーザプログラム122を複数の部分プログラム222に分割する。なお、分割部11は、キーボード109への入力に応じて、センサ60,64およびアクチュエータ62,66を含む機構を特定すればよい。あるいは、接続情報123がセンサ60,64およびアクチュエータ62,66と機構との接続関係を示す情報を含む場合、分割部11は、接続情報123を参照して、センサ60,64およびアクチュエータ62,66を含む機構を特定してもよい。
【0085】
図13は、ユーザプログラムを複数の部分プログラムに分割する例を示す図である。
図13に示されるように、センサ60およびアクチュエータ62は、
図9に示すモジュールMdに関連する機構90に含まれる。センサ64およびアクチュエータ66は、
図9に示すモジュールMeに関連する機構91に含まれる。
【0086】
分割部11は、各機構について、当該機構に含まれるデバイス(センサ、アクチュエータなど)からの入力を用いて演算を行なう演算ブロックと、当該デバイス(センサ、アクチュエータなど)へデータを出力する演算ブロックとを特定する。分割部11は、各機構について、特定した演算ブロックを当該機構に関連するモジュール向けの部分プログラムの一部として決定する。
【0087】
図12に示す例では、分割部11は、機構90に含まれるセンサ60からの入力を用いて演算を行なう演算ブロック52を、機構90に関連するモジュールMd(
図9参照)向けの部分プログラム222dの一部として決定する。同様に、分割部11は、機構91に含まれるセンサ64からの入力を用いて演算を行なう演算ブロック53を、機構91に関連するモジュールMe(
図9参照)向けの部分プログラム222eの一部として決定する。
【0088】
さらに、分割部11は、残りの演算ブロックの各々について、入力される変数を更新する他の演算ブロックを特定する。特定した他の演算ブロックがいずれかの部分プログラム222に属する場合、分割部11は、他の演算ブロックが属する部分プログラム222に残りの演算ブロックを含める。なお、特定した他の演算ブロックが複数存在する場合、分割部11は、複数の他の演算ブロックの中から1つの演算ブロックを選択する。分割部11は、任意に1つの演算ブロックを選択してもよいし、キーボード109への入力に応じて1つの演算ブロックを選択してもよい。
【0089】
あるいは、分割部11は、変数リスト125を参照して、各演算ブロックに入力される変数を更新する通信スレーブ300を特定し、特定した通信スレーブ300を含むモジュール向けの部分プログラム222に当該演算ブロックを含ませてもよい。
【0090】
図13に示す例では、分割部11は、演算ブロック54に入力される変数63を更新する演算ブロック52を特定する。分割部11は、演算ブロック52が属する部分プログラム222dに演算ブロック54を含める。あるいは、分割部11は、演算ブロック54に入力される変数67を更新する演算ブロック53を特定してもよい。この場合、分割部11は、演算ブロック53が属する部分プログラム222eに演算ブロック54を含める。
【0091】
このようにして、分割部11は、ユーザプログラム122を複数の部分プログラム222に分割する。
【0092】
図14は、ユーザプログラムから分割された部分プログラムの例を示す図である。
図14に示されるように、ユーザプログラム122は、モジュールMd向けの部分プログラム222dとモジュールMe向けの部分プログラム222eとに分割される。
図13に示されるように、部分プログラム222dに属する演算ブロック54は、部分プログラム222eに属する演算ブロック53によって更新される変数67を用いて演算を行なう。演算ブロック53は、演算ブロック54によって更新される変数65を用いて演算を行なう。そのため、
図14に示されるように、部分プログラム222d,222eの間で指示およびステータスの遣り取りが必要となる。
【0093】
<F.複数の部分プログラムを複数のPLCに割り当てる組み合わせ>
スケジューリング部12は、制御システム1に含まれる複数のPLC200に複数の部分プログラム222を割り当てる複数の組み合わせを特定する。たとえば、制御システム1がPLC200a,200bを備え(
図1参照)、かつ、ユーザプログラム122が部分プログラム222d,222eに分割される(
図13参照)場合、スケジューリング部12は、以下の4通りの組み合わせ(1)~(4)を特定する。
組み合わせ(1):部分プログラム222d,222eをPLC200aに割り当てる。
組み合わせ(2):部分プログラム222dをPLC200aに割り当て、部分プログラム222eをPLC200bに割り当てる。
組み合わせ(3):部分プログラム222dをPLC200bに割り当て、部分プログラム222eをPLC200aに割り当てる。
組み合わせ(4):部分プログラム222d,222eをPLC200bに割り当てる。
【0094】
図15は、スケジューリング部によって特定される複数の組み合わせのうちの1つを示す図である。
図15には、上記の組み合わせ(2)が示される。
【0095】
<G.通信スケジュールおよび演算スケジュールの決定>
次に、
図16~
図24を参照して、各組み合わせについての通信スケジュールおよび演算スケジュールの決定方法の一例について説明する。
【0096】
図16は、制御システムにおいて実施される通信の一例を示す図である。
図16には、
図15に示される組み合わせ(2)において実施される通信が示される。図中の矢印は、機器間の通信を表している。
【0097】
スケジューリング部12は、PLC200aに割り当てられる部分プログラム222dがモジュールMd向けであることから、PLC200aとモジュールMdに含まれる通信スレーブ300b~300dとの間で入出力データ(IOデータ)の通信が必要であると判断する。同様に、スケジューリング部12は、PLC200bに割り当てられる部分プログラム222eがモジュールMe向けであることから、PLC200bとモジュールMeに含まれる通信スレーブ300e~300iとの間でIOデータの通信が必要であると判断する。
【0098】
さらに、スケジューリング部12は、通信スレーブ300b~300dにデイジーチェイン接続される通信スレーブ300aとPLC200aとの間でIOデータの通信が必要であると判断する。
【0099】
上述したように、部分プログラム222d,222eの間で指示およびステータスの遣り取りが必要となる。そのため、スケジューリング部12は、PLC200a,200b間で指示およびステータスの通信が必要であると判断する。
【0100】
スケジューリング部12は、TSN技術を用いて通信を行なうときの通信スケジュールを決定する。TSN技術では、キューの開閉時間を計算した上で、全スイッチに内蔵している時刻を同期させ、その時刻でいつポートを開けて閉めるかを全スイッチに設定することで、フレームがキューで待ち状態にならずに、スイッチを通過できる。
【0101】
図17は、
図15に示される組み合わせ(2)において実施されるフレーム通信を示す図である。
図17には、PLC200aからスイッチ400、PLC200b、通信スレーブ300b~300dにフレームが伝送される様子が示される。
【0102】
スケジューリング部12は、フレームサイズ、フレームの伝搬時間、機器内の処理のための遅延時間を用いて、フレーム通信に要する時間を計算する。
【0103】
たとえば、スイッチ400のポート内のキューの開閉時刻は、以下のようにして計算される。スケジューリング部12は、スイッチ400の開時刻を式(a)に従って計算する。
開時刻=フレーム送信開始時刻+オフセット時間+送信ジッタT12+フレーム伝搬遅延時間T13+フレーム送出時間T11・・・式(a)。
【0104】
フレーム送信開始時刻は、PLC200aがフレームの送信を開始する時刻である。スケジューリング部12は、組み合わせ(2)においてPLC200aに割り当てられる部分プログラム222dを解析することにより、フレーム送信開始時刻を決定する。フレーム送信開始時刻は、
図4に示す通信開始(ステップS7a,S7b)の時刻を0として決定される。
【0105】
オフセット時間は、PLC200aが有する内部タイマとスイッチ400が有する内部タイマとの時間差である。各組み合わせの通信スケジュールを決定する際には、オフセット時間=0とすればよい。
【0106】
送信ジッタT12は、フレームが通信ケーブルを伝搬する時間である。スケジューリング部12は、事前に測定された送信ジッタT12を記憶する。あるいは、接続情報123が機器間の配線の長さを含む場合、スケジューリング部12は、接続情報123を参照して、配線の長さに予め定められた係数を乗算することにより、送信ジッタT12を計算してもよい。
【0107】
フレーム伝搬遅延時間T13は、スイッチ400内の処理に要する時間である。スケジューリング部12は、事前に測定されたフレーム伝搬遅延時間T13を記憶する。あるいは、スケジューリング部12は、スイッチ400を販売するベンダーから提供されたフレーム伝搬遅延時間T13を記憶する。
【0108】
フレーム送出時間T11は、フレームの先頭から最後まで送出するための時間である。スケジューリング部12は、フレームサイズに基づいて、フレーム送出時間T11を計算する。フレームサイズは、通信されるIOデータのサイズであり、たとえばユーザによって指定される。
【0109】
さらに、スケジューリング部12は、各フレームのサイズが同一である場合、スイッチ400の閉時刻を式(b)に従って計算する。Nは、連続して伝送されるフレームの個数である。
閉時刻=開時刻+送信ジッタT12×N+フレーム伝搬遅延時間T13×(N-1)+フレーム送出時間T11×N・・・式(b)。
【0110】
このようにして、スケジューリング部12は、スイッチ400の開時刻と閉時刻とを計算し、スイッチ400が通信を行なう時間T15を計算する。同様の方法により、スケジューリング部12は、PLC200aが通信を行なう時間T14を計算する。
【0111】
図18は、PLCにおけるIOデータの通信スケジュールの一例を示す図である。
図18には、
図15に示される組み合わせ(2)におけるPLC200aのIOデータの通信処理41,42が示される。通信処理41は、PLC200aと通信スレーブ300b~300dとの間で実施される。通信処理42は、PLC200aとPLC200bとの間で実施される。スケジューリング部12は、上記の計算を行なうことにより、通信処理41,42の時間を決定する。
【0112】
さらに、スケジューリング部12は、各PLCのプロセッサ202の演算スケジュールを決定する。
【0113】
図19は、ユーザプログラムに含まれる各種プログラムのタスクへの割り当ての一例を示す図である。ユーザプログラム122には様々なプログラムが含まれ、各プログラムは、優先度に応じて、複数のタスクのうちのいずれかに割り当てられる。各プログラムのタスクへの割り当ては、ユーザ入力に応じて設定される。複数のタスクには、高優先のプライマリタスクと、プライマリタスクよりも優先度の低いセカンダリタスクと、イベントタスクとが含まれる。プライマリタスクは、ユーザによって設定された制御周期Tc(=Xms)毎に実行される。セカンダリタスクは、ユーザによって設定された周期(=Yms)毎に実行される。セカンダリタスクの周期の長さは、制御周期Tcと同じであってもよいし、制御周期Tcの倍数であってもよい。イベントタスクは、イベントが発生したタイミングで実行される。
【0114】
図19に示す例では、ユーザプログラム122は、制御プログラム131と、安全プログラム132と、監視プログラム133と、イベントプログラム134とを含む。制御プログラム131は、制御対象を制御するための演算を定義する。安全プログラム132は、設備や機械などによって人の安全が脅かされることを防止するためのセーフティ機能を提供する。監視プログラム133は、制御システム1において使用される変数を監視する。イベントプログラム134は、イベントが発生したときの動作を定義する。
【0115】
制御プログラム131および安全プログラム132は、遅延なく、周期的に実行されることが望まれる。そのため、制御プログラム131および安全プログラム132は、通常、プライマリタスクに割り当てられる。なお、制御プログラム131および安全プログラム132の実行に必要なIOデータの通信処理も、プライマリタスクに割り当てられる。
【0116】
監視プログラム133は、周期的に実行されることが望まれるが、遅延が許容される。そのため、監視プログラム133は、通常、セカンダリタスクに割り当てられる。監視プログラム133の実行に必要なIOデータの通信処理も、セカンダリタスクに割り当てられる。
【0117】
イベントプログラム134は、周期的に実行される必要がないため、イベントタスクに割り当てられる。
【0118】
TSN技術では、フレームに対して、QoS(サービス品質)優先度が設定される。各フレームは、QoS優先度に応じて、キューが割り当てられる。QoS優先度は、「0」~「7」の8つの中から設定される。QoS優先度「7」が最も高く、QoS優先度「0」が最も低い。
【0119】
制御プログラム131および安全プログラム132の実行に必要なIOデータのフレームは、優先して通信されることが好ましい。そのため、制御プログラム131および安全プログラム132の実行に必要なIOデータのフレームに対して、QoS優先度「7」が設定される。
【0120】
スケジューリング部12は、各PLC200について、当該PLC200に割り当てられた部分プログラム222を割り当てたタスク、部分プログラム222によって定義される演算内容に基づいて、当該PLC200のプロセッサ202の演算スケジュールを決定する。
【0121】
図20は、スケジューリング部によって決定されたスケジュールの一例を示す図である。
図20には、
図15に示される組み合わせ(2)におけるPLC200aのプロセッサ202のスケジュールが示される。
【0122】
図20に示されるように、スケジューリング部12は、プライマリタスクのスケジュールとして、通信処理41,42を実行する通信スケジュールと、演算処理43を実行する演算スケジュールとを決定する。
【0123】
通信処理41,42は、部分プログラム222dにおいてプライマリタスクに割り当てられたプログラムの実行に必要なIOデータの通信処理である。通信処理41は、通信スレーブ300b~300cとの間の通信処理である。通信処理42は、PLC200bとの間の通信処理である。通信処理41,42によって通信されるフレームには、QoS優先度「7」が設定される。
【0124】
演算処理43は、部分プログラム222dにおいてプライマリタスクに割り当てられたプログラムによって定義される。
【0125】
同様に、スケジューリング部12は、セカンダリタスクのスケジュールとして、通信処理44を実行する通信スケジュールを決定する。
【0126】
通信処理44は、部分プログラム222dにおいてセカンダリタスクに割り当てられたプログラムの実行に必要なIOデータの通信処理である。通信処理44によって通信されるフレームには、QoS優先度「5」が設定される。
【0127】
通信処理41,42,44に要する時間の計算方法は、
図17,18を参照して説明した通りである。
【0128】
スケジューリング部12は、部分プログラム222dの解析結果、ユーザの入力情報、各機器の動作情報などに基づいて、演算処理43に要する時間を計算する。
【0129】
制御周期Tcのうち空き時間には、たとえばイベントタスクに割り当てられたプログラムによって定義される演算処理、他の通信処理が実行される。
【0130】
また、制御周期Tcのうち通信処理41,42,44の占める時間以外の時間において、演算結果に応じて通信が必要となったデータ、イベントの発生に応じて必要となったデータなどを含むフレームが通信される。これらのフレームには、予めQoS優先度が設定されている。
【0131】
図21は、ユーザプログラムに含まれる各種プログラムのタスクへの割り当ての別の例を示す図である。
図21に示す例では、ユーザプログラム122は、制御プログラム131と、安全プログラム132と、監視プログラム133と、イベントプログラム134と、データリンク設定プロブラム135とを含む。
【0132】
データリンク設定プロブラム135は、複数のPLC200間で通信を使ってお互いのメモリエリアを自動的に更新し、1つのPLC200のメモリ状況を常に別のPLC200に反映させるデータリンクを設定するプログラムである。データリンク設定プロブラム135の実行により、複数のPLC200は、メモリエリアのデータを互いに通信する。
【0133】
図21に示す例では、データリンク設定プロブラム135は、セカンダリタスクに割り当てられている。
【0134】
図22は、スケジューリング部によって決定されたスケジュールの別の例を示す図である。
図22には、
図15に示される組み合わせ(2)におけるPLC200aのプロセッサ202のスケジュールが示される。
図22に示されるように、スケジューリング部12は、セカンダリタスクの通信スケジュールの中に、PLC200bとの間のデータリンクのための通信処理45を含ませる。通信処理45に要する時間は、メモリエリアの容量に応じて計算される。
【0135】
このようにして、スケジューリング部12は、各組み合わせについて、各PLC200の通信スケジュールおよび演算スケジュールを決定する。
【0136】
図23は、部分プログラム222d,222eをPLC200aに割り当てる組み合わせ(1)のときの、PLC200aのスケジュールを示す図である。
【0137】
図23に示されるように、PLC200aのスケジュールは、全ての通信スレーブ300との通信処理41aを実行する通信スケジュールと、演算処理43d,43eを実行する演算スケジュールとを含む。演算処理43dは、モジュールMd向けの部分プログラム222dによって定義される。演算処理43eは、モジュールMe向けの部分プログラム222eによって定義される。
【0138】
図24は、部分プログラム222d,222eをPLC200a,200bにそれぞれ割り当てる組み合わせ(2)のときの、PLC200a,200bのスケジュールを示す図である。
【0139】
図24に示されるように、PLC200aのスケジュールは、通信処理41b,42aを実行する通信スケジュールと、演算処理43dを実行する演算スケジュールとを含む。通信処理41bは、通信スレーブ300a~300d(
図16参照)との間の通信処理である。通信処理42aは、PLC200bとの間の通信処理である。
【0140】
PLC200bのスケジュールは、通信処理41c,42bを実行する通信スケジュールと、演算処理43eを実行する演算スケジュールとを含む。通信処理41cは、通信スレーブ300e~300i(
図15参照)との間の通信処理である。通信処理42bは、PLC200aとの間の通信処理である。
【0141】
通信処理42aにおいてPLC200aから送信されたデータは、通信処理42bにおいてPLC200bによって受信される。通信処理42bにおいてPLC200bから送信されたデータは、通信処理42aにおいてPLC200aによって受信される。そのため、スケジューリング部12は、PLC200aにおける制御周期Tcの開始タイミングとPLC200bにおける制御周期Tcの開始タイミングとの時間差Tdを調整する調整手段として動作してもよい。すなわち、スケジューリング部12は、PLC200a,200bの間の通信タイミング(つまり、通信処理42a,42bのタイミング)に応じて時間差Tdを調整する。時間差Tdが一律に0に設定されると、PLC200bにおいて、通信処理41cと通信処理42bとの間に無駄な待機時間が発生する。しかしながら、時間差Tdが調整されることにより、このような待機時間の発生が抑制される。
【0142】
<H.評価値の算出方法>
図25および
図26を参照して、通信スケジュールと演算スケジュールとに応じた評価値の算出方法について説明する。
【0143】
図25は、通信スケジュールおよび演算スケジュールから算出される評価値の一例を示す図である。
図25に示されるように、算出部13は、各組み合わせについて、各PLC200のプロセッサ202の負荷率を評価値として算出する。算出部13は、各制御周期において実行される通信処理および演算処理の合計時間を制御周期Tcで除算することにより、プロセッサ202の負荷率を算出する。
【0144】
さらに、算出部13は、各組み合わせについて、各PLC200のプロセッサ202の負荷に占める通信処理の割合を評価値として算出する。算出部13は、各制御周期において実行される通信処理の合計時間を制御周期Tcで除算することにより、プロセッサ202の負荷に占める通信処理の割合を算出する。
【0145】
図26は、通信スケジュールおよび演算スケジュールから算出される評価値の別の例を示す図である。
図25に示されるように、算出部13は、各組み合わせについて、通信ケーブルごとのネットワーク帯域を表す指標を評価値として算出する。算出部13は、接続情報123によって示される機器間の接続関係と通信ケーブルごとの通信量とに基づいて、ネットワーク帯域を表す指標を算出すればよい。
【0146】
<I.選択部14および設定部15の処理例>
たとえば、選択部14は、各組み合わせに対して算出部13によって算出された評価値をディスプレイ110に表示し、複数の組み合わせの中から1つの組み合わせを選択する指示の入力を促す。ユーザは、表示された評価値を参照して、所望の組み合わせを選択すればよい。設定部15は、選択された組み合わせについて決定された通信スケジュールおよび演算スケジュールをPLC200に設定すればよい。
【0147】
<J.通信スケジュールの別の決定例>
図27は、制御システムにおいて実施される通信の別の例を示す図である。
図27には、
図15に示される組み合わせ(2)において実施される通信が示される。図中の矢印は、機器間の通信を表している。組み合わせ(2)では、上述したように、モジュールMd向けの部分プログラム222dがPLC200aに割り当てられ、モジュールMe向けの部分プログラム222eがPLC200aに割り当てられる。ただし、PLC200bには、クラウドブローカー機能を有する拡張ユニット216bが取り付けられており、PLC200bに割り当てられる部分プログラム222eには、監視プログラム133bが含まれる。
【0148】
監視プログラム133bは、通信スレーブ300b~300iからの入力データを監視し、監視結果を拡張ユニット216bに提供する。拡張ユニット216は、提供された監視結果をクラウドシステム500に出力する。
【0149】
通信スレーブ300b~300dからの入力データは、モジュールMd向けの部分プログラム222dの演算に必要である。そのため、通信スレーブ300b~300dからの出力データは、PLC200aに送信される。しかしながら、監視プログラム133bがPLC200bに割り当てられたことにより、PLC200bも、通信スレーブ300b~300dからの入力データを受け取る必要がある。そのため、スケジューリング部12は、通信スレーブ300b~300dからの出力データの通信方式を、PLC200aを宛先とするユニキャストからPLC200a,200bを宛先として指定したマルチキャストに設定変更する。これにより、PLC200a,200bは、通信スレーブ300b~300dからの出力データを取得できる。
【0150】
図28は、組み合わせ(2)において部分プログラム222eが監視プログラムを含むときのPLC200a,200bのスケジュールを示す図である。
【0151】
図28に示されるスケジュールは、
図25に示されるスケジュールと比較して、PLC200bの通信スケジュールに通信処理46および提供処理47が含まれる点で相違する。通信処理46は、通信スレーブ300b~300dからマルチキャストされた入力データを読み出す処理である。このように、スケジューリング部12は、PLC200bの通信スケジュールにマルチキャストによって送信された入力データを読み出すための読出時間を組み込めばよい。
【0152】
さらに、スケジューリング部12は、読出時間に応じて、PLC200aにおける制御周期Tcの開始タイミングとPLC200bにおける制御周期Tcの開始タイミングとの時間差Tdを調整する調整手段として動作してもよい。すなわち、スケジューリング部12は、通信スレーブ300b~300dから入力データがマルチキャストされた後に通信処理46が実施されるように、時間差Tdを調整する。これにより、無駄が待機時間の発生が抑制される。
【0153】
提供処理47は、通信スレーブ300b~300iからの入力データを拡張ユニット216bに提供する処理である。
【0154】
<K.通信スレーブの処理スケジュールの設定>
設定部15は、選択部14によって選択された組み合わせに対して決定された、各PLC200の通信スケジュールに基づいて、通信スレーブ300の処理スケジュールを設定してもよい。
【0155】
図29は、通信スレーブの処理スケジュールの設定方法の一例を示す図である。
図29に示されるように、設定部15は、選択された組み合わせに対応する、PLC200a,200bの各々の通信スケジュールに基づいて、制御周期Tc内において、複数の通信スレーブ300にフレームが到達するタイミングのうち最も遅いタイミングt1を特定する。設定部15は、複数の通信スレーブ300が各種処理を開始するタイミングt2をタイミングt1以降に設定する。これにより、複数の通信スレーブ300の処理を同期させることができる。
【0156】
<L.TSNのスケジューリング>
上述したように、複数のPLC200のうちCNCが実装されたPLC200は、TSNのスケジューリングを行なう。CNCが実装されたPLC200は、複数のPLC200の各々に部分プログラム222が設定されると、オンラインで実測した値を用いて、各PLC200の制御周期の位相を調整してもよい。すなわち、CNCが実装されたPLC200は、PLC200aにおける制御周期Tcの開始タイミングとPLC200bにおける制御周期Tcの開始タイミングとの時間差Tdを調整する調整手段として動作してもよい。あるいは、制御システム1に備えられるネットワークコントローラが、時間差Tdを調整する調整手段として動作してもよい。
【0157】
たとえば、PLC200aとPLC200bとの間でIOデータの通信が必要である場合、CNCが実装されたPLC200は、
図24に示されるように、PLC200aとPLC200bとの間の通信スケジュールに応じて時間差Tdを調整する。
【0158】
あるいは、PLC200bがマルチキャスト方式で送信された入力データを読み出す必要がある場合(
図27参照)、CNCが実装されたPLC200は、
図28に示されるように、PLC200bによる当該入力データの読出時間に応じて時間差Tdを調整する。
【0159】
§3.付記
以上のように、上記の実施の形態による開示は以下のような開示を含む。
【0160】
<構成1>
制御対象を制御する制御システム(1)であって、
複数の通信スレーブ(300)と、
通信マスタとして動作する複数の制御装置(200)とを含み、
前記複数の制御装置(200)の各々はプロセッサ(202)を含み、
前記制御システム(1)は、さらに、
前記制御対象を制御するためのユーザプログラム(122)を複数の部分プログラム(222)に分割する分割手段(11,102)と、
前記複数の部分プログラム(222)を前記複数の制御装置(200)に割り当てる複数の組み合わせの各々について、前記複数の制御装置(200)および前記複数の通信スレーブ(300)の接続関係を示す情報と割り当てられた部分プログラム(222)とを用いて、前記複数の制御装置(200)の各々の通信スケジュールと、前記複数の制御装置(200)の各々の前記プロセッサ(202)による演算スケジュールとを決定するスケジューリング手段(12,102)と、
前記複数の組み合わせの各々について、前記通信スケジュールと前記演算スケジュールとに応じた評価値を算出する算出手段(13,102)と、を備える、制御システム(1)。
【0161】
<構成2>
前記評価値に基づいて、前記複数の組み合わせの中から1つの組み合わせを選択する選択手段(13,102)と、
前記複数の制御装置(200)の各々に、前記1つの組み合わせにおいて割り当てられている部分プログラム(222)を設定する設定手段(14,102)と、をさらに備える、構成1に記載の制御システム(1)。
【0162】
<構成3>
前記複数の制御装置(200)の各々は、予め定められた制御周期毎に、前記複数の通信スレーブ(300)のうちの少なくとも1つとの間の入出力データの通信と前記入出力データを用いた演算とを実行し、
前記複数の制御装置(200)は、第1制御装置(200a)と第2制御装置(200b)とを含み、
前記制御システム(1)は、さらに、
前記第1制御装置(200a)と前記第2制御装置(200b)との間の通信タイミングに応じて、前記第1制御装置(200a)における前記制御周期の開始タイミングと前記第2制御装置(200b)における前記制御周期の開始タイミングとの時間差を調整する調整手段(12,102,200)を備える、構成1または2に記載の制御システム(1)。
【0163】
<構成4>
前記ユーザプログラム(122)は、前記複数の通信スレーブからの入力データを監視する監視プログラム(133b)を含み、
前記複数の制御装置(200)は、前記監視プログラム(133b)が割り当てられない第1制御装置(200a)と、前記監視プログラム(133b)が割り当てられる第2制御装置(200b)とを含み、
前記スケジューリング手段(12,102)は、
前記複数の通信スレーブ(300)のうちのいずれかの通信スレーブから前記第1制御装置(200a)への通信方式を、前記第1制御装置(200a)と前記第2制御装置(200b)とを宛先として指定したマルチキャストに設定し、
前記第2制御装置(200b)の通信スケジュールに、前記マルチキャストによって送信された前記入力データを読み出すための読出時間を組み込む、構成1または2に記載の制御システム(1)。
【0164】
<構成5>
前記複数の制御装置(200)の各々は、予め定められた制御周期毎に、前記複数の通信スレーブ(300)のうちの少なくとも1つとの間の入出力データの通信と前記入出力データを用いた演算とを実行し、
前記制御システム(1)は、さらに、
前記読出時間に応じて、前記第1制御装置(200a)における前記制御周期の開始タイミングと前記第2制御装置(200b)における前記制御周期の開始タイミングとの時間差を調整する調整手段(12,102,200)を備える、構成4に記載の制御システム(1)。
【0165】
<構成6>
前記複数の制御装置(200)の各々は、予め定められた制御周期毎に、前記複数の通信スレーブ(300)のうちの少なくとも1つへの出力データの送信を実行し、
前記設定手段(15,102)は、さらに、
前記1つの組み合わせに対して決定された、前記複数の制御装置(200)の各々の前記通信スケジュールに基づいて、前記制御周期内において、前記複数の通信スレーブ(300)に前記出力データが到達するタイミングのうち最も遅い第1タイミングを特定し、
前記複数の通信スレーブ(300)が処理を開始する第2タイミングを前記第1タイミング以降に設定する、構成2に記載の制御システム(1)。
【0166】
<構成7>
制御対象を制御する制御システム(1)をサポートするサポート方法であって、
前記制御システム(1)は、
複数の通信スレーブ(300)と、
通信マスタとして動作する複数の制御装置(200)とを含み、
前記複数の制御装置(200)の各々はプロセッサ(202)を含み、
前記サポート方法は、
前記制御対象を制御するためのユーザプログラム(122)を複数の部分プログラム(222)に分割するステップと、
前記複数の部分プログラム(222)を前記複数の制御装置(200)に割り当てる複数の組み合わせの各々について、前記複数の制御装置(200)および前記複数の通信スレーブ(300)の接続関係を示す情報(123)と割り当てられた部分プログラム(222)とを用いて、前記複数の制御装置(200)の各々の通信スケジュールと、前記複数の制御装置(200)の各々の前記プロセッサ(202)による演算スケジュールとを決定するステップと、
前記複数の組み合わせの各々について、前記通信スケジュールと前記演算スケジュールとに応じた評価値を算出するステップと、を備える、サポート方法。
【0167】
<構成8>
構成7に記載のサポート方法をコンピュータに実行させる、プログラム(124)。
【0168】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。また、実施の形態および各変形例において説明された発明は、可能な限り、単独でも、組み合わせても、実施することが意図される。
【符号の説明】
【0169】
1,1X,1Y,1Z 制御システム、10 記憶部、11 分割部、12 スケジューリング部、13 算出部、14 選択部、15 設定部、41,41a~41c,42,42a,42b,44~46 通信処理、43,43d,43e 演算処理、47 提供処理、50,51 定義、52~54 演算ブロック、60,64 センサ、61,63,65,67 変数、62,66 アクチュエータ、70~72 割り付け情報、80 機器、90,91 機構、100 サポート装置、101 記憶媒体、102 CPU、103 ROM、104 RAM、106 デバイス、107,213 通信コントローラ、108 I/Oインターフェイス、109 キーボード、110 ディスプレイ、120,220 システムプログラム、121 UPG生成プログラム、122,122X,122Y,122Z ユーザプログラム、122Za,122Zb,122Zc プログラム、123 接続情報、124 分散設計プログラム、125 変数リスト、131 制御プログラム、132 安全プログラム、133,133b 監視プログラム、134 イベントプログラム、135 データリンク設定プロブラム、200,200X,200Xa,200Xb,200Xc,200Y,200a,200b PLC、202 プロセッサ、204 メインメモリ、206,210 ストレージ、212 フィールドネットワークコントローラ、214 ローカルバスコントローラ、216,216b 拡張ユニット、218 内部バス、222,222d,222e 部分プログラム、224 システム設定情報、300,300a~300i 通信スレーブ、400,400Z スイッチ、500 クラウドシステム。