JP5099251B1 - Plcのcpuユニット、plc用のシステムプログラム、plc用のシステムプログラムを格納した記録媒体、plcシステム、plcサポート装置、plcサポートプログラム、および、plcサポートプログラムを格納した記録媒体 - Google Patents

Plcのcpuユニット、plc用のシステムプログラム、plc用のシステムプログラムを格納した記録媒体、plcシステム、plcサポート装置、plcサポートプログラム、および、plcサポートプログラムを格納した記録媒体 Download PDF

Info

Publication number
JP5099251B1
JP5099251B1 JP2011156474A JP2011156474A JP5099251B1 JP 5099251 B1 JP5099251 B1 JP 5099251B1 JP 2011156474 A JP2011156474 A JP 2011156474A JP 2011156474 A JP2011156474 A JP 2011156474A JP 5099251 B1 JP5099251 B1 JP 5099251B1
Authority
JP
Japan
Prior art keywords
program
control
execution
plc
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
JP2011156474A
Other languages
English (en)
Other versions
JP2013025353A (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.)
Omron Corp
Original Assignee
Omron Corp
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 Omron Corp filed Critical Omron Corp
Priority to JP2011156474A priority Critical patent/JP5099251B1/ja
Priority to EP12814595.0A priority patent/EP2711798B1/en
Priority to US14/125,997 priority patent/US10082777B2/en
Priority to CN201280026760.9A priority patent/CN103562807B/zh
Priority to PCT/JP2012/056243 priority patent/WO2013011713A1/ja
Application granted granted Critical
Publication of JP5099251B1 publication Critical patent/JP5099251B1/ja
Publication of JP2013025353A publication Critical patent/JP2013025353A/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/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/056Programming the PLC
    • 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/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0421Multiprocessor system
    • 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/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • 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/10Plc systems
    • G05B2219/15Plc structure of the system
    • G05B2219/15079Multitasking, real time multitasking

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • General Engineering & Computer Science (AREA)
  • Programmable Controllers (AREA)

Abstract

【課題】システムプログラムを入れ替えることなく、または共通のシステムプログラムを用いながら、PLCの制御動作のスケジュールについての高い自由度を実現する。
【解決手段】システムプログラムは、制御プログラムの実行を制御するためのプロシージャと出力データの出力および入力データの入力を制御するためのプロシージャとが少なくとも収録されているプロシージャのライブラリを含む。システムプログラムは、プロシージャのライブラリに収録されているプロシージャの実行順序の指定を含むスケジュール構築データが記憶手段に格納されているときに、マイクロプロセッサに、スケジュール構築データに含まれているプロシージャの実行順序の指定に従ってプロシージャのライブラリに収録されているプロシージャを実行させる。
【選択図】図13

Description

本発明は、機械や設備などの動作を制御するために用いられるPLC(Programmable Logic Controller、あるいはプログラマブルコントローラとも称される)における制御動作のスケジュールに関する。
PLCは、たとえば、制御プログラムを実行するマイクロプロセッサを有するCPU(Central Processing Unit)ユニット、外部のスイッチやセンサからの信号入力および外部のリレーやアクチュエータへの信号出力を担当するIO(Input Output)ユニットなどの複数のユニットで構成される。CPUユニットは、他のユニットへの出力データの出力と、他のユニットからの入力データの入力と、入力データを使用して出力データを生成する制御プログラムの実行とを繰り返すことによって制御対象を制御する。制御プログラムは、ユーザにおける制御目的に応じて作成されるユーザプログラムを含む。制御プログラムは、ユーザプログラムの中で実行が指示されるモーション演算プログラムを含んでいてもよい。
PLCにおいて、入力データの入力、出力データの出力、制御プログラム、およびPLCのシステムプログラムの実行のスケジュールについては、以下に例示するように、種々の形態を採用し得る。
特許文献1(特開2000−105604号公報)に示されるように、従来の一般的なPLCにおいては、各制御サイクルの中で、1つのシーケンスプログラム(制御プログラム)と一組の出力リフレッシュおよび入力リフレッシュとを実行する。この場合には、制御サイクルと制御プログラムの実行サイクルとは等しい。
PLCにおいて、複数の制御プログラムを時分割で実行することも知られている。
特許文献2(特開2007−140655号公報)には、モータを制御するモーション制御機能とシーケンス演算を実行するPLC機能とを1つのCPUで処理する装置において、基本クロックの1サイクルごとに、「定周期モーション制御処理および各軸処理」と「高速シーケンス処理」とを実行し、さらに各基本クロックサイクル内の残りの時間において、「低速シーケンス処理」または「非定周期モーション制御処理」を実行することが記載されている。また、低速シーケンス処理が基本クロックサイクル内に終了しない場合には、所定の基本クロック回数分の時間の停止後に残りの処理を実行することが記載されている(たとえば、段落0004)。
特許文献3(特開2000−293210号公報)には、制御装置の動作に関し、周期タスク(制御プログラム)とは別に入力処理および出力処理を行うリフレッシュブロックをそれぞれ複数用意し、各制御サイクルにおいていくつかのリフレッシュブロックといくつかの周期タスクとをそれぞれ選択的に実行することが記載されている。
特開2000−105604号公報 特開2007−140655号公報 特開2000−293210号公報
近年、情報技術の分野においては、マイクロプロセッサや通信ネットワークの高速化が進展しつつある。そのため、PLCにおいてもそれらの技術を利用して、複数の制御プログラムの時分割実行や高速なPLCシステムバスおよび/またはフィールドネットワークの採用が可能となっている。したがって、入力データの入力、出力データの出力、制御プログラム、およびPLCのシステムプログラムの実行を含む制御動作のスケジュールについての自由度を高くするための、装置の処理速度の面での制約は少なくなっている。ここで、制御動作のスケジュールについての自由度には、どのタイミングで行う入力または出力をどの制御プログラムの実行と関連させるかということも含まれる。また、具体的な制御目的に応じて、最適な制御動作のスケジュールはさまざまであるから、PLC製品の制御動作のスケジュールについての自由度は高い方が好ましい。
しかしながら、実際のPLC製品においては、制御動作のスケジュールはPLC製品のシステムプログラムによって決定されているのが実情であり、いくつかのスケジュールパターンの中からの選択や実行パラメータの調整は可能であるとしても、制御動作のスケジュールをユーザが自由に構築することまではなされていない。
ここで、いくつかのスケジュールパターンの中からの選択とは、たとえば、制御プログラムの実行サイクルの中で、「出力−入力−制御プログラム実行−その他システム処理」の順に実行するか、「入力−制御プログラム実行−出力−その他システム処理」の順に実行するかの選択肢を提供するという程度のことである。また、実行パラメータの調整とは、複数の制御プログラムを時分割で実行する場合に、各制御プログラムに与える実行優先度を調整する程度のことである。
制御動作のスケジュールのパターンを大きく変更したり、新しく追加するプログラムモジュール(たとえば、温度制御用プログラムモジュール、画像処理用プログラムモジュールなど)が担う処理を制御動作のスケジュールに組み込んだりしようとすれば、PLC製品のシステムプログラムの少なくとも一部を入れ替える必要がある。そうすると、PLC製品は別機種となってしまうので、PLC製品のメーカーおよびユーザにおける管理の負担が増大する。また、ユーザの制御目的に最適なスケジュールパターンが特殊なものである場合には、ユーザがそのようなスケジュールパターンを実装したPLC製品を入手することは現実には困難である。
また、たとえPLC製品がユーザに提供される段階以降では制御動作のスケジュールパターンの変更ができないようにされている場合であっても、共通のシステムプログラムを用いながら多様なスケジュールパターンを実現できる構成は、多機種のPLC製品に共通に含まれるプラットフォームとして、PLC製品のメーカーにおける開発効率向上やコストダウンに寄与する。
本発明は、システムプログラムを入れ替えることなく、または共通のシステムプログラムを用いながら、PLCの制御動作のスケジュールについての高い自由度を実現することを目的とする。
本発明のある局面に従えば、制御対象を制御するPLCのCPUユニットを提供する。PLCのCPUユニットは、マイクロプロセッサと、記憶手段と、通信回路とを含む。記憶手段は、システムプログラム、制御プログラム、およびスケジュール構築データの格納に用いられる。マイクロプロセッサは、記憶手段に格納された、システムプログラムおよび制御プログラムを実行する。通信回路は、制御プログラムの実行によって生成される出力データを送信するとともに制御プログラムの実行に使用される入力データを受信する。システムプログラムは、制御プログラムの実行を制御するためのプロシージャと出力データの出力および入力データの入力を制御するためのプロシージャとが少なくとも収録されているプロシージャのライブラリを含む。システムプログラムは、プロシージャのライブラリに収録されているプロシージャの実行順序の指定を含むスケジュール構築データが記憶手段に格納されているときに、マイクロプロセッサに、スケジュール構築データに含まれているプロシージャの実行順序の指定に従ってプロシージャのライブラリに収録されているプロシージャを実行させる。
好ましくは、スケジュール構築データは、プロシージャのライブラリに収録されているプロシージャを用いてスレッドを生成するための指定を含む。システムプログラムは、PLCの制御動作の実行準備処理として、スケジュール構築データに含まれている、スレッドを生成するための指定に従って、スレッドを生成する処理を含む。
さらに好ましくは、スケジュール構築データは、スレッドについてのデータとして、スレッドの実行中に他のスレッドを起動するための指定を含む。
あるいは好ましくは、スケジュール構築データは、1または複数のスレッドを含む、繰り返し実行の単位となるタスクを設定するための指定を含み、システムプログラムは、PLCの制御動作の実行準備処理として、スケジュール構築データに含まれているタスクを設定するための指定に従って、タスクを設定する処理を含む。
好ましくは、PLCのCPUユニットは、さらに、スケジュール構築データを取得するスケジュール構築データ取得手段を含む。
好ましくは、出力データの送信と、入力データの受信と、入力データを使用して出力データを生成する制御プログラムの実行とを繰り返させるための、プロシージャの実行順序の指定を含むスケジュール構築データが記憶手段に格納されている。
さらに好ましくは、PLCのCPUユニットは、さらに、制御サイクルの周期を設定する手段を含み、通信回路は、制御サイクルごとに、出力データの送信および入力データの受信を行い、スケジュール構築データは、マイクロプロセッサに、制御プログラムの実行が終了した制御サイクルの次の制御サイクルにおいて、通信回路による出力データの送信および入力データの受信の後に、制御プログラムの実行を開始させ、制御プログラムの実行が終了しなかった制御サイクルの次の制御サイクルにおいて、制御プログラムの未実行の部分を実行させるための、プロシージャの実行順序の指定を含む。
あるいは好ましくは、システムプログラムは、PLCの制御動作の実行準備処理として、受信された入力データを格納する受信バッファを記憶手段内に生成する処理と、制御プログラムから参照される入力データごとに、その制御プログラムが入力データの参照先とする入力同期バッファを記憶手段内に生成する処理とを含み、スケジュール構築データは、マイクロプロセッサに、受信された入力データを受信バッファからその入力データに対応する入力同期バッファにコピーする入力コピー処理と、制御プログラムを実行開始する制御プログラム開始処理とを実行させるための、プロシージャの実行順序の指定を含む。
さらに好ましくは、入力データの受信は、制御サイクルごとに実行され、スケジュール構築データは、マイクロプロセッサに、制御サイクルの整数倍の実行サイクルごとに制御プログラム開始処理を実行させ、制御プログラムの実行サイクルが開始した制御サイクルにおいて受信された入力データを対象として、入力コピー処理を実行させるための、プロシージャの実行順序の指定を含む。
あるいはさらに好ましくは、システムプログラムは、PLCの制御動作の実行準備処理として、さらに、送信されるべき出力データを格納する送信バッファを記憶手段内に生成する処理と、送信バッファにコピーされる出力データが格納される出力同期バッファを出力データごとに記憶手段内に生成する処理とを含み、スケジュール構築データは、さらに、マイクロプロセッサに、出力データを出力同期バッファから送信バッファにコピーする出力コピー処理を実行させるための、プロシージャの実行順序の指定を含む。
さらに好ましくは、スケジュール構築データは、マイクロプロセッサに、制御プログラム開始処理を制御サイクルの整数倍の実行サイクルごとに実行させ、制御プログラムの実行サイクルの最初の制御サイクルにおいてその前の実行サイクルにおける制御プログラムの実行により生成された出力データが送信バッファから送信されることになるタイミングで出力コピー処理を実行させるための、プロシージャの実行順序の指定を含む。
あるいは好ましくは、記憶手段は、さらに、制御プログラムが使用する変数についての属性データの格納に用いられ、属性データは、変数が複数の制御プログラムから参照されるグローバル変数である場合に、その変数の書き換えができる1つのオーナー側制御プログラムの指定と、その変数の参照のみができる1つまたは複数のリファラ側制御プログラムの指定とを含むことが可能であり、システムプログラムは、PLCの制御動作の実行準備処理として、グローバル変数を格納するグローバル変数領域を記憶手段内に生成する処理と、各リファラ側制御プログラムについて、そのリファラ側制御プログラムから参照されるグローバル変数ごとに、そのリファラ側制御プログラムがグローバル変数を参照するときにグローバル変数領域に代えて参照先とする変数同期バッファを記憶手段内に生成する処理とを含み、スケジュール構築データは、マイクロプロセッサに、オーナー側制御プログラムを実行開始するオーナー側開始処理と、オーナー側制御プログラムの実行が終了すると、そのオーナー側制御プログラムによって書き換えられるグローバル変数をグローバル変数領域からそのグローバル変数に対応する変数同期バッファにコピーする変数コピー処理と、リファラ側制御プログラムを実行開始するリファラ側開始処理とを実行させるための、プロシージャの実行順序の指定を含む。
あるいは好ましくは、制御プログラムは、モータの運動を制御するためのモーション指令値を算出するモーション演算プログラムと、ユーザにおける制御目的に応じて作成され、モーション演算プログラムに対してその実行に必要な指示を与える処理を含むユーザプログラムとを含み、スケジュール構築データは、PLCのCPUユニットに、通信回路による出力データの送信および入力データの受信、ユーザプログラムの実行、ならびにモーション演算プログラムの実行を、この順序で、繰り返し実行させるための、プロシージャの実行順序の指定を含む。
あるいは好ましくは、通信回路は、制御サイクルの周期で出力データを送信しおよび入力データを受信し、制御プログラムは、第1制御プログラムおよび第2制御プログラムを含み、第1制御プログラムは、モータの運動を制御するための第1モーション指令値データを生成する第1モーション演算プログラムを含み、第2制御プログラムは、モータの運動を制御するための第2モーション指令値データを生成する第2モーション演算プログラムを含み、第1制御プログラムおよび第2制御プログラムの少なくとも一方は、ユーザにおける制御目的に応じて作成され第1モーション演算プログラムおよび第2モーション演算プログラムに対してその実行に必要な指示を与える命令を含むユーザプログラムを含み、スケジュール構築データは、マイクロプロセッサに、制御サイクルの周期と同じ周期の第1実行サイクルごとに第1制御プログラムを実行開始させ、制御サイクルの周期の2以上の整数倍の周期の第2実行サイクルごとに第2制御プログラムを実行開始させ、第2実行サイクルが開始する制御サイクルにおいて、第1制御プログラムの実行終了後に第2制御プログラムを実行開始させ、当該制御サイクルが終了するまでに第2制御プログラムが終了しなければ次の制御サイクルにおいて第1制御プログラムの実行終了後に第2制御プログラムの未実行の部分の実行を開始させるための、プロシージャの実行順序の指定を含む。
あるいは好ましくは、マイクロプロセッサは、少なくとも第1コアおよび第2コアを含み、制御プログラムは、第1制御プログラムと第2制御プログラムとを含み、スケジュール構築データは、出力データの送信および入力データの受信が終了した後に、第1コアに第1制御プログラムを実行させるとともに、第2コアに第2制御プログラムを第1制御プログラムの実行と並列に実行させるための、プロシージャの実行順序の指定を含む。
本発明の別の局面に従えば、マイクロプロセッサと、記憶手段と、通信回路とを備え、制御対象を制御するPLCのCPUユニットにおいて、記憶手段に格納されてマイクロプロセッサによって実行されるためのPLC用のシステムプログラムを提供する。記憶手段は、システムプログラム、制御プログラム、およびスケジュール構築データの格納に用いられる。マイクロプロセッサは、記憶手段に格納されたシステムプログラムおよび制御プログラムを実行する。通信回路は、制御プログラムの実行によって生成される出力データを送信および制御プログラムの実行に使用される入力データを受信する。システムプログラムは、制御プログラムの実行を制御するためのプロシージャと出力データの出力および入力データの入力を制御するためのプロシージャとが少なくとも収録されているプロシージャのライブラリを含む。システムプログラムは、プロシージャのライブラリに収録されているプロシージャの実行順序の指定を含むスケジュール構築データが記憶手段に格納されているときに、マイクロプロセッサに、スケジュール構築データに含まれているプロシージャの実行順序の指定に従ってプロシージャのライブラリに収録されているプロシージャを実行させる。
好ましくは、スケジュール構築データは、プロシージャのライブラリに収録されているプロシージャを用いてスレッドを生成するための指定を含み、システムプログラムは、PLCの制御動作の実行準備処理として、スケジュール構築データに含まれている、スレッドを生成するための指定に従って、スレッドを生成する処理を含む。
さらに好ましくは、スケジュール構築データは、スレッドについてのデータとして、スレッドの実行中に他のスレッドを起動するための指定を含む。
本発明のさらに別の局面に従えば、マイクロプロセッサと、記憶手段と、通信回路とを備え、制御対象を制御するPLCのCPUユニットにおいて、記憶手段に格納されてマイクロプロセッサによって実行されるためのPLC用のシステムプログラムを格納した記録媒体を提供する。記憶手段は、システムプログラム、制御プログラム、およびスケジュール構築データの格納に用いられる。マイクロプロセッサは、記憶手段に格納されたシステムプログラムおよび制御プログラムを実行する。通信回路は、制御プログラムの実行によって生成される出力データを送信および制御プログラムの実行に使用される入力データを受信する。システムプログラムは、制御プログラムの実行を制御するためのプロシージャと出力データの出力および入力データの入力を制御するためのプロシージャとが少なくとも収録されているプロシージャのライブラリを含む。システムプログラムは、プロシージャのライブラリに収録されているプロシージャの実行順序の指定を含むスケジュール構築データが記憶手段に格納されているときに、マイクロプロセッサに、スケジュール構築データに含まれているプロシージャの実行順序の指定に従ってプロシージャのライブラリに収録されているプロシージャを実行させる。
好ましくは、スケジュール構築データは、プロシージャのライブラリに収録されているプロシージャを用いてスレッドを生成するための指定を含み、システムプログラムは、PLCの制御動作の実行準備処理として、スケジュール構築データに含まれている、スレッドを生成するための指定に従って、スレッドを生成する処理を含む。
さらに好ましくは、スケジュール構築データは、スレッドについてのデータとして、スレッドの実行中に他のスレッドを起動するための指定を含む。
本発明のさらに別の局面に従えば、上述のPLCのCPUユニットと、PLCの使用を支援するためのPLCサポート装置とを含むPLCシステムを提供する。PLCサポート装置は、記憶部と、演算部とを含む。記憶部は、PLCサポートプログラムおよびスケジュール構築データの格納に用いられる。PLCサポートプログラムは、スケジュール構築データをPLCのCPUユニットが取得可能であるようにして出力するための出力処理を、演算部に実行させる。
本発明のさらに別の局面に従えば、制御対象を制御するPLCのCPUユニットの使用を支援するためのPLCサポート装置を提供する。PLCのCPUユニットは、制御プログラムの実行を制御するためのプロシージャと、制御プログラムの実行によって生成される出力データの出力および制御プログラムの実行に使用される入力データの入力を制御するためのプロシージャとが少なくとも収録されているプロシージャのライブラリと、プロシージャのライブラリに収録されているプロシージャの実行順序の指定を含むスケジュール構築データを取得するスケジュール構築データ取得手段とを含む。PLCサポート装置は、記憶部と、演算部とを含む。記憶部は、PLCサポートプログラムおよびスケジュール構築データの格納に用いられる。PLCサポートプログラムは、スケジュール構築データをPLCのCPUユニットが取得可能であるようにして出力するための出力処理を、演算部に実行させる。
本発明のさらに別の局面に従えば、制御対象を制御するPLCのCPUユニットの使用を支援するためのPLCサポート装置において実行されるためのPLCサポートプログラムを提供する。PLCのCPUユニットは、制御プログラムの実行を制御するためのプロシージャと、制御プログラムの実行によって生成される出力データの出力および制御プログラムの実行に使用される入力データの入力を制御するためのプロシージャとが少なくとも収録されているプロシージャのライブラリと、プロシージャのライブラリに収録されているプロシージャの実行順序の指定を含むスケジュール構築データを取得するスケジュール構築データ取得手段とを含む。PLCサポート装置は、記憶部と、演算部とを含む。記憶部は、PLCサポートプログラムおよびスケジュール構築データの格納に用いられる。PLCサポートプログラムは、スケジュール構築データをPLCのCPUユニットが取得可能であるようにして出力するための出力処理を、演算部に実行させる。
本発明のさらに別の局面に従えば、制御対象を制御するPLCのCPUユニットの使用を支援するためのPLCサポート装置において実行されるためのPLCサポートプログラムを格納した記録媒体を提供する。PLCのCPUユニットは、制御プログラムの実行を制御するためのプロシージャと、制御プログラムの実行によって生成される出力データの出力および制御プログラムの実行に使用される入力データの入力を制御するためのプロシージャとが少なくとも収録されているプロシージャのライブラリと、プロシージャのライブラリに収録されているプロシージャの実行順序の指定を含むスケジュール構築データを取得するスケジュール構築データ取得手段とを含む。PLCサポート装置は、記憶部と、演算部とを含む。記憶部は、PLCサポートプログラムおよびスケジュール構築データの格納に用いられる。PLCサポートプログラムは、スケジュール構築データをPLCのCPUユニットが取得可能であるようにして出力するための出力処理を、演算部に実行させる。
本発明によれば、システムプログラムを入れ替えることなく、または共通のシステムプログラムを用いながら、PLCの制御動作のスケジュールについての高い自由度を実現することできる。
本発明の実施の形態に係るPLCシステムの概略構成を示す模式図である。 本発明の実施の形態に係るCPUユニットのハードウェア構成を示す模式図である。 本発明の実施の形態に係るCPUユニットで実行されるソフトウェア構成を示す模式図である。 本発明の実施の形態に係るCPUユニットのメインメモリの領域構成を示す模式図である。 本発明の実施の形態に係るCPUユニットに接続して用いられるPLCサポート装置のハードウェア構成を示す模式図である。 本発明の実施の形態に係るCPUユニットに接続して用いられるPLCサポート装置のソフトウェア構成を示す模式図である。 本発明の実施の形態1に係るCPUユニットにおけるシステムプログラムの全体処理を示すフローチャートである。 本発明の実施の形態1において用意されるタスクの設定項目と各設定項目の説明とを表形式で示す図である。 本発明の実施の形態1において用意されているスレッドの設定項目と各設定項目の説明とを表形式で示す図である。 本発明の実施の形態1において用意されているプロシージャの1つである、制御サイクル開始プロシージャについて、その機能、設定項目および設定項目の説明を示す図である。 本発明の実施の形態1において用意されている、制御サイクル開始プロシージャ以外のプロシージャについて、各プロシージャの名称および機能を示す図である。 本発明の実施の形態1のスケジュール例1に対応するスケジュール構築データ234を示す図である。 本発明の実施の形態1のスケジュール例1の第kサイクルのシーケンス図である。 本発明の実施の形態1のスケジュール例1の第k+1サイクルのシーケンス図である。 本発明の実施の形態1のスケジュール例1において、制御Aスレッドの実行が第kサイクル内に終了しない場合の動作を示すシーケンス図である。 本発明の実施の形態1のスケジュール例1において、制御Aスレッドの実行が第kサイクル内に終了しない場合の動作を示すシーケンス図である。 本発明の実施の形態1において用意される同期入力コピープロシージャの動作を説明するためのシーケンス図である。 本発明の実施の形態1において用意される同期出力コピープロシージャの動作を説明するためのシーケンス図である。 本発明の実施の形態1において用意される変数配信プロシージャおよび変数参照開始プロシージャの動作を説明するためのシーケンス図である。 本発明の実施の形態1のスケジュール例2に対応するスケジュール構築データ234を示す図である。 本発明の実施の形態1のスケジュール例2の第kサイクルのシーケンス図である。 本発明の実施の形態1のスケジュール例3に対応するスケジュール構築データを示す図である。 本発明の実施の形態1のスケジュール例3の第kサイクルのシーケンス図である。 本発明の実施の形態1のスケジュール例3の第k+1サイクルのシーケンス図である。 本発明の実施の形態1のスケジュール例4に対応するスケジュール構築データを示す図である。 本発明の実施の形態1のスケジュール例4の第kサイクルのシーケンス図である。 本発明の実施の形態1のスケジュール例4の第k+1サイクルのシーケンス図である。 本発明の実施の形態1のスケジュール例5に対応するスケジュール構築データを示す図である。 本発明の実施の形態1のスケジュール例5の第kサイクルのシーケンス図である。 本発明の実施の形態1のスケジュール例6に対応するシーケンス図である。 本発明の実施の形態1のスケジュール例6において、制御プログラム内のプログラム構成と指示の流れとについて説明するための模式図である。 本発明の実施の形態1のスケジュール例7に対応するスケジュール構築データを示す図である。 本発明の実施の形態1のスケジュール例7の第kサイクルのシーケンス図である。 本発明の実施の形態1のスケジュール例7の第k+1サイクルのシーケンス図である。 本発明の実施の形態1のスケジュール例8に対応するスケジュール構築データを示す図である。 本発明の実施の形態1のスケジュール例8の第kサイクルおよび第k+1サイクルのシーケンス図である。 本発明の実施の形態1のスケジュール例9に対応するスケジュール構築データを示す図である。 本発明の実施の形態1のスケジュール例9の第kサイクルおよび第k+1サイクルのシーケンス図である。 本発明の実施の形態2において用意されるスレッドの設定項目と各設定項目の説明とを表形式で示す図である。 本発明の実施の形態2において用意されているプロシージャの名称および機能を示す図である。 本発明の実施の形態2のスケジュール例に対応するスケジュール構築データを示す図である。 本発明の実施の形態2のスケジュール例の第kサイクルのシーケンス図である。 本発明の実施の形態2のスケジュール例の第k+1サイクルのシーケンス図である。 本発明の実施の形態3に係る各プロシージャが共通して有する実行制御機能が提供する処理を示すフローチャートである。 本発明の実施の形態3において用意されているプロシージャの1つである、制御サイクル開始プロシージャについて、その機能、設定項目および設定項目の説明を示す図である。 本発明の実施の形態3において用意されている、制御サイクル開始プロシージャ以外のプロシージャについて、各プロシージャの名称および機能を示す図である。 本発明の実施の形態3のスケジュール例に対応するスケジュール構築データを示す図である。 図47のスケジュール構築データに対応するスケジュール例の第kサイクルのシーケンス図である。 図47のスケジュール構築データに対応するスケジュール例の第k+1サイクルのシーケンス図である。
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
<A.システム構成>
本実施の形態に係るPLCは、機械や設備などの制御対象を制御する。本実施の形態に係るPLCは、その構成要素としてCPUユニットを含む。CPUユニットは、マイクロプロセッサと、記憶手段と、通信回路とを含む。記憶手段は、プログラムの実行を制御するシステムプログラム、制御プログラム、およびスケジュール構築データの格納に用いられる。スケジュール構築データは、本実施の形態に係るPLCの制御動作を高い自由度でスケジュールするための設定値などを含む。このスケジュール構築データの詳細については後述する。
マイクロプロセッサは、記憶手段に格納されたシステムプログラムおよび制御プログラムを実行する。通信回路は、制御プログラムの実行によって生成される出力データを送信するとともに制御プログラムの実行に使用される入力データを受信する。まず、図1を参照して、本実施の形態に係るPLC1のシステム構成について説明する。
図1は、本発明の実施の形態に係るPLCシステムの概略構成を示す模式図である。図1を参照して、PLCシステムSYSは、PLC1と、PLC1とフィールドネットワーク2を介して接続されるサーボモータドライバ3およびリモートIOターミナル5と、フィールド機器である検出スイッチ6およびリレー7とを含む。また、PLC1には、接続ケーブル10などを介してPLCサポート装置8が接続される。
PLC1は、主たる演算処理を実行するCPUユニット13と、1つ以上のIOユニット14と、特殊ユニット15とを含む。これらのユニットは、PLCシステムバス11を介して、データを互いに遣り取りできるように構成される。また、これらのユニットには、電源ユニット12によって適切な電圧の電源が供給される。なお、PLC1として構成される各ユニットは、PLCメーカーが提供するものであるので、PLCシステムバス11は、一般にPLCメーカーごとに独自に開発され、使用されている。これに対して、後述するようにフィールドネットワーク2については、異なるメーカーの製品同士が接続できるように、その規格などが公開されている場合も多い。
CPUユニット13の詳細については、図2を参照して後述する。
IOユニット14は、一般的な入出力処理に関するユニットであり、オン/オフといった2値化されたデータの入出力を司る。すなわち、IOユニット14は、検出スイッチ6などのセンサが何らかの対象物を検出している状態(オン)および何らの対象物も検出していない状態(オフ)のいずれであるかという情報を収集する。また、IOユニット14は、リレー7やアクチュエータといった出力先に対して、活性化するための指令(オン)および不活性化するための指令(オフ)のいずれかを出力する。
特殊ユニット15は、アナログデータの入出力、温度制御、特定の通信方式による通信といった、IOユニット14ではサポートしない機能を有する。
フィールドネットワーク2は、CPUユニット13と遣り取りされる各種データを伝送する。フィールドネットワーク2としては、典型的には、各種の産業用イーサネット(登録商標)を用いることができる。産業用イーサネット(登録商標)としては、たとえば、EtherCAT(登録商標)、Profinet IRT、MECHATROLINK(登録商標)−III、Powerlink、SERCOS(登録商標)−III、CIP Motionなどが知られており、これらのうちのいずれを採用してもよい。さらに、産業用イーサネット(登録商標)以外のフィールドネットワークを用いてもよい。たとえば、モーション制御を行わない場合であれば、DeviceNet、CompoNet/IP(登録商標)などを用いてもよい。
なお、図1には、PLCシステムバス11およびフィールドネットワーク2の両方を有するPLCシステムSYSを例示するが、一方のみを搭載するシステム構成を採用することもできる。たとえば、フィールドネットワーク2ですべてのユニットを接続してもよい。あるいは、フィールドネットワーク2を使用せずに、サーボモータドライバ3をPLCシステムバス11に直接接続してもよい。さらに、フィールドネットワーク2の通信ユニットをPLCシステムバス11に接続し、CPUユニット13から当該通信ユニット経由で、フィールドネットワーク2に接続された機器との間の通信を行うようにしてもよい。
なお、PLC1は、CPUユニット13にIOユニット14の機能やサーボモータドライバ3の機能を持たせることにより、IOユニット14やサーボモータドライバ3などを介さずにCPUユニット13が直接制御対象を制御する構成でもよい。
サーボモータドライバ3は、フィールドネットワーク2を介してCPUユニット13と接続されるとともに、CPUユニット13からの指令値に従ってサーボモータ4を駆動する。より具体的には、サーボモータドライバ3は、PLC1から一定周期で、位置指令値、速度指令値、トルク指令値といった指令値を受ける。また、サーボモータドライバ3は、サーボモータ4の軸に接続されている位置センサ(ロータリーエンコーダ)やトルクセンサといった検出器から、位置、速度(典型的には、今回位置と前回位置との差から算出される)、トルクといったサーボモータ4の動作に係る実測値を取得する。そして、サーボモータドライバ3は、CPUユニット13からの指令値を目標値に設定し、実測値をフィードバック値として、フィードバック制御を行う。すなわち、サーボモータドライバ3は、実測値が目標値に近づくようにサーボモータ4を駆動するための電流を調整する。なお、サーボモータドライバ3は、サーボモータアンプと称されることもある。
また、図1には、サーボモータ4とサーボモータドライバ3とを組み合わせたシステム例を示すが、その他の構成、たとえば、パルスモータとパルスモータドライバとを組み合わせたシステムを採用することもできる。
図1に示すPLCシステムSYSのフィールドネットワーク2には、さらに、リモートIOターミナル5が接続されている。リモートIOターミナル5は、基本的には、IOユニット14と同様に、一般的な入出力処理に関する処理を行う。より具体的には、リモートIOターミナル5は、フィールドネットワーク2でのデータ伝送に係る処理を行うための通信カプラ52と、1つ以上のIOユニット53とを含む。これらのユニットは、リモートIOターミナルバス51を介して、データを互いに遣り取りできるように構成される。
PLCサポート装置8の詳細については後述する。
<B.CPUユニットのハードウェア構成>
次に、図2を参照して、CPUユニット13のハードウェア構成について説明する。図2は、本発明の実施の形態に係るCPUユニット13のハードウェア構成を示す模式図である。図2を参照して、CPUユニット13は、マイクロプロセッサ100と、チップセット102と、メインメモリ104と、不揮発性メモリ106と、システムタイマ108と、PLCシステムバスコントローラ120と、フィールドネットワークコントローラ140と、USBコネクタ110とを含む。チップセット102と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。
マイクロプロセッサ100およびチップセット102は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、マイクロプロセッサ100は、チップセット102から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット102は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、マイクロプロセッサ100に必要な命令コードを生成する。さらに、チップセット102は、マイクロプロセッサ100での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
マイクロプロセッサ100は、以下に説明する実施の形態1〜3においては、マルチコアであることを明示していない場合には、シングルコアであるとする。マルチコアとはコア数が2以上の場合を意味する(コア数が2の場合も含む)。
CPUユニット13は、記憶手段として、メインメモリ104および不揮発性メモリ106を有する。
メインメモリ104は、揮発性の記憶領域(RAM)であり、CPUユニット13への電源投入後にマイクロプロセッサ100で実行されるべき各種プログラムを保持する。また、メインメモリ104は、マイクロプロセッサ100による各種プログラムの実行時の作業用メモリとしても使用される。このようなメインメモリ104としては、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)といったデバイスが用いられる。
一方、不揮発性メモリ106は、リアルタイムOS(Operating System)、PLC1のシステムプログラム、ユーザプログラム、モーション演算プログラム、システム設定パラメータといったデータを不揮発的に保持する。これらのプログラムやデータは、必要に応じて、マイクロプロセッサ100がアクセスできるようにメインメモリ104にコピーされる。このような不揮発性メモリ106としては、フラッシュメモリのような半導体メモリを用いることができる。あるいは、ハードディスクドライブのような磁気記録媒体や、DVD−RAM(Digital Versatile Disk Random Access Memory)のような光学記録媒体などを用いることもできる。
システムタイマ108は、一定周期ごとに割り込み信号を発生してマイクロプロセッサ100に提供する。典型的には、ハードウェアの仕様によって、複数の異なる周期でそれぞれ割り込み信号を発生するように構成されるが、OS(Operating System)やBIOS(Basic Input Output System)などによって、任意の周期で割り込み信号を発生するように設定することもできる。このシステムタイマ108が発生する割り込み信号を利用して、後述するような制御サイクルごとの制御動作が実現される。
CPUユニット13は、通信回路として、PLCシステムバスコントローラ120およびフィールドネットワークコントローラ140を有する。これらの通信回路は、出力データの送信および入力データの受信を行う。
なお、CPUユニット13自体にIOユニット14やサーボモータドライバ3の機能を持たせる場合は、通信回路による出力データの送信および入力データの受信は、それらの機能を担う部分を通信の相手方としてCPUユニット13の内部で行われる送信および受信となる。
PLCシステムバスコントローラ120は、PLCシステムバス11を介したデータの遣り取りを制御する。より具体的には、PLCシステムバスコントローラ120は、DMA(Dynamic Memory Access)制御回路122と、PLCシステムバス制御回路124と、バッファメモリ126とを含む。なお、PLCシステムバスコントローラ120は、PLCシステムバスコネクタ130を介してPLCシステムバス11と内部的に接続される。
バッファメモリ126は、PLCシステムバス11を介して他のユニットへ出力されるデータ(以下「出力データ」とも称す。)の送信バッファ、および、PLCシステムバス11を介して他のユニットから入力されるデータ(以下「入力データ」とも称す。)の受信バッファとして機能する。なお、マイクロプロセッサ100による演算処理によって作成された出力データは、原始的にはメインメモリ104に格納される。そして、特定のユニットへ転送されるべき出力データは、メインメモリ104から読み出されて、バッファメモリ126に一次的に保持される。また、他のユニットから転送された入力データは、バッファメモリ126に一次的に保持された後、メインメモリ104に移される。
DMA制御回路122は、メインメモリ104からバッファメモリ126への出力データの転送、および、バッファメモリ126からメインメモリ104への入力データの転送を行う。
PLCシステムバス制御回路124は、PLCシステムバス11に接続される他のユニットとの間で、バッファメモリ126の出力データを送信する処理および入力データを受信してバッファメモリ126に格納する処理を行う。典型的には、PLCシステムバス制御回路124は、PLCシステムバス11における物理層およびデータリンク層の機能を提供する。
フィールドネットワークコントローラ140は、フィールドネットワーク2を介したデータの遣り取りを制御する。すなわち、フィールドネットワークコントローラ140は、用いられるフィールドネットワーク2の規格に従い、出力データの送信および入力データの受信を制御する。たとえば、EtherCAT(登録商標)規格に従うフィールドネットワーク2が採用される場合には、通常のイーサネット(登録商標)通信を行うためのハードウェアを含む、フィールドネットワークコントローラ140が用いられる。EtherCAT(登録商標)規格では、通常のイーサネット(登録商標)規格に従う通信プロトコルを実現する一般的なイーサネット(登録商標)コントローラを利用できる。フィールドネットワーク2として採用される産業用イーサネット(登録商標)の種類によっては、通常の通信プロトコルとは異なる専用仕様の通信プロトコルに対応した特別仕様のイーサネット(登録商標)コントローラが用いられる。また、産業用イーサネット(登録商標)以外のフィールドネットワークを採用した場合には、当該規格に応じた専用のフィールドネットワークコントローラが用いられる。
バッファメモリ146は、フィールドネットワーク2を介して他の装置などへ出力されるデータ(このデータについても、以下「出力データ」と称す。)の送信バッファ、および、フィールドネットワーク2を介して他の装置などから入力されるデータ(このデータについても、以下「入力データ」とも称す。)の受信バッファとして機能する。上述したように、マイクロプロセッサ100による演算処理によって作成された出力データは、原始的にはメインメモリ104に格納される。そして、特定の装置へ転送されるべき出力データは、メインメモリ104から読み出されて、バッファメモリ146に一次的に保持される。また、他の装置から転送された入力データは、バッファメモリ146に一次的に保持された後、メインメモリ104に移される。
DMA制御回路142は、メインメモリ104からバッファメモリ146への出力データの転送、および、バッファメモリ146からメインメモリ104への入力データの転送を行う。
フィールドネットワーク制御回路144は、フィールドネットワーク2に接続される他の装置との間で、バッファメモリ146の出力データを送信する処理および入力データを受信してバッファメモリ146に格納する処理を行う。典型的には、フィールドネットワーク制御回路144は、フィールドネットワーク2における物理層およびデータリンク層の機能を提供する。
USBコネクタ110は、PLCサポート装置8とCPUユニット13とを接続するためのインターフェイスである。典型的には、PLCサポート装置8から転送される、CPUユニット13のマイクロプロセッサ100で実行可能なプログラムなどは、USBコネクタ110を介してPLC1に取込まれる。
<C.CPUユニットのソフトウェア構成>
次に、図3を参照して、本実施の形態に係る各種機能を提供するためのソフトウェア群について説明する。これらのソフトウェアに含まれる命令コードは、適切なタイミングで読み出され、CPUユニット13のマイクロプロセッサ100によって実行される。
図3は、本発明の実施の形態に係るCPUユニット13で実行されるソフトウェア構成を示す模式図である。図3を参照して、CPUユニット13で実行されるソフトウェアとしては、リアルタイムOS200と、システムプログラム210と、ユーザプログラム236との3階層になっている。また、制御動作を開始する前には制御動作用のスレッドおよび独立プロシージャ222が生成され、制御動作時に実行される。制御動作用のスレッドおよび独立プロシージャ222の生成のために、スケジュール構築データ234が使用される。このスケジュール構築データ234の詳細については、後述する。
リアルタイムOS200は、CPUユニット13のコンピュータアーキテクチャに応じて設計されており、マイクロプロセッサ100がシステムプログラム210およびユーザプログラム236を実行するための基本的な実行環境を提供する。このリアルタイムOS200は、典型的には、PLCのメーカーあるいは専門のソフトウェア会社などによって提供される。
システムプログラム210は、PLC1としての機能を提供するためのソフトウェア群である。具体的には、システムプログラム210は、プロシージャライブラリ214と、スケジューラプログラム212と、シーケンス命令演算プログラム232と、モーション演算プログラム234とを含む。
ユーザプログラム236は、ユーザにおける制御目的に応じて作成される。すなわち、PLCシステムSYSを用いて制御する対象のライン(プロセス)などに応じて、任意に設計されるプログラムである。
後述するように、ユーザプログラム236は、シーケンス命令演算プログラム232およびモーション演算プログラム234と協働して、ユーザにおける制御目的を実現する。すなわち、ユーザプログラム236は、シーケンス命令演算プログラム232およびモーション演算プログラム234によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。そのため、ユーザプログラム236、シーケンス命令演算プログラム232、およびモーション演算プログラム234を、制御プログラム230と総称する場合もある。
このように、CPUユニット13のマイクロプロセッサ100は、記憶手段に格納されたシステムプログラム210およびユーザプログラム236を実行する。
以下、各プログラムについてより詳細に説明する。
ユーザプログラム236は、上述したように、ユーザにおける制御目的(たとえば、対象のラインやプロセス)に応じて作成される。ユーザプログラム236は、典型的には、CPUユニット13のマイクロプロセッサ100で実行可能なオブジェクトプログラム形式になっている。このユーザプログラムは、PLCサポート装置8などにおいて、ラダー言語などによって記述されたソースプログラムがコンパイルされることで生成される。そして、生成されたオブジェクトプログラム形式のユーザプログラムは、PLCサポート装置8から接続ケーブル10を介してCPUユニット13へ転送され、不揮発性メモリ106などに格納される。
プロシージャライブラリ214は、制御動作用のスレッドまたは独立プロシージャの構成要素(コンポーネント)となる各種のプロシージャを収録したライブラリである。プロシージャとは、プログラム内で繰り返し出現する処理を行うために、一連の命令を一つの手順としてまとめたものをいう。実装例として、ライブラリに収録されている状態のプロシージャはオブジェクト・クラスであり、制御動作用のスレッドまたは独立プロシージャの構成要素となっている状態のプロシージャはオブジェクト・インスタンスである。
スケジューラプログラム212は、スケジュール構築データ224に含まれる指定に従い、制御動作用のスレッドおよび独立プロシージャ222を生成する。
スケジュール構築データ224は、PLCサポート装置8から入力される。スケジュール構築データ224は、CPUユニット13の製造時に不揮発性メモリ106に格納されてもよい。スケジュール構築データ224は、プロシージャライブラリ214に収録されているプロシージャの実行順序の指定を含む。
制御動作用のスレッドおよび独立プロシージャ222のうち、制御動作用のスレッドは、制御プログラムの実行を制御するためのプロシージャと、出力データの出力および入力データの入力を制御するためのプロシージャとを構成要素として含む。制御動作用のスレッドおよび独立プロシージャ222のうち、独立プロシージャは、スレッドに属さずに実行されるプロシージャである。
シーケンス命令演算プログラム232は、ユーザプログラムで使用されるある種のシーケンス命令が実行されるときに呼び出されて、その命令の内容を実現するために実行されるプログラムである。
モーション演算プログラム234は、ユーザプログラムによる指示に従って実行され、サーボモータドライバ3やパルスモータドライバといったモータドライバに対して出力する指令値を実行されるごとに算出するプログラムである。
リアルタイムOS200は、複数のプログラムを時間の経過に従い切り替えて実行するための環境を提供する。
プロシージャライブラリ214、スケジューラプログラム212、スケジュール構築データ224、および制御プログラム230は、記憶手段であるメインメモリ104および不揮発性メモリ106に格納される。
<D.メインメモリ構成>
次に、図4を参照して、CPUユニット13のメインメモリ104に構成される記憶領域について説明する。
図4は、本発明の実施の形態に係るCPUユニット13のメインメモリ104の領域構成を示す模式図である。図4を参照して、メインメモリ104には、各種のプログラム領域1041と、制御プログラムの作業領域1042と、PLCシステムバス送信バッファ1043と、PLCシステムバス受信バッファ1044と、フィールドネットワーク送信バッファ1045と、フィールドネットワーク受信バッファ1046とが形成される。
制御プログラムの作業領域1042には、各制御プログラムのローカル変数領域のほか、グローバル変数領域1042aおよび変数同期バッファ領域1042bがシステムプログラム210によって生成される。制御プログラムの作業領域1042には、さらに、各出力データに対応する出力同期バッファが生成される出力同期バッファ領域1042c、および、各入力データに対応する入力同期バッファが生成される入力同期バッファ領域1042dが、システムプログラム210によって生成される。
また、PLCシステムバス送信バッファ1043およびフィールドネットワーク送信バッファ1045(以下、両者を「送信バッファ」と総称する)、ならびに、PLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046(以下、両者を「受信バッファ」と総称する)についても、システムプログラム210によって生成される。
PLCシステムバスコントローラ120のDMA制御回路122は、PLCシステムバス送信バッファ1043に格納されている出力データをPLCシステムバスコントローラ120のバッファメモリ126へ転送するとともに、バッファメモリ126に格納されている入力データをPLCシステムバス受信バッファ1044へ転送する。この転送された入力データは、PLCシステムバス受信バッファ1044に格納される。
フィールドネットワークコントローラ140のDMA制御回路142は、フィールドネットワーク送信バッファ1045に格納されている出力データをフィールドネットワークコントローラ140のバッファメモリ146へ転送するとともに、バッファメモリ146に格納されている入力データをフィールドネットワーク受信バッファ1046へ転送する。この転送された入力データは、フィールドネットワーク受信バッファ1046に格納される。
制御プログラムの作業領域1042、PLCシステムバス送信バッファ1043、PLCシステムバス受信バッファ1044、フィールドネットワーク送信バッファ1045、および、フィールドネットワーク受信バッファ1046は、それぞれのアクセスを互いに独立に制御できるように構成されている。そのため、たとえば、以下に示す(1)〜(3)といった複数の動作を並列実行することができる。
(1) マイクロプロセッサ100が行う、ユーザプログラム実行に伴う制御プログラムの作業領域1042へのアクセス
(2) PLCシステムバスコントローラ120のDMA制御回路122が行う、メインメモリ104上のPLCシステムバス送信バッファ1043および/またはPLCシステムバス受信バッファ1044とPLCシステムバスコントローラ120内のバッファメモリ126との間のデータ転送のための、メインメモリ104上のPLCシステムバス送信バッファ1043および/またはPLCシステムバス受信バッファ1044へのアクセス
(3) フィールドネットワークコントローラ140のDMA制御回路142が行う、メインメモリ104上のフィールドネットワーク送信バッファ1045および/またはフィールドネットワーク受信バッファ1046とフィールドネットワークコントローラ140内のバッファメモリ146との間のデータ転送のための、メインメモリ104上のフィールドネットワーク送信バッファ1045および/またはフィールドネットワーク受信バッファ1046へのアクセス
<E.サポート装置>
次に、本実施の形態に係るPLCサポート装置8について説明する。PLCサポート装置8は、PLC1のCPUユニット13の使用を支援するためのものであり、具体的には、PLC1で実行されるプログラムの作成およびPLC1のメンテナンスなどの機能を提供する。
図5は、本発明の実施の形態に係るCPUユニットに接続して用いられるPLCサポート装置8のハードウェア構成を示す模式図である。図5を参照して、PLCサポート装置8は、典型的には、汎用のコンピュータで構成される。なお、メンテナンス性の観点からは、可搬性に優れたノート型のパーソナルコンピュータが好ましい。
図5を参照して、PLCサポート装置8は、OSを含む各種プログラムを実行するCPU81と、BIOSや各種データを格納するROM(Read Only Memory)82と、CPU81でのプログラムの実行に必要なデータを格納するための作業領域を提供するメモリRAM83と、CPU81で実行されるプログラムなどを不揮発的に格納するハードディスク(HDD)84とを含む。
PLCサポート装置8は、さらに、ユーザからの操作を受け付けるキーボード85およびマウス86と、情報をユーザに提示するためのモニタ87とを含む。さらに、PLCサポート装置8は、PLC1(CPUユニット13)などと通信するための通信インターフェイス(IF)89を含む。
後述するように、PLCサポート装置8で実行される各種プログラムは、CD−ROM9に格納されて流通する。このCD−ROM9に格納されたプログラムは、CD−ROM(Compact Disk-Read Only Memory)ドライブ88によって読み取られ、ハードディスク(HDD)84などへ格納される。あるいは、上位のホストコンピュータなどからネットワークを通じてプログラムをダウンロードするように構成してもよい。
上述したように、PLCサポート装置8は、汎用的なコンピュータを用いて実現されるので、これ以上の詳細な説明は行わない。
図6は、本発明の実施の形態に係るCPUユニットに接続して用いられるPLCサポート装置8のソフトウェア構成を示す模式図である。図6を参照して、PLCサポート装置8ではOS310が実行され、PLCサポートプログラム320に含まれる各種のプログラムを実行可能な環境が提供される。
PLCサポートプログラム320は、エディタプログラム321と、コンパイラプログラム322と、デバッガプログラム323と、スケジュール構築データテンプレート324と、スケジュール構築データ作成プログラム325と、通信プログラム326とを含む。PLCサポートプログラム320に含まれるそれぞれのプログラムは、典型的には、CD−ROM9に格納された状態で流通して、PLCサポート装置8にインストールされる。
エディタプログラム321は、ユーザプログラムを作成するための入力および編集といった機能を提供する。より具体的には、エディタプログラム321は、ユーザがキーボード85やマウス86を操作してユーザプログラムのソースプログラム330を作成する機能に加えて、作成したソースプログラム330の保存機能および編集機能を提供する。また、エディタプログラム321は、外部からの制御プログラム(その中でも特に、ユーザプログラム)のソースプログラムを入力し、またユーザの操作により既存の制御プログラムのソースプログラムを編集する。
コンパイラプログラム322は、制御プログラムのソースプログラムをコンパイルして、CPUユニット13のマイクロプロセッサ100で実行可能なオブジェクトプログラム形式のユーザプログラムを生成する機能を提供する。
デバッガプログラム323は、制御プログラムのソースプログラムに対してデバッグを行うための機能を提供する。このデバッグの内容としては、ソースプログラムのうちユーザが指定した範囲を部分的に実行する、ソースプログラムの実行中における変数値の時間的な変化を追跡する、といった動作を含む。
スケジュール構築データテンプレート324は、多くのユーザで使用されるであろういくつかのスケジュールパターンを実現するためのスケジュール構築データを集めたものである。ユーザが自ら作成したスケジュール構築データをテンプレートとして追加できるようにしてもよい。
スケジュール構築データ作成プログラム325は、スケジュール構築データテンプレート324として登録されているいずれかのスケジュール構築データをそのまま使用することのユーザの決定を受け付けるか、そのような登録されているスケジュール構築データをユーザに一部変更させるか、新規にスケジュール構築データをユーザに入力させるかのいずれかの処理により、スケジュール構築データ234を作成する機能を提供する。ここでは、テンプレートとして登録されているスケジュール構築データをそのまま使用することもスケジュール構築データ234を作成する処理の概念に含むものとする。
通信プログラム326は、PLC1のCPUユニット13へ制御プログラムのCPUユニット13用のオブジェクトプログラム(ユーザプログラム236)およびスケジュール構築データ234を転送する機能を提供する。
PLCサポート装置8は、スケジュール構築データ作成プログラム325を有さずに、スケジュール構築データを1種類だけ保持し、そのスケジュール構築データをCPUユニットに転送するだけでもよい。
すなわち、PLCサポート装置8は、記憶部(図5のハードディスク(HDD)84など)と、演算部(図5のCPU81)とを含む。記憶部は、PLCサポートプログラム320およびスケジュール構築データ234の格納に用いられる。PLCサポートプログラム320は、スケジュール構築データをPLC1のCPUユニット13が取得可能であるようにして出力するための出力処理を演算部に実行させる。
スケジュール構築データをPLC1が取得可能であるようにして出力することには、図1に示す接続ケーブル10を介して出力する場合のほか、図示しないネットワークを介して直接に出力、または、図示しないネットワークに接続しているサーバコンピュータを介して間接的に出力する場合を含み、さらに、PLC1が読み取り可能な可搬型の記録媒体に出力する場合を含む。
PLC1のCPUユニット13がスケジュール構築データ234を取得するスケジュール構築データ取得手段には、これらのいずれかの経路によって出力されるスケジュール構築データ234を取得するための、接続ケーブル10を介する通信を行う通信回路、ネットワーク通信を行う通信回路、および記録媒体に対する読み取り回路を含む。
なお、PLC1のCPUユニット13は、メーカーにおける製造段階で記憶手段にスケジュール構築データ234が格納され、メーカーからの出荷後はスケジュール構築データ234の変更ができない構成であってもよい。
一般的には、PLC1に実装されるシステムプログラム210は、CPUユニット13の製造段階でCPUユニット13の不揮発性メモリ106へ格納される。ただし、CD−ROM9にシステムプログラム210を格納しておけば、ユーザは、CD−ROM9のシステムプログラム210をPLCサポート装置8にコピーし、通信プログラム326が提供する機能を利用してコピーしたシステムプログラム210をCPUユニット13へ転送することもできる。さらに、CD−ROM9に、PLC1のCPUユニット13で実行されるリアルタイムOS200を格納しておけば、リアルタイムOS200についてもユーザ操作によってPLC1へ再インストールできる。
以下、スケジュール構築データ234を使用してPLC1の制御動作をスケジュールする典型例として、実施の形態1〜3について説明する。
<F.実施の形態1>
以下に説明する実施の形態1では、タスクとスレッドとの階層構造を有するスケジュール構築のしくみを用いる。タスクは、1または複数のスレッドを含み、繰り返し実行の単位となる。
(f1:全体処理)
図7は、本発明の実施の形態1に係るCPUユニット13におけるシステムプログラム210の全体処理を示すフローチャートである。図7に示すように、まず、PLC1の制御動作の実行準備処理が実行され(ステップS1)、続いて、PLC1の制御動作の実行制御処理が実行される(ステップS2)。
制御動作の実行準備処理(ステップS1)には、グローバル変数領域1042aおよび変数同期バッファを生成する処理、受信バッファ(PLCシステムバス受信バッファ1044および/またはおよびフィールドネットワーク受信バッファ1046)および入力同期バッファを生成する処理、送信バッファ(PLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045)および出力同期バッファを生成する処理、制御動作のためのスレッドおよび独立プロシージャ222を生成する処理、各タスクの実行サイクル数、実行回数、および実行時間の各記憶領域を生成する処理、ならびに、各タスクの終了フラグを生成する処理が含まれる。これらの各処理の実行順序は、適宜設計される。
(f2:タスクおよびスレッド)
上述したように、実施の形態1においては、タスクとスレッドとの階層構造を有するスケジュール構築のしくみを用いる処理例について説明する。ここで、タスクおよびスレッドの詳細について説明する。
図8は、本発明の実施の形態1において用意されるタスクの設定項目と各設定項目の説明とを表形式で示す図である。図9は、本発明の実施の形態1において用意されているスレッドの設定項目と各設定項目の説明とを表形式で示す図である。本実施の形態に係るPLCサポートプログラム320では、各タスクについて、図8の「設定項目」の欄に記載されている内容を設定することができる。また、各スレッドについては、図9の「設定項目」の欄に記載されている内容を設定することができる。
図8および図9において、スレッドまたはプロシージャについて使用している「起動」という用語は、対象となるスレッドまたはプロシージャをリアルタイムOS200の実行待ち行列(queue)に追加することを意味する。リアルタイムOS200は、実行待ち行列に登録されたスレッドまたはプロシージャの中で実行優先度の高いものから順にマイクロプロセッサ100に実行させる。実行待ち行列に登録されていて実行されるのを待っている状態のスレッドまたはプロシージャを「Ready状態」にあるという。マイクロプロセッサ100によって実行されている状態のスレッドまたはプロシージャを「Run状態」にあるという。実行待ち行列に登録されていない状態のスレッドまたはプロシージャを「Sleep状態」にあるという。
図10は、本発明の実施の形態1において用意されているプロシージャの1つである、制御サイクル開始プロシージャについて、その機能、設定項目および設定項目の説明を示す図である。図11は、本発明の実施の形態1において用意されている、制御サイクル開始プロシージャ以外のプロシージャについて、各プロシージャの名称および機能を示す図である。
図10および図11に示すプロシージャのうち、制御サイクル開始プロシージャ(図10)、タスク開始プロシージャ(図11)、およびタスク終了プロシージャ(図11)のインスタンスは、独立プロシージャとして生成される。
以下、本実施の形態に係るスケジュール例1〜10について、対応するスケジュール構築データの例などとともに説明する。
(f3:スケジュール例1:実行サイクル周期内に実行終了する場合)
本発明の実施の形態1のスケジュール例1では、制御Aタスクと制御Bタスクとを実行する。制御Aタスクは、入出力Aスレッドと制御Aスレッドとを含み、制御Bスレッドは制御Bスレッドを含むものとする。制御Aタスクの実行サイクルは、制御サイクル1回分に相当し、制御Bタスクの実行サイクルは、制御サイクル2回分に相当する。第kサイクルにおいて、制御Aタスクおよび制御Bタスクの1つの実行サイクルが開始される。
図12は、本発明の実施の形態1のスケジュール例1に対応するスケジュール構築データ234を示す図である。図13は、本発明の実施の形態1のスケジュール例1の第kサイクルのシーケンス図である。図14は、本発明の実施の形態1のスケジュール例1の第k+1サイクルのシーケンス図である。
図12ではスケジュール構築データ234の内容を表形式で模式的に示しているが、実際に使用されるスケジュール構築データ234は、たとえばXML(Extensible Markup Language)を用いて記述されるなど、マイクロプロセッサ100が処理できる形式で記述される。
スケジュール例1におけるスケジュール構築データ234としては、図12の(1)に示すような制御サイクル開始プロシージャの設定内容、図12の(2)および(5)に示すようなタスクの設定内容、ならびに、図12の(3)、(4)および(6)に示すようなスレッドの設定内容を含む。
図12の(1)に示されるとおり、実施の形態1のスケジュール例1においては、制御サイクル開始プロシージャについて、制御サイクル開始条件として「制御サイクル開始割り込み」が設定されている。したがって、図10で説明されているとおり、制御サイクル開始プロシージャは、制御サイクル開始割り込み(図13では、第kサイクルを開始する制御サイクル開始割り込み)があると起動される。そして、優先度として「1」が設定されているので、制御サイクル開始プロシージャは、他のスレッドやプロシージャに優先して、起動されると直ちに実行される。また、制御サイクル開始プロシージャの機能は、『各タスクの設定項目「タスク開始処理」で指定されたプロシージャを起動する』ことである。具体的には、図12の(2)および(5)のそれぞれの「タスク開始処理」で「タスク開始プロシージャ」が指定されているので、制御サイクル開始プロシージャは、制御Aタスクのタスク開始プロシージャおよび制御Bタスクのタスク開始プロシージャを起動し、自身の実行を終了する。
制御サイクル開始プロシージャが実行終了すると、制御Aタスクのタスク開始プロシージャがRun状態となる。タスク開始プロシージャは、図11で説明されている機能を実行する。図12の(2)の「スレッド指定」で指定されているとおり、制御Aタスクには、「入出力Aスレッド」と「制御Aスレッド」とが含まれる。図12の(3)に示されるとおり、入出力Aスレッドの開始条件は「制御Aタスク」であるから、入出力Aスレッドは、タスク開始プロシージャの後続起動の対象となる。一方、制御Aスレッドの開始条件は「制御Aタスク」ではないから、制御Aスレッドは、タスク開始プロシージャの後続起動の対象とはならない。タスク開始プロシージャは、入出力Aスレッドを起動して、自身の実行を終了する。
制御Aタスクのタスク開始プロシージャが実行終了すると、制御Bタスクのタスク開始プロシージャがRun状態となる。タスク開始プロシージャは、図11で説明されている機能を実行した後、自身の実行を終了する。図12の(5)の「スレッド指定」で指定されるとおり、制御Bタスクには、「制御Bスレッド」が含まれる。図12の(6)を参照して、制御Bスレッドの開始条件は「制御Bタスク」ではないから、制御Bスレッドは、タスク開始プロシージャの後続起動の対象とはならず、制御Bタスクのタスク開始プロシージャは何も行わない。
制御Bタスクのタスク開始プロシージャが実行終了すると、入出力AスレッドがRun状態となる。図12の(3)の「プロシージャ指定」で列挙されているプロシージャが列挙されている順に実行される。
入出力AスレッドがRun状態になると、最初に、同期出力コピープロシージャが実行される。同期出力コピープロシージャの機能は、図11で説明されているとおりであり、制御Aタスクおよび制御Bタスクとも、現在の実行サイクル数は「1」であるから、制御Aタスクおよび制御Bタスクの両方について、あらかじめ指定された出力データが出力同期バッファから送信バッファへコピーされる。同期出力コピープロシージャの機能の詳細については、図18を参照して後述する。
次に、入出力指示プロシージャが実行される。すなわち、通信回路に入出力指示信号が与えられることにより、通信回路は、送信バッファに格納されている出力データを送信し、受信した入力データを受信バッファに格納し、通信終了通知信号をマイクロプロセッサ100に与える。たとえば、フィールドネットワーク2としてEtherCAT(登録商標)を用いる場合には、フィールドネットワークコントローラ140から送信されたフレームが、スレーブ機器とデータ交換をしながら、スレーブ機器を一巡して戻ってくる。フィールドネットワークコントローラ140は、戻ってきたフレームを自動的に受信する。したがって、入出力指示信号は、直接的には送信指示信号としての意味を持つが、間接的には受信をも指示することになる。
入出力指示プロシージャの実行に続いて、通信終了通知待ちプロシージャが実行される。すなわち、通信終了通知待ちプロシージャは、通信終了通知があれば入出力Aスレッドが再起動されるように設定し、入出力AスレッドをSleep状態にする。
入出力AスレッドがSleep状態の間に、制御タスクに属するスレッドおよびプロシージャよりも低い優先度が与えられて実行待ち行列に登録されている種々のシステム処理が実行される。
通信終了通知があれば、同期入力コピープロシージャが実行される。同期入力コピープロシージャの機能は図11で説明されているとおりであり、制御Aタスクおよび制御Bタスクとも、現在の実行サイクルカウンタは「1」であるから、制御Aタスクおよび制御Bタスクの両方について、あらかじめ指定された入力データが受信バッファから入力同期バッファへコピーされる。同期入力コピープロシージャの機能の詳細については、図17を参照して後述する。
出力コピーの対象となる出力データ、および、入力コピーの対象となる入力データについてのあらかじめの指定は、PLCサポート装置8から制御プログラム230の設定情報として与えられる。
次に、後続起動プロシージャが実行される。図12の(4)に示すとおり、制御Aスレッドの「開始条件」に入出力Aスレッドが指定されているから、後続起動プロシージャは、制御Aスレッドを起動する。
入出力Aスレッドが実行終了すると、制御AスレッドがRun状態となる。図12の(4)の「プロシージャ指定」で列挙されているプロシージャが列挙されている順に実行される。
制御AスレッドがRun状態になると、最初に、データトレースプロシージャが実行される。図11で説明されているとおり、データトレースプロシージャは、あらかじめ指定された変数の値をログファイルに記録する。この変数についてのあらかじめの指定も、PLCサポート装置8から制御プログラム230の設定情報として与えられる。
次に、変数参照開始プロシージャが実行される。すなわち、(後述の「制御プログラム指定」に指定されている)制御Aプログラムがリファラ側制御プログラムとして参照する変数について、変数同期バッファが書き換えられないようにするための処理が行われる。このような、変数参照開始プロシージャおよび変数配信プロシージャ(制御Bスレッド)によって実現される変数同期機能について、図19を参照して後述する。
次に、制御プログラム実行プロシージャが実行される。図12の(4)に示すとおり、制御Aスレッドの「制御プログラム指定」に「制御Aプログラム」が指定されているから、制御Aプログラムが実行される。制御Aプログラムは、ユーザにおける制御目的に応じた作成されたシーケンスプログラムであってもよいし、そのようなシーケンスプログラムがモーション命令を含んでいる場合には、シーケンスプログラムおよびそれに続いて実行されるモーション演算プログラムであってもよい。
制御Aプログラムの実行が終了すると、変数配信プロシージャが実行される。すなわち、制御Aプログラムがオーナー側制御プログラムとして更新し、制御Bプログラムがリファラ側制御プログラムとして参照するグローバル変数について、変数配信プロシージャが当該変数の内容を制御Bプログラムの変数同期バッファにコピーする。なお、オーナー側制御プログラムおよびリファラ側制御プログラムの詳細については、図19を参照して後述する。
次に、後続起動プロシージャが実行される。図12の(2)に示すとおり、制御Aタスクの「タスク終了条件」に制御Aスレッドが指定されている。また、図12の(6)に示すとおり、制御Bスレッドの「開始条件」に制御Aスレッドが指定されており、かつ、現在の制御Bタスクのタスク終了フラグはオフである。したがって、後続起動プロシージャは、制御Aタスクのタスク終了プロシージャと制御Bスレッドとを起動する。
制御Aスレッドが実行終了すると、制御Aタスクのタスク終了プロシージャがRun状態となる。タスク終了プロシージャは、図11で説明されている機能を実行する。
制御Aタスクのタスク終了プロシージャが実行終了すると、制御BスレッドがRun状態となる。図12の(6)の「プロシージャ指定」で列挙されているプロシージャが列挙されている順に実行される。
制御BスレッドがRun状態になると、最初に、変数参照開始プロシージャが実行される。すなわち、(後述の「制御プログラム指定」に指定されている)制御Bプログラムがリファラ側制御プログラムとして参照する変数について、変数同期バッファが書き換えられないようにするための処理が行われる。
次に、制御プログラム実行プロシージャが実行される。図12の(6)に示すとおり、制御Bスレッドの「制御プログラム指定」に「制御Bプログラム」が指定されているから、制御Bプログラムが実行される。制御Bプログラムは、ユーザにおける制御目的に応じた作成されたシーケンスプログラムであってもよいし、そのようなシーケンスプログラムがモーション命令を含んでいる場合には、シーケンスプログラムおよびそれに続いて実行されるモーション演算プログラムであってもよい。
図13では、制御Bプログラムの実行中に第k+1サイクルを開始する制御サイクル開始割り込みが入った場合を示している。制御サイクル開始割り込みにより、制御プログラムBは実行中断される。
図14に示すとおり、第k+1サイクルにおいては、制御Aタスクの処理および制御Bタスクのタスク開始プロシージャが第kサイクルの場合と同様に実行される。
入出力Aスレッドの通信終了通知待ち時間の間には、第kサイクルにおいて実行されたシステム処理よりも制御Bスレッドの方が優先度が高いので、制御プログラムBの実行が再開され、通信終了通知があると制御プログラムBは再び実行中断される。
制御Aタスクのタスク終了プロシージャが実行終了すると、制御プログラムBの実行が再開される。
制御Bプログラムの実行が終了すると、変数配信プロシージャが実行される。すなわち、制御Bプログラムがオーナー側制御プログラムとして更新し、制御Aプログラムがリファラ側制御プログラムとして参照するグローバル変数について、変数の内容が制御Aプログラムの変数同期バッファにコピーされる。
次に、後続起動プロシージャが実行される。図12の(5)に示すとおり、制御Bタスクの「タスク終了条件」に「制御Bスレッド」が指定されているので、後続起動プロシージャは、制御Bタスクのタスク終了プロシージャを起動する。
制御Bスレッドが実行終了すると、制御Bタスクのタスク終了プロシージャがRun状態となる。タスク終了プロシージャは、図11で説明されている機能を実行する。
制御Bタスクのタスク終了プロシージャが実行終了すると、次の制御サイクル開始割り込みがあるまでの間、種々のシステム処理が実行される。
以上説明したとおり、本発明の実施の形態1に係るPLC1のCPUユニット13のシステムプログラム210は、次の特徴を有している。すなわち、システムプログラム210は、制御プログラムの実行を制御するためのプロシージャと出力データの出力および入力データの入力を制御するためのプロシージャとが少なくとも収録されているプロシージャのライブラリ(プロシージャライブラリ214)を含む。そして、システムプログラム210は、プロシージャのライブラリに収録されているプロシージャの実行順序の指定を含むスケジュール構築データ234が記憶手段(メインメモリ104または不揮発性メモリ106)に格納されているときに、マイクロプロセッサ100に、スケジュール構築データに含まれているプロシージャの実行順序の指定に従ってプロシージャのライブラリに収録されているプロシージャを実行させる。なお、この特徴は、後述の実施の形態2および3にも共通している。
ここで、制御プログラム230の実行を制御するためのプロシージャの例は、変数参照開始プロシージャ、制御プログラム実行プロシージャ、および変数配信プロシージャである。出力データの出力および入力データの入力を制御するためのプロシージャの例は、同期出力コピープロシージャ、入出力指示プロシージャ、通信終了通知待ちプロシージャ、および、同期入力コピープロシージャである。
上記特徴は、具体的には、実施の形態1においては、次のようにして実現される。すなわち、スケジュール構築データ234は、プロシージャのライブラリ(プロシージャライブラリ214)に収録されているプロシージャを用いてスレッドを生成するための指定(図12の(3),(4),(6))を含む。システムプログラム210は、PLCの制御動作の実行準備処理として、スケジュール構築データ234に含まれている、スレッドを生成するための指定に従って、スレッドを生成する処理(図7のステップS1)を含む。これにより、リアルタイムOS200の実行待ち行列と実行優先度のしくみとを利用して、PLC1の制御動作の実行制御を行うことができる。なお、この特徴は、後述の実施の形態2にも共通している。
また、実施の形態1においては、スケジュール構築データ234は、スレッドについてのデータとして、スレッドの実行中に他のスレッドを起動するための指定(図12などに示すスレッドの「開始条件」の指定)を含む。これにより、優先度のしくみだけでは実現できないようなより高い自由度をもって、PLC1の制御動作の実行制御を行うことができる。なお、この特徴は、後述の実施の形態2にも共通している。
また、実施の形態1においては、スケジュール構築データ234は、1または複数のスレッドを含む、繰り返し実行の単位となるタスクを設定するための指定を含む。システムプログラム210は、PLC1の制御動作の実行準備処理として、スケジュール構築データ234に含まれているタスクを設定するための指定に従って、タスクを設定する処理(典型的には、図7のステップS1における独立プロシージャを生成する処理)を含む。これにより、繰り返し実行の単位がよりわかりやすくなる。また、実行サイクルの周期を個々のスレッドに設定するのではなくタスクに設定するようにすれば、実行サイクルの設定がより簡単になる。また、繰り返し実行の単位(タスク)について、実行回数を計数したり、実行時間を計測したりすることも行いやすくなる。
また、CPUユニット13は、出力データの送信と、入力データの受信と、入力データを使用して出力データを生成する制御プログラムの実行とを繰り返させるための、プロシージャの実行順序の指定を含むスケジュール構築データ234が記憶手段(メインメモリ104または不揮発性メモリ106)に格納されている場合に、制御動作の実行が可能である。
(f4:スケジュール例1:実行サイクル周期内に実行終了しない場合)
次に、タスクがそのタスクに設定された実行サイクル周期内に実行終了しなかった場合、すなわち実行サイクル超過時における動作について説明する。
図15および図16は、本発明の実施の形態1のスケジュール例1において、制御Aスレッドの実行が第kサイクル内に終了しない場合の動作を示すシーケンス図である。
上述の図12の(2),(5)に示すとおり、制御Aタスクおよび制御Bタスクの「サイクル超過許容回数」にそれぞれ「1」が指定されているので、制御Aタスクおよび制御Bタスクは、制御サイクル1回分だけ実行サイクルを延長することが許されている。
図15に示すとおり、制御Aプログラムは第k+1サイクルを開始する制御サイクル開始割り込みが発生するにいたるまでに実行終了しなかったので、リアルタイムOS200によって実行中断される。
図16に示すとおり、第k+1サイクルにおいて、制御サイクル開始プロシージャは、第kサイクルと同様に実行される。第k+1サイクルの開始時においては、第kサイクルで実行開始された制御Aタスクの実行が終了していないが、図11に記載のタスク開始プロシージャの「カウントアップ後に実行サイクル数が実行サイクル周期(n)を超えており、かつ、タスク終了フラグがオフである」条件に該当するので、制御サイクル開始プロシージャは入出力Aスレッドを起動する。このように、入出力Aスレッドは、サイクル超過のエラー処理が実行される場合および前制御サイクルの入出力Aスレッドが終了していない場合を除き、すべての制御サイクルにおいて実行される。第k+1サイクルにおける入出力Aスレッドの通信終了通知待ち時間の間には、制御Aプログラムが実行中断された箇所から実行される。さらに、入出力Aスレッドの実行終了後に制御Aプログラムが実行再開される。入出力Aスレッドの後続起動プロシージャは、本来であれば制御Aスレッドを起動するのであるが、制御Aスレッドはすでに起動されているので、制御Aスレッドを重ねて起動することはできない。
第k+1サイクルにおいて、制御Aタスクのタスク終了プロシージャが実行終了すると、制御BスレッドがRun状態となる。制御Bタスクの実行サイクルは第kサイクルから開始しているのであるが、第kサイクルにおいては制御Bスレッドを実行する時間がなかったので、制御Bスレッドは第k+1サイクルから実行開始される。
制御Bタスクの実行サイクルは、本来は第k+1サイクルで終了するのであるが、第k+1サイクル内で制御Bスレッドが実行終了しないので、制御Bタスクにも実行サイクル超過が発生する。
図11で説明されているとおり、実行サイクル周期にサイクル超過許容回数を加えた制御サイクル回数の内にタスクの実行が終了しなければ、実行サイクル超過のエラー処理が実行される。たとえば、制御動作を中止し、実行サイクル超過の発生が図示しないネットワークを介して上位コンピュータに報知される。
実施の形態1に係るPLC1のCPUユニット13においては、制御サイクルの周期を設定する手段が設けられる。制御サイクルの周期を設定する手段としては、制御サイクルの周期を指定する情報を取得するために用いられるPLCサポート装置8との通信手段、システムプログラム210に含まれている制御サイクルの周期を設定するプログラム、および、制御サイクル開始割り込み信号の周期を任意に設定可能に構成されているシステムタイマの構成といった、制御サイクルの周期を設定するために用いられる要素が該当する。制御サイクルの周期を指定する情報をPLCサポート装置8から取得する代わりに、制御サイクルの周期を指定するための入力を受け付けるための操作スイッチ等の入力デバイスをCPUユニット13自身に設けてもよい。
実施の形態1に係るPLC1のCPUユニット13における通信回路(PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140)は、制御サイクルごとに、出力データの送信および入力データの受信を行う。より具体的には、通信回路は、入出力指示プロシージャの実行によって発生する入出力指示信号を受けて、送信および受信を行う。それに代えて、通信回路が、システムタイマが発生する一定周期の信号によってトリガされることにより、制御サイクルごとの送信および受信を行うようにしてもよい。また、通信回路自身にタイマ回路を設けて、そのタイマ回路が発生する一定周期の信号に従って制御サイクルごとの送信および受信を行うようにしてもよい。
以上説明したとおり、実施の形態1に係るPLC1のCPUユニット13は、制御サイクルの周期を設定する手段を有する。通信回路は、制御サイクルごとに、出力データの送信および入力データの受信を行う。そして、スケジュール構築データ234は、制御サイクルの周期に等しい実行サイクルの周期で実行される制御プログラム(制御Aプログラム)について、マイクロプロセッサ100に、制御プログラムの実行が終了した制御サイクルの次の制御サイクルにおいて、通信回路による出力データの送信および入力データの受信の後に、制御プログラムの実行を開始させ、制御プログラムの実行が終了しなかった制御サイクルの次の制御サイクルにおいて、制御プログラムの未実行の部分を実行させるための、プロシージャの実行順序の指定を含む。このようなCPUユニット13によれば、PLC1のユーザは、制御プログラムの実行時間が散発的に長くなる状況において、PLC1のCPUユニット13が制御データの出力および入力のために制御サイクルと同期して行う通信の周期を、制御プログラムの最大実行時間よりも短い一定時間に設定することができる。
このような状況の一例は、制御プログラム230が、実行されるごとにモータドライバに対して出力される指令値を算出するモーション演算プログラムを含む場合である。モーション演算プログラムは、ユーザにおける制御目的に応じて作成されたユーザプログラム236(シーケンスプログラム)により起動された初回の実行において、指令値の算出を開始するために必要な初期処理を実行することにより後続の実行に要する時間よりも長い実行時間を必要とすることがある。そのような状況でも、CPUユニット13が制御データの出力および入力のために制御サイクルと同期して行う通信の周期を、制御プログラム230の最大実行時間よりも短い一定時間に設定することができる。
(f5:同期入力コピープロシージャ)
次に、同期入力コピープロシージャの機能の詳細について説明する。図17は、本発明の実施の形態1において用意される同期入力コピープロシージャの動作を説明するためのシーケンス図である。
図17に示すスケジュール例では、その実行サイクルが1制御サイクルである「入出力Cスレッド」、その実行サイクルが2制御サイクルである「制御Cスレッド」、および、その実行サイクルが4制御サイクルである「制御Dスレッド」の合計3つのスレッドが実行される場合を示す。
入出力Cスレッドの構成は、図13および14に示される入出力Aスレッドと同様であるとする。制御Cスレッドおよび制御Dスレッドの構成は、それぞれ、図13および14に示される制御Aスレッドおよび制御Bスレッドと同様であるが、実行サイクルの周期が制御Aスレッドおよび制御Bスレッドとは異なっているものとする。また、制御Cスレッドでは制御Cプログラムが実行され、制御Dスレッドでは制御Dプログラムが実行されるものとする。図17の各スレッドは、それぞれ別々のタスクに属しているものとする。
図17の受信バッファは、図4のPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046を表す。図17の入力同期バッファCは、制御Cスレッドにおいて実行される制御Cプログラムから参照される入力データごとに設けられる。同様に、図17の入力同期バッファDは、制御Dスレッドにおいて実行される制御Dプログラムから参照される入力データごとに設けられる。入力同期バッファCおよび入力同期バッファDは、図4の入力同期バッファ領域1042dに設けられる。なお、制御プログラムが使用する変数領域をそのまま入力同期バッファとして利用してもよい。
図17を参照して、入出力Cスレッドが実行されるたびに、PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140が受信した新たな入力データが受信バッファに上書き格納される。同期入力コピープロシージャは、受信バッファに格納された入力データを、その入力データを使用する制御プログラムの入力同期バッファ(入力同期バッファCおよび入力同期バッファD)へコピーする。その際、制御プログラムが使用するのに適した形式に入力データが再配置される。
図11で説明されているとおり、同期入力コピープロシージャは、タスクの実行サイクル数が「1」である場合に限り、すなわち、現在の制御サイクルがタスクの実行サイクルのうち最初の制御サイクルである場合に限り、そのタスクについてあらかじめ指定された入力データを受信バッファから入力同期バッファにコピーする機能を有する。したがって、図17に示すとおり、制御サイクル1〜4の範囲について、受信バッファから入力同期バッファCへのコピーは制御サイクル1および3においてのみ行われ、受信バッファから入力同期バッファDへのコピーは制御サイクル1においてのみ行われる。これは、制御Cスレッドの実行サイクルが2制御サイクルに設定され、制御Dスレッドの実行サイクルが4制御サイクルに設定されているためである。
このようにすると、入力同期バッファに格納された入力データは、その入力データを参照する制御プログラムが実行されている期間中、新たな入力データによって上書きされることがないので、制御プログラムは入力データを何回参照しても同じ値を得ることができ、一貫性のある演算をすることができる。さらに、入力コピーを制御スレッド(制御プログラム)の実行サイクル中の最初の制御サイクルのみで行うので、制御プログラムが使用する入力データの更新周期を一定にすることができる。
図17では、制御プログラムごとおよび入力データごとに入力同期バッファを1つ設けたが、制御プログラムごとおよび入力データごとに入力同期バッファを2つまたは3つ設け、各入力同期バッファの役割(状態)を入れ替えながら運用するようにプロシージャを設計してもよい。たとえば、1つのバッファは制御プログラムから参照される状態(参照状態)であり、もう1つのバッファは新たな入力データを書込可能な状態(書込状態)であるように設計する。そして、制御プログラムを実行開始する前に、書込可能なバッファに新たな入力データが格納されていれば、2つのバッファの役割を入れ替える。そうすれば、入力コピーができない期間がなくなるので、入力データの消失を防ぐことができる。ただし、図17のスケジュール例では、各スレッドの実行サイクルの周期が整数倍の関係にあるので、制御プログラムが使用すべき入力データの消失はもともと生じない。入力同期バッファの参照状態と書込状態とを直接入れ替える代わりに、3つのバッファを用いて、新たな入力データを格納したバッファが書込状態から第3の状態(待機状態)を経て参照状態に遷移するようにしてもよい。
なお、図11で説明されているとおり、あらかじめ指定された入力データを受信バッファから入力同期バッファにコピーする機能を持ち、各タスクの実行サイクル数についての判断をしない(プロシージャ自体では他のタスクの実行サイクルに同期する機能を持たない)入力コピープロシージャも用意されている。このような入力コピープロシージャの使用例は、後述のスケジュール例3において説明する。
受信バッファおよび入力同期バッファを用いるCPUユニット13、または、入力コピープロシージャまたは同期入力コピープロシージャの入力コピー処理を用いるCPUユニット13の特徴については、次のようにまとめることができる。
システムプログラム210は、PLC1の制御動作の実行準備処理として、受信された入力データを格納する受信バッファを記憶手段(メインメモリ104など)内に生成する処理(図7のステップS1)と、制御プログラム230から参照される入力データごとに、その制御プログラム230が入力データの参照先とする入力同期バッファを記憶手段(メインメモリ104など)内に生成する処理(図7のステップS1)とを含む。
スケジュール構築データ234は、マイクロプロセッサ100に、受信された入力データを受信バッファからその入力データに対応する入力同期バッファにコピーする入力コピー処理と、制御プログラム230を実行開始する制御プログラム開始処理とを実行させるための、プロシージャの実行順序の指定を含む。このようにすれば、入力同期バッファに格納された入力データは、その入力データを参照する制御プログラムが実行されている期間中、新たな入力データによって上書きされることがないので、制御プログラム230は入力データを何回参照しても同じ値を得ることができ、一貫性のある演算をすることができる。
さらに、同期入力コピープロシージャの同期入力コピー処理を用いるCPUユニット13の特徴については、次のようにまとめることができる。
入力データの受信は、制御サイクルごとに実行される。スケジュール構築データ234は、マイクロプロセッサ100に、制御サイクルの整数倍の実行サイクルごとに制御プログラム開始処理を実行させ、制御プログラムの実行サイクルが開始した制御サイクルにおいて受信された入力データを対象として、入力コピー処理を実行させるための、プロシージャの実行順序の指定を含む。このようにすれば、制御プログラム230が使用する入力データの更新周期を一定にすることができる。
(f6:同期出力コピープロシージャ)
次に、同期出力コピープロシージャの機能の詳細について説明する。図18は、本発明の実施の形態1において用意される同期出力コピープロシージャの動作を説明するためのシーケンス図である。
図18に示すスケジュール例では、入出力Cスレッド、制御Cスレッド、および制御Dスレッドの合計3つのスレッドが実行される場合を示す。これらのスレッドのスケジュール例は、図17のスケジュール例と同じである。
図18の送信バッファは、図4のPLCシステムバス送信バッファ1043およびフィールドネットワーク送信バッファ1045を表す。図18の出力同期バッファCは、制御Cスレッドにおいて実行される制御Cプログラムの実行によって生成される出力データごとに設けられる。同様に、出力同期バッファDは、制御Dスレッドにおいて実行される制御Dプログラムの実行によって生成される出力データごとに設けられる。出力同期バッファCおよび出力同期バッファDは、図4の出力同期バッファ領域1042cに設けられる。なお、制御プログラムが使用する変数領域をそのまま出力同期バッファとして利用してもよい。
図18を参照して、入出力Cスレッドに含まれる入出力指示プロシージャが実行されるたびに、PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140は、送信バッファに格納されている出力データを送信する。同期出力コピープロシージャは、入出力指示プロシージャの前に実行され、出力同期バッファ(出力同期バッファCおよび出力同期バッファD)に格納されている出力データを送信バッファへコピーする。その際、PLCシステムバス送信バッファ1043においては、送信先のユニットごとにまとめて配置する形式になるように、また、フィールドネットワーク送信バッファ1045においては、シリアルフレームとして送信できる形式に、出力データが再配置される。
図11で説明されているとおり、同期出力コピープロシージャは、タスクの実行サイクル数が「1」である場合に限り、すなわち、現在の制御サイクルがタスクの実行サイクルのうち最初の制御サイクルである場合に限り、そのタスクについてあらかじめ指定された出力データを出力同期バッファから送信バッファにコピーする機能を有する。したがって、図18に示すとおり、制御サイクル1〜4の範囲について、出力同期バッファCから送信バッファへのコピーは制御サイクル1および3においてのみ行われ、出力同期バッファDから送信バッファへのコピーは制御サイクル1においてのみ行われる。これは、制御Cスレッドの実行サイクルが2制御サイクルに設定され、制御Dスレッドの実行サイクルが4制御サイクルに設定されているためである。
このようにすると、送信バッファに格納された出力データは、各制御プログラムの実行サイクル中の最初の制御サイクルにおける送信の直前に出力同期バッファからコピーされる。この出力データは直前の実行サイクルにおいて生成されたものであり、出力データが送信バッファへコピーされた時点では、直前の実行サイクルにおける制御プログラムの実行はすでに終了している。したがって、制御プログラムの実行中における、まだ更新される可能性のある出力データが送信されることがない。さらに、出力コピーを制御スレッド(制御プログラム)の実行サイクル中の最初の制御サイクルのみで行うので、送信される出力データの更新周期を一定にすることができる。
なお、図11で説明されているとおり、あらかじめ指定された出力データを出力同期バッファから送信バッファにコピーする機能を持ち、各タスクの実行サイクル数についての判断をしない(プロシージャ自体では他のタスクの実行サイクルに同期する機能を持たない)出力コピープロシージャも用意されている。このような出力コピープロシージャの使用例は、後述のスケジュール例3において説明する。
出力同期バッファおよび送信バッファを用いるCPUユニット13、または、出力コピープロシージャまたは同期出力コピープロシージャの出力コピー処理を用いるCPUユニット13の特徴については、次のようにまとめることができる。
システムプログラム210は、PLC1の制御動作の実行準備処理として、送信されるべき出力データを格納する送信バッファを記憶手段(メインメモリ104など)内に生成する処理(図7のステップS1)と、送信バッファにコピーされる出力データが格納される出力同期バッファを出力データごとに記憶手段(メインメモリ104など)内に生成する処理(図7のステップS1)とを含む。
スケジュール構築データ234は、マイクロプロセッサ100に、出力データを出力同期バッファから送信バッファにコピーする出力コピー処理を実行させるための、プロシージャの実行順序の指定を含む。このようにすれば、制御プログラムの実行中における、まだ上書き更新される可能性のある出力データが送信されることがない。
さらに、同期出力コピープロシージャの同期出力コピー処理を用いるCPUユニット13の特徴については、次のようにまとめることができる。
スケジュール構築データ234は、マイクロプロセッサ100に、制御プログラム開始処理を制御サイクルの整数倍の実行サイクルごとに実行させ、制御プログラム230の実行サイクルの最初の制御サイクルにおいてその前の実行サイクルにおける制御プログラム230の実行により生成された出力データが送信バッファから送信されることになるタイミングで出力コピー処理を実行させるための、プロシージャの実行順序の指定を含む。このようにすれば、送信される出力データの更新周期を一定にすることができる。
(f7:変数配信プロシージャおよび変数参照開始プロシージャ)
次に、変数配信プロシージャおよび変数参照開始プロシージャの機能(変数同期機能)の詳細について説明する。図19は、本発明の実施の形態1において用意される変数配信プロシージャおよび変数参照開始プロシージャの動作を説明するためのシーケンス図である。
図19に示すスケジュール例は、上述の図13および14に示すスケジュール例1と同様であるとし、変数同期機能に関連する、制御Aスレッドおよび制御Bスレッドの部分のみが示されている。
図19のグローバル変数領域Aは、制御Aスレッドの制御プログラムAが使用する変数であって、他のスレッドの制御プログラム(具体的には、制御Bスレッドの制御Bプログラム)からも参照される変数を格納するメインメモリの領域である。グローバル変数領域Aは、図4のグローバル変数領域1042aに設けられる。なお、制御プログラム230が使用する変数領域をそのままグローバル変数領域として利用してもよい。
グローバル変数領域Aに対して書き換えが許されている制御プログラム(図19の例では、制御プログラムA)を「オーナー側制御プログラム」と称し、参照のみが許されている制御プログラム(図19の例では、制御プログラムB)を「リファラ側制御プログラム」と称す。1つのグローバル変数について、オーナー側制御プログラムは1つであるが、リファラ側制御プログラムは複数あってもよい。
制御Bスレッドの制御Bプログラムがリファラ側制御プログラムとして参照するグローバル変数ごとに、変数同期バッファBが図4の変数同期バッファ領域1042bに設けられる。なお、制御プログラム230が使用する変数領域をそのまま変数同期バッファとして利用してもよい。
どの制御プログラム230がオーナー側制御プログラムまたはリファラ側制御プログラムであるかは、グローバル変数ごとに変数の属性として指定される。この指定を含む変数の属性データは、PLCサポート装置8においてユーザの入力操作に基づいて作成され、作成された変数の属性データは、PLCサポート装置8からCPUユニット13に送られ、CPUユニット13の不揮発性メモリ106に格納される。
図示しないが、制御Bプログラムがオーナー側制御プログラムであり、制御Aプログラムがリファラ側制御プログラムであるグローバル変数も存在し、このグローバル変数については、制御Bプログラムに関連付けられるグローバル変数領域Bと、制御Aプログラムに関連付けられる変数同期バッファAとが設けられる。
変数配信プロシージャは、それが属するスレッドにおいて実行される制御プログラム230がオーナー側であるグローバル変数の値を、グローバル変数領域から、そのグローバル変数のリファラ側である制御プログラムに関連付けられている変数同期バッファにコピーする。図19では、制御Aスレッドの変数配信プロシージャがグローバル変数領域Aの内容(データ)を変数同期バッファBにコピーすることが示されている。
変数参照開始プロシージャは、それが属するスレッドにおいて実行される制御プログラムが参照する変数同期バッファの内容が更新されないようにするための処理を行う。図19では、制御Bスレッドの変数参照開始プロシージャは、変数同期バッファBを書込禁止状態にする。したがって、制御サイクル1においては、制御Aスレッドの変数配信プロシージャは変数同期バッファBへのコピーを行うことができるが、制御Bスレッドの変数参照開始プロシージャが実行された後である制御サイクル2においては、制御Aスレッドの変数配信プロシージャは変数同期バッファBへのコピーを行うことができない。この変数同期バッファの書込禁止状態を解除する機能は、タスク終了プロシージャに持たせてもよいし、書込禁止状態を解除する機能を持つ変数参照終了プロシージャを用意してもよい。
このようにすると、制御Bプログラムが実行開始してから実行終了するまでの間に制御プログラムAによってグローバル変数領域Aが書き換えられても、制御プログラムBが参照する変数同期バッファBの内容は書き換えられないので、制御プログラムBは当該グローバル変数を何回参照しても同じ値を得ることができ、一貫性のある演算をすることができる。
図19では、制御プログラムごとおよびその制御プログラムがリファラ側として参照するグローバル変数ごとに変数同期バッファを1つ設けたが、制御プログラムごとおよびその制御プログラムがリファラ側として参照するグローバル変数ごとに変数同期バッファを2つまたは3つ設け、各変数同期バッファの役割(状態)を入れ替えながら運用するようにプロシージャを設計してもよい。たとえば、1つのバッファはリファラ側制御プログラムから参照される状態(参照状態)であり、もう1つのバッファは新たなデータを書込可能な状態(書込状態)であるようにする。そして、リファラ側制御プログラムを実行開始する前に、書込可能なバッファに新たな入力データが格納されていれば、2つのバッファの役割を入れ替える。そうすれば、変数配信ができない期間がなくなるので、オーナー側制御プログラムが生成した最新のグローバル変数の値の配信漏れを防ぐことができる。図19の場合には、制御サイクル2および4で制御Aプログラムが生成したグローバル変数の値は制御Bプログラムの各実行開始時点において最新ではないから、配信されなくても問題ないが、マルチコアのマイクロプロセッサを用いて、制御Aプログラムと制御Bプログラムとを別々のコアで並列実行するような場合には、変数同期バッファが1つでは配信漏れが生じる可能性がある。このような場合には、上述のとおり2つで1組の変数同期バッファの参照状態と書込状態とを入れ替えながら運用することにより、配信漏れを防ぐことができる。変数同期バッファの参照状態と書込状態とを直接入れ替える代わりに、3つのバッファを用いて、新たに配信されたグローバル変数の値を格納したバッファが書込状態から第3の状態(待機状態)を経て参照状態に遷移するようにしてもよい。
グローバル変数領域および変数同期バッファを用いるCPUユニット13、または、変数配信プロシージャの変数配信処理を用いるCPUユニット13の特徴については、次のようにまとめることができる。
記憶手段(不揮発性メモリ106など)は、制御プログラム230が使用する変数についての属性データの格納に用いられる。属性データは、変数が複数の制御プログラム230から参照されるグローバル変数である場合に、その変数の書き換えができる1つのオーナー側制御プログラムの指定と、その変数の参照のみができる1つまたは複数のリファラ側制御プログラムの指定とを含むことが可能である。
システムプログラム210は、PLC1の制御動作の実行準備処理として、グローバル変数を格納するグローバル変数領域1042aを記憶手段(メインメモリ104など)内に生成する処理(図7のステップS1)と、各リファラ側制御プログラムについて、そのリファラ側制御プログラムから参照されるグローバル変数ごとに、そのリファラ側制御プログラムがグローバル変数を参照するときにグローバル変数領域に代えて参照先とする変数同期バッファを記憶手段(メインメモリ104など)内に生成する処理(図7のステップS1)とを含む。
スケジュール構築データ234は、マイクロプロセッサ100に、オーナー側制御プログラムを実行開始するオーナー側開始処理と、オーナー側制御プログラムの実行が終了すると、そのオーナー側制御プログラムによって書き換えられるグローバル変数をグローバル変数領域からそのグローバル変数に対応する変数同期バッファにコピーするコピー処理と、リファラ側制御プログラムを実行開始するリファラ側開始処理とを実行させるための、プロシージャの実行順序の指定を含む。
このようにすれば、リファラ側制御プログラムが実行開始してから実行終了するまでの間にオーナー側制御プログラムによってグローバル変数領域が書き換えられても、リファラ側制御プログラムが参照する変数同期バッファの内容は書き換えられないので、リファラ側制御プログラムは当該グローバル変数を何回参照しても同じ値を得ることができ、一貫性のある演算をすることができる。
(f8:スケジュール例2)
次に、本発明の実施の形態1のスケジュール例2について説明する。
図20は、本発明の実施の形態1のスケジュール例2に対応するスケジュール構築データ234を示す図である。図21は、本発明の実施の形態1のスケジュール例2の第kサイクルのシーケンス図である。図20のスケジュール構築データ234から図21のシーケンスが生じることについては、スケジュール例1を考慮すれば自明であるので、図20のスケジュール構築データ234と図21のシーケンスとの関係についての詳細な説明は行わない。
スケジュール例2は、上述のスケジュール例1と比較して、入出力スレッド(スケジュール例1の入出力Aスレッド)が出力スレッド(出力Eスレッド)と入力スレッド(入力Eスレッド)とに分けられている点が相違している。また、制御Fスレッドの開始条件に制御Fタスクが指定されていることにより、制御Fスレッドが制御Fタスクのタスク開始プロシージャによって起動されている点が、スケジュール例1の制御Bスレッドの場合と異なる。制御Fスレッドが入力データを使用しない場合には、このように入力Eスレッドの終了を待つことなく、入力Eスレッドの通信終了通知の待ち時間に制御Fスレッドの実行を開始させることにより、制御Fスレッドの終了を早めることができる。
スケジュール例2において、出力Eスレッドと入力Eスレッドとが別々に設けられている点について説明する。フィールドネットワークとしてEtherCAT(登録商標)を用いた場合、たとえば、第kサイクルで送信されたフレームがノイズの影響などによりネットワークを伝送中に失われたためにCPUユニット13にネットワークを一巡したフレームが到達しなかったようなときを考える。スケジュール例1および2では、通信終了通知が発生しないことにより、制御Aタスクまたは制御Eタスクが第kサイクル内に終了しないというサイクル超過の現象が発生する。
このような場合、スケジュール例1のように、入出力スレッドが1つのスレッドであれば、第k+1サイクルにおいてさらに通信終了通知を待つことになるが、ネットワーク中でフレーム自体が失われていれば、結局サイクル超過許容回数を超えるエラーとなる。それに対し、スケジュール例2では、第k+1サイクルは、図11でタスク開始プロシージャについて説明される「カウントアップ後に実行サイクル数が実行サイクル周期(n)を超えており、かつ、タスク終了フラグがオフである」という条件に該当する。そのため、第k+1サイクルのタスク開始プロシージャは、後続起動の対象とされている出力Eスレッドを起動する。したがって、新たなフレームが送信され、このフレームがネットワークを一巡して戻ってくれば、図21に示される、入力Eスレッドの通信終了通知以降の処理を続行できる。
このように、フレームがネットワークを一巡するタイプのフィールドネットワークを採用した場合には、本スケジュール例のように、出力スレッドと入力スレッドとを分けることにより、ネットワーク中でフレームが喪失した場合にも一定周期のネットワーク通信を継続することが容易になる。
(f9:スケジュール例3)
次に、本発明の実施の形態1のスケジュール例3について説明する。
図22は、本発明の実施の形態1のスケジュール例3に対応するスケジュール構築データ234を示す図である。図23は、本発明の実施の形態1のスケジュール例3の第kサイクルのシーケンス図である。図24は、本発明の実施の形態1のスケジュール例3の第k+1サイクルのシーケンス図である。図22のスケジュール構築データ234から図23および図24のシーケンスが生じることについては、スケジュール例1を考慮すれば自明であるので、図22のスケジュール構築データ234と図23および図24のシーケンスとの関係についての詳細な説明は行わない。
スケジュール例3は、上述のスケジュール例1と比較して、実行サイクルの周期が長く、それに含まれる制御スレッドの優先度が低いタスクである制御タスクH(スケジュール例1の制御タスクBに相当)にも入出力スレッド(入出力Hスレッド)が含まれている点が相違している。
入出力Gスレッドは、たとえば、フィールドネットワークにより、制御Gスレッドの制御Aプログラムが必要とするすべての入出力と、制御Hスレッドの制御プログラムBが必要とする一部の入出力とを司る。入出力Hスレッドは、たとえば、PLCシステムバス11により、制御Hスレッドの制御Bプログラムが必要とする残りの入出力を司る。
入出力Gスレッドでは、同期出力コピープロシージャおよび同期入力コピープロシージャが用いられているのに対し、入出力Hスレッドでは、同じタスクに属する制御Hスレッドのための入出力を行うだけであるので、各タスクの実行サイクル数についての判断をしない(プロシージャ自体では他のタスクの実行サイクルに同期する機能を持たない)出力コピープロシージャおよび入力コピープロシージャが用いられる。
このように、実行サイクルの周期がより長いタスクにおいて入出力処理を行うようにしてもよい。また、入出力処理のみを行うタスクを設けてもよい。それぞれの入力データおよび出力データに応じて、制御プログラム230の実行上必要とされる周期で入出力処理を行うようにスケジュール構築することにより、無駄に高い頻度で多くのデータ量の通信をして通信時間を浪費することを避けることができる。
(f10:スケジュール例4)
次に、本発明の実施の形態1のスケジュール例4について説明する。
図25は、本発明の実施の形態1のスケジュール例4に対応するスケジュール構築データ234を示す図である。図26は、本発明の実施の形態1のスケジュール例4の第kサイクルのシーケンス図である。図27は、本発明の実施の形態1のスケジュール例4の第k+1サイクルのシーケンス図である。図25のスケジュール構築データ234から図26および図27のシーケンスが生じることについては、スケジュール例1を考慮すれば自明であるので、図25のスケジュール構築データ234と図26および図27のシーケンスとの関係についての詳細な説明は行わない。
スケジュール例4は、上述のスケジュール例1と比較して、制御Jスレッドにおいて実行される制御プログラムがモーション演算プログラムであってシーケンスプログラムを含まず、かつ、ユーザにおける制御目的に応じた作成されたシーケンスプログラムは制御Kスレッドのみで実行される点が相違している。ただし、シーケンスプログラムが制御Kスレッドのみで実行されることに伴って、データトレースプロシージャが制御Kスレッドで実行され、また、複数のシーケンスプログラム間でグローバル変数の同期を行う必要がないので変数配信プロシージャおよび変数参照開始プロシージャが使用されていない点についても、スケジュール例1と異なっている。
制御Jスレッドにおいて実行される制御プログラムがモーション演算プログラムのみであるのは、図25の(4)の「制御プログラム指定」で「モーション演算プログラム」と指定されていることによる。図25の(6)の「制御プログラム指定」で、制御Kスレッドにおいて実行される制御プログラムが「シーケンスKプログラム」であることが指定され、「モーションスレッド指定」で、シーケンスKプログラムに含まれるモーション命令の実行は「制御Jスレッド」で行われることが指定されている。
たとえば、「座標X1からX2まで速度Vで移動せよ」といったモーション命令がシーケンスKプログラムにおいて実行されると、それに応じてその後の最初の制御サイクルにおける制御Jスレッドのモーション演算プログラムの実行により、モーション演算プログラムが今後サーボモータドライバに与える位置や速度の指令値を繰り返し算出していくための初期演算と第1回目の指令値算出とが実行される。その後は、モーション命令によって指示された動作を完了するまで、シーケンスKプログラムからの関与がなくても、制御Jスレッドのモーション演算プログラムの実行により、制御サイクルごとに指令値が算出される。指令値を算出し出力する周期は短い方がモータの運動の誤差を小さくできる。実行サイクルが1制御サイクルであるタスクに含まれる制御プログラムをモーション演算プログラムのみとすると、制御サイクルの周期を短く設定することが容易となる。この観点で、スケジュール例4は好ましい。
(f11:スケジュール例5)
次に、本発明の実施の形態1のスケジュール例5について説明する。
図28は、本発明の実施の形態1のスケジュール例5に対応するスケジュール構築データ234を示す図である。図29は、本発明の実施の形態1のスケジュール例5の第kサイクルのシーケンス図である。図28のスケジュール構築データ234から図29のシーケンスが生じることについては、スケジュール例1を考慮すれば自明であるので、図28のスケジュール構築データ234と図29のシーケンスとの関係についての詳細な説明は行わない。
スケジュール例5は、上述のスケジュール例1と比較して、実行サイクル周期が1制御サイクル周期である制御Lタスクにおいて、入出力Lスレッド、制御L1スレッド、および制御L2スレッドが実行される点が相違している。制御L1スレッドにおいて実行される制御プログラムはシーケンスLプログラムであり、制御L1スレッドにおいてモーション演算プログラムは実行されない。一方、制御L2スレッドにおいて実行される制御プログラムは、シーケンスLプログラムに含まれるモーション命令に従って実行されるモーション演算プログラムのみである。
スケジュール例5は、入出力処理、モーション命令を含むシーケンスプログラム(ユーザプログラム)、モーション演算プログラムが、この順序で繰り返し実行される特徴がある。モーション演算プログラムは、モーション命令に従い繰り返し実行を開始すると、モーション命令で指示された動作を完了するまでシーケンスプログラムの関与なしに実行することが可能ではある。しかしながら、モーション命令で指示された動作を完了するまでに、新たな入力データを使用したシーケンスプログラムの演算結果によりモーション演算プログラムへの指示内容が変更される場合がある。このような場合に、上記特徴のスケジュールであれば、入力データの入力から、その入力データを用いたシーケンス演算を経て動作の変更指示がモーション演算プログラムに与えられ、変更指示を反映したモーション指令値が出力されるまでの時間を短くすることができる。また、モーション命令の実行条件を成立させる入力データの入力から、そのモーション命令に従う最初のモーション指令値が出力されるまでの時間も短くすることができる。
スケジュール例1において、制御プログラムAが、シーケンスプログラムと、それに続いて実行されるモーション演算プログラムとを含む場合にも同様の効果が得られる。
上記のような処理順序を採用するCPUユニット13の特徴については、次のようにまとめることができる。
制御プログラム230は、モータの運動を制御するためのモーション指令値を算出するモーション演算プログラム234と、ユーザにおける制御目的に応じて作成され、モーション演算プログラム234に対してその実行に必要な指示を与える処理を含むユーザプログラム236とを含む。
スケジュール構築データ234は、PLC1のCPUユニット13に、通信回路(PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140)による出力データの送信および入力データの受信、ユーザプログラム236の実行、ならびにモーション演算プログラム234の実行を、この順序で、繰り返し実行させるための、プロシージャの実行順序の指定を含む。ただし、出力データの送信と入力データの受信との間の実行順序は問わない。
(f12:スケジュール例6)
次に、本発明の実施の形態1のスケジュール例6について説明する。スケジュール例6においては、入出力Pスレッド、制御Pスレッドおよび制御Qスレッドの合計3つのスレッドが実行される場合を示す。
図30は、本発明の実施の形態1のスケジュール例6に対応するシーケンス図である。図30を参照して、入出力Pスレッドおよび制御Pスレッドは、その実行サイクル周期が1制御サイクル周期であるタスクに含まれ、制御Qスレッドは、その実行サイクル周期が2制御サイクル周期であるタスクに含まれるものとする。そして、制御Pスレッドにおいて実行される第1制御プログラム230−1と、制御Qスレッドにおいて実行される第2制御プログラム230−2とは、どちらもモーション演算プログラム234を含むものとする。また、第1制御プログラム230−1および第2制御プログラム230−2の少なくとも一方は、モーション命令を含むユーザプログラム236を含むものとする。
図30において、入出力Pスレッドから制御Pスレッドおよび制御Qスレッドへそれぞれ延びる矢印は、入力データの流れを示す。具体的には、同期入力コピープロシージャによる入力データのコピーに相当する。この入力データは、第1制御プログラム230−1および/または第2制御プログラム230−2がユーザプログラム236を含む場合には、当該ユーザプログラム236が使用する入力データを含む他、モーション演算プログラム234が使用する入力データを含むことがある(なお、モーション演算プログラム234は、入力データを使用せずに演算する場合もある)。
同様に、図30において、制御Pスレッドおよび制御Qスレッドから入出力Pスレッドへそれぞれ延びる矢印は、出力データの流れを示す。具体的には、同期出力コピープロシージャによる出力データのコピーに相当する。この出力データは、第1制御プログラム230−1および/または第2制御プログラム230−2がユーザプログラム236を含む場合には、当該ユーザプログラム236が生成した出力データを含む他、モーション演算プログラム234が活性状態にある(すなわち、実行されるごとに指令値を算出している)期間中は、当該モーション演算プログラム234が生成したモーション指令値データを含む。
図31は、本発明の実施の形態1のスケジュール例6において、制御プログラム内のプログラム構成と指示の流れとについて説明するための模式図である。図31には、第1制御プログラム230−1および第2制御プログラム230−2に含まれ得るユーザプログラム236のバリエーションの例を示す。すなわち、図31の(1)は、第1制御プログラム230−1のみがユーザプログラム236を有している例を示し、図31の(2)は、第2制御プログラム230−2のみがユーザプログラム236を有している例を示し、図31の(3)は、第1制御プログラム230−1および第2制御プログラム230−2の両方がユーザプログラム236を有している例を示す。
図31において、ユーザプログラム236(図31の(3)では、第1ユーザプログラム236−1または第2ユーザプログラム236−2)からモーション演算プログラム234(第1モーション演算プログラム234−1または第2モーション演算プログラム234−2)へ延びる矢印は、モーション演算プログラム234の実行に必要な指示の流れを示す。この指示は、たとえば、ユーザプログラム236の中で、モーション制御の内容を定義するモーションファンクションブロック(モーション命令)に対する入力パラメータ(入力定数または入力変数)として記述される。そして、ユーザプログラム236の実行に伴いモーション制御開始の条件が成立してモーションファンクションブロックが実行されると、当該入力パラメータがモーション演算プログラム234に与えられる。
制御プログラムがユーザプログラム236およびモーション演算プログラム234を含む場合の、それぞれのプログラムの実行順序は、どちらが先でもよい。ユーザプログラム236の実行を先にする場合は、ユーザプログラム236の実行結果をモーション演算プログラム234の実行に直ちに反映できる点で好ましい。一方、モーション演算プログラム234を先に実行する場合は、ユーザプログラム236の実行結果は次の実行サイクルにおいてモーション演算プログラム234の実行に反映される。
図31の(1)を参照して、第1制御プログラム230−1にのみユーザプログラム236が含まれる形態について説明する。図31の(1)に示す例は、第1モーション演算プログラム234−1および第2モーション演算プログラム234−2の両方に指示を与えるユーザプログラム236と、第1モーション演算プログラム234−1とを所望の制御サイクル時間の中で実行可能な場合に採用できる。
すなわち、図31の(1)に示す例においては、第1制御プログラム230−1は、第1モーション演算プログラム234−1に対してその実行に必要な指示を与える命令と、第2モーション演算プログラム234−2に対してその実行に必要な指示を与える命令とを含むユーザプログラム236を含む。
図31の(1)に示す例によれば、第1モーション演算プログラム234−1のどの実行サイクルにおいても、ユーザプログラム236から新しい指示を与えることができる。したがって、実行中のモータの運動に対する変更の指示などを迅速にモーション制御に反映することができる。なお、第2モーション演算プログラム234−2の実行サイクルの途中で第2モーション演算プログラム234−2に与えられた指示は、第2モーション演算プログラム234−2の次の実行サイクルにおいて反映される。さらに、図31の(1)に示す例によれば、ユーザプログラム236を1つに集約できるので、その設計が容易になる。
図31の(2)を参照して、第2制御プログラム230−2にのみユーザプログラム236が含まれる形態について説明する。図31の(2)に示す例は、所望の制御サイクル時間内で、第1モーション演算プログラム234−1の実行時間を除いた、ユーザプログラム236の実行に割り当てることができる時間が少ない場合に好適な形態である。
すなわち、図31の(2)に示す例においては、第2制御プログラム230−2は、第1モーション演算プログラム234−1に対してその実行に必要な指示を与える命令と、第2モーション演算プログラム234−2に対してその実行に必要な指示を与える命令とを含むユーザプログラム236を含む。
図31の(2)に示す例によれば、第1モーション演算プログラム234−1を実行するに足る時間まで制御サイクル時間を短くすることができる。ただし、ユーザプログラム236から第1モーション演算プログラム234−1への指示は第2制御プログラム230−2の実行サイクルの周期でしか与えることができない。しかしながら、モーション演算プログラム234は、ユーザプログラム236から、たとえば「座標X1から座標X2まで速度Vで移動せよ」といった指示をいったん受けて活性状態となれば、その指示の実行を完了するまでの間、ユーザプログラム236からの指示なしに、実行サイクルごとにモーション指令値データを算出することができる。したがって、そのような指示の実行途中に、モータの運動を中止させる指示や別の運動へ変更する指示を与えて迅速に反応させる必要がない場合には、図31の(2)に示す形態を採用しても支障はない。さらに、図31の(2)に示す例によれば、ユーザプログラム236を1つに集約できるので、その設計が容易になる。
図31の(3)を参照して、第1制御プログラム230−1に第1ユーザプログラム236−1が含まれ、かつ、第2制御プログラム230−2に第2ユーザプログラム236−2が含まれる形態について説明する。
すなわち、図31の(3)に示す例においては、ユーザプログラム236としては、第1モーション演算プログラム234−1に対してその実行に必要な指示を与える命令を含む第1ユーザプログラム236−1と、第2モーション演算プログラム234−2に対してその実行に必要な指示を与える命令を含む第2ユーザプログラム236−2とからなる。
図31の(3)に示す例によれば、第1制御プログラム230−1に含まれる第1ユーザプログラム236−1は、第2モーション演算プログラム234−2に対する指示を与えることに関する処理を行う必要がないので、実行時間を比較的短くすることができる。したがって、第1ユーザプログラム236−1と第1モーション演算プログラム234−1とを実行可能な時間としての制御サイクル時間を比較的短くすることができる。さらに、第1モーション演算プログラム234−1および第2モーション演算プログラム234−2のどの実行サイクルにおいても第1ユーザプログラム236−1および第2ユーザプログラム236−2からそれぞれ新しい指示を与えることができる。
上述したスケジュール例6のように、複数の制御プログラムにモーション演算プログラム234を含むスケジュールを採用するCPUユニット13の特徴は、次のようにまとめることができる。
通信回路(PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140)は、制御サイクルの周期で出力データを送信しおよび入力データを受信する。制御プログラム230は、第1制御プログラム230−1および第2制御プログラム230−2を含む。
第1制御プログラム230−1は、モータの運動を制御するための第1モーション指令値データを生成する第1モーション演算プログラム234−1を含む。第2制御プログラム230−2は、モータの運動を制御するための第2モーション指令値データを生成する第2モーション演算プログラム234−1を含む。そして、第1制御プログラム230−1および第2制御プログラム230−2の少なくとも一方は、ユーザにおける制御目的に応じて作成され第1モーション演算プログラム234−1および第2モーション演算プログラム234−1に対してその実行に必要な指示を与える命令を含むユーザプログラム236(第1ユーザプログラム236−1または第2ユーザプログラム236−2)を含む。
スケジュール構築データ234は、マイクロプロセッサ100に、制御サイクルの周期と同じ周期の第1実行サイクルごとに第1制御プログラム230−1を実行開始させ、制御サイクルの周期の2以上の整数倍の周期の第2実行サイクルごとに第2制御プログラム230−2を実行開始させる。さらに、スケジュール構築データ234は、第2実行サイクルが開始する制御サイクルにおいて、第1制御プログラム230−1の実行終了後に第2制御プログラム230−2を実行開始させ、当該制御サイクルが終了するまでに第2制御プログラム230−2が終了しなければ次の制御サイクルにおいて第1制御プログラム230−1の実行終了後に第2制御プログラム230−2の未実行の部分の実行を開始させるための、プロシージャの実行順序の指定を含む。
このようにすれば、モーション制御機能を有するPLC1において、高速処理を要する一部のモーション制御処理のために比較的短い周期の実行サイクルを確保しつつ、それ以外のモーション制御処理も一定周期で実行することができる。
たとえば、対象物に対して切削加工を行う加工機を制御する場合に、刃物の運動制御に関わるような高速かつ高精度な制御を要するモーション制御処理を短い周期で実行することができるとともに、加工機に対する対象物の搬入や搬出にかかわるような相対的に高速性を要しないモーション制御処理も一定周期で実行することができる。
(f13:スケジュール例7)
次に、本発明の実施の形態1のスケジュール例7について説明する。
図32は、本発明の実施の形態1のスケジュール例7に対応するスケジュール構築データ234を示す図である。図33は、本発明の実施の形態1のスケジュール例7の第kサイクルのシーケンス図である。図34は、本発明の実施の形態1のスケジュール例7の第k+1サイクルのシーケンス図である。図32のスケジュール構築データ234から図33および図34のシーケンスが生じることについては、スケジュール例1を考慮すれば自明であるので、図32のスケジュール構築データ234と図33および図34のシーケンスとの関係についての詳細な説明は行わない。
スケジュール例7を適用するCPUユニット13のマイクロプロセッサ100は、第1コアおよび第2コアを含む複数のコアを有するものとする。そして、第1コアで制御サイクル開始プロシージャおよび制御Rタスクが実行され、第2コアで制御Sタスクが実行される。
制御Rタスクの実行に関しては、制御Rタスクのタスク開始プロシージャの実行後、制御Sタスクのタスク開始プロシージャの実行終了を待たずに入出力RスレッドがRun状態となる点を除き、スケジュール例1の制御Aタスクと同様である。
制御Sスレッドは、スケジュール例1の制御Bスレッドとは異なり、入出力Rスレッドの後続起動プロシージャによって起動されると直ちにRun状態となり、制御Rスレッドと並列に実行される。また、制御Sスレッドは、第k+1サイクルを開始する制御サイクル開始割込によって実行中断されることなく実行を継続する。さらに、制御Sスレッドは、第k+1サイクルにおける入出力Rスレッドとも並列実行される。
制御Sスレッドは、第2コアの資源利用上、第kサイクルの入出力Rスレッドとも並列実行することが可能であるが、第kサイクルで実行開始する制御Sスレッドは、第kサイクルにおける入出力Rスレッドの実行により入力される入力データを使用するので、入出力Rスレッドの後続起動プロシージャによって起動させている。
以上説明した、複数のコアを有するマイクロプロセッサ100で実行されるスケジュールを採用するCPUユニット13の特徴は、次のようにまとめることができる。
マイクロプロセッサ100は、少なくとも第1コアおよび第2コアを含む。制御プログラム230は、第1制御プログラムと第2制御プログラムとを含む。スケジュール構築データ234は、出力データの送信および入力データの受信が終了した後に、第1コアに第1制御プログラムを実行させるとともに、第2コアに第2制御プログラムを第1制御プログラムの実行と並列に実行させるための、プロシージャの実行順序の指定を含む。
このようにすれば、PLC1に特徴的な入出力処理と制御プログラム実行とのサイクリック処理を採用しつつ、複数のコアを有するマイクロプロセッサ100がプログラムの並列実行することによる処理の高速化を実現することができる。
(f14:スケジュール例8および9)
本実施の形態によれば、従来の典型的なPLC1と同様のスケジュールを構築することもできる。以下に説明するスケジュール例8および9は、そのような例である。
図35は、本発明の実施の形態1のスケジュール例8に対応するスケジュール構築データ234を示す図である。図36は、本発明の実施の形態1のスケジュール例8の第kサイクルおよび第k+1サイクルのシーケンス図である。図35のスケジュール構築データ234から図36のシーケンスが生じることについては、スケジュール例1を考慮すれば自明であるので、図35のスケジュール構築データ234と図36のシーケンスとの関係についての詳細な説明は行わない。
スケジュール例8では、単一のスレッド(制御Tスレッド)において、制御プログラムの実行と入出力処理とが行われる。また、制御サイクル開始割り込みが利用されず、1つの制御サイクルのタスクが実行終了すると、直ちに次の制御サイクルが開始される。これは、図35の(1)の「制御サイクル開始条件」において、「制御サイクル開始割り込み」ではなく、「制御Tタスク」が指定されていることによる。システムプログラム210による処理のうち、図36に示した以外の、PLCサポート装置8との通信処理などを含むその他の処理は、通信終了通知待ち時間の間に実行される。このシステムプログラム210によるその他の処理は周辺処理とよばれることもある。
スケジュール例8の変形として、システムプログラム210による上記その他の処理(周辺処理)を、制御Tスレッドの中に組み込んで、たとえば各制御サイクルの入力コピープロシージャを実行した後に、実行するようにしてもよい。
図37は、本発明の実施の形態1のスケジュール例9に対応するスケジュール構築データ234を示す図である。図38は、本発明の実施の形態1のスケジュール例9の第kサイクルおよび第k+1サイクルのシーケンス図である。図37のスケジュール構築データ234から図38のシーケンスが生じることについては、スケジュール例1を考慮すれば自明であるので、図35のスケジュール構築データ234と図36のシーケンスとの関係についての詳細な説明は行わない。
スケジュール例8では、制御プログラムの実行後に入出力処理を行っているが、スケジュール例9では、入力処理、制御プログラムの実行、出力処理の順に実行される。これに伴い、スケジュール例9では、入出力指示プロシージャではなく、入力指示プロシージャと出力指示プロシージャとが用いられている。
さらに、スケジュール例9では、出力の通信終了通知の後に、サイクルタイマプロシージャが実行される。サイクルタイマプロシージャは、図11で説明されているとおり、制御サイクル開始からの経過時間を取得し、制御サイクル時間終了までの残り時間を算出し、算出した残り時間が経過するとタイマ割り込みが入るようにプロセッサ内蔵のタイマを設定し、タイマ割り込みがあれば本スレッドが再起動されるように設定し、本スレッドを休止する(Sleep状態にする)機能を有する。なお、サイクルタイマプロシージャが実行された時点ですでに制御サイクル時間が経過していれば、サイクルタイマプロシージャは、タイマ割り込みを設定することなくただちに後続起動プロシージャを実行する。制御サイクル開始割り込みを用いる場合とは異なり、制御サイクル時間の経過によってスレッドの実行が強制中断されることはない。サイクルタイマプロシージャを用いることにより、制御サイクル開始割り込みを用いることなく、制御サイクルの周期をほぼ一定時間にすることができる。システムプログラム210による上記その他の処理(周辺処理)は、入力および出力の通信終了通知待ち時間ならびにサイクルタイマプロシージャが設定したタイマ割り込みの待ち時間において実行される。
<G.実施の形態2>
上述の実施の形態1においては、タスクとスレッドとの階層構造を有するスケジュール構築のしくみを用いる方法について説明した。これに対して、実施の形態2では、スレッドは用いるが、タスクを用いずにスケジュールを構築する方法について説明する。
実施の形態2では、システムプログラム210によるPLC1の制御動作の実行準備処理(図7のステップS1)において、各スレッドに対応して、記憶手段(メインメモリ104など)に、スレッドの実行サイクル数を格納する記憶領域と、スレッド終了フラグの記憶領域と、スレッドの実行回数を格納する記憶領域と、スレッドの実行時間を格納する記憶領域とが設けられる。
図39は、本発明の実施の形態2において用意されるスレッドの設定項目と各設定項目の説明とを表形式で示す図である。図8に示す実施の形態1のタスクの設定項目において、タスク開始条件の設定項目として示されている周期の設定は、図39に示す実施の形態2では、スレッドの開始条件の設定項目に移行されている。また、実施の形態1ではタスクの設定項目であるサイクル超過許容回数も、実施の形態2ではスレッドの設定項目に移行されている。
図40は、本発明の実施の形態2において用意されているプロシージャの名称および機能を示す図である。制御サイクル開始プロシージャについては、図40に設定項目および設定項目の説明も示す。実施の形態2においても、図11の後続起動プロシージャ以降の各プロシージャが用意されているが、その内容は図11と同じであるので繰り返して図示しない。
実施の形態2では、実施の形態1におけるタスク開始プロシージャの機能が制御サイクル開始プロシージャに、タスク終了プロシージャの機能がスレッド終了プロシージャに、それぞれ実質的に移行されている。
図41は、本発明の実施の形態2のスケジュール例に対応するスケジュール構築データ234を示す図である。図42は、本発明の実施の形態2のスケジュール例の第kサイクルのシーケンス図である。図43は、本発明の実施の形態2のスケジュール例の第k+1サイクルのシーケンス図である。図41のスケジュール構築データ234から図42および図43のシーケンスが生じることについては、図39および40を参照しつつ実施の形態1のスケジュール例1を考慮すれば自明であるので、図41のスケジュール構築データ234と図42および図43のシーケンスとの関係についての詳細な説明は行わない。
実施の形態2のこのスケジュール例は、実施の形態1のスケジュール例1とほぼ同様のスケジュールを実施の形態2におけるしくみによって実現したものである。すなわち、スレッドは用いるが、タスクを用いずにスケジュールが構築される。そのため、実施の形態1ではタスクを対象に行われていた実行回数の計数や実行時間の計測は、実施の形態2ではスレッドを対象として行われる。実施の形態1の他のスケジュール例についても、同様に、実施の形態2におけるしくみによってほぼ同一のスケジュールを実現することができる。
<H.実施の形態3>
上述の実施の形態1においては、タスクとスレッドとの階層構造を有するスケジュール構築のしくみを用いる方法について説明した。これに対して、実施の形態3では、タスクおよびスレッドを用いずに、プロシージャに実行番号を与えてプロシージャを実行番号の順に実行することにより、スケジュールを構築する方法について説明する。
実施の形態3に係るスケジュール構築データは、実行するプロシージャの指定と、指定された各プロシージャについての実行番号および実行サイクル周期の指定とを含む。同一名称のプロシージャを複数回指定して、それぞれに異なる実行番号を指定した場合は、実行番号ごとにプロシージャのオブジェクト・インスタンスが生成される。以降の説明においては、指定された実行番号が異なる同一名称のプロシージャは、互いに区別される別々のプロシージャとして扱う。
実施の形態3では、システムプログラム210によるPLC1の制御動作の実行準備処理(図7のステップS1)において、各プロシージャに対応して、記憶手段(メインメモリ104など)に、実行サイクル数を格納する記憶領域と、実行済フラグの記憶領域とが設けられる。
また、実施の形態3に係るプロシージャは、各プロシージャに固有の機能のほかに、いずれのプロシージャにも共通して、プロシージャの実行を制御する機能を有している。
図44は、本発明の実施の形態3に係る各プロシージャが共通して有する実行制御機能が提供する処理を示すフローチャートである。図44を参照して、プロシージャの実行が開始されると、当プロシージャの実行済フラグがオフであるか否かが判断される(ステップS100)。実施の形態3においては、各プロシージャの実行終了については、対応する実行済フラグの状態(オフまたはオン)で判断される。
当プロシージャの実行済フラグがオフでなければ(ステップS100においてNO)、処理はステップS106へ進む。
当プロシージャの実行済フラグがオフであれば(ステップS100においてYES)、当プロシージャの固有の機能の処理が実行される(ステップS102)。なお、当プロシージャが先の処理によって実行中断中の場合は、未実行の部分が実行される。そして、当プロシージャの固有の機能の処理の実行が終了すると、当プロシージャの実行済フラグがオンに設定される(ステップS104)。
ステップS106においては、当プロシージャより実行番号の大きい他のプロシージャが存在するか否かが判断される。当プロシージャより実行番号の大きい他のプロシージャが存在しなければ(ステップS106においてNO)、当プロシージャは終了する。
一方、当プロシージャより実行番号の大きい他のプロシージャが存在すれば(ステップS106においてYES)、当プロシージャの次に実行番号の大きいプロシージャが起動される(ステップS108)。そして、当プロシージャの実行は終了する。
図45は、本発明の実施の形態3において用意されているプロシージャの1つである、制御サイクル開始プロシージャについて、その機能、設定項目および設定項目の説明を示す図である。図46は、本発明の実施の形態3において用意されている、制御サイクル開始プロシージャ以外のプロシージャについて、各プロシージャの名称および機能を示す図である。
図47は、本発明の実施の形態3のスケジュール例に対応するスケジュール構築データ234を示す図である。図47の(1)では、制御サイクル開始プロシージャについて、制御サイクル開始条件として「制御サイクル開始割り込み」が設定されている。図47の(2)では、先に説明したとおり、実行するプロシージャが指定されるとともに、指定されたプロシージャごとに実行番号および実行サイクル周期が指定される。さらに、制御プログラム実行プロシージャについては、そのプロシージャが実行させる対象制御プログラムも指定される。ここでは、制御Aプログラムが実行サイクル周期「1」で実行され、制御Bプログラムが実行サイクル周期「2」で実行されるという、実施の形態1のスケジュール例1に類似したスケジュールが設定されている例を示す。
図48は、図47のスケジュール構築データに対応するスケジュール例の第kサイクルのシーケンス図である。図49は、図47のスケジュール構築データに対応するスケジュール例の第k+1サイクルのシーケンス図である。
図47および図48を参照して、第kサイクルにおいては、制御サイクル開始割り込みによって制御サイクル開始プロシージャが実行される。制御サイクル開始プロシージャは、図45で説明されているとおり、各プロシージャの実行サイクル数のカウントアップやその他の処理を実行する。制御サイクル開始プロシージャは、第kサイクルにおいては、すべてのプロシージャについて、実行サイクル数を「1」にし、かつ、実行済フラグをオフにするものとする。さらに、制御サイクル開始プロシージャは、まず実行番号が最も小さいプロシージャ(図47の例では、同期出力コピープロシージャ)を起動する。その後、各プロシージャが共通して有する実行制御機能の処理手順(図44に示すフローチャート)に従い、実行番号が小さい順に各プロシージャが実行される。各プロシージャは、固有機能の処理の実行後に実行済フラグをオンにする。図47の例では、制御Bプログラムの実行中に第k+1サイクルの制御サイクル開始割り込みが入るので、制御Bプログラムの実行は中断される。
図47および図49を参照して、第k+1サイクルにおいては、制御サイクル開始割り込みによって制御サイクル開始プロシージャが実行される。制御サイクル開始プロシージャが各プロシージャの実行サイクル数をカウントアップする結果、各プロシージャの実行サイクル数は「2」となる。実行番号が「1」から「8」までのプロシージャについては、実行サイクル周期が「1」であるから、この時点で実行サイクル数が指定された実行サイクル周期を超える。そのため、制御サイクル開始プロシージャは、これらのプロシージャの実行サイクル数を「1」にするとともに、対応する実行済フラグをオフにする。一方、実行番号が「9」から「11」までのプロシージャについては、実行サイクル周期が「2」であるから、この時点では実行サイクル数が指定された実行サイクル周期を超えていない。そのため、制御サイクル開始プロシージャは、これらのプロシージャの実行サイクル数および実行済フラグを現状のままとする。その後、実行番号が最も小さいプロシージャ(図47の例では、同期出力プロシージャ)から実行される。
実行サイクル周期が「1」である実行番号「1」から「8」までのプロシージャは、第kサイクルにおけるのと同様に実行される。実行番号「9」の変数参照開始プロシージャは、第kサイクルにおいて実行済フラグがオンになったままであるので、図44のフローに従い、その固有の機能を実行しないまま、実行番号「10」の制御プログラム実行プロシージャを起動する(図44のステップS100参照)。
実行番号「10」の制御プログラム実行プロシージャによって実行される制御プログラムBは、第kサイクルにおいて実行中断中となっているので、未実行の部分が実行される(図44のステップS102参照)。
その後、実行番号「11」の変数配信プロシージャの実行終了により、第k+1サイクルにおけるプロシージャが実行終了する。
その後、第k+2サイクルの制御サイクル開始割り込みが入るまでの時間は、システムプログラムによるその他の処理(周辺処理)の実行に使われる。
上記スケジュール例による実行内容は、上述の実施の形態1のスケジュール例1と類似している。このように、本発明の実施の形態3では、プロシージャごとに、実行順序を決定する実行番号と実行サイクル周期とが指定されているので、各制御サイクル内で実行されるプロシージャの実行順序に着目すれば、実行サイクル周期の異なる複数のスレッドを用いた場合と同様の結果となるスケジュールを構築することができる。
上述した実施の形態3の例には実行サイクル超過に対応する機能を含めなかったが、実施の形態1および2にならって、設定した制御サイクル数までのプロシージャの実行サイクル超過を許すための機能を追加してもよい。
上述した実施の形態3におけるようにプロシージャ自体に実行制御機能を持たせることに代えて、システムプログラム210が図44に相当する実行制御機能を担い、システムプログラム210が図47に示すようなスケジュール構築データに基づいてプロシージャを1つずつ順に呼び出して実行するようにしても、実施の形態3と同様のスケジュールを実現することができる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1 PLC、2 フィールドネットワーク、3 サーボモータドライバ、4 サーボモータ、5 ターミナル、6 検出スイッチ、7 リレー、8 PLCサポート装置、9 CD−ROM、10 接続ケーブル、11 PLCシステムバス、12 電源ユニット、13 CPUユニット、14,53 IOユニット、15 特殊ユニット、51 ターミナルバス、52 通信カプラ、81 CPU、83 RAM、85 キーボード、86 マウス、87 モニタ、88 CD−ROMドライブ、100 マイクロプロセッサ、102 チップセット、104 メインメモリ、106 不揮発性メモリ、108 システムタイマ、110 USBコネクタ、120 PLCシステムバスコントローラ、122 DMA制御回路、124 PLCシステムバス制御回路、126,146 バッファメモリ、130 コネクタ、140 フィールドネットワークコントローラ、144 フィールドネットワーク制御回路、200 リアルタイムOS、210 システムプログラム、212 スケジューラプログラム、214 プロシージャライブラリ、222 制御動作用のスレッドおよび独立プロシージャ、224,234 スケジュール構築データ、230 制御プログラム、230−1 第1制御プログラム、230−2 第2制御プログラム、232 シーケンス命令演算プログラム、234 モーション演算プログラム、234−1 第1モーション演算プログラム、234−2 第2モーション演算プログラム、236 ユーザプログラム、236−1 第1ユーザプログラム、236−2 第2ユーザプログラム、310 OS、320 サポートプログラム、321 エディタプログラム、322 コンパイラプログラム、323 デバッガプログラム、324 スケジュール構築データテンプレート、325 スケジュール構築データ作成プログラム、326 通信プログラム、330 ソースプログラム、1041 プログラム領域、1042 制御プログラムの作業領域、1042a グローバル変数領域、1042b 変数同期バッファ領域、1042c 出力同期バッファ領域、1042d 入力同期バッファ領域、1043 PLCシステムバス送信バッファ、1044 PLCシステムバス受信バッファ、1045 フィールドネットワーク送信バッファ、1046 フィールドネットワーク受信バッファ、SYS システム。

Claims (25)

  1. 制御対象を制御するPLCのCPUユニットであって、
    マイクロプロセッサと、
    記憶手段と、
    通信回路とを備え、
    前記記憶手段は、システムプログラム、制御プログラム、およびスケジュール構築データの格納に用いられ、
    前記マイクロプロセッサは、前記記憶手段に格納された、前記システムプログラムおよび前記制御プログラムを実行し、
    前記通信回路は、前記制御プログラムの実行によって生成される出力データを送信するとともに前記制御プログラムの実行に使用される入力データを受信し、
    前記システムプログラムは、前記制御プログラムの実行を制御するためのプロシージャと前記出力データの出力および前記入力データの入力を制御するためのプロシージャとが少なくとも収録されているプロシージャのライブラリを含み、
    前記システムプログラムは、前記プロシージャのライブラリに収録されているプロシージャの実行順序の指定を含む前記スケジュール構築データが前記記憶手段に格納されているときに、前記マイクロプロセッサに、前記スケジュール構築データに含まれているプロシージャの実行順序の指定に従って前記プロシージャのライブラリに収録されているプロシージャを実行させる、PLCのCPUユニット。
  2. 前記スケジュール構築データは、前記プロシージャのライブラリに収録されているプロシージャを用いてスレッドを生成するための指定を含み、
    前記システムプログラムは、前記PLCの制御動作の実行準備処理として、前記スケジュール構築データに含まれている、前記スレッドを生成するための指定に従って、スレッドを生成する処理を含む、請求項1に記載のPLCのCPUユニット。
  3. 前記スケジュール構築データは、前記スレッドについてのデータとして、スレッドの実行中に他のスレッドを起動するための指定を含む、請求項2に記載のPLCのCPUユニット。
  4. 前記スケジュール構築データは、1または複数の前記スレッドを含む、繰り返し実行の単位となるタスクを設定するための指定を含み、
    前記システムプログラムは、前記PLCの制御動作の実行準備処理として、前記スケジュール構築データに含まれている前記タスクを設定するための指定に従って、タスクを設定する処理を含む、請求項2に記載のPLCのCPUユニット。
  5. 前記PLCのCPUユニットは、さらに、前記スケジュール構築データを取得するスケジュール構築データ取得手段を備える、請求項1〜4のいずれか1項に記載のPLCのCPUユニット。
  6. 前記出力データの送信と、前記入力データの受信と、前記入力データを使用して前記出力データを生成する前記制御プログラムの実行とを繰り返させるための、前記プロシージャの実行順序の指定を含む前記スケジュール構築データが前記記憶手段に格納されている、請求項1〜4のいずれか1項に記載のPLCのCPUユニット。
  7. 前記PLCのCPUユニットは、さらに、制御サイクルの周期を設定する手段を備え、
    前記通信回路は、前記制御サイクルごとに、前記出力データの送信および前記入力データの受信を行い、
    前記スケジュール構築データは、前記マイクロプロセッサに、前記制御プログラムの実行が終了した制御サイクルの次の制御サイクルにおいて、前記通信回路による出力データの送信および入力データの受信の後に、前記制御プログラムの実行を開始させ、前記制御プログラムの実行が終了しなかった制御サイクルの次の制御サイクルにおいて、前記制御プログラムの未実行の部分を実行させるための、前記プロシージャの実行順序の指定を含む、請求項6に記載のPLCのCPUユニット。
  8. 前記システムプログラムは、前記PLCの制御動作の実行準備処理として、
    受信された入力データを格納する受信バッファを前記記憶手段内に生成する処理と、
    前記制御プログラムから参照される入力データごとに、その制御プログラムが入力データの参照先とする入力同期バッファを前記記憶手段内に生成する処理とを含み、
    前記スケジュール構築データは、前記マイクロプロセッサに、
    受信された前記入力データを前記受信バッファからその入力データに対応する前記入力同期バッファにコピーする入力コピー処理と、
    前記制御プログラムを実行開始する制御プログラム開始処理とを実行させるための、前記プロシージャの実行順序の指定を含む、請求項6に記載のPLCのCPUユニット。
  9. 前記入力データの受信は、制御サイクルごとに実行され、
    前記スケジュール構築データは、前記マイクロプロセッサに、前記制御サイクルの整数倍の実行サイクルごとに前記制御プログラム開始処理を実行させ、前記制御プログラムの実行サイクルが開始した前記制御サイクルにおいて受信された入力データを対象として、前記入力コピー処理を実行させるための、前記プロシージャの実行順序の指定を含む、請求項8に記載のPLCのCPUユニット。
  10. 前記システムプログラムは、前記PLCの制御動作の実行準備処理として、さらに、
    送信されるべき出力データを格納する送信バッファを前記記憶手段内に生成する処理と、
    前記送信バッファにコピーされる前記出力データが格納される出力同期バッファを前記出力データごとに前記記憶手段内に生成する処理とを含み、
    前記スケジュール構築データは、さらに、前記マイクロプロセッサに、前記出力データを前記出力同期バッファから前記送信バッファにコピーする出力コピー処理を実行させるための、前記プロシージャの実行順序の指定を含む、請求項8に記載のPLCのCPUユニット。
  11. 前記スケジュール構築データは、前記マイクロプロセッサに、前記制御プログラム開始処理を制御サイクルの整数倍の実行サイクルごとに実行させ、前記制御プログラムの実行サイクルの最初の制御サイクルにおいてその前の実行サイクルにおける前記制御プログラムの実行により生成された前記出力データが前記送信バッファから送信されることになるタイミングで前記出力コピー処理を実行させるための、前記プロシージャの実行順序の指定を含む、請求項10に記載のPLCのCPUユニット。
  12. 前記記憶手段は、さらに、前記制御プログラムが使用する変数についての属性データの格納に用いられ、
    前記属性データは、前記変数が複数の前記制御プログラムから参照されるグローバル変数である場合に、その変数の書き換えができる1つのオーナー側制御プログラムの指定と、その変数の参照のみができる1つまたは複数のリファラ側制御プログラムの指定とを含むことが可能であり、
    前記システムプログラムは、前記PLCの制御動作の実行準備処理として、
    前記グローバル変数を格納するグローバル変数領域を前記記憶手段内に生成する処理と、
    各リファラ側制御プログラムについて、そのリファラ側制御プログラムから参照されるグローバル変数ごとに、そのリファラ側制御プログラムがグローバル変数を参照するときに前記グローバル変数領域に代えて参照先とする変数同期バッファを前記記憶手段内に生成する処理とを含み、
    前記スケジュール構築データは、前記マイクロプロセッサに、
    オーナー側制御プログラムを実行開始するオーナー側開始処理と、
    オーナー側制御プログラムの実行が終了すると、そのオーナー側制御プログラムによって書き換えられるグローバル変数を前記グローバル変数領域からそのグローバル変数に対応する前記変数同期バッファにコピーする変数コピー処理と、
    リファラ側制御プログラムを実行開始するリファラ側開始処理とを実行させるための、前記プロシージャの実行順序の指定を含む、請求項6に記載のPLCのCPUユニット。
  13. 前記制御プログラムは、モータの運動を制御するためのモーション指令値を算出するモーション演算プログラムと、ユーザにおける制御目的に応じて作成され、前記モーション演算プログラムに対してその実行に必要な指示を与える処理を含むユーザプログラムとを含み、
    前記スケジュール構築データは、前記PLCのCPUユニットに、前記通信回路による前記出力データの送信および前記入力データの受信、前記ユーザプログラムの実行、ならびに前記モーション演算プログラムの実行を、この順序で、繰り返し実行させるための、前記プロシージャの実行順序の指定を含む、請求項6に記載のPLCのCPUユニット。
  14. 前記通信回路は、制御サイクルの周期で前記出力データを送信しおよび前記入力データを受信し、
    前記制御プログラムは、第1制御プログラムおよび第2制御プログラムを含み、
    前記第1制御プログラムは、モータの運動を制御するための第1モーション指令値データを生成する第1モーション演算プログラムを含み、
    前記第2制御プログラムは、モータの運動を制御するための第2モーション指令値データを生成する第2モーション演算プログラムを含み、
    前記第1制御プログラムおよび前記第2制御プログラムの少なくとも一方は、ユーザにおける制御目的に応じて作成され前記第1モーション演算プログラムおよび前記第2モーション演算プログラムに対してその実行に必要な指示を与える命令を含むユーザプログラムを含み、
    前記スケジュール構築データは、前記マイクロプロセッサに、
    前記制御サイクルの周期と同じ周期の第1実行サイクルごとに前記第1制御プログラムを実行開始させ、前記制御サイクルの周期の2以上の整数倍の周期の第2実行サイクルごとに前記第2制御プログラムを実行開始させ、
    前記第2実行サイクルが開始する前記制御サイクルにおいて、前記第1制御プログラムの実行終了後に前記第2制御プログラムを実行開始させ、当該制御サイクルが終了するまでに前記第2制御プログラムが終了しなければ次の制御サイクルにおいて前記第1制御プログラムの実行終了後に前記第2制御プログラムの未実行の部分の実行を開始させるための、前記プロシージャの実行順序の指定を含む、請求項6に記載のPLCのCPUユニット。
  15. 前記マイクロプロセッサは、少なくとも第1コアおよび第2コアを含み、
    前記制御プログラムは、第1制御プログラムと第2制御プログラムとを含み、
    前記スケジュール構築データは、前記出力データの送信および前記入力データの受信が終了した後に、前記第1コアに前記第1制御プログラムを実行させるとともに、前記第2コアに前記第2制御プログラムを前記第1制御プログラムの実行と並列に実行させるための、前記プロシージャの実行順序の指定を含む、請求項6に記載のPLCのCPUユニット。
  16. マイクロプロセッサと、記憶手段と、通信回路とを備え、制御対象を制御するPLCのCPUユニットにおいて、前記記憶手段に格納されて前記マイクロプロセッサによって実行されるためのPLC用のシステムプログラムであって、
    前記記憶手段は、前記システムプログラム、制御プログラム、およびスケジュール構築データの格納に用いられ、
    前記マイクロプロセッサは、前記記憶手段に格納された前記システムプログラムおよび前記制御プログラムを実行し、
    前記通信回路は、前記制御プログラムの実行によって生成される出力データを送信および前記制御プログラムの実行に使用される入力データを受信し、
    前記システムプログラムは、前記制御プログラムの実行を制御するためのプロシージャと前記出力データの出力および前記入力データの入力を制御するためのプロシージャとが少なくとも収録されているプロシージャのライブラリを含み、
    前記システムプログラムは、前記プロシージャのライブラリに収録されているプロシージャの実行順序の指定を含む前記スケジュール構築データが前記記憶手段に格納されているときに、前記マイクロプロセッサに、前記スケジュール構築データに含まれているプロシージャの実行順序の指定に従って前記プロシージャのライブラリに収録されているプロシージャを実行させる、PLC用のシステムプログラム。
  17. 前記スケジュール構築データは、前記プロシージャのライブラリに収録されているプロシージャを用いてスレッドを生成するための指定を含み、
    前記システムプログラムは、前記PLCの制御動作の実行準備処理として、前記スケジュール構築データに含まれている、前記スレッドを生成するための指定に従って、スレッドを生成する処理を含む、請求項16に記載のPLC用のシステムプログラム。
  18. 前記スケジュール構築データは、前記スレッドについてのデータとして、スレッドの実行中に他のスレッドを起動するための指定を含む、請求項17に記載のPLC用のシステムプログラム。
  19. マイクロプロセッサと、記憶手段と、通信回路とを備え、制御対象を制御するPLCのCPUユニットにおいて、前記記憶手段に格納されて前記マイクロプロセッサによって実行されるためのPLC用のシステムプログラムを格納した記録媒体であって、
    前記記憶手段は、前記システムプログラム、制御プログラム、およびスケジュール構築データの格納に用いられ、
    前記マイクロプロセッサは、前記記憶手段に格納された前記システムプログラムおよび前記制御プログラムを実行し、
    前記通信回路は、前記制御プログラムの実行によって生成される出力データを送信および前記制御プログラムの実行に使用される入力データを受信し、
    前記システムプログラムは、前記制御プログラムの実行を制御するためのプロシージャと前記出力データの出力および前記入力データの入力を制御するためのプロシージャとが少なくとも収録されているプロシージャのライブラリを含み、
    前記システムプログラムは、前記プロシージャのライブラリに収録されているプロシージャの実行順序の指定を含む前記スケジュール構築データが前記記憶手段に格納されているときに、前記マイクロプロセッサに、前記スケジュール構築データに含まれているプロシージャの実行順序の指定に従って前記プロシージャのライブラリに収録されているプロシージャを実行させる、PLC用のシステムプログラムを格納した記録媒体。
  20. 前記スケジュール構築データは、前記プロシージャのライブラリに収録されているプロシージャを用いてスレッドを生成するための指定を含み、
    前記システムプログラムは、前記PLCの制御動作の実行準備処理として、前記スケジュール構築データに含まれている、前記スレッドを生成するための指定に従って、スレッドを生成する処理を含む、請求項19に記載のPLC用のシステムプログラムを格納した記録媒体。
  21. 前記スケジュール構築データは、前記スレッドについてのデータとして、スレッドの実行中に他のスレッドを起動するための指定を含む、請求項20に記載のPLC用のシステムプログラムを格納した記録媒体。
  22. 請求項5に記載のPLCのCPUユニットと、前記PLCの使用を支援するためのPLCサポート装置とを含むPLCシステムであって、
    前記PLCサポート装置は、記憶部と、演算部とを備え、
    前記記憶部は、PLCサポートプログラムおよび前記スケジュール構築データの格納に用いられ、
    前記PLCサポートプログラムは、前記スケジュール構築データを前記PLCのCPUユニットが取得可能であるようにして出力するための出力処理を、前記演算部に実行させる、PLCシステム。
  23. 制御対象を制御するPLCのCPUユニットの使用を支援するためのPLCサポート装置であって、
    前記PLCのCPUユニットは、
    制御プログラムの実行を制御するためのプロシージャと、前記制御プログラムの実行によって生成される出力データの出力および前記制御プログラムの実行に使用される入力データの入力を制御するためのプロシージャとが少なくとも収録されているプロシージャのライブラリと、
    前記プロシージャのライブラリに収録されているプロシージャの実行順序の指定を含むスケジュール構築データを取得するスケジュール構築データ取得手段とを備え、
    前記PLCサポート装置は、記憶部と、演算部とを備え、
    前記記憶部は、PLCサポートプログラムおよび前記スケジュール構築データの格納に用いられ、
    前記PLCサポートプログラムは、前記スケジュール構築データを前記PLCのCPUユニットが取得可能であるようにして出力するための出力処理を、前記演算部に実行させる、PLCサポート装置。
  24. 制御対象を制御するPLCのCPUユニットの使用を支援するためのPLCサポート装置において実行されるためのPLCサポートプログラムであって、
    前記PLCのCPUユニットは、
    制御プログラムの実行を制御するためのプロシージャと、前記制御プログラムの実行によって生成される出力データの出力および前記制御プログラムの実行に使用される入力データの入力を制御するためのプロシージャとが少なくとも収録されているプロシージャのライブラリと、
    前記プロシージャのライブラリに収録されているプロシージャの実行順序の指定を含むスケジュール構築データを取得するスケジュール構築データ取得手段とを備え、
    前記PLCサポート装置は、記憶部と、演算部とを備え、
    前記記憶部は、前記PLCサポートプログラムおよび前記スケジュール構築データの格納に用いられ、
    前記PLCサポートプログラムは、前記スケジュール構築データを前記PLCのCPUユニットが取得可能であるようにして出力するための出力処理を、前記演算部に実行させる、PLCサポートプログラム。
  25. 制御対象を制御するPLCのCPUユニットの使用を支援するためのPLCサポート装置において実行されるためのPLCサポートプログラムを格納した記録媒体であって、
    前記PLCのCPUユニットは、
    制御プログラムの実行を制御するためのプロシージャと、前記制御プログラムの実行によって生成される出力データの出力および前記制御プログラムの実行に使用される入力データの入力を制御するためのプロシージャとが少なくとも収録されているプロシージャのライブラリと、
    前記プロシージャのライブラリに収録されているプロシージャの実行順序の指定を含むスケジュール構築データを取得するスケジュール構築データ取得手段とを備え、
    前記PLCサポート装置は、記憶部と、演算部とを備え、
    前記記憶部は、前記PLCサポートプログラムおよび前記スケジュール構築データの格納に用いられ、
    前記PLCサポートプログラムは、前記スケジュール構築データを前記PLCのCPUユニットが取得可能であるようにして出力するための出力処理を、前記演算部に実行させる、PLCサポートプログラムを格納した記録媒体。
JP2011156474A 2011-07-15 2011-07-15 Plcのcpuユニット、plc用のシステムプログラム、plc用のシステムプログラムを格納した記録媒体、plcシステム、plcサポート装置、plcサポートプログラム、および、plcサポートプログラムを格納した記録媒体 Expired - Fee Related JP5099251B1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2011156474A JP5099251B1 (ja) 2011-07-15 2011-07-15 Plcのcpuユニット、plc用のシステムプログラム、plc用のシステムプログラムを格納した記録媒体、plcシステム、plcサポート装置、plcサポートプログラム、および、plcサポートプログラムを格納した記録媒体
EP12814595.0A EP2711798B1 (en) 2011-07-15 2012-03-12 Cpu unit for plc, plc-use system program, recording medium in which plc-use system program is stored, plc system, plc support device, plc support program, and recording medium in which plc support program is stored
US14/125,997 US10082777B2 (en) 2011-07-15 2012-03-12 CPU unit for PLC, PLC-use system program, recording medium in which PLC-use system program is stored, PLC system, PLC support device, PLC support program, and recording medium in which PLC support program is stored
CN201280026760.9A CN103562807B (zh) 2011-07-15 2012-03-12 Plc的cpu单元、plc系统、plc辅助装置
PCT/JP2012/056243 WO2013011713A1 (ja) 2011-07-15 2012-03-12 Plcのcpuユニット、plc用のシステムプログラム、plc用のシステムプログラムを格納した記録媒体、plcシステム、plcサポート装置、plcサポートプログラム、および、plcサポートプログラムを格納した記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011156474A JP5099251B1 (ja) 2011-07-15 2011-07-15 Plcのcpuユニット、plc用のシステムプログラム、plc用のシステムプログラムを格納した記録媒体、plcシステム、plcサポート装置、plcサポートプログラム、および、plcサポートプログラムを格納した記録媒体

Publications (2)

Publication Number Publication Date
JP5099251B1 true JP5099251B1 (ja) 2012-12-19
JP2013025353A JP2013025353A (ja) 2013-02-04

Family

ID=47528443

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011156474A Expired - Fee Related JP5099251B1 (ja) 2011-07-15 2011-07-15 Plcのcpuユニット、plc用のシステムプログラム、plc用のシステムプログラムを格納した記録媒体、plcシステム、plcサポート装置、plcサポートプログラム、および、plcサポートプログラムを格納した記録媒体

Country Status (5)

Country Link
US (1) US10082777B2 (ja)
EP (1) EP2711798B1 (ja)
JP (1) JP5099251B1 (ja)
CN (1) CN103562807B (ja)
WO (1) WO2013011713A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019049947A (ja) * 2017-09-12 2019-03-28 オムロン株式会社 制御装置および制御方法
CN113341864A (zh) * 2021-06-07 2021-09-03 重庆高新技术产业研究院有限责任公司 一种基于plc的控制相似性可逆向逻辑系统及其分析方法

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10001790B2 (en) * 2013-02-26 2018-06-19 Honeywell International Inc. Security system with integrated HVAC control
US20150120001A1 (en) * 2013-10-31 2015-04-30 Sputtering Components, Inc. Decentralized process controller
JP2015200914A (ja) * 2014-04-03 2015-11-12 多摩川精機株式会社 機器制御装置、プログラム作成装置、プログラム作成・実行システム、機器制御システム、プログラム作成方法、機器制御プログラム、プログラム記録媒体、プログラム格納装置および機器制御方法
CN105159656A (zh) * 2014-06-16 2015-12-16 上海宝信软件股份有限公司 Plc软件编程辅助设计方法
KR101840990B1 (ko) 2014-11-19 2018-03-21 미쓰비시덴키 가부시키가이샤 제어 장치, 제어 방법 및 프로그램
CN104503817B (zh) * 2014-12-30 2018-03-20 北京纵横机电技术开发公司 一种连续功能图编程方法
US10031502B2 (en) 2015-03-27 2018-07-24 Rockwell Automation Germany Gmbh & Co. Kg I/O expansion for safety controller
JP2016194831A (ja) * 2015-03-31 2016-11-17 オムロン株式会社 制御装置
US9897990B2 (en) * 2015-05-04 2018-02-20 Rockwell Automation Germany Gmbh & Co. Kg Safety controller with rapid backup and configuration
JP6520545B2 (ja) * 2015-08-10 2019-05-29 オムロン株式会社 サポート装置およびサポートプログラム
US10353360B2 (en) 2015-10-19 2019-07-16 Ademco Inc. Method of smart scene management using big data pattern analysis
KR102079499B1 (ko) * 2015-10-20 2020-02-21 엘에스산전 주식회사 Plc 위치 결정 시스템의 축별 제어주기 독립 할당 방법
US10197985B2 (en) 2015-10-29 2019-02-05 Rockwell Automation Germany Gmbh & Co. Kg Safety controller module
DE102016202305A1 (de) * 2016-02-16 2017-08-17 Robert Bosch Gmbh Verfahren und Vorrichtung zum Betreiben eines Steuergeräts
CN105843157B (zh) * 2016-03-30 2018-10-12 上海云统信息科技有限公司 具有远程数据追踪捕捉功能的plc系统及其工作方法
DE102016211286A1 (de) * 2016-06-23 2017-12-28 Siemens Aktiengesellschaft Verfahren zum synchronisierten Betrieb von Mehrkernprozessoren
DE102017200669A1 (de) * 2017-01-17 2018-07-19 Robert Bosch Gmbh Verfahren und Vorrichtung zum Betreiben eines Steuergeräts, Computerprogramm und Verfahren zum Generieren des Computerprogramms
US11086782B2 (en) 2017-06-21 2021-08-10 Tetra Laval Holdings & Finance S.A. Method of logging process data in a PLC controlled equipment
JP6922583B2 (ja) * 2017-09-15 2021-08-18 オムロン株式会社 情報処理装置、情報処理方法、および、情報処理プログラム
JP6950415B2 (ja) 2017-09-29 2021-10-13 オムロン株式会社 制御装置
CN110720081B (zh) * 2018-05-11 2022-05-03 三菱电机株式会社 编译器及编程辅助装置
CN109814480B (zh) * 2019-01-18 2021-10-08 广州宁基智能系统有限公司 Plc与线控程序之间的可视化交互方法及系统
KR102480595B1 (ko) * 2020-01-20 2022-12-22 엘에스일렉트릭(주) Plc 시스템의 파라미터 설정 방법
FR3108182B1 (fr) 2020-03-12 2022-12-09 Crouzet Automatismes Ensemble comportant un terminal de programmation, un automate programmable et une interface de programmation
JP7380390B2 (ja) * 2020-03-31 2023-11-15 オムロン株式会社 制御装置、プログラムおよび制御方法
DE102023101842A1 (de) 2023-01-25 2024-07-25 Land Hessen (Hessen Mobil Straßen- und Verkehrsmanagement) Verkehrswegetunnelsteuerungssystem mit modularem SPS Programm

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4947315A (en) * 1986-12-03 1990-08-07 Finnigan Corporation System for controlling instrument using a levels data structure and concurrently running compiler task and operator task
JPH06131016A (ja) * 1992-10-20 1994-05-13 Mitsubishi Electric Corp コミュニケーションシステム
JPH06309010A (ja) * 1993-04-23 1994-11-04 Matsushita Electric Works Ltd モジュール化された制御プログラムを用いた負荷制御方法及びその装置
JPH07295858A (ja) * 1994-04-28 1995-11-10 Sony Corp 画像処理装置及び並列コンピュータのデバッグ処理方法
DE4445651A1 (de) 1994-12-21 1996-06-27 Bosch Gmbh Robert Verfahren zur Steuerung von technischen Vorgängen
US5636124A (en) * 1995-03-08 1997-06-03 Allen-Bradley Company, Inc. Multitasking industrial controller
JPH10207724A (ja) * 1997-01-17 1998-08-07 Digital Vision Lab:Kk 分散アプリケーション実行システム
JP3356077B2 (ja) 1998-09-29 2002-12-09 三菱電機株式会社 プログラマブルコントローラのコンスタントスキャン設定時の出力間隔の一定化方法
JP3770366B2 (ja) 1999-04-09 2006-04-26 オムロン株式会社 制御プログラムの開発環境装置、制御プログラムを実行する制御装置、並びに、それらを実現するプログラムの記録媒体
JP3848096B2 (ja) * 2001-04-03 2006-11-22 株式会社山武 バッチプラント運転監視装置、記録媒体及びプログラム
US20020198970A1 (en) * 2001-04-27 2002-12-26 Shunji Kuwa Programmable controller system
JP2003140918A (ja) * 2001-10-29 2003-05-16 Fujitsu Ltd コンピュータの障害復旧支援装置及び方法、並びに、コンピュータの障害復旧支援プログラム
JP3813930B2 (ja) * 2002-01-09 2006-08-23 松下電器産業株式会社 プロセッサ及びプログラム実行方法
US7822495B2 (en) * 2002-04-15 2010-10-26 Fisher-Rosemount Systems, Inc. Custom function blocks for use with process control systems
JP2005129026A (ja) * 2003-10-02 2005-05-19 Omron Corp プログラマブルコントローラおよび通信ユニットならびにコントローラシステムおよびデータ処理方法ならびに変数解決方法およびデータ受渡方法
JP2007140655A (ja) 2005-11-15 2007-06-07 Yaskawa Electric Corp モーションコントローラ
JP2007140656A (ja) 2005-11-15 2007-06-07 Sharp Corp 通信装置
US20070173960A1 (en) * 2006-01-23 2007-07-26 Shalabh Kumar Compact modular programmable logic controller
JP2010170536A (ja) * 2008-12-26 2010-08-05 Omron Corp プログラマブル・コントローラ
US8599904B2 (en) * 2009-01-30 2013-12-03 Analog Devices, Inc. Method and apparatus for software GPS receiver
CN101526805A (zh) * 2009-04-02 2009-09-09 陈丽黄 Plc模拟控制系统及其模拟控制方法
JP5364530B2 (ja) 2009-10-09 2013-12-11 株式会社日立製作所 設備状態監視方法、監視システム及び監視プログラム
CN201716564U (zh) * 2010-06-25 2011-01-19 中国科学院沈阳自动化研究所 高性能可编程控制器专用处理器体系结构
US9513966B2 (en) * 2011-02-17 2016-12-06 Siemens Aktiengesellschaft Parallel processing in human-machine interface applications

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019049947A (ja) * 2017-09-12 2019-03-28 オムロン株式会社 制御装置および制御方法
CN113341864A (zh) * 2021-06-07 2021-09-03 重庆高新技术产业研究院有限责任公司 一种基于plc的控制相似性可逆向逻辑系统及其分析方法

Also Published As

Publication number Publication date
CN103562807B (zh) 2016-04-27
JP2013025353A (ja) 2013-02-04
EP2711798A4 (en) 2015-08-26
EP2711798A1 (en) 2014-03-26
WO2013011713A1 (ja) 2013-01-24
EP2711798B1 (en) 2019-05-22
CN103562807A (zh) 2014-02-05
US10082777B2 (en) 2018-09-25
US20140207254A1 (en) 2014-07-24

Similar Documents

Publication Publication Date Title
JP5099251B1 (ja) Plcのcpuユニット、plc用のシステムプログラム、plc用のシステムプログラムを格納した記録媒体、plcシステム、plcサポート装置、plcサポートプログラム、および、plcサポートプログラムを格納した記録媒体
JP4894961B1 (ja) Plcのcpuユニット、plc用システムプログラムおよびplc用システムプログラムを格納した記録媒体
JP4957853B1 (ja) Plcのcpuユニット、plc用のシステムプログラムおよびplc用のシステムプログラムを格納した記録媒体
JP4807475B1 (ja) 演算ユニット、出力制御方法、およびプログラム
JP4905597B1 (ja) コントローラサポート装置、その装置において実行されるためのコントローラサポートプログラム、およびそのプログラムを格納する記録媒体
JP4752984B1 (ja) Plcのcpuユニット、plc用のシステムプログラムおよびplc用のシステムプログラムを格納した記録媒体
US8977534B2 (en) Controller support apparatus, controller support program executed on the apparatus, storage medium storing the program, and method of estimating execution time of control program
US20120239172A1 (en) Cpu unit of plc, system program for plc, and recording medium storing system program for plc
JP4752983B1 (ja) Plcのcpuユニット、plc用のシステムプログラムおよびplc用のシステムプログラムを格納した記録媒体
US8504176B2 (en) CPU unit of PLC, system program for PLC, and recording medium storing system program for PLC
WO2018147058A1 (ja) 制御装置
EP2533114A1 (en) Controller support device, controller support program to be executed in said device, recording medium storing said program, and method for estimating execution duration of control program
JP2016194831A (ja) 制御装置
JP2014146070A (ja) 制御装置、制御方法、およびプログラム
JP2012194955A (ja) 支援装置、表示制御方法、およびプログラム
JP5845629B2 (ja) Plcのcpuユニット、plc用のシステムプログラムおよびplc用のシステムプログラムを格納した記録媒体

Legal Events

Date Code Title Description
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: 20120828

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: 20120910

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

Free format text: PAYMENT UNTIL: 20151005

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5099251

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