JP4876138B2 - 制御用計算機および制御システム - Google Patents

制御用計算機および制御システム Download PDF

Info

Publication number
JP4876138B2
JP4876138B2 JP2009072344A JP2009072344A JP4876138B2 JP 4876138 B2 JP4876138 B2 JP 4876138B2 JP 2009072344 A JP2009072344 A JP 2009072344A JP 2009072344 A JP2009072344 A JP 2009072344A JP 4876138 B2 JP4876138 B2 JP 4876138B2
Authority
JP
Japan
Prior art keywords
program
control
unit
transmission
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009072344A
Other languages
English (en)
Other versions
JP2010224939A (ja
Inventor
龍也 丸山
山田  勉
徳久 柳原
伸治 米本
隆志 岩城
洋 藤井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Industrial Equipment Systems Co Ltd
Original Assignee
Hitachi Industrial Equipment Systems Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Industrial Equipment Systems Co Ltd filed Critical Hitachi Industrial Equipment Systems Co Ltd
Priority to JP2009072344A priority Critical patent/JP4876138B2/ja
Priority to DE102010002327.2A priority patent/DE102010002327B4/de
Publication of JP2010224939A publication Critical patent/JP2010224939A/ja
Application granted granted Critical
Publication of JP4876138B2 publication Critical patent/JP4876138B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/418Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS] or computer integrated manufacturing [CIM]
    • G05B19/4185Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS] or computer integrated manufacturing [CIM] characterised by the network communication
    • G05B19/4186Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS] or computer integrated manufacturing [CIM] characterised by the network communication by protocol, e.g. MAP, TOP
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/31From computer integrated manufacturing till monitoring
    • G05B2219/31145Ethernet
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/31From computer integrated manufacturing till monitoring
    • G05B2219/31218Scheduling communication on bus
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Manufacturing & Machinery (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Computer And Data Communications (AREA)
  • Selective Calling Equipment (AREA)

Description

1以上の制御対象装置を制御する制御用計算機が、制御対象装置へ制御指令値を送信するときの送信タイミング制御技術に関する。
制御システムとして、制御用計算機が、ネットワークを介して単一または複数の制御対象装置を制御する制御システムがある(非特許文献1参照)。この制御用計算機は、プログラムの実行処理により各制御対象装置を制御する。この制御用計算機には、必要に応じてオペレーティングシステム(以下、OSと称する)や、処理性能を向上させるための専用のハードウェアが用いられる。このような制御処理に関するプログラムは、一般的に、所定の周期で所定の処理を繰り返す。通常、この周期は、この制御用計算機の制御処理に課せられた時間的制約となる。
EtherCAT(登録商標)、[online]、[平成20年12月3日検索]、インターネット、<URL: http://www.anybus.jp/technologies/ethercat.shtml>
ここで、制御用計算機が制御対象装置それぞれに対し、制御指令値の送信周期等の異なる制御処理を実行したい場合もある。このような場合、制御用計算機の通信アプリケーションにおいて、前記した制御処理の時間的制約を満たすため、制御処理それぞれの周期を区別する条件分岐を設定せねばならない。このような条件分岐の設定は非常に複雑であり、通信アプリケーションの開発に手間がかかるという問題があった。また、この通信アプリケーションによる制御処理を変更したり、追加、拡張したりする場合にも同様に手間がかかるという問題があった。なお、制御処理ごとにアプリケーションを分割する方法もあるが、送信されるデータをまとめることは困難である。よって、制御処理ごとにアプリケーションを分割する場合は、そのアプリケーションそれぞれがデータを送信することになるが、このとき、データそれぞれのヘッダやフレーム間ギャップ等のためオーバーヘッドが大きくなる。従って、制御処理ごとにアプリケーションを分割する場合、このようなオーバーヘッドのため通信性能が低下するという問題があった。そこで、本発明は、前記した課題を解決し、複数の異なる周期の制御処理を実行する制御用計算機の開発の手間を低減しつつ、通信性能の低下を防ぐことを目的とする。
前記した課題を解決するため、本発明は、1つまたは複数の制御対象装置を制御するためのプログラムを1つまたは複数備える制御用計算機であって、プログラムに基づき、制御対象装置への制御指令値を通信スケジューラへ出力する処理部と、タイムスロットを用いたスケジュール情報を用いて、処理部から出力された制御指令値を、ネットワーク経由で制御対象装置それぞれへ送信する送信時刻を決定し、この決定した送信時刻に、制御指令値を含む送信データを制御対象装置それぞれへ送信する通信スケジューラとを備え、通信スケジューラは、プログラムのうち、周期的に制御指令値を送信するプログラムについて、そのプログラムによる制御対象の制御対象装置の識別情報と、制御対象装置への制御指令値を送信するときの周期と、プログラムそれぞれから出力される制御指令値のデータサイズの最大値とを示したプログラム管理情報の入力を受け付け、プログラム管理情報記憶部に記憶するプログラム情報管理部と、プログラムにより処理部から、制御対象装置への制御指令値の入力を受け付けたとき、この制御指令値を記憶部に記憶する送信データ管理部と、処理部が実行中の各プログラムについて、プログラム管理情報を参照して、プログラムそれぞれから出力される制御指令値のデータサイズの最大値の合計値を、当該通信スケジューラの通信処理スループットで除した値が、プログラムそれぞれの周期のうち、最も短い周期よりも小さいとき、各プログラムの時間的制約を満たすと判定するスケジュール変更可能性判定部と、スケジュール変更可能性判定部により、各プログラムの時間的制約を満たすと判定されたとき、プログラム管理情報に示される周期で、制御指令値を含む送信データを送信するよう送信時刻を決定し、この送信時刻をスケジュール情報に記録し、当該送信時刻になったとき、当該送信データの送信指示を出力する送信時刻スケジュール部と、送信時刻スケジュール部により出力された送信指示に基づき、制御指令値を記憶部から読み出し、この読み出した制御指令値を含む送信データを送信する送信部とを備える構成とした。
このように、制御用計算機の通信スケジューラが、この制御用計算機の備える周期処理プログラム(周期的に制御指令値を出力するためのプログラム)について、そのプログラムにより制御対象装置への制御指令値を送信するときの最長許容周期等をプログラム管理情報に記憶しておく。そして、通信スケジューラは、このプログラム管理情報に示される最長許容周期を守るように、この制御指令値を送信する送信スケジュールを決定する。そして、その送信スケジュールに基づき、当該プログラムの制御指令値を含む送信データを送信する。つまり、制御用計算機は、制御指令値を送信するプログラムの時間的制約(最長許容周期等)を満たすようこの制御指令値を含む送信データを送信する。よって、通信アプリケーションに、周期処理プログラムそれぞれの周期を区別する条件分岐の設定等を行う必要がなくなり、1または複数の異なる周期の制御処理を実行する制御用計算機の開発の手間を低減することができる。また、時間的制約の許容する範囲で、複数の周期処理プログラムの送信データをまとめるように送信スケジュールを決定し、送信することで通信性能の低下を防ぐことができる。
本発明によれば、複数の異なる周期の制御処理を実行する制御用計算機の開発の手間を低減することができる。また、新たな制御処理(制御処理プログラム)の追加や既存の制御処理の周期の変更等を容易にすることができる。また、制御用計算機は複数の周期処理プログラムの送信データをまとめて送信するので、通信性能の低下を防止できる。
本実施の形態の制御用計算機のハードウェア構成例を示した図である。 図1の制御用計算機を用いたシステム構成例を示した図である。 図1の通信スケジューラの構成を示した図である。 図3のプログラム管理部の構成を示した図である。 図1の制御用計算機上で動作するプログラムの構成例を示した図である。 図5の周期処理プログラムの処理手順を示した図である。 図5の周期処理プログラムの処理手順を示した図である。 図5の非周期処理プログラムの処理手順を示した図である。 図3の通信スケジューラの処理手順を示した図である。 図3のスケジュール変更可能性判定部の処理手順例を説明した図である。 図3のスケジュール変更可能性判定部の処理手順例を説明した図である。 図3のスケジュール変更可能性判定部の処理手順例を説明した図である。 図3のスケジュール変更可能性判定部の処理手順例を説明した図である。 図3のスケジュール変更可能性判定部の処理手順例を説明した図である。 図3のスケジュール変更可能性判定部の処理手順例を説明した図である。 図3のスケジュール変更可能性判定部の処理手順例を説明した図である 図3のスケジュール変更可能性判定部の処理手順例を説明した図である 図3のスケジュール変更可能性判定部の処理手順例を説明した図である 図3のスケジュール変更可能性判定部の処理手順例を説明した図である 図3のスケジュール変更可能性判定部の処理手順例を説明した図である 図3のスケジュール変更可能性判定部の処理手順例を説明した図である 本実施の形態におけるタイムスロットの割り当てを例示した図である。 本実施の形態の非周期処理プログラムに対するスケジュール変更可能性判定部の判定手順を示したフローチャートである。 本実施の形態の送信時刻スケジュール部が管理するタイムスロットの送信時刻スケジュール表(スケジュール情報)を例示した図である。 本実施の形態の制御用計算機のハードウェア構成例を示した図である。 図25の制御用計算機上で動作するプログラムの構成例を示した図である。 本実施の形態の制御用計算機のハードウェア構成例を示した図である。 図27の通信スケジューラの構成を示した図である。 図1、図25、図27の制御用計算機を用いたシステム構成例を示した図である。
以下、本発明を実施するための形態(以下、実施の形態という)を説明する。図1は、本実施の形態の制御用計算機のハードウェア構成例である。この制御用計算機は、制御対象装置を制御するためのプログラムを1以上備え、この制御用計算機のCPU(Central Processing Unit、処理部)101は、不揮発性記憶媒体109からメモリ108に、このプログラムを転送して実行する。図1において、メモリ108にプログラムが転送された状態を示している。このプログラムとしては、割込みハンドラを含むOS(Operating System)や、このOS上で動作し、制御対象装置121を制御するためのアプリケーションプログラムがある。通信スケジューラ102は、CPU101から通信要求を受け取り、LAN(Local Area Network)コントローラ103を用いて制御用ネットワーク122に対して通信する。通信スケジューラ102の実装例としては、FPGA(Field Programmable Gate Array)、CPLD(Complex Programmable Logic Device)、ASIC(Application Specific Integrated Circuit)、ゲートアレイ等のIC(Integrated Circuit)がある。
LANコントローラ103は、制御用ネットワーク122(後記)との通信機能を実装した送受信機ICである。LANコントローラ103の提供する通信規格としてEthernet(登録商標)のLANコントローラや、MAC(Media Access Controller)チップとPHYes(物理層)チップの組み合わせ、または特定のネットワーク仕様の物理層あるいは物理層とデータリンク層を処理するIC等である。
メモリ108は、CPU101が動作するための一時的な記憶領域であり、不揮発性記憶媒体109から転送したOS、アプリケーションプログラム等が格納される。
不揮発性記憶媒体109は、HDD(Hard Disk Drive)や、フラッシュメモリ等の記憶媒体で、CPU101が実行するプログラムの保存、プログラムの実行結果の保存に利用される。
バス110は、CPU101、メモリ108、不揮発性記憶媒体109、通信スケジューラ102、LANコントローラ103をそれぞれ接続する。バス110としては、PCI(Peripheral Component Interconnect)バス、ISA(Industrial Standard Architecture)バス、PCI Expressバス、システムバス、メモリバス等である。
図2は、制御用計算機120を用いたシステム構成例である。制御用計算機120は、制御対象装置121と、制御用ネットワーク122を介して接続し、この制御対象装置121を制御するハードウェア装置である。制御対象装置121は、例えば、サーボアンプやサーボモータである。なお、図2ではネットワークはリングトポロジとなっているが、論理的なリングトポロジやスタートポロジ等のトポロジであってもよい。
図3に通信スケジューラ102の機能構成図を示す。通信スケジューラ102は、プログラム管理部130と、スケジュール変更可能性判定部131と、データグラム連結部132と、データグラム分解部133と、計時部134と、送信時刻スケジュール部135と、プログラム起床部136と、送信部137と、受信部138とを含んで構成される。この通信スケジューラ102による通信スケジューリングの具体例は後記する。
プログラム管理部130は、個々の制御処理を実行するプログラムの情報(プログラム管理情報)を作成し、この通信スケジューラ102の備える記憶部(図示省略)に記憶する。プログラム管理部130は、個々のプログラム(図5参照)ごとに必要なため、複数存在しうる。プログラム管理部130の個数は、その上限値はハードウェア等の計算機資源によって制約され、制御システムを構築するに充分なプログラム、制御対象の数だけ必要である。
スケジュール変更可能性判定部131は、新規のプログラムの追加、既存プログラムの周期変更、プログラムの登録抹消が可能か否かを、各プログラムの有する時間的制約と通信量等の情報をもとに判定する。例えば、新規のプログラム、変更された既存プログラムを含むすべてのプログラムについて、プログラム管理情報を参照して、プログラムそれぞれから出力される制御指令値のデータサイズの合計値を、通信スケジューラ102の通信処理スループットで除した値を計算する。そして、この値が、プログラムそれぞれの最長許容周期のうち、最も短い最長許容周期よりも小さいとき、このすべてのプログラムの時間的制約を満たすと判定する。一方、この値がプログラムそれぞれの最長許容周期のうち、最も短い最長許容周期よりも大きいとき、このすべてのプログラムの時間的制約を満たさないと判定する。つまり、スケジュール変更可能性判定部131は、この新規なプログラムの追加または既存プログラムの変更は不可能であると判定する。
データグラム連結部132は、送信時刻スケジュール部135が計画した送信予定時刻に送信するデータを集めて連結し、送信部137へと伝送し、状態フラグ管理部145(後記)の状態フラグを更新する。また、このデータグラム連結部132は、必要があれば、制御用ネットワーク122(図2参照)に固有なヘッダ、トレイラを付与する。
なお、このデータグラム連結部132が、各プログラムのデータを連結する順番は、各送信データ固有のヘッダに各送信データを区別する情報が付与されていれば、特に制約はない。例えば、データグラム連結部132は、プログラム管理部130において管理上つけられた順番で各プログラムのデータを連結すればよい。ただし、送信データの位置が制御用ネットワーク122上で伝送されるときに固有の意味を持つ場合は、その制御用ネットワーク122の仕様にしたがった位置に送信データを配置する。例えば、送信データの位置する順番と制御対象装置121が受信する順番とが同じであるという制約がある場合は、受信する制御対象装置121の順番に応じて送信データを並べる。
データグラム分解部133は、受信部138から伝送されたデータを各プログラム用のデータに分割し、各プログラムのプログラム管理部130のデータグラム抽出部144(後記)に伝送する。また、データグラム分解部133は、プログラム起床部136に、データを受信したプログラム管理部130の識別子を伝送する。つまり、この制御用計算機120は、プログラムに基づき、制御指令値を示すデータを制御対象装置121へ送信した後、受信部138により、この制御対象装置121からこの制御指令値に対する応答を含むデータを受信する。ここで、受信したデータには複数のプログラムの制御指令値に対する応答が含まれている可能性がある。よって、データグラム分解部133は、受信したデータをそのそれぞれのプログラム用に分割して、当該応答に関する処理を行うプログラムのプログラム管理部130へ伝送(出力)する。また、データグラム分解部133は、プログラム起床部136に、データを受信したプログラム管理部130の識別子を伝送することで、プログラム起床部136に、この受信したデータを処理すべきプログラムはどれかを通知することができる。
計時部134は、計時手段を有し、通信スケジューラ102内の各部に時間情報を提供する。この時間情報は、制御アプリケーション実行後の経過時間の計測や各種イベントの発生時刻の記録に用いられる。なお、計時部134は、通信スケジューラ102の外部に置かれたタイマ等のデバイスによって代替されてもよい。
送信時刻スケジュール部135は、各プログラムの周期等の時間的制約、設定情報を考慮して、その送信予定時刻、連結するデータを抽出するプログラムを各プログラム管理部130からデータを抽出して連結する。そして、このデータを送信するタイミングを決定する。また、送信時刻スケジュール部135は、各プログラム管理部130のプログラム情報管理部142によりプログラム管理情報から周期を取得し、その送信予定時刻に送信するプログラムをデータグラム連結部132に通知する。
プログラム起床部136は、データグラム分解部133から通知されたプログラム管理部130の識別子によって、受信したデータがどのプログラムに関するデータかを識別し、この識別したプログラムを起床する。起床方法は、バス110(図1参照)を介した割込みを用いることが例示される。また、起床は任意のタイミングで実行可能である。
送信部137は、データグラム連結部132から伝達されたデータをLANコントローラ103へと送信する。
受信部138は、LANコントローラ103からデータを受信し、データグラム分解部133に伝送する。
図4にプログラム管理部130の構成を示す。このプログラム管理部130は、CPU101(図1参照)から出力されてきた当該プログラムの送信データを送信データ管理部140へ入力する。また、制御対象装置121(図2参照)から受信した受信データを、受信部138(図3参照)、データグラム分解部133、データグラム抽出部144および受信データ管理部141経由で、CPU101へ出力する。このプログラム管理部130は、プログラム情報管理部142と、データグラム生成部143と、データグラム抽出部144と、状態フラグ管理部145とを備える。なお、状態フラグ管理部145は、状態フラグの更新を行う。この状態フラグは、この通信スケジューラ102の備える記憶部の所定領域に記憶される。
送信データ管理部140は、プログラムに基づきCPU101(図1参照)から出力される制御指令値を含む送信データを受信すると、この送信データをいったん通信スケジューラ102の備える記憶部に記憶する。この送信用データには制御指令値等が含まれる。
受信データ管理部141は、制御対象装置121から受信した受信データをCPU101へ出力する。この受信データは、例えば、送信データに示される制御指令値に対するこの制御対象装置121の応答結果等を含むデータである。
プログラム情報管理部142は、制御用計算機120(図1参照)の備えるプログラム、そのプログラムによる制御処理、制御対象装置121等を示したプログラム管理情報を管理している。このプログラム管理情報として、プログラムの識別子、制御対象装置121の識別子、このプログラムにより制御指令値を送るときの周期、目標送信時刻、最長許容周期、データ更新が周期内で間に合わなかった場合の対応処理、周期変更時の対応処理、周期プログラムか非周期処理プログラムか、プログラム間での優先度、送信フレーム中でのプログラムのデータ位置等を示した情報である。なお、周期プログラムは、制御対象装置121へ所定周期でデータを送るためのプログラムであり、非周期処理プログラムは、周期的にデータを送信する必要のないプログラムである。
データグラム生成部143は、CPU101(図1参照)から送信要求があった場合に、送信データを送信に適した形式に変換、加工する。例えば、そのような処理として、制御用ネットワーク122の通信プロトコルに固有のヘッダ、トレイラの生成等、制御用ネットワーク122(図2参照)の仕様に適した形式に変換する。
また、データグラム抽出部144は、データグラム分解部133からデータの受信通知があった場合に、受信内容をプログラムへの通知に適した形式に変換する。そのような処理として、データのヘッダ、トレイラの除去が例示される。
状態フラグ管理部145は、送信データおよび受信データの状態を示す状態フラグの更新を行う。例えば、プログラムに基づきCPU101(図1参照)が送信データ管理部140の送信データを更新済みだが、通信スケジューラ102(図3参照)の外部へは未送信である状態、通信スケジューラ102は送信データ管理部140の送信データを送信済みで、CPU101がまだ更新していない状態、通信スケジューラ102が受信データ管理部141の受信データを更新してCPU101は未取得である状態、CPU101は受信データ管理部141の受信データを取得済みで、通信スケジューラ102はまだ外部からパケットを受信していない状態が例示される。プログラム、あるいは送信時刻スケジュール部135は、状態フラグ管理部145に対して状態フラグの状態を問い合わせる。これにより、例えば、送信時刻スケジュール部135は、所定の周期内でプログラムが送信データを更新できなかった場合を検知でき、また、プログラムが、受信データが更新されているかどうかを確認することができ、受信データを取得するか、取得しないかを判定することができる。
次に、制御用計算機120上で動作するプログラムの構成を図5に示す。この制御用計算機120上で動作するプログラムは、OS150、デバイスドライバ151、周期処理プログラム152、非周期処理プログラム153、API(Application Program Interface)154、プロトコルスタック155、共通設定プログラム156とを備える。図5において、上位に位置するプログラムが下位のプログラムの提供する機能を利用する。なお、この周期処理プログラム155はそれぞれ、異なる処理を行うためのプログラムであるものとする。なお、図5においては説明のため、異なる処理を行うプログラムをそれぞれ別個の周期処理プログラム152として描いているが、1つのプログラムにより複数の異なる周期処理を実行するようにしてもよい。また、この制御用計算機120は非周期処理プログラム153は備えないようにしてもよい。
OS150は、プログラム管理やハードウェアへのアクセス等の基本機能を提供する。OSは、必ずしも必要ではないが、汎用的なアプリケーションや既存のソフトウェア資産の利用、タスク管理等の基本機能を提供することから、利用されるのが望ましい。また、このOS150は、時間的制約にしたがってタスクスケジューリングを実行可能なリアルタイムOSが望ましい。
デバイスドライバ151は、OS150の提供するハードウェアへのアクセス手段を用いて、バス110を介して通信スケジューラ102にアクセスするためのドライバである。デバイスドライバ151は、OS150の一部であっても構わない。
周期処理プログラム152は、制御用計算機120上で動作するアプリケーションプログラムで、制御対象装置121を制御、監視、診断するために送信時刻の周期等の時間的制約をもって周期的に実行される。この周期処理プログラム152は、API154、デバイスドライバ151を通じて、通信スケジューラ102へアクセスし、制御対象装置121を制御、監視、診断用のデータを送受信するために用いられる。なお、この制御計算機120は、この周期処理プログラム152を1以上備えるものとする。
非周期処理プログラム153は、時間的制約を有さない通信のためのプログラムである。この制御システムを構成する制御用ネットワーク122(図2参照)には、インターネットで利用されるTCP/IP(Transmission Control Protocol/Internet Protocol)通信を許容するものもある。そのような制御用ネットワーク122では、TCP/IP通信で送信するデータを他のデータと連結して送信する。
API154は、デバイスドライバ151にアクセスするためのソフトウェアインターフェースであり、ハードウェアの違いを吸収することで、プログラムに対してハードウェアへの共通のアクセス手段を提供するためのプログラムである。API154は、OS150の一部であっても構わない。API154により提供されるアクセス手段には、ハードウェアに対する書き込み、読み込み、送信、受信、設定等がある。API154の具体例として、ライブラリ、ミドルウェア等がある。
プロトコルスタック155は、非周期処理プログラム153による送信要求、非周期処理プログラム153への受信内容の転送や、通信データの分割、再構成を実行するためのプログラムである。一般的に制御処理における通信量は少なく、周期処理プログラム152における通信データ量は1指令につき、1回の送受信で伝送可能である。しかし、制御以外のアプリケーションでの通信量は、単一のパケットでは収まらず、分割と再構成が必要な場合がある。また、信頼性を提供するための再送処理や、ネットワーク上の通信量を調節するための輻輳制御がなされる。プロトコルスタック155は、これらの処理を実施するためのプログラムである。
共通設定プログラム156は、通信スケジューラ102の全般的な機能を設定するためのプログラムである。
次に、図5の周期処理プログラム152の処理手順を図6に示す。ここでは、制御用計算機120の既存の周期処理プログラム152に加えて、新規に周期処理プログラム152を追加しようとした場合に、この制御用計算機120が、自身の制御用計算機120において、この新規な周期処理プログラム120を実行可能か否か判定する場合について説明する。はじめに、周期処理プログラム152に基づきCPU101(図1参照)は、新規にこの周期処理プログラム152を実行可能か否かを通信スケジューラ102のスケジュール変更可能性判定部131(図3参照)に問い合わせる(S001)。ここでのスケジュール変更可能性判定部131による新規に周期処理プログラム152を実行可能か否かの判定処理の詳細は後記する。
スケジュール変更可能性判定部131が、この周期処理プログラム152を実行可能と判定すれば(S001のYes)、周期処理プログラム152は、この周期処理プログラム152の周期処理(および周期通信)に必要な情報をプログラム情報管理部142(図4参照)のプログラム管理情報に設定する(S002)。この周期処理および周期通信に必要な情報は、プログラムの識別子、この周期処理プログラム152が制御指示値を送信する制御対象装置121の識別子、制御指示値を送信する周期、目標送信時刻、最長許容周期、データ更新が周期内で間に合わなかった場合の対応処理、周期変更時の対応処理、周期処理プログラムか非周期処理プログラムか否か、この制御用計算機120の備えるプログラム間での優先度、送信データ中でのプログラムのデータ位置等である。また、周期処理プログラム152により明示的に設定されなかった項目に対しては、プログラム情報管理部142が所定の設定値を設定してもよい。なお、スケジュール変更可能性判定部131が実行不可能と判定すれば(S001のNo)、周期処理を終了する。
S002の後、周期処理プログラム152に基づきCPU101は、送信する制御指令値を演算し、送信データを決定する(S003)。
次に、周期処理プログラム152に基づきCPU101は、通信スケジューラ102(図3参照)に送信データを送信して待機状態に入る(S004)。その後、通信スケジューラ102の受信部138により、制御対象装置121からのデータを受信すると待機状態を解除する(S005)。
S005の後、CPU101は、周期処理プログラム152を終了するか否かを判断する(S006)。処理を終了しない場合は(S006のNo)、S003からの手順を繰り返し、そうでなければ(S006のYes)、終了する。なお、S006の終了判定は、周期的に実行される処理内であれば、いつ判断してもよく、S003からS005のいずれかの手順の間に実行されればよい。なお、終了と判断する条件は、開発者の判断や制御システムの仕様による。例えば、CPU101は、送信データを所定回数送信した場合や、受信したデータに所定の情報が含まれている場合等に、終了と判断する。
また、図6に示す手順の他に、データの受信処理を周期的な処理と独立して実行するようにしてもよい。この場合、図7に示すように、S002の次に、周期処理プログラム152に基づきCPU101は、受信処理の内容を登録する(S010)。この受信処理の内容は、受信データを受信したときに、この受信データを周期処理に適した形式に変換、加工することや、周期処理から受信内容を取得できるように共通領域に保存することや、受信情報の統計値をとること等である。また、周期処理プログラム152に基づきCPU101は、受信情報を取得する(S011)。つまり、CPU101は、制御指令値を演算する前に受信データをメモリ108等から取得する。また、CPU101は、この受信データがいつ受信したデータであるかを識別するために受信時刻、更新あるいは取得するたびに更新される識別子等を受信データに付記する。また、ここで取得する受信データは、1つ分の受信データである必要はなく、複数分の受信データでも構わない。周期処理においては、複数の時間における受信データを利用することで、より高機能な制御を実行することができる。
また、図7のS003の後、周期処理プログラム152に基づきCPU101は、送信データを送信する(S012)。次に、周期処理プログラム152は待機状態に入る(S013)。待機方法の具体例としては、POSIX(Portable Operating System Interface)のsleepコールや、プロセスを待機状態にするシステムコールがある。これらのシステムコールはOS150によって提供される。
その後、周期処理プログラム152に基づきCPU101は、通信スケジューラ102のプログラム起床部136によって待機状態を解除される(S014)。このS014を実行後、CPU101は、周期処理プログラム152終了するか否かを判断する(S006)。処理を終了しない場合は(S006のNo)、S011からの手順を繰り返し、そうでなければ(S006のYes)、終了する。なお、S006の終了判定は、周期的に実行される処理内であれば、いつ判断してもよく、S011からS014のいずれかの手順の間に実行されればよい。
図8に、非周期処理プログラム153(図5参照)の処理手順を示す。はじめに、非周期処理プログラム153に基づきCPU101(図1参照)は、新規に非周期処理プログラム153を実行できるか否かを通信スケジューラ102のスケジュール変更可能性判定部131に問い合わせる(S020)。このとき、非周期処理プログラム153に最低保証帯域や最長許容遅延等のなんらかの制約があれば、CPU101は、それをスケジュール変更可能性判定部131に通知する。スケジュール変更可能性判定部131が、非周期処理プログラムを実行可能と判定すれば(S020のYes)、送信または受信する(S021)。一方、スケジュール変更可能性判定部131が、非周期処理プログラム153を実行不可能と判断すれば(S020のNo)、そのまま処理を終了する。
次に、図6、図7、図8に示す手順における通信スケジューラ102の処理手順について述べる。図6、図7のS001、図8のS020にて、CPU101(図1参照)が、新規な周期処理プログラム152または新規な非周期処理プログラム153を実行可能か否かを通信スケジューラ102のスケジュール変更可能性判定部131に問い合わせる。このときの周期処理プログラム152に対するスケジュール変更可能性判定部131の判定手順を、適宜図10〜図22を参照しながら、図9を用いて説明する。なお、図10〜図22に示すプログラムA〜Kはそれぞれ、周期処理プログラム152を示す。また、データサイズは、その周期処理プログラム152により送信する制御指令値のデータの最大データサイズを示す。各図のデータサイズの単位は「B(バイト)」である。
はじめに、周期処理プログラム152に基づきCPU101は、この周期処理プログラム152の制御指令値の周期と、この制御指令値のデータサイズ(最大データサイズ)をスケジュール変更可能性判定部131(図3参照)に申請する(S040)。
次に、スケジュール変更可能性判定部131は、プログラム管理部130等の新規に割り当て可能な計算機資源があるか否かを判定する(S041)。もし計算機資源がなければ(S041のNo)、スケジュール変更可能性判定部131は、この周期処理プログラム152は実行不可能と判定する(S057)。なお、ここでいう計算機資源とは、例えば、メモリ108の記憶容量等である。一方、計算機資源があれば(S041のYes)、次にスケジュール変更可能性判定部131は、現在実行しているすべてのプログラムのデータサイズの合計値Sum1を算出する(S042)。例えば、各周期処理プログラム152の周期およびデータサイズが、図10に示すような値であった場合、スケジュール変更可能性判定部131は、図11に示すように、全プログラムのデータサイズの合計305B(バイト)を算出する。
S042の後、スケジュール変更可能性判定部131は最も周期が短いプログラムの周期μ1を取得する。つまり、最短周期μ1を取得する(S043)。例えば、スケジュール変更可能性判定部131は、図10に示す周期のうち、最も短い周期(実行周期)20μsをμ1として取得する(図11参照)。
そして、スケジュール変更可能性判定部131は、S042で算出したSum1を通信スケジューラ102の通信処理スループットで除したT1を算出する(S044)。このようなT1を算出することで、すべての周期処理プログラム152の周期が重なった場合の通信スケジューラ102の通信処理時間を知ることができる。例えば、通信スケジューラの通信処理スループットが100Mbpsであった場合、スケジュール変更可能性判定部131は、T1=305B/100Mbps=24.4μsを算出する。
図9の説明に戻る。次に、スケジュール変更可能性判定部131は、S044で算出したT1と安全係数との和が、μ1より小さいか否かを判定する(S045)。ここで、S044で算出したT1と安全係数との和がμ1よりも小さければ(S045のYes)、この周期処理プログラム152は実行可能と判定する(S056)。一方、S044で算出したT1と安全係数との和が、μ1以上であれば(S045のNo)、周期処理プログラム152は実行可能の余地があるので、S046へ進む。例えば、図11に示すように、T1=24.4、安全係数=0、μ1=20μの場合、T1と安全係数との和が、μ1以上なので、S046へ進む。
図9の説明に戻る。そして、スケジュール変更可能性判定部131は、現在実行しているすべての周期処理プログラム152を素数倍の周期でグルーピングする(S046)。つまり、スケジュール変更可能性判定部131は、タイムスロットの素数倍の周期の周期処理プログラム152ごとに同じグループとし、すべての周期処理プログラム152をグルーピングする。
例えば、スケジュール変更可能性判定部131は、図12に示すように、20μs周期のプログラムAおよび40μs周期のプログラムCを、20μs周期グループとする。また、30μs周期のプログラムBおよび90μs周期のプログラムIを30μs周期グループとする。70μs周期のプログラムF,G,H,Eはそのまま70μs周期グループとする。なお、60μsは、20μsおよび30μsの公倍数であり、140μsは、20μsおよび70μsの公倍数である。よって、スケジュール変更可能性判定部131は、60μs周期のプログラムDおよび140μs周期のプログラムK,Jを、グルーピングせず、保留としておく。つまり、その周期でしか送信できないプログラムについては、それぞれの周期のデータとしてグルーピングし、いずれの周期のグループに属するか複数の選択可能性があるプログラムについては、所属するグループを決めずに保留としておく。
図9の説明に戻る。スケジュール変更可能性判定部131は、このようにグルーピングした後、各グループでプログラム(周期処理プログラム152)の実行タイミングを調整する(S047)。ここでのプログラムの実行タイミングの調整は、スケジュール変更可能性判定部131が、各タイムスロットあたりに送信可能なデータサイズ(以下、Tsとする)を超えず、かつ、データサイズがなるべく大きくなるように、グループ内で各周期処理プログラム152の周期をずらすことにより行われる。具体的には、スケジュール変更可能性判定部131は、データサイズの大きな周期処理プログラム152から同じタイムスロットにまとめていき、Tsを超えたところで、その周期処理プログラム152は別のタイムスロットにずらす。なお、周期処理プログラム152の周期が、異なるタイムスロットの素数倍の周期の公倍数となる場合は、スケジュール変更可能性判定部131は、なるべくデータサイズのまとまりが大きくなるグループに組み入れる(ただし、Tsを超える場合は別のグループに組み入れる)。また、データサイズがTsよりも大きい周期処理プログラム152は、連続するタイムスロットを利用するように割り当てる。
例えば、タイムスロットあたりの送信可能なデータサイズTs=100Bとすると、図13に示すように、20μs周期グループのプログラムA,Cのデータサイズは合計40Bであるので、60Bの余裕がある。そこで、スケジュール変更可能性判定部131は、保留していた140μs周期のプログラムK,Jをこの20μs周期グループに入れるとちょうど100Bになるので、これらのデータを同じタイムスロットにまとめる。なお、スケジュール変更可能性判定部131は、60μsのプログラムDについては、20μs周期グループの別のタイムスロットにずらす。ここで、20μs周期グループのタイムスロットに組み込むプログラムとしてプログラムK,Jを選択するのは、プログラムDよりもプログラムK,Jのデータサイズが大きいからである。次に、スケジュール変更可能性判定部131は、30μs周期のグループにおいて、プログラムB,Iを同じタイムスロットにまとめる。さらに、70μs周期のプログラムF,G,Eをまとめる。なお、スケジュール変更可能性判定部131は、プログラムHまでまとめるとTs(100B)を超えるので、プログラムHについては、70μ周期の別のタイムスロットにずらす。なお、図14の70μs周期グループのプログラムFのように、単独でそのデータサイズ(120B)がTs(例えば、100B)を超えているプログラムについては、スケジュール変更可能性判定部131は、図15に示すように連続する複数のかたまりとしてタイムスロットを割り当てる。つまり、プログラムFについて、連続する2つのタイムスロットにまたがって割り当てる。
ここで、スケジュール変更可能性判定部131は、各グループにおける周期を1つのタイムスロットの周期で除した値をμgとする。例えば、1つのタイムスロットの周期が10μsである場合、20μs周期グループのμgの値は「2」である。次に、スケジュール変更可能性判定部131は、新規に追加するプログラムのデータを含むグループにおいて、用いるタイムスロットの種類の数がμg以下になるように各周期処理プログラム152のデータを送信するタイムスロットを調整した結果、データサイズがTsを超えるタイムスロットが存在するか否かを判定する(S048)。
ここで、スケジュール変更可能性判定部131は、データサイズがTsを超えるタイムスロットが存在する場合は(S048のYes)、この周期処理プログラム152を実行不可能と判定する(S057)。一方、データサイズがTsを超えるタイムスロットが存在しない場合は(S048のNo)、プログラムを実行可能の余地があるので、S049へ進む。
例えば、図16に示すように、20μs周期グループはμg=2であり、30μ周期グループはμg=3であり、70μs周期グループはμg=7である。ここで、新規に追加するプログラムを含む20μs周期グループにおいて、μg=2の組み合わせにしてもTsを超える組み合わせはない(S048のNo)。よって、S049へ進む。
図9の説明に戻る。スケジュール変更可能性判定部131は、残りのグループ中のそれぞれで、最もデータサイズが大きくなる場合の周期処理プログラム152の組み合わせを選択する。そして、スケジュール変更可能性判定部131は、その組み合わせと新規に追加するプログラムを含むグループ内でデータサイズが大きくなる場合のプログラムのデータの組み合わせとの、データサイズの合計値Sum2を算出する(S049)。
例えば、図16に示すように、20μs周期グループ以外のグループ、つまり、30μs周期グループで、最もデータサイズが大きい組み合わせは、プログラムB,Iの組み合わせであり、データサイズは45Bである。また、70μs周期グループで、最もデータサイズが大きい組み合わせは、プログラムE,F,Gの組み合わせであり、データサイズは100Bである。よって、スケジュール変更可能性判定部131は、Sum2=100B+45B+100B=245Bと計算する。
図9の説明に戻る。スケジュール変更可能性判定部131は、Sum2が、Tsを超えるか否かを判定する(S050)。ここで、Sum2が、Tsを超えなければ(S050のNo)、スケジュール変更可能性判定部131は、このタイムスロットに基づくプログラムの実行のタイミングの調整を送信時刻スケジュール部135(図3参照)へ通知する(S55)。そして、スケジュール変更可能性判定部131は、当該周期処理プログラム152の実行処理を可能と判定する(S056)。そして、スケジュール変更可能性判定部131は、この周期処理プログラム152に新規にプログラム管理部130を割り当てる(S058)。そして、処理を終了する。
一方、Sum2が、Tsを超える場合は(S050のYes)、スケジュール変更可能性判定部131は、各周期グループの各タイムスロットを構成するプログラムの組み合わせを変えることで、そのタイムスロットの最長データの合計Sum2を減少できるか否かを判定する(S051)。
例えば、図17に示すように、S049で計算したSum2=245Bであり、この値はTsを超えているので、S051へ進み、スケジュール変更可能性判定部131は、各周期グループの各タイムスロットを構成するプログラムの組み合わせを変えることで、そのタイムスロットの最長データの合計Sum2を減少できるか否かを判定する(S051)。
図9の説明に戻る。S051で各周期グループの各タイムスロットを構成するプログラムの組み合わせを変えることで、そのタイムスロットの最長データの合計Sum2を減少できると判定したとき(S051のYes)、スケジュール変更可能性判定部131は、各タイムスロットのプログラム構成を変更する(S052)。具体的には、スケジュール変更可能性判定部131は、そのグループにおいて、データサイズが最大となっているタイムスロットを構成する複数のプログラムのうち、データサイズの小さいプログラムを別のタイムスロットにずらし、そのグループにおける最大のデータサイズを小さくする。そして、再びS049の手順をとる。
例えば、スケジュール変更可能性判定部131は、図17に示すように、最大のデータサイズのタイムスロットが複数のプログラムで構成されている周期グループがある。よって、スケジュール変更可能性判定部131は、その最大のデータサイズのタイムスロットのデータ構成を変更し、最大サイズを減少させる。例えば、スケジュール変更可能性判定部131は、図17において20μs周期グループの最大のデータサイズのスロットはプログラムA,C,K,Jからなるタイムスロットである。よって、例えば、ジュール変更可能性判定部131は、図18に示すように、プログラムJを、プログラムCのタイムスロットに移動させて、プログラムA,D,Kからなるタイムスロットとする。同様に、図17において30μs周期グループの最大のデータサイズのスロットはプログラムB,Iからなるタイムスロットである。よって、スケジュール変更可能性判定部131は、図18に示すように、プログラムB,Iからなるタイムスロットについて、プログラムBを別のタイムスロットへ移動させる。同様に、図17において70μs周期グループの最大のデータサイズのスロットはプログラムF,G,Eからなるタイムスロットである。よって、スケジュール変更可能性判定部131は、図18に示すように、プログラムF,G,Eからなるタイムスロットについても、プログラムG,Eを別のタイムスロットへ移動させて、プログラムFからなるタイムスロットとする。このようにして、スケジュール変更可能性判定部131は、各周期グループのタイムスロットのデータの最大サイズを減少させる。そして、再びS049以降の処理を繰り返す。例えば、図19に示すように、Sum2=60B+30B+40B=130Bを計算する。ここで、Sum2>Ts(100B)であるため(S050のYes)、S051へ進む。
図9の説明に戻る。S051にて、各周期グループの各タイムスロットを構成するプログラムの組み合わせを変えたとしても、そのタイムスロットの最大サイズを減少させることはできないと判定したとき(S051のNo)、スケジュール変更可能性判定部131は、周期グループのプログラムのうち、別の周期グループに移動可能なプログラムがあるか否かを判断する。つまり、スケジュール変更可能性判定部131は、各プログラムについて異なるグルーピングが可能か否かを判定する(S053)。ここで、異なるグルーピングが可能であれば、グループを変更し(S054)、S047からの手順を繰り返す。
例えば、図18に示すように、20μs周期グループにおいて、サイズが最大のタイムスロットはプログラムA,D,Kのタイムスロットと、プログラムC,Jのタイムスロットである。ここで、この20μs周期グループはμg(各グループにおける周期を1つのタイムスロットの周期で除した値)は「2」である。よって、スケジュール変更可能性判定部131は、既に2つのタイムスロットを作っているので、このプログラムA,D,Kのいずれかのプログラムを別のタイムスロットに移すことによって、このタイムスロットの最大サイズを減少させることはできない。したがって、スケジュール変更可能性判定部131は、各周期グループの各タイムスロットを構成するプログラムの組み合わせを変えたとしても、そのタイムスロットの最大サイズを減少させることはできないと判定し(S051のNo)、各プログラムについて異なるグルーピングが可能か否かを判断する(S053)。ここで、図19に示すように、20μs周期グループには、140μs周期のプログラムK,Jも含まれている。この140μs周期のプログラムK,Jは、他の周期(70μs周期)のグループに移動可能なので、図20に示すように70μs周期グループに移動させる。つまり、スケジュール変更可能性判定部131は、各周期グループの最大サイズのタイムスロットに、公倍数の周期のプログラムのプログラムがあるとき、このプログラムを、このプログラムの周期の公約数の周期のグループへ移動させる。このようにすることで、スケジュール変更可能性判定部131は、各周期グループに決められたμgの値を守りつつ、タイムスロットの最大サイズを減少させることができる。そして、再度、S049へ戻り、Sum2を計算すると、図21に示すように、30B+30B+40B=100Bとなる。この値はTs=100Bを超えない値であるので(S50のNo)、S55へ進み、プログラムの実行タイミングの調整を通知すると(S55)、プログラムを実行可能と判定し(S56)、新規にプログラム管理部130の割り当てを行う(S58)。
図9の説明に戻る。一方、S053において、スケジュール変更可能性判定部131が、各データについて異なるグルーピングが可能でなければ(S053のNo)、プログラムの実行は不可能と判定する(S057)。また、この周期処理プログラム152の実行にあたっては実行タイミングの調整が必要であることを送信時刻スケジュール部135に通知する(S055)。そして、スケジュール変更可能性判定部131は、S056以降の処理を実行する。
以上のような処理を実行することで、スケジュール変更可能性判定部131は、周期処理プログラム152であるプログラムA〜Kに対し、例えば、図22に例示するようなタイムスロットの割り当てを決定する。例えば、図22の符号220に示すタイムスロットはプログラムA(10B)、プログラムD(20B)、プログラムI(30B)、プログラムF(40B)を送信することを示す。すなわち、通信スケジューラ102がイーサネット(登録商標)フレームにおいて、当該タイムスロットの送信時刻になったとき、これらのプログラムの制御指令値を含む送信データを送信することを示す。
次に、非周期処理プログラム153(図5参照)に対するスケジュール変更可能性判定部131(図3参照)の判定手順を図23に示す。
はじめにスケジュール変更可能性判定部131は、プログラム管理部130等の新規に割り当て可能な計算機資源があるか否かを判定する(S041)。もし、計算機資源がなければ(S041のNo)、そのプログラムは実行不可能と判定する(S057)。
もし計算機資源があれば(S041のYes)、スケジュール変更可能性判定部131は、プログラム情報管理部142のプログラム管理情報を読み出し、この非周期処理プログラム153に制約があるか否かを判定する(S060)。もし制約がなければ(S060のNo)、スケジュール変更可能性判定部131は、送信時刻スケジュール部135に、送信時刻スケジュール表(タイムスロット表)160を参照して、スケジュールの空きがあるか否かを確認する(S061)。
図24は、送信時刻スケジュール部135が管理するタイムスロットの送信時刻スケジュール表(タイムスロット表)160を例示した図である。この送信時刻スケジュール情報は、この通信スケジューラ102の記憶部に記憶される。このタイムスロット表160は、横軸に現在時刻から所定スロット後までのタイムスロットを時系列に表し、縦軸にタイムスロットあたりのデータサイズを示している。送信時刻スケジュール部135は、スケジュール変更可能性判定部131からの問い合わせに応じて、この図24に示すようなタイムスロット表160において、まだデータが埋まりきっていないタイムスロットがあるか否かを確認する。つまり、スケジュール変更可能性判定部131は、このタイムスロット表160に、非周期処理プログラム153のデータを送信するタイムスロットの空きがあると、スケジュールに空きがあると判断する。
図23のS061においてスケジュールに空きがなければ(S061のNo)、スケジュール変更可能性判定部131は非周期処理プログラム153を実行不可能と判定する(S057)。なお、スケジュール変更可能性判定部131において、所定時間待機すれば、この非周期処理プログラム153を利用可能になると判定した場合は、それをログに記録しておき、その所定時間待機していてもよい。
S061において送信時刻スケジュール部135のスケジュールの空きがあれば(S061のYes)、スケジュール変更可能性判定部131は非周期処理プログラム153を実行可能と判定する(S056)。一方、S060において非周期処理プログラム153に制約があれば(S060のYes)、スケジュール変更可能性判定部131は、その非周期処理プログラム153の制約が最低通信帯域の保証か否かを判定する(S062)。もし、その制約が最低通信帯域の保証であれば(S062のYes)、送信時刻スケジュール部135に、その帯域を保証できるか否かを確認する(S063)。つまり、スケジュール変更可能性判定部131は、送信時刻スケジュール部135に、その最低通信帯域を保証できるほどのスケジュールの空きがあるか否かを確認する。
例えば、この非周期処理プログラム153の最低通信帯域が5B/sであるとき、送信時刻スケジュール部135は、図24に示すスケジュールの現在以降の1秒間分のタイムスロットに5Bの空きがあるか否かを確認し、その確認結果をスケジュール変更可能性判定部131へ返す。
ここで、もし、スケジュールの空きがあれば(S063のYes)、スケジュール変更可能性判定部131は非周期処理プログラム153を実行可能と判定する(S056)。そして、プログラム情報管理部142に、プログラム管理情報の更新を依頼する(S066)。つまり、プログラム情報管理部142に、この非周期処理プログラム153の情報を追加するよう指示する。一方、スケジュールの空きがなければ(S063のNo)、スケジュール変更可能性判定部131は非周期処理プログラム153を実行不可能と判定する(S057)。
S062において、非周期処理プログラム153の制約が最低通信帯域の保証でなければ(S062のNo)、スケジュール変更可能性判定部131は、非周期処理プログラム153の制約が最長許容遅延か否かを判定する(S064)。もし制約が最長許容遅延であれば(S064のYes)、非周期処理プログラム153に基づきCPU101は、スケジュール変更可能性判定部131にデータサイズを申請し、送信時刻スケジュール部135に対し、その最長許容遅延の条件を保証できるか否かを確認する(S065)。
例えば、この非周期処理プログラム153の最長許容遅延が、10μsであり、データサイズが10Bであった場合、送信時刻スケジュール部135は、図24のタイムスロット表160において、現在から10μs先までのタイムスロットのうち,10Bの空きがあるタイムスロットがあるか否かを確認する。そして、その確認結果を、スケジュール変更可能性判定部131へ返す。
ここで、その最長許容遅延を保証できると判断されたとき(S065のYes)、スケジュール変更可能性判定部131は、この非周期処理プログラム153を実行可能と判定する(S056)。保証できなければ(S065のNo)、スケジュール変更可能性判定部131は非周期処理プログラム153を実行不可能と判定する(S057)。なお、S064において、非周期処理プログラム153の制約が最長許容遅延でなければ(S064のNo)、スケジュール変更可能性判定部131は、その非周期処理プログラム153を実行不可能と判定する(S066)。ただし、その他の制約の判定方法を用意すれば、順次判定することが可能である。
なお、周期処理プログラム152に基づきCPU101は、図6、図7のS002において、プログラム管理部130のプログラム情報管理部142は、周期処理プログラム152や非周期処理プログラム153に関する各種情報をプログラム管理情報に設定する。そして、S004において、送信データを送信データ管理部140に設定する。具体的には、はじめて送信データ管理部140を設定すると、送信時刻スケジュール部135へ、そのことが通知され、送信時刻スケジュール部135は今後の送信スケジュールを更新する。この送信時刻スケジュール部135の送信スケジュールの更新について説明する。
送信時刻スケジュール部135では、タイムスロットを基準にデータの送信スケジュールを管理する。送信時刻スケジュール部135は、図24に例示するように、このタイムスロットごとにデータグラム連結部132によりデータを連結した送信データを送信する。このタイムスロットの幅は、適当なサイズのパケットを送信するのに必要な通信スケジューラ102の処理時間と、制御処理の要求周期を考慮して決定される。
例えば、100Bのパケットを送信するのに必要な通信スケジューラ102の処理時間が10μsである場合、タイムスロットの幅は10μsとする。なお、このとき、制御処理の要求周期も10μsの倍数とする。また、100B以上のデータサイズのパケットを送信するときは、複数のタイムスロットを占有させる等の処理が必要である。タイムスロットの幅は、例えば、スケジュール変更可能性判定部131のスケジュール判定をしやすい幅でもよいし、500B以上のパケットは送信しない等制御システム上の制約があるならば、その制約に合った幅であってもよい。
ここで、再び図24を用いて送信時刻スケジュール部135のタイムスロット管理方法を説明する。図24のタイムスロット表160は、横軸に現在時刻から所定スロット後までのタイムスロットを時系列に表し、縦軸にタイムスロットあたりの通信スケジューラ102が通信処理可能なデータサイズを示している。CPU101は、送信時刻スケジュール表160において、現在時刻を示すポインタをタイムスロット時間の経過とともに横軸上にスライドさせていき、終端に到達すると先頭に戻す処理を繰り返す。
送信時刻スケジュール部135は、スケジュール変更可能性判定部131で判定したプログラムの送信予定時刻とそのデータサイズとをタイムスロット表160に書き込んでいく。このとき、各プログラムに与えられた制約を満足する範囲で可能な限り同じタイムスロットにプログラムのスケジュールを組み込む。ただし、図9のS046からS053で示したようにスケジュール変更可能性判定部131がタイムスロットをずらすことが必要であると判定した場合は、タイムスロットをずらす。
また、タイムスロット表160の横軸の幅よりも周期が大きな周期処理プログラム152の場合には、送信までの残りタイムスロット数を個別に管理し、タイムスロットの時間経過とともに、残りのタイムスロット数を1つずつ減じていく。そして、このタイムスロット数が0になったとき、この周期処理プログラム152のデータを送信するようにする。この後、タイムスロット数を周期分の値に初期化する。
また、周期処理プログラム152に基づきCPU101は、図6、図7のS002において、プログラム管理情報に示される当該周期処理プログラム152の周期内で、送信データを送信時刻スケジュール部135に通知することができなかった場合の挙動を設定することができる。そのような設定例として、以前の指令値を同じデータとして送信する、送信を停止する、送信要求時にエラーをユーザに提示する、要求がくるまで送信を遅らせる等である。また、このような周期に対する送信の遅れの回数、時刻等を記録し、ユーザは、この情報を制御用計算機120の診断等に活用することができる。
また、図7のS014の待機を解除する場合は、プログラム起床部136が、この周期処理プログラム152に基づく送信タイミングにあわせて適切なタイミングで実行するようにしてもよい。
また、図6、図7、図8において処理が終了すると、プログラム管理部130は解放され、送信時刻スケジュール部135は、この周期処理プログラム152、非周期処理プログラム153に関するスケジュールを削除する。
なお、周期処理プログラム152の実行中に、その処理の周期を変更する場合、周期処理プログラム152に基づきCPU101は、周期が変更可能か否かを通信スケジューラ102のスケジュール変更可能性判定部131に問い合わせる。そして、その周期が変更可能と判定されたとき、図6のS002以降の処理を実行する。なお、この周期処理プログラム152の周期を変更可能か否かは、前記した図9に示す処理と同様の処理により判断される。すなわち、スケジュール変更可能性判定部131が、変更対象の周期処理プログラム152について、変更後の周期と、最大データサイズとの申請を受け付け(S040)、S041以降の処理を実行すればよい。
このような制御用計算機120によれば、周期処理プログラム152に基づきCPU101は、他の周期処理プログラム152に対して同期をとる必要がなく、任意のタイミングでデータを送受信することができる。また、制御用計算機120は、制御処理や通信処理を、周期処理プログラム152や非周期処理プログラム153と独立して実装することができる。これらの特長により、制御用計算機120における周期処理プログラム152および非周期処理プログラム153の依存性を下げることができ、ソフトウェアとして再利用性、保守性、拡張性、柔軟性を向上させることができる。つまり、この制御用計算機120は、既存のシステムを変更、拡張することが容易であり、また特定の制御対象装置121用の周期処理プログラム152を別の制御システムで用いる場合も容易に再利用可能である。
また、制御用計算機120は、周期処理プログラム152、非周期処理プログラム153それぞれの制約を考慮して、データを連結し、まとめて送信することができる。したがって、同じデータ量を送信する場合でも送信パケット数を減らすことができ、ヘッダやトレイラ等の共通部分を処理するオーバーヘッドを減らすことができる。例えば、Ethernet(登録商標)では、8Bのプリアンブル、14Bのヘッダ、FCS(Frame Check Sequence)の4B、96ビット時間のフレーム間ギャップの通信にかかるオーバーヘッドが存在する。これらのオーバーヘッドを減らすことで、最短到達可能周期をより短くすることができ、制御対象の制御性能を向上させることができる。
なお、制御用計算機120の通信スケジューラ102の機能を、この制御用計算機120のプログラムの実行処理により実現してもよい。このような制御用計算機120は、図25に示すように、制御用計算機120の通信スケジューラ102を含まない構成となる。この制御用計算機120上で動作するプログラムの構成を図26に示す。
図26の通信スケジューラ170は、CPU101上で動作するプログラムであり、前記した通信スケジューラ102と同様の機能を実現する。この通信スケジューラ170は、周期処理プログラム152、プロトコルスタック155から通信要求を受け取り、デバイスドライバ151を介してLANコントローラ103にアクセスし、制御用ネットワーク122(図2参照)に対して通信する。この通信スケジューラ170は、例えば、ミドルウェア、サーバプログラム、カーネルモジュール等である。
なお、制御用計算機120と、制御対象装置121とは、LAN以外のネットワークにより接続されていてもよい。この場合、図27に示すように、制御用計算機120の通信スケジューラ180は、この制御ネットワークに接続するための通信コントローラ181をさらに備える。
また、この通信スケジューラ180は、図28に示すように、この制御用計算機120が、この制御用ネットワークを利用するための様々な情報(例えば、この制御用計算機120を利用可能な時間、利用可能な期間、送受信可能なパケット等に関する情報)を記憶するネットワークプロトコル情報管理部190をさらに備える。そして、送信時刻スケジュール部135は、このネットワークプロトコル情報管理部190から制御用ネットワークの利用に関する情報を取得し、この情報を参照して、送信データのスケジューリングを行う。
また、制御用計算機120は、図29に示すように、バス型ネットワークにより、制御対象装置121と接続されていてもよい。また、制御システムは、図29に示すように、複数の制御用計算機120により、複数の制御対象装置121を制御するようにしてもよい。なお、このように制御用計算機120を複数含む制御システムの場合、この制御用計算機120が互いに送信データを送信するタイミングについて同期をとるようにスケジューリングするものとする。
さらに、制御用計算機120の送信部137(図3参照)は、イーサネット(登録商標)フレームを送信する場合を例に説明したが、前記したタイムスロット表(スケジュール情報)160に従い、時分割でデータを送信するようにしてもよい。
102,170,180 通信スケジューラ
103 LANコントローラ
108 メモリ
109 不揮発性記憶媒体
110 バス
120 制御用計算機
121 制御対象装置
122 制御用ネットワーク
130 プログラム管理部
131 スケジュール変更可能性判定部
132 データグラム連結部
133 データグラム分解部
134 計時部
135 送信時刻スケジュール部
136 プログラム起床部
137 送信部
138 受信部
140 送信データ管理部
141 受信データ管理部
142 プログラム情報管理部
143 データグラム生成部
144 データグラム抽出部
145 状態フラグ管理部
151 デバイスドライバ
152 周期処理プログラム
153 非周期処理プログラム
154 API
155 プロトコルスタック
156 共通設定プログラム
181 通信コントローラ
190 ネットワークプロトコル情報管理部

Claims (7)

  1. 1つまたは複数の制御対象装置を制御するためのプログラムを1つまたは複数備える制御用計算機であって、
    前記プログラムに基づき、前記制御対象装置への制御指令値を通信スケジューラへ出力する処理部と、
    タイムスロットを用いたスケジュール情報を用いて、前記処理部から出力された制御指令値を、ネットワーク経由で前記制御対象装置それぞれへ送信する送信時刻を決定し、この決定した送信時刻に、前記制御指令値を含む送信データを前記制御対象装置それぞれへ送信する前記通信スケジューラとを備え、
    前記通信スケジューラは、
    前記プログラムのうち、周期的に制御指令値を送信するプログラムについて、そのプログラムによる制御対象の制御対象装置の識別情報と、前記制御対象装置への制御指令値を送信するときの周期と、前記プログラムそれぞれから出力される制御指令値のデータサイズの最大値とを示したプログラム管理情報の入力を受け付け、プログラム管理情報記憶部に記憶するプログラム情報管理部と、
    前記プログラムにより前記処理部から、前記制御対象装置への制御指令値の入力を受け付けたとき、この制御指令値を前記記憶部に記憶する送信データ管理部と、
    前記処理部が実行中の各プログラムについて、前記プログラム管理情報を参照して、前記プログラムそれぞれから出力される制御指令値のデータサイズの最大値の合計値を、当該通信スケジューラの通信処理スループットで除した値が、前記プログラムそれぞれの周期のうち、最も短い周期よりも小さいとき、前記各プログラムの時間的制約を満たすと判定するスケジュール変更可能性判定部と、
    前記スケジュール変更可能性判定部により、前記各プログラムの時間的制約を満たすと判定されたとき、前記プログラム管理情報に示される周期で、前記制御指令値を含む送信データを送信するよう送信時刻を決定し、この送信時刻を前記スケジュール情報に記録し、当該送信時刻になったとき、当該送信データの送信指示を出力する送信時刻スケジュール部と、
    前記送信時刻スケジュール部により出力された送信指示に基づき、前記制御指令値を前記記憶部から読み出し、この読み出した制御指令値を含む前記送信データを送信する送信部とを備えることを特徴とする制御用計算機。
  2. 前記通信スケジューラは、
    前記制御対象装置から、前記制御指令値に対する応答である受信データを受信する受信部と、
    前記受信データを受信したとき、当該制御指令値を出力したプログラムを起床させるプログラム起床部とを備え、
    前記処理部は、
    前記起床されたプログラムに基づき、前記受信データに示される応答をもとに次の制御指令値を決定し、前記プログラムの起床指示に基づき、前記決定した制御指令値を前記通信スケジューラへ出力することを特徴とする請求項1に記載の制御用計算機。
  3. 前記通信スケジューラは、
    前記スケジュール変更可能性判定部により、前記実行中の各プログラムの時間的制約を満たすと判定されたとき、前記各プログラムのうち、そのプログラムの制御指令値の周期が素数倍となっているプログラムそれぞれの制御指令値を、1つのタイムスロットあたり送信可能な最大データサイズ以下にまとめた前記送信データを作成するデータグラム連結部を備え、
    前記送信部は、
    前記作成された送信データを、前記出力された送信時刻に送信することを特徴とする請求項1に記載の制御用計算機。
  4. 前記送信時刻スケジュール部は、
    前記プログラムのうち、そのプログラムの制御指令値の周期が素数倍となっているプログラムそれぞれの制御指令値のデータサイズの合計値が、前記1つのタイムスロットあたり送信可能な最大データサイズを超えているとき、
    前記送信時刻スケジュール部は、そのプログラムの制御指令値群を、前記最大データサイズ以下の制御指令値のまとまりに分割し、その分割した制御指令値のまとまりをそれぞれ別のタイムスロットに割り当てることを特徴とする請求項に記載の制御用計算機。
  5. 前記送信部は、
    前記ネットワーク経由での前記制御対象装置への送信データの送信および前記制御対象装置からの受信データの受信を、イーサネット(登録商標)フレームで行うことを特徴とする請求項2に記載の制御用計算機。
  6. 前記送信部は、
    前記ネットワーク経由での前記制御対象装置への送信データの送信および前記制御対象装置からの受信データの受信を時分割で行うことを特徴とする請求項2に記載の制御用計算機。
  7. 請求項1に記載の制御用計算機を含んで構成される制御システムであって、前記制御用計算機および前記制御対象装置を接続するネットワークのトポロジがリングトポロジであることを特徴とする制御システム。
JP2009072344A 2009-03-24 2009-03-24 制御用計算機および制御システム Expired - Fee Related JP4876138B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009072344A JP4876138B2 (ja) 2009-03-24 2009-03-24 制御用計算機および制御システム
DE102010002327.2A DE102010002327B4 (de) 2009-03-24 2010-02-25 Controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009072344A JP4876138B2 (ja) 2009-03-24 2009-03-24 制御用計算機および制御システム

Publications (2)

Publication Number Publication Date
JP2010224939A JP2010224939A (ja) 2010-10-07
JP4876138B2 true JP4876138B2 (ja) 2012-02-15

Family

ID=42979259

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009072344A Expired - Fee Related JP4876138B2 (ja) 2009-03-24 2009-03-24 制御用計算機および制御システム

Country Status (2)

Country Link
JP (1) JP4876138B2 (ja)
DE (1) DE102010002327B4 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106406246A (zh) * 2015-07-31 2017-02-15 中国联合网络通信集团有限公司 调度消息传输的方法及装置

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6488830B2 (ja) * 2015-03-31 2019-03-27 オムロン株式会社 制御装置
JP2017034307A (ja) * 2015-07-28 2017-02-09 株式会社東芝 情報収集管理装置、方法、及び情報収集システム
JP6450708B2 (ja) 2016-05-16 2019-01-09 ファナック株式会社 複数の製造セルの間で加工情報を処理する情報処理装置
JP6900690B2 (ja) 2017-02-07 2021-07-07 オムロン株式会社 制御装置
JP6911791B2 (ja) * 2018-02-14 2021-07-28 オムロン株式会社 制御装置、制御システム、制御方法、および、制御プログラム
JP7025966B2 (ja) * 2018-03-20 2022-02-25 日立Astemo株式会社 車両制御装置
JP7091986B2 (ja) * 2018-10-05 2022-06-28 オムロン株式会社 制御システム、制御方法、および開発支援プログラム
JP7111038B2 (ja) * 2019-03-15 2022-08-02 オムロン株式会社 制御システム、中継装置、および中継プログラム
JP7415345B2 (ja) * 2019-07-03 2024-01-17 オムロン株式会社 制御システム、サポート装置および設定プログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07312613A (ja) * 1994-05-19 1995-11-28 Hitachi Ltd 通信システム
JP2000216811A (ja) * 1999-01-22 2000-08-04 Chokosoku Network Computer Gijutsu Kenkyusho:Kk フロ―制御方法
JP4500484B2 (ja) * 2002-07-19 2010-07-14 株式会社日立製作所 コントローラおよび情報通信サービス方法
JP2004280195A (ja) * 2003-03-12 2004-10-07 Yaskawa Electric Corp ロボット制御装置
DE10357824A1 (de) * 2003-12-09 2005-07-14 Kuka Roboter Gmbh Verfahren und Vorrichtung zum Betreiben zusammenarbeitender unterschiedlicher Geräte
DE602005010252D1 (de) * 2005-09-20 2008-11-20 Matsushita Electric Ind Co Ltd Vefahren und Vorrichtung zur Packetsegmentierung und Verknüpfungssignalisierung in einem Kommunikationssystem
EP1870806A1 (en) * 2006-06-19 2007-12-26 Wolfgang Pree GmbH System for executing distributed sofware
WO2008105051A1 (ja) * 2007-02-26 2008-09-04 Toshiba Mitsubishi-Electric Industrial Systems Corporation スケジューラ

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106406246A (zh) * 2015-07-31 2017-02-15 中国联合网络通信集团有限公司 调度消息传输的方法及装置

Also Published As

Publication number Publication date
DE102010002327B4 (de) 2017-05-04
DE102010002327A1 (de) 2010-11-18
JP2010224939A (ja) 2010-10-07

Similar Documents

Publication Publication Date Title
JP4876138B2 (ja) 制御用計算機および制御システム
CN107924341B (zh) 基于平台遥测数据的实时的本地和全局数据中心网络优化
CN105103524B (zh) 用于实现网络中的高利用率的方法和系统
JP6179812B2 (ja) 制御装置
US9197566B2 (en) Information processing method, recording medium, and information processing apparatus
JP5136564B2 (ja) パケット処理装置およびパケット処理プログラム
Carvajal et al. Evaluation of communication architectures for switched real-time ethernet
CN101375251A (zh) 多流确认调度
KR101103964B1 (ko) 통신 네트워크에서의 데이터 처리량의 최적화
CN114424507A (zh) 用于发送数据分组的方法和实现该方法的装置
US10142228B2 (en) Device and method for retransmitting data in a network switch
CN1555513A (zh) 在总线系统中确定时间的方法和装置以及总线系统
Xiang et al. Differentiated latency in data center networks with erasure coded files through traffic engineering
US7814182B2 (en) Ethernet virtualization using automatic self-configuration of logic
CN111404842B (zh) 数据传输方法、装置及计算机存储介质
KR101552119B1 (ko) EtherCAT을 위한 노드간 최적 시간 위상 검색 시스템
JP4040654B2 (ja) 通信制御回路および通信制御方法
Chen et al. Petri net modeling of the reconfigurable protocol stack for cloud computing control systems
CN105207846B (zh) 一种tcp协议栈延时的统计方法、装置及系统
JP6763476B2 (ja) 仮想ネットワーク機能の制御方法、仮想ネットワーク機能管理装置及び仮想ネットワーク提供システム
JP6620760B2 (ja) 管理ノード、端末、通信システム、通信方法、および、プログラム
Meyer et al. Low latency packet processing in software routers
WO2013046321A1 (ja) 周期送信制御装置、周期送信制御方法、および周期送信制御プログラム
WO2022190431A1 (ja) 制御システムおよびデータ送信方法
JP6193078B2 (ja) メッセージ転送システム及びキューの管理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110209

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110428

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110517

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110831

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111101

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111128

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141202

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4876138

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees