(57)【要約】【課題】稼働中のスレーブ装置の状態を有効および無効の間で切り替えることが可能なＰＬＣを提供する。【解決手段】ＰＬＣ１は、複数のスレーブ装置の各々と、フィールドネットワークを介して通信する。ＰＬＣ１は、ユーザプログラム２３６と、ユーザプログラム２３６によって利用されるライブラリ２８０とを記憶している。ＰＬＣは、ユーザプログラム２３６を実行する。ライブラリ２８０のプログラムの１つは、スレーブ装置を無効な状態から有効な状態へ変更するための機能およびスレーブ装置を有効な状態から無効な状態へ変更するための機能を実現する。ユーザプログラム２３６には、予め定められた入力を受け付けた場合に、複数のスレーブ装置のうちの指定されたスレーブ装置の状態を変更対象として上記プログラムの実行を指示するための記述が含まれている。【選択図】図２
2014146070.tif 000002
【特許請求の範囲】
【請求項１】
マスタ装置として機能する制御装置であって、
スレーブ側のシステムを構成する複数のスレーブ装置の各々と、ネットワークを介して通信するための通信部と、
前記システムの構成に対応したユーザプログラムと、前記ユーザプログラムによって利用されるプログラムライブラリとを記憶した記憶部と、
前記ユーザプログラムを実行するための実行部とを備え、
前記プログラムライブラリに記憶されたプログラムは、前記スレーブ装置を無効な状態から有効な状態へ変更するための機能および前記スレーブ装置を有効な状態から無効な状態へ変更するための機能のいずれか一方を実現し、
前記ユーザプログラムには、前記複数のスレーブ装置を指定する記述と、記述されたスレーブ装置の状態を変更対象としてプログラムライブラリに記憶されたプログラムの実行を指示するための記述が含まれている、制御装置。
【請求項２】
前記記憶部は、前記システムの構成を表した構成情報をさらに記憶し、
前記実行部は、前記構成情報を変更する処理を行なうことによって、前記いずれか一方の機能を実現する、請求項１に記載の制御装置。
【請求項３】
前記制御装置は、モーション制御を行ない、
前記プログラムライブラリには、前記スレーブ装置に割り付けられた前記モーション制御の制御対象である軸を無効な状態から有効な状態へ変更するための機能および前記軸を有効な状態から無効な状態へ変更するための機能のいずれか一方を実現するためのプログラムがさらに記憶されている、請求項１または２に記載の制御装置。
【請求項４】
前記実行部は、前記軸を有効な状態から無効な状態へ変更するための機能を実現するプログラムを実行した後に、前記スレーブ装置を有効な状態から無効な状態へ変更するための機能を実現するプログラムを実行する、請求項３に記載の制御装置。
【請求項５】
前記ユーザプログラムの作成を行なうための支援装置からの指示に基づき、前記構成情報を変更する変更部をさらに備え、
前記実行部は、前記構成情報が変更されたことに基づき、前記いずれか一方の機能を実現する、請求項２に記載の制御装置。
【請求項６】
前記有効な状態は、定周期でリアルタイムの情報交換を行なうプロセスデータオブジェクトを使用した通信が可能な状態であり、
前記無効な状態は、前記プロセスデータオブジェクトを使用した通信が不可能な状態である、請求項１または２に記載の制御装置。
【請求項７】
前記ネットワークは、ＥｔｈｅｒＣＡＴ（登録商標）ネットワークであり、
前記有効な状態は、オペレーショナル状態であり、
前記無効な状態は、前記オペレーショナル状態以外の状態である、請求項６に記載の制御装置。
【請求項８】
スレーブとして接続されるスレーブ装置を制御するマスタ装置として機能する制御装置であって、
ユーザプログラムと、前記ユーザプログラム内で呼び出されて、当該ユーザプログラム内で指定されたスレーブに対する有効指定または無効指定の情報に対応して、当該指定されたスレーブについて有効または無効を設定する設定プログラムとを記憶した記憶部と、
前記ユーザプログラムを実行するための実行部と、を備える制御装置。
【請求項９】
前記スレーブ装置とネットワークを介して通信するための通信部を備え、
前記実行部は、ユーザプログラムの実行により、前記設定プログラムで無効と設定されたスレーブに対して、当該スレーブへ無効と設定された情報を送り、または、当該スレーブに対してスレーブ装置を制御させない指令を送り、もしくは、当該スレーブに対してスレーブ装置を制御する情報を送らない、請求項８に記載の制御装置。
【請求項１０】
スレーブ側のシステムを構成する複数のスレーブ装置の各々と、ネットワークを介して通信する、マスタ装置として機能する制御装置における制御方法であって、
前記システムの構成に対応した、各前記スレーブ装置を動作させるためのユーザプログラムを記憶するステップと、
前記ユーザプログラムを実行するステップとを備え、
前記制御装置は、前記ユーザプログラムによって利用されるプログラムライブラリを記憶しており、
前記プログラムライブラリに記憶されたプログラムは、前記スレーブ装置を無効な状態から有効な状態へ変更するための機能および前記スレーブ装置を有効な状態から無効な状態へ変更するための機能のいずれか一方を実現し、
前記ユーザプログラムには、前記複数のスレーブ装置を指定する記述と、記述されたスレーブ装置の状態を変更対象としてプログラムライブラリに記憶されたプログラムの実行を指示するための記述が含まれている、制御方法。
【請求項１１】
スレーブ側のシステムを構成する複数のスレーブ装置の各々と、ネットワークを介して通信する、マスタ装置として機能する制御装置を制御するプログラムであって、
前記システムの構成に対応した、各前記スレーブ装置を動作させるためのユーザプログラムを記憶するステップと、
前記ユーザプログラムを実行するステップとを、前記制御装置のプロセッサに実行させ、
前記制御装置は、前記ユーザプログラムによって利用される予め定められたプログラムライブラリを記憶しており、
前記プログラムライブラリに記憶されたプログラムは、前記スレーブ装置を無効な状態から有効な状態へ変更するための機能および前記スレーブ装置を有効な状態から無効な状態へ変更するための機能のいずれか一方を実現し、
前記ユーザプログラムには、前記複数のスレーブ装置を指定する記述と、記述されたスレーブ装置の状態を変更対象としてプログラムライブラリに記憶されたプログラムの実行を指示するための記述が含まれている、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械や設備などの動作を制御するための用いられる制御装置、制御方法、およびプログラムに関する。
【背景技術】
【０００２】
従来、工作機械の分野では数値制御が用いられている。特許文献１には、数値制御を用いたシステムとして、マスタ局と複数のスレーブ局とから構成される制御システムが開示されている。当該マスタ局は、以下の処理を行なう。マスタ局は、制御プログラムの実行に当たり、システムパラメータファイルおよび環境設定情報に相当するデータを読み出す。マスタ局は、当該読み出したデータに基づき、各スレーブ局が有効な状態か否かを判断する。マスタ局は、制御プログラムにおける命令がスレーブ局に対する命令である場合、当該スレーブ局が無効状態であれば、当該命令を実行しない。
【０００３】
また、従来、生産ライン等ではシーケンス制御が用いられている。当該シーケンス制御には、プログラマブル・ロジック・コントローラ（ＰＬＣ：Programmable Logic Controller）が利用される。ＰＬＣは、たとえば、ユーザプログラムを実行するマイクロプロセッサを含むＣＰＵ（Central Processing Unit）ユニット、外部のスイッチやセンサからの信号入力および外部のリレーやアクチュエータへの信号出力を担当するＩＯ（Input Output）ユニットといった複数のユニットで構成される。それらのユニット間で、ユーザプログラム実行サイクルごとに、ＰＬＣシステムバスおよび／またはフィールドネットワークを経由してデータの授受をしながら、ＰＬＣは制御動作を実行する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−１９２４３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来では、マスタ局は、稼働中のスレーブ局の状態を有効および無効の間で切り替えることができない。
【０００６】
本願発明は、上記の問題点に鑑みなされたものであって、その目的は、稼働中のスレーブ装置（スレーブ局）の状態を有効および無効の間で切り替えることが可能な制御装置、制御方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明のある局面に従うと、制御装置は、マスタ装置として機能する。制御装置は、スレーブ側のシステムを構成する複数のスレーブ装置の各々と、ネットワークを介して通信するための通信部と、システムの構成に対応したユーザプログラムと、ユーザプログラムによって利用されるプログラムライブラリとを記憶した記憶部と、ユーザプログラムを実行するための実行部とを備える。プログラムライブラリに記憶されたプログラムは、スレーブ装置を無効な状態から有効な状態へ変更するための機能およびスレーブ装置を有効な状態から無効な状態へ変更するための機能のいずれか一方を実現する。ユーザプログラムには、複数のスレーブ装置を指定する記述と、記述されたスレーブ装置の状態を変更対象としてプログラムライブラリに記憶されたプログラムの実行を指示するための記述が含まれている。
【０００８】
好ましくは、記憶部は、システムの構成を表した構成情報をさらに記憶している。実行部は、構成情報を変更する処理を行なうことによって、いずれか一方の機能を実現する。
【０００９】
好ましくは、制御装置は、モーション制御を行なう。プログラムライブラリには、スレーブ装置に割り付けられたモーション制御の制御対象である軸を無効な状態から有効な状態へ変更するための機能および軸を有効な状態から無効な状態へ変更するための機能のいずれか一方を実現するためのプログラムがさらに記憶されている。
【００１０】
好ましくは、実行部は、軸を有効な状態から無効な状態へ変更するための機能を実現するプログラムを実行した後に、スレーブ装置を有効な状態から無効な状態へ変更するための機能を実現するプログラムを実行する。
【００１１】
好ましくは、ユーザプログラムの作成を行なうための支援装置からの指示に基づき、構成情報を変更する変更部をさらに備える。実行部は、構成情報が変更されたことに基づき、いずれか一方の機能を実現する。
【００１２】
好ましくは、有効な状態は、定周期でリアルタイムの情報交換を行なうプロセスデータオブジェクトを使用した通信が可能な状態である。無効な状態は、プロセスデータオブジェクトを使用した通信が不可能な状態である。
【００１３】
好ましくは、ネットワークは、ＥｔｈｅｒＣＡＴ（登録商標）ネットワークである。有効な状態は、オペレーショナル状態である。無効な状態は、オペレーショナル状態以外の状態である。
【００１４】
本発明の他の局面に従うと、制御装置は、スレーブとして接続されるスレーブ装置を制御するマスタ装置として機能する。制御装置は、ユーザプログラムと、ユーザプログラム内で呼び出されて、当該ユーザプログラム内で指定されたスレーブに対する有効指定または無効指定の情報に対応して、当該指定されたスレーブについて有効または無効を設定する設定プログラムとを記憶した記憶部と、ユーザプログラムを実行するための実行部と、を備える。
【００１５】
好ましくは、制御装置は、スレーブ装置とネットワークを介して通信するための通信部を備える。実行部は、ユーザプログラムの実行により、設定プログラムで無効と設定されたスレーブに対して、当該スレーブへ無効と設定された情報を送り、または、当該スレーブに対してスレーブ装置を制御させない指令を送り、もしくは、当該スレーブに対してスレーブ装置を制御する情報を送らない。
【００１６】
本発明のさらに他の局面に従うと、制御方法は、スレーブ側のシステムを構成する複数のスレーブ装置の各々と、ネットワークを介して通信する、マスタ装置として機能する制御装置において実行される。制御方法は、システムの構成に対応した、各スレーブ装置を動作させるためのユーザプログラムを記憶するステップと、ユーザプログラムを実行するステップとを備える。制御装置は、ユーザプログラムによって利用されるプログラムライブラリを記憶している。プログラムライブラリに記憶されたプログラムは、スレーブ装置を無効な状態から有効な状態へ変更するための機能およびスレーブ装置を有効な状態から無効な状態へ変更するための機能のいずれか一方を実現する。ユーザプログラムには、複数のスレーブ装置を指定する記述と、記述されたスレーブ装置の状態を変更対象としてプログラムライブラリに記憶されたプログラムの実行を指示するための記述が含まれている。
【００１７】
本発明のさらに他の局面に従うと、プログラムは、スレーブ側のシステムを構成する複数のスレーブ装置の各々と、ネットワークを介して通信する、マスタ装置として機能する制御装置を制御する。プログラムは、システムの構成に対応した、各スレーブ装置を動作させるためのユーザプログラムを記憶するステップと、ユーザプログラムを実行するステップとを、制御装置のプロセッサに実行させる。制御装置は、ユーザプログラムによって利用される予め定められたプログラムライブラリを記憶している。プログラムライブラリに記憶されたプログラムは、スレーブ装置を無効な状態から有効な状態へ変更するための機能およびスレーブ装置を有効な状態から無効な状態へ変更するための機能のいずれか一方を実現する。ユーザプログラムには、複数のスレーブ装置を指定する記述と、記述されたスレーブ装置の状態を変更対象としてプログラムライブラリに記憶されたプログラムの実行を指示するための記述が含まれている。
【発明の効果】
【００１８】
本発明によれば、稼働中のスレーブ装置の状態を有効および無効の間で切り替えることが可能となる。
【図面の簡単な説明】
【００１９】
【図１】ＰＬＣシステムの概略構成を示す模式図である。
【図２】ＰＬＣに記憶されるプログラムおよびデータを説明するための図である。
【図３】ＰＬＣサポート装置において作成されるソース形式のユーザプログラムの一部を表した図である。
【図４】ＣＰＵユニットのハードウェア構成を示す模式図である。
【図５】ＣＰＵユニットで実行されるソフトウェア構成を示す模式図である。
【図６】ＰＬＣの第１の適用例を説明するための図である。
【図７】ＰＬＣの第２の適用例を説明するための図である。
【図８】ＰＬＣに記憶されるデータを説明するための図である。
【図９】スレーブ装置の状態情報を説明するための図である。
【図１０】スレーブ装置が無効となったときのスレーブ装置の仕様およびプロセスデータの仕様等を説明するための図である。
【図１１】プロセスデータを説明するための図である。
【図１２】スレーブ装置Ｃが有効であり、かつスレーブ装置Ｄが無効である場合における、スレーブ装置Ｃとスレーブ装置Ｄとのプロセスデータに対する処理を説明するための図である。
【図１３】ＰＬＣとスレーブ装置との処理を説明するためのシーケンス図である。
【図１４】ＰＬＣとスレーブ装置との他の処理の説明するためのシーケンス図である。
【図１５】軸制御を行なう場合のソース形式のユーザプログラムの一部を表した図である。
【図１６】ＰＬＣの処理の一例を説明するためのフローチャートである。
【図１７】ＰＬＣの処理の他の例を説明するためのフローチャートである。
【図１８】ＰＬＣの機能的構成を説明するための機能ブロック図である。
【図１９】ＣＰＵユニットに接続して用いられるＰＬＣサポート装置のハードウェア構成を示す模式図である。
【図２０】ＣＰＵユニットに接続して用いられるＰＬＣサポート装置のソフトウェア構成を示す模式図である。
【図２１】ソース形式のユーザプログラムの一部を表示した図である。
【発明を実施するための形態】
【００２０】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００２１】
＜Ａ．システム構成＞
本実施の形態に係るＰＬＣは、モータの運動を制御するためのモーション制御機能を有する。まず、図１を参照して、本実施の形態に係るＰＬＣ１のシステム構成について説明する。
【００２２】
図１は、本発明の実施の形態に係るＰＬＣシステムの概略構成を示す模式図である。図１を参照して、ＰＬＣシステムＳＹＳは、ＰＬＣ１と、ＰＬＣ１とフィールドネットワーク２を介して接続されるサーボモータドライバ３およびリモートＩＯターミナル５と、フィールド機器である検出スイッチ６およびリレー７とを含む。また、ＰＬＣ１には、接続ケーブル１０などを介してＰＬＣサポート装置８が接続される。
【００２３】
ＰＬＣ１は、主たる演算処理を実行するＣＰＵユニット１３と、１つ以上のＩＯユニット１４と、特殊ユニット１５とを含む。これらのユニットは、ＰＬＣシステムバス１１を
介して、データを互いに遣り取りできるように構成される。また、これらのユニットには、電源ユニット１２によって適切な電圧の電源が供給される。なお、ＰＬＣ１として構成される各ユニットは、ＰＬＣメーカーが提供するものであるので、ＰＬＣシステムバス１１は、一般にＰＬＣメーカーごとに独自に開発され、使用されている。これに対して、後述するようにフィールドネットワーク２については、異なるメーカーの製品同士が接続できるように、その規格などが公開されている場合も多い。
【００２４】
ＣＰＵユニット１３の詳細については、図２を参照して後述する。
ＩＯユニット１４は、一般的な入出力処理に関するユニットであり、オン／オフといった２値化されたデータの入出力を司る。すなわち、ＩＯユニット１４は、検出スイッチ６などのセンサが何らかの対象物を検出している状態（オン）および何らの対象物も検出していない状態（オフ）のいずれであるかという情報を収集する。また、ＩＯユニット１４は、リレー７やアクチュエータといった出力先に対して、活性化するための指令（オン）および不活性化するための指令（オフ）のいずれかを出力する。
【００２５】
特殊ユニット１５は、アナログデータの入出力、温度制御、特定の通信方式による通信といった、ＩＯユニット１４ではサポートしない機能を有する。
【００２６】
フィールドネットワーク２は、ＣＰＵユニット１３と遣り取りされる各種データを伝送する。フィールドネットワーク２としては、典型的には、各種の産業用イーサネット（登録商標）を用いることができる。産業用イーサネット（登録商標）としては、たとえば、ＥｔｈｅｒＣＡＴ（登録商標）、Ｐｒｏｆｉｎｅｔ  ＩＲＴ、ＭＥＣＨＡＴＲＯＬＩＮＫ（登録商標）−ＩＩＩ、Ｐｏｗｅｒｌｉｎｋ、ＳＥＲＣＯＳ（登録商標）−ＩＩＩ、ＣＩＰ  Ｍｏｔｉｏｎなどが知られており、これらのうちのいずれを採用してもよい。さらに、産業用イーサネット（登録商標）以外のフィールドネットワークを用いてもよい。たとえば、モーション制御を行わない場合であれば、ＤｅｖｉｃｅＮｅｔ、ＣｏｍｐｏＮｅｔ／ＩＰ（登録商標）などを用いてもよい。本実施の形態に係るＰＬＣシステムＳＹＳでは、典型的に、本実施の形態においては、産業用イーサネット（登録商標）であるＥｔｈｅｒＣＡＴ（登録商標）をフィールドネットワーク２として採用する場合の構成について例示する。
【００２７】
なお、図１には、ＰＬＣシステムバス１１およびフィールドネットワーク２の両方を有するＰＬＣシステムＳＹＳを例示するが、一方のみを搭載するシステム構成を採用することもできる。たとえば、フィールドネットワーク２ですべてのユニットを接続してもよい。あるいは、フィールドネットワーク２を使用せずに、サーボモータドライバ３をＰＬＣシステムバス１１に直接接続してもよい。さらに、フィールドネットワーク２の通信ユニットをＰＬＣシステムバス１１に接続し、ＣＰＵユニット１３から当該通信ユニット経由で、フィールドネットワーク２に接続された機器との間の通信を行なうようにしてもよい。
【００２８】
サーボモータドライバ３は、フィールドネットワーク２を介してＣＰＵユニット１３と接続されるとともに、ＣＰＵユニット１３からの指令値に従ってサーボモータ４を駆動する。より具体的には、サーボモータドライバ３は、ＰＬＣ１から一定周期で、位置指令値、速度指令値、トルク指令値といった指令値を受ける。また、サーボモータドライバ３は、サーボモータ４の軸に接続されている位置センサ（ロータリーエンコーダ）やトルクセンサといった検出器から、位置、速度（典型的には、今回位置と前回位置との差から算出される）、トルクといったサーボモータ４の動作に係る実測値を取得する。そして、サーボモータドライバ３は、ＣＰＵユニット１３からの指令値を目標値に設定し、実測値をフィードバック値として、フィードバック制御を行なう。すなわち、サーボモータドライバ３は、実測値が目標値に近づくようにサーボモータ４を駆動するための電流を調整する。
なお、サーボモータドライバ３は、サーボモータアンプと称されることもある。
【００２９】
また、図１には、サーボモータ４とサーボモータドライバ３とを組み合わせたシステム例を示すが、その他の構成、たとえば、パルスモータとパルスモータドライバとを組み合わせたシステムを採用することもできる。
【００３０】
図１に示すＰＬＣシステムＳＹＳのフィールドネットワーク２には、さらに、リモートＩＯターミナル５が接続されている。リモートＩＯターミナル５は、基本的には、ＩＯユニット１４と同様に、一般的な入出力処理に関する処理を行なう。より具体的には、リモートＩＯターミナル５は、フィールドネットワーク２でのデータ伝送に係る処理を行なうための通信カプラ５２と、１つ以上のＩＯユニット５３とを含む。これらのユニットは、リモートＩＯターミナルバス５１を介して、データを互いに遣り取りできるように構成される。
【００３１】
ＰＬＣシステムＳＹＳにおいては、ＰＬＣ１のＣＰＵユニット１３がＥｔｈｅｒＣＡＴにおけるマスタ装置として機能し、サーボモータドライバ３および通信カプラ５２がＥｔｈｅｒＣＡＴにおけるスレーブ装置として機能する。なお、ＣＰＵユニット１３の代わりに、マスタ装置として機能するユニットを設けてもよい。
【００３２】
また、ＰＬＣシステムＳＹＳが導入される機械としては、たとえば、移動用チャンバと複数の処理用チャンバとを備えたウェーハカセット、包装機、マスキング装置、焼成炉が挙げられる。
【００３３】
なお、ＰＬＣサポート装置８については後述する。
＜Ｂ．処理の概要＞
次に、ＰＬＣ１において行われる処理の概要について説明する。
【００３４】
図２は、ＰＬＣ１に記憶されるプログラムおよびデータを説明するための図である。図２（Ａ）は、ＰＬＣサポート装置８がプロジェクト２７０をＰＬＣ１に転送する前の状態を表した図である。図２（Ｂ）は、ＰＬＣサポート装置８がプロジェクト２７０をＰＬＣ１に送信した後のＰＬＣ１の状態を表した図である。
【００３５】
図２（Ａ）を参照して、ＰＬＣサポート装置８のユーザは、ＰＬＣサポート装置８においてプロジェクト２７０を生成する。プロジェクト２７０は、ユーザプログラム２３６、システム構成（デバイス構成）を表すシステム構成情報２４０、変数テーブル２５０等が含まれたファイルである。ユーザプログラム２３６は、ユーザが操作画面で作成したソース形式のユーザプログラム３３０（図３，図２０）をコンパイルすることにより得られた、実行可能なオブジェクトプログラム形式のプログラムである。
【００３６】
ユーザプログラム３３０，２３６には、スレーブ装置をＥｔｈｅｒＣＡＴにおいて有効な状態にする（以下、単に「スレーブ装置を有効にする」と記載する）ための命令を実行するための記述と、スレーブ装置をＥｔｈｅｒＣＡＴにおいて無効な状態にする（以下、単に「スレーブ装置を無効にする」と記載する）ための命令を実行するための記述とを含めることができる。また、ユーザプログラム３３０，２３６には、スレーブ装置に割り付けられた軸を有効にするための命令を実行するための記述と、スレーブ装置に割り付けられた軸を無効にするための命令を実行するための記述とをさらに含めることができる。
【００３７】
スレーブ装置の「無効」とは、マスタ装置であるＰＬＣ１とデータ通信を行うことを無視(don't care)することを意味する。「無効」状態においては、登録されている識別情報に一致する識別情報を有するスレーブ装置がフィールドネットワーク２に接続されているか否かについても判断されない。これに対して、スレーブ装置の「有効」とは、マスタ装置であるＰＬＣ１とデータ通信を行うことが予定されていることを意味する。そのため、「有効」状態においては、登録されている識別情報に一致する識別情報を有するスレーブ装置がフィールドネットワーク２に接続されていなければ、エラーと判断される。
【００３８】
「軸」とは、モーション制御の対象を意味する。軸には、ＥｔｈｅｒＣＡＴで接続するサーボモータドライバ（たとえば、図１におけるサーボモータドライバ３）、エンコーダ等がある。つまり、サーボモータドライバ３は、ＰＬＣ１についてのスレーブ装置であり、かつ軸でもある。「軸を無効にする」とは、軸の動作を停止状態に移行させることをいう。「軸を無効にする」とは、制御できない状態にすることを言う。
【００３９】
「スレーブ装置に軸を割り付ける」とは、後述する変数テーブル２５０（図８（ｂ））における変数（たとえば、Ｇｒｏｕｐ１−Ｘ）に、フィールドネットワーク２におけるスレーブ装置（つまり、システム構成情報２４０におけるスレーブ装置）のノード番号を対応付けることを意味する。
【００４０】
ＰＬＣ１は、ユーザプログラム２３６を実行するときに利用するライブラリ２８０を記憶している。ライブラリ２８０は、複数のプログラム２８１，２８２，２８３，２８４，…を含む。プログラム２８１は、スレーブ装置を有効にするための機能を実現する。プログラム２８２は、スレーブ装置を無効にするための機能を実現する。プログラム２８３は、スレーブ装置に割り付けられた軸を有効にするための機能を実現する。プログラム２８４は、スレーブ装置に割り付けられた軸を無効にするための機能を実現する。
【００４１】
図２（Ｂ）を参照して、プロジェクト２７０がＰＬＣサポート装置８からＰＬＣ１に送信されることによって、ＰＬＣ１には、ライブラリ２８０とともに、プロジェクト２７０が記憶される。ＰＬＣ１は、ライブラリ２８０、システム構成情報２４０、および変数テーブル２５０を用いて、ユーザプログラム２３６を実行する。
【００４２】
図３は、ＰＬＣサポート装置８において作成されるソース形式のユーザプログラム３３０の一部を表した図である。図３を参照して、ユーザプログラム３３０には、スレーブ装置を有効にするための機能を実現するためのプログラム２８１の実行を指示するための記述２９１が含まれている。ユーザプログラム３３０においては、プログラム２８１は、ＰＬＣ１におけるディップスイッチの位置が予め定められた位置Ｐ１であることを条件に実行される。また、コンパイル後のユーザプログラム２３６にも、ユーザプログラム３３０と同様に、オブジェクトプログラム形式で、プログラム２８１の実行を指示するための記述が含まれる。
【００４３】
なお、スレーブ装置Ｃが有効になった後は、記述２９１以降に記述された各処理（ロジック）が実行される。
【００４４】
ＰＬＣ１は、図３に示したユーザプログラム３３０をコンパイルしたユーザプログラム２３６を実行することにより、ディップスイッチが第１の位置であることを条件に、無効なスレーブ装置Ｃを有効なスレーブ装置に切り替える処理を実行する。
【００４５】
また、図３には示していないが、ユーザプログラム３３０には、有効なスレーブ装置Ｃを無効にするための機能を実現するためのプログラム２８２の実行を指示するための記述が含まれている。ユーザプログラム３３０においては、プログラム２８２は、ディップスイッチの位置が位置Ｐ１と異なる位置Ｐ２であることを条件に実行される。ＰＬＣ１は、ユーザプログラム３３０をコンパイルしたユーザプログラム２３６を実行することにより、ディップスイッチが第２の位置であることを条件に、有効なスレーブ装置Ｃを無効なスレーブ装置に切り替える処理を実行する。
【００４６】
以上のように、ＰＬＣ１は、フィールドネットワーク２によって接続された稼働中のスレーブ装置に対して、ユーザプログラム２３６から無効な状態から有効な状態への切り替え、または有効な状態から無効な状態への切り替えを行なうことができる。
【００４７】
＜Ｃ．ＣＰＵユニット＞
（ｃ１．ハードウェア構成）
次に、図４を参照して、ＣＰＵユニット１３のハードウェア構成について説明する。図４は、本発明の実施の形態に係るＣＰＵユニット１３のハードウェア構成を示す模式図である。図４を参照して、ＣＰＵユニット１３は、マイクロプロセッサ１００と、チップセット１０２と、メインメモリ１０４と、不揮発性メモリ１０６と、システムタイマ１０８と、ＰＬＣシステムバスコントローラ１２０と、フィールドネットワークコントローラ１４０と、ＵＳＢコネクタ１１０とを含む。チップセット１０２と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。
【００４８】
マイクロプロセッサ１００およびチップセット１０２は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、マイクロプロセッサ１００は、チップセット１０２から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット１０２は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、マイクロプロセッサ１００に必要な命令コードを生成する。さらに、チップセット１０２は、マイクロプロセッサ１００での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
【００４９】
ＣＰＵユニット１３は、記憶手段として、メインメモリ１０４および不揮発性メモリ１０６を有する。
【００５０】
メインメモリ１０４は、揮発性の記憶領域（ＲＡＭ）であり、ＣＰＵユニット１３への電源投入後にマイクロプロセッサ１００で実行されるべき各種プログラムを保持する。また、メインメモリ１０４は、マイクロプロセッサ１００による各種プログラムの実行時の作業用メモリとしても使用される。このようなメインメモリ１０４としては、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）といった
デバイスが用いられる。
【００５１】
一方、不揮発性メモリ１０６は、リアルタイムＯＳ（Operating System）、ＰＬＣ１のシステムプログラム、ユーザプログラム、モーション演算プログラム、システム設定パラメータといったデータを不揮発的に保持する。これらのプログラムやデータは、必要に応じて、マイクロプロセッサ１００がアクセスできるようにメインメモリ１０４にコピーされる。このような不揮発性メモリ１０６としては、フラッシュメモリのような半導体メモリを用いることができる。あるいは、ハードディスクドライブのような磁気記録媒体や、ＤＶＤ−ＲＡＭ（Digital Versatile Disk Random Access Memory）のような光学記録媒
体などを用いることもできる。
【００５２】
システムタイマ１０８は、一定周期ごとに割り込み信号を発生してマイクロプロセッサ１００に提供する。典型的には、ハードウェアの仕様によって、複数の異なる周期でそれぞれ割り込み信号を発生するように構成されるが、ＯＳ（Operating System）やＢＩＯＳ（Basic Input Output System）などによって、任意の周期で割り込み信号を発生するように設定することもできる。このシステムタイマ１０８が発生する割り込み信号を利用して、後述するようなモーション制御サイクルごとの制御動作が実現される。
【００５３】
ＣＰＵユニット１３は、通信回路として、ＰＬＣシステムバスコントローラ１２０およびフィールドネットワークコントローラ１４０を有する。
【００５４】
バッファメモリ１２６は、ＰＬＣシステムバス１１を介して他のユニットへ出力されるデータ（以下「出力データ」とも称す。）の送信バッファ、および、ＰＬＣシステムバス１１を介して他のユニットから入力されるデータ（以下「入力データ」とも称す。）の受信バッファとして機能する。なお、マイクロプロセッサ１００による演算処理によって作成された出力データは、原始的にはメインメモリ１０４に格納される。そして、特定のユニットへ転送されるべき出力データは、メインメモリ１０４から読み出されて、バッファメモリ１２６に一次的に保持される。また、他のユニットから転送された入力データは、バッファメモリ１２６に一次的に保持された後、メインメモリ１０４に移される。
【００５５】
ＤＭＡ制御回路１２２は、メインメモリ１０４からバッファメモリ１２６への出力データの転送、および、バッファメモリ１２６からメインメモリ１０４への入力データの転送を行なう。
【００５６】
ＰＬＣシステムバス制御回路１２４は、ＰＬＣシステムバス１１に接続される他のユニットとの間で、バッファメモリ１２６の出力データを送信する処理および入力データを受信してバッファメモリ１２６に格納する処理を行なう。典型的には、ＰＬＣシステムバス制御回路１２４は、ＰＬＣシステムバス１１における物理層およびデータリンク層の機能を提供する。
【００５７】
フィールドネットワークコントローラ１４０は、フィールドネットワーク２を介したデータの遣り取りを制御する。すなわち、フィールドネットワークコントローラ１４０は、用いられるフィールドネットワーク２の規格に従い、出力データの送信および入力データの受信を制御する。上述したように、本実施の形態においてはＥｔｈｅｒＣＡＴ（登録商標）規格に従うフィールドネットワーク２が採用されるので、通常のイーサネット（登録商標）通信を行なうためのハードウェアを含む、フィールドネットワークコントローラ１４０が用いられる。ＥｔｈｅｒＣＡＴ（登録商標）規格では、通常のイーサネット（登録商標）規格に従う通信プロトコルを実現する一般的なイーサネット（登録商標）コントローラを利用できる。但し、フィールドネットワーク２として採用される産業用イーサネット（登録商標）の種類によっては、通常の通信プロトコルとは異なる専用仕様の通信プロトコルに対応した特別仕様のイーサネット（登録商標）コントローラが用いられる。また、産業用イーサネット（登録商標）以外のフィールドネットワークを採用した場合には、当該規格に応じた専用のフィールドネットワークコントローラが用いられる。
【００５８】
ＤＭＡ制御回路１４２は、メインメモリ１０４からバッファメモリ１４６への出力データの転送、および、バッファメモリ１４６からメインメモリ１０４への入力データの転送を行なう。
【００５９】
フィールドネットワーク制御回路１４４は、フィールドネットワーク２に接続される他の装置との間で、バッファメモリ１４６の出力データを送信する処理および入力データを
受信してバッファメモリ１４６に格納する処理を行なう。典型的には、フィールドネットワーク制御回路１４４は、フィールドネットワーク２における物理層およびデータリンク層の機能を提供する。
【００６０】
ＵＳＢコネクタ１１０は、ＰＬＣサポート装置８とＣＰＵユニット１３とを接続するためのインターフェイスである。典型的には、ＰＬＣサポート装置８から転送される、ＣＰＵユニット１３のマイクロプロセッサ１００で実行可能なプログラムなどは、ＵＳＢコネクタ１１０を介してＰＬＣ１に取込まれる。
【００６１】
（ｃ２．ソフトウェア構成）
次に、図５を参照して、本実施の形態に係る各種機能を提供するためのソフトウェア群について説明する。これらのソフトウェアに含まれる命令コードは、適切なタイミングで読み出され、ＣＰＵユニット１３のマイクロプロセッサ１００によって実行される。
【００６２】
図５は、本発明の実施の形態に係るＣＰＵユニット１３で実行されるソフトウェア構成を示す模式図である。図５を参照して、ＣＰＵユニット１３で実行されるソフトウェアとしては、リアルタイムＯＳ２００と、システムプログラム２１０と、ユーザプログラム２３６との３階層になっている。
【００６３】
リアルタイムＯＳ２００は、ＣＰＵユニット１３のコンピュータアーキテクチャに応じて設計されており、マイクロプロセッサ１００がシステムプログラム２１０およびユーザプログラム２３６を実行するための基本的な実行環境を提供する。このリアルタイムＯＳは、典型的には、ＰＬＣのメーカーあるいは専門のソフトウェア会社などによって提供される。
【００６４】
システムプログラム２１０は、ＰＬＣ１としての機能を提供するためのソフトウェア群である。具体的には、システムプログラム２１０は、スケジューラプログラム２１２と、出力処理プログラム２１４と、入力処理プログラム２１６と、シーケンス命令演算プログラム２３２と、モーション演算プログラム２３４と、その他のシステムプログラム２２０とを含む。なお、一般には出力処理プログラム２１４および入力処理プログラム２１６は、連続的（一体として）に実行されるので、これらのプログラムを、ＩＯ処理プログラム２１８と総称する場合もある。
【００６５】
ユーザプログラム２３６は、ユーザにおける制御目的に応じて作成される。すなわち、ＰＬＣシステムＳＹＳを用いて制御する対象のライン（プロセス）などに応じて、任意に設計されるプログラムである。
【００６６】
後述するように、ユーザプログラム２３６は、シーケンス命令演算プログラム２３２およびモーション演算プログラム２３４と協働して、ユーザにおける制御目的を実現する。すなわち、ユーザプログラム２３６は、シーケンス命令演算プログラム２３２およびモーション演算プログラム２３４によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。そのため、ユーザプログラム２３６、シーケンス命令演算プログラム２３２、およびモーション演算プログラム２３４を、制御プログラム２３０と総称する場合もある。
【００６７】
このように、ＣＰＵユニット１３のマイクロプロセッサ１００は、記憶手段に格納されたシステムプログラム２１０およびユーザプログラム２３６を実行する。
【００６８】
以下、各プログラムについてより詳細に説明する。
ユーザプログラム２３６は、上述したように、ユーザにおける制御目的（たとえば、対
象のラインやプロセス）に応じて作成される。ユーザプログラム２３６は、典型的には、ＣＰＵユニット１３のマイクロプロセッサ１００で実行可能なオブジェクトプログラム形式になっている。このユーザプログラム２３６は、ＰＬＣサポート装置８などにおいて、ラダー言語などによって記述されたソースプログラムがコンパイルされることで生成される。そして、生成されたオブジェクトプログラム形式のユーザプログラム２３６は、ＰＬＣサポート装置８から接続ケーブル１０を介してＣＰＵユニット１３へ転送され、不揮発性メモリ１０６などに格納される。
【００６９】
スケジューラプログラム２１２は、出力処理プログラム２１４、入力処理プログラム２１６、および制御プログラム２３０について、各実行サイクルでの処理開始および処理中断後の処理再開を制御する。より具体的には、スケジューラプログラム２１２は、ユーザプログラム２３６およびモーション演算プログラム２３４の実行を制御する。
【００７０】
本実施の形態に係るＣＰＵユニット１３では、モーション演算プログラム２３４に適した一定周期の実行サイクル（モーション制御サイクル）を処理全体の共通サイクルとして採用する。そのため、１つのモーション制御サイクル内で、すべての処理を完了することは難しいので、実行すべき処理の優先度などに応じて、各モーション制御サイクルにおいて実行を完了すべき処理と、複数のモーション制御サイクルに亘って実行してもよい処理とが区分される。スケジューラプログラム２１２は、これらの区分された処理の実行順序などを管理する。より具体的には、スケジューラプログラム２１２は、各モーション制御サイクル期間内において、より高い優先度が与えられているプログラムほど先に実行する。
【００７１】
出力処理プログラム２１４は、ユーザプログラム２３６（制御プログラム２３０）の実行によって生成された出力データを、ＰＬＣシステムバスコントローラ１２０および／またはフィールドネットワークコントローラ１４０へ転送するのに適した形式に再配置する。ＰＬＣシステムバスコントローラ１２０またはフィールドネットワークコントローラ１４０が、マイクロプロセッサ１００からの、送信を実行するための指示を必要とする場合は、出力処理プログラム２１４がそのような指示を発行する。
【００７２】
入力処理プログラム２１６は、ＰＬＣシステムバスコントローラ１２０および／またはフィールドネットワークコントローラ１４０によって受信された入力データを、制御プログラム２３０が使用するのに適した形式に再配置する。
【００７３】
シーケンス命令演算プログラム２３２は、ユーザプログラム２３６で使用されるある種のシーケンス命令が実行されるときに呼び出されて、その命令の内容を実現するために実行されるプログラムである。図２に示したライブラリ２８０における上述したプログラム２８１，２８２，２８３，２８４は、シーケンス命令演算プログラム２３２に含まれる。
【００７４】
モーション演算プログラム２３４は、ユーザプログラム２３６による指示に従って実行され、サーボモータドライバ３やパルスモータドライバといったモータドライバに対して出力する指令値を算出するプログラムである。
【００７５】
その他のシステムプログラム２２０は、図５に個別に示したプログラム以外の、ＰＬＣ１の各種機能を実現するためのプログラム群をまとめて示したものである。その他のシステムプログラム２２０は、モーション制御サイクルの周期を設定するプログラム２２２を含む。
【００７６】
モーション制御サイクルの周期は、制御目的に応じて適宜設定することができる。典型的には、モーション制御サイクルの周期を指定する情報をユーザがＰＬＣサポート装置８へ入力する。すると、その入力された情報は、ＰＬＣサポート装置８からＣＰＵユニット
１３へ転送される。モーション制御サイクルの周期を設定するプログラム２２２は、ＰＬＣサポート装置８からの情報を不揮発性メモリ１０６に格納させるとともに、システムタイマ１０８から指定されたモーション制御サイクルの周期で割り込み信号が発生されるように、システムタイマ１０８を設定する。ＣＰＵユニット１３への電源投入時に、モーション制御サイクルの周期を設定するプログラム２２２が実行されることで、モーション制御サイクルの周期を指定する情報が不揮発性メモリ１０６から読み出され、読み出された情報に従ってシステムタイマ１０８が設定される。
【００７７】
モーション制御サイクルの周期を指定する情報の形式としては、モーション制御サイクルの周期を示す時間の値や、モーション制御サイクルの周期に関する予め用意された複数の選択肢のうちから１つを特定する情報（番号または文字）などを採用することができる。
【００７８】
本実施の形態に係るＣＰＵユニット１３において、モーション制御サイクルの周期を設定する手段としては、モーション制御サイクルの周期を指定する情報を取得するために用いられるＰＬＣサポート装置８との通信手段、モーション制御サイクルの周期を設定するプログラム２２２、ならびにモーション制御サイクルを規定する割り込み信号の周期を任意に設定可能に構成されているシステムタイマ１０８の構成といった、モーション制御サイクルの周期を任意の設定するために用いられる要素が該当する。
【００７９】
リアルタイムＯＳ２００は、複数のプログラムを時間の経過に従い切り換えて実行するための環境を提供する。本実施の形態に係るＰＬＣ１においては、ＣＰＵユニット１３のプログラム実行によって生成された出力データを他のユニットまたは他の装置へ出力（送信）するためのイベント（割り込み）として、出力準備割り込み（Ｐ）およびフィールドネットワーク送信割り込み（Ｘ）が初期設定される。リアルタイムＯＳ２００は、出力準備割り込み（Ｐ）またはフィールドネットワーク送信割り込み（Ｘ）が発生すると、マイクロプロセッサ１００での実行対象を、割り込み発生時点で実行中のプログラムからスケジューラプログラム２１２に切り換える。なお、リアルタイムＯＳ２００は、スケジューラプログラム２１２およびスケジューラプログラム２１２がその実行を制御するプログラムが何ら実行されていない場合に、その他のシステムプログラム２１０に含まれているプログラムを実行する。このようなプログラムとしては、たとえば、ＣＰＵユニット１３とＰＬＣサポート装置８との間の接続ケーブル１０（ＵＳＢ）などを介した通信処理に関するものが含まれる。
【００８０】
＜Ｄ．構成例＞
以下、上述したライブラリ２８０を備えるＰＬＣ１を適用したシステム構成（ＰＬＣ１とスレーブ装置とからなるシステム構成）の例について説明する。
【００８１】
（ｄ１．第１の適用例）
図６は、ＰＬＣ１の第１の適用例を説明するための図である。図６（Ａ）は、プロジェクト２７０の概要を説明するための図である。図６（Ｂ）は、機械Ｇの構成を表した図である。図６（Ｃ）は、他の機械Ｈの構成を表した図である。
【００８２】
図６（Ｂ）を参照して、機械Ｇは、ＰＬＣ１とスレーブ装置Ａ，Ｂ，Ｃとで構成される。また、図６（Ｃ）を参照して、機械Ｈは、ＰＬＣ１とスレーブ装置Ａ，Ｂ，Ｄとで構成される。
【００８３】
図６（Ａ）を参照して、ＰＬＣサポート装置８のユーザは、ＰＬＣサポート装置８において、スレーブ装置Ａ〜Ｄと特定するための識別情報と、各スレーブ装置のノード番号とを含むシステム構成情報を生成する。また、当該ユーザは、ユーザプログラム３３０において、スレーブ装置Ｃ，Ｄを無効にする設定を行なう。さらに、当該ユーザは、ユーザプログラム３３０において、スレーブ装置Ｃに割り付けられた軸を無効にする設定と、スレーブ装置Ｄに割り付けられた軸を無効にする設定を行なう。
【００８４】
また、ＰＬＣサポート装置８のユーザは、ユーザプログラム３３０において、機械Ｇを指定する信号を受け取ると、スレーブ装置Ｃを有効にし、スレーブ装置Ｃに割り付ける軸を有効にするためのロジックを生成する。具体的には、当該ユーザは、ユーザプログラム３３０において、スレーブ装置Ｃを有効にするためのプログラム２８１と、スレーブ装置Ｃに割り付けられた軸を有効にするためのプログラム２８３とをこの順に実行するための記述を行なう。
【００８５】
さらに、ユーザは、ユーザプログラム３３０において、機械Ｈを指定する信号を受け取ると、スレーブ装置Ｄを有効にし、スレーブ装置Ｄに割り付ける軸を有効にするためのロジックを生成する。具体的には、当該ユーザは、ユーザプログラム３３０において、スレーブ装置Ｄを有効にするためのプログラム２８１と、スレーブ装置Ｄに割り付けられた軸を有効にするためのプログラム２８３とをこの順に実行するための記述を行なう。
【００８６】
ＰＬＣサポート装置８においてユーザプログラム３３０はコンパイルされ、ＰＬＣサポート装置８は、コンパイルにより得られたユーザプログラム２３６をＰＬＣ１に送信する。
【００８７】
ＰＬＣ１のユーザは、ディップスイッチの位置を位置Ｐ１とすることにより機械Ｇを指定する信号をＰＬＣ１に与えることで、スレーブ装置Ｄを無効とした機械Ｇを構成することができる。また、ＰＬＣ１のユーザは、ディップスイッチの位置を位置Ｐ２とすることにより機械Ｈを指定する信号をＰＬＣ１に与えることで、スレーブ装置Ｄを無効とした機械Ｇを構成することができる。
【００８８】
また、有効な状態としたスレーブ装置Ｃとスレーブ装置Ｃに割り付けられた軸とを再度無効とするために、ＰＬＣサポート装置８のユーザは、ユーザプログラム３３０において、機械Ｈを指定する信号を受け取ると、スレーブ装置Ｃを無効にし、スレーブ装置Ｃに割り付ける軸を無効にするためのロジックを生成しておく。具体的には、当該ユーザは、ユーザプログラム３３０において、スレーブ装置Ｃに割り付けられた軸を無効にするためのプログラム２８４とスレーブ装置Ｃを無効にするためのプログラム２８２とをこの順に実行するための記述を行なう。
【００８９】
さらに、有効な状態としたスレーブ装置Ｄとスレーブ装置Ｄに割り付けられた軸とを再度無効とするために、ＰＬＣサポート装置８のユーザは、ユーザプログラム３３０において、機械Ｇを指定する信号を受け取ると、スレーブ装置Ｄを無効にし、スレーブ装置Ｄに割り付ける軸を無効にするためのロジックを生成しておく。具体的には、当該ユーザは、ユーザプログラム３３０において、スレーブ装置Ｄに割り付けられた軸を無効にするためのプログラム２８４とスレーブ装置Ｄを無効にするためのプログラム２８２とをこの順に実行するための記述を行なう。
【００９０】
以上により、１つのプロジェクト２７０によって、異なる装置構成を有する機械Ｇ，Ｈを管理できることになる。つまり、スレーブ装置Ａ，Ｂ，Ｃを有するがスレーブ装置Ｄを有しない機械Ｇと、スレーブ装置Ａ，Ｂ，Ｄを有するがスレーブ装置Ｃを有しない機械Ｈとを１つのプロジェクト２７０によって管理することができる。
【００９１】
また、ＰＬＣサポートプログラム３２０（図２０）、またはＰＬＣサポート装置８を利用する権限もしくは操作能力を有していなくても、１つのプロジェクト２７０で、複数の機械間の切り替えを行なうことができる。
【００９２】
なお、上記においては、ディップスイッチの位置によって、機械Ｇと機械Ｈとを切り替えたが、ＰＬＣ１の表示器（図示せず）の画面に、機械Ｇおよび機械Ｈのいずれかを選択するための画像を表示し、ＰＬＣ１のユーザに当該画像のいずれかを選択させる構成としてもよい。
【００９３】
（ｄ２．第２の適用例）
図７は、ＰＬＣ１の第２の適用例を説明するための図である。図７（Ａ）は、プロジェクト２７０の概要を説明するための図である。図７（Ｂ）は、ラインＹ１を他のラインＹ２に置き換える前の機械の構成を表した図である。図７（Ｃ）は、ラインＹ１を他のラインＹ２に置き換えた後の機械の構成を表した図である。
【００９４】
図７（Ｂ）を参照して、機械Ｐは、ＰＬＣ１とラインＸとラインＹ１とで構成される。ラインＸは、スレーブ装置Ａ，Ｂ，Ｃをこの順に含む。ラインＹ１は、スレーブ装置Ｊ，Ｋ，Ｌをこの順に含む。図７（Ｃ）を参照して、機械Ｑは、ＰＬＣ１とラインＸとラインＹ２とで構成される。ラインＹ２は、スレーブ装置Ｓ，Ｔをこの順に含む。
【００９５】
図７（Ａ）を参照して、ＰＬＣサポート装置８のユーザは、ＰＬＣサポート装置８において、スレーブ装置Ａ〜Ｃ，Ｊ〜Ｌ，Ｓ，Ｔと特定するための識別情報と、各スレーブ装置のノード番号とを含むシステム構成情報を生成する。また、当該ユーザは、ユーザプログラム３３０において、スレーブ装置Ｊ，Ｋ，Ｌ，Ｓ，Ｔを無効にする設定を行なう。さらに、当該ユーザは、ユーザプログラム３３０において、スレーブ装置Ｊ，Ｋ，Ｌ，Ｓ，Ｔの各々に割り付けられた軸を無効にする設定を行なう。
【００９６】
また、ＰＬＣサポート装置８のユーザは、ユーザプログラム３３０において、ラインＹ１の起動を指示する信号を受け取ると、スレーブ装置Ｊ，Ｋ，Ｌを有効にし、次いでスレーブ装置Ｊ，Ｋ，Ｌに割り付ける軸を有効にするためのロジックを生成する。さらに、ユーザは、ユーザプログラム３３０において、ラインＹ２の起動を指示する信号を受け取ると、スレーブ装置Ｓ，Ｔを有効にし、次いでスレーブ装置Ｓ，Ｔに割り付ける軸を有効にするためのロジックを生成する。
【００９７】
また、ＰＬＣサポート装置８のユーザは、ユーザプログラム３３０において、ラインＹ１の停止を指示する信号を受け取ると、スレーブ装置Ｊ，Ｋ，Ｌに割り付ける軸を無効にし、次いでスレーブ装置Ｊ，Ｋ，Ｌを無効にするためのロジックを生成する。さらに、ユーザは、ユーザプログラム３３０において、ラインＹ２の停止を指示する信号を受け取ると、スレーブ装置Ｓ，Ｔに割り付ける軸を無効にし、次いでスレーブ装置Ｓ，Ｔを無効にするためのロジックを生成する。
【００９８】
ＰＬＣサポート装置８においてユーザプログラム３３０はコンパイルされ、ＰＬＣサポート装置８は、コンパイルにより得られたユーザプログラム２３６をＰＬＣ１に送信する。
【００９９】
ＰＬＣ１のユーザは、たとえばディップスイッチの位置を位置Ｐ１とすることによりラインＹ１の起動を指示する信号をＰＬＣ１に与えることで、スレーブ装置Ｊ，Ｋ，Ｌが有効になり、次いでスレーブ装置Ｊ，Ｋ，Ｌに割り付ける軸を有効になる。つまり、当該ユーザは、ラインＹ１をスレーブ装置Ｊ，Ｋ，Ｌを含むラインとして動作させることができる。
【０１００】
ラインＹ１をラインＹ２に置き換える場合、ＰＬＣ１のユーザが、まず、ラインＹ１の起動を停止する信号をＰＬＣ１に与えることで、スレーブ装置Ｊ，Ｋ，Ｌに割り付ける軸を無効にし、次いでスレーブ装置Ｊ，Ｋ，Ｌを無効にする。次いで、当該ユーザは、ラインＹ１を構成するスレーブ装置Ｊ，Ｋ，Ｌを物理的に取り外す。次いで、当該ユーザは、ラインＹ２を構成するスレーブ装置Ｓ，Ｔを物理的に取り付ける。
【０１０１】
最後に、ＰＬＣ１のユーザが、たとえばディップスイッチの位置を位置Ｐ２とすることによりラインＹ２の起動を指示する信号をＰＬＣ１に与えることで、スレーブ装置Ｓ，Ｔが有効になり、次いでスレーブ装置Ｓ，Ｔに割り付ける軸を有効になる。つまり、当該ユーザは、ラインＹ１をスレーブ装置Ｊ，Ｋ，Ｌを含むラインとして動作させることができる。
【０１０２】
以上により、１つのプロジェクト２７０によって、異なるラインを有する機械を管理できることになる。つまり、ラインＹ１（スレーブ装置Ｊ，Ｋ，Ｌ）を有するがラインＹ２（スレーブ装置Ｓ，Ｔ）を有しない機械と、ラインＹ２を有するがラインＹ１を有しない機械とを、１つのプロジェクトで管理することができる。
【０１０３】
また、機械Ｐの物理的構成を機械Ｑの物理的構成へと変更する場合には、ラインＸを停止させる必要がない。このため、ラインＸを停止せざるを得ない構成に比べて、生産効率の低下を防ぐことができる。つまり、複数のラインの一部のラインを新たな他のラインに切り替える場合において、生産効率の低下を必要最小限に抑えることができる。
【０１０４】
さらに、ＰＬＣサポートプログラム３２０（図２０）、またはＰＬＣサポート装置８を利用する権限もしくは操作能力を有していなくても、１つのプロジェクト２７０で、複数の機械間の切り替えを行なうことができる。
【０１０５】
なお、上記においては、ディップスイッチではなく、ＰＬＣ１の表示器からラインの起動および停止を指示するユーザ操作を受け付ける構成としてもよい。
【０１０６】
＜Ｅ．ＰＬＣ１の具体的動作＞
図８は、ＰＬＣ１に記憶されるデータを説明するための図である。図８（Ａ）は、システム構成情報２４０の概要を説明するための図である。図８（Ｂ）は、変数テーブル２５０を説明するための図である。
【０１０７】
図８（Ａ）を参照して、システム構成情報２４０は、少なくとも、スレーブ装置のノード番号と、スレーブ装置の識別情報と、スレーブ装置の状態情報とを含む。スレーブ装置の状態としては、初期化状態と、プレオペレーショナル状態と、セーフオペレーショナル状態と、オペレーショナル状態との４つの状態がある。スレーブ装置の状態情報には、当該４つの状態のうち、現在の状態が記される。
【０１０８】
ＰＬＣ１は、システム構成情報２４０におけるスレーブ装置の状態情報を変更する処理を行なうことによって、スレーブ装置の状態を変更する。また、ＰＬＣ１が、スレーブ装置に対して有効になるよう命令を行なう場合には、スレーブ装置から有効になった旨の通知（移行完了通知）を受け取った後に、スレーブ装置の状態情報を「プレオペレーショナル状態」から「オペレーショナル状態」に書き換える。
【０１０９】
ＰＬＣ１は、システム構成情報２４０におけるスレーブ装置の状態情報に応じた処理を行なう。たとえば、スレーブ装置Ｄの状態情報がプレオペレーショナル状態である場合には、後述するプロセスデータにおけるスレーブ装置ＤのＩＮデータを無視する。
【０１１０】
システム構成情報２４０は、不揮発性のメモリに格納されるため、ＰＬＣ１への電源供給が停止した場合であっても、ＰＬＣ１は、電源供給が停止する直前のスレーブ装置の状態情報（有効または無効）を失うことはない。
【０１１１】
図８（Ｂ）を参照して、変数テーブル２５０は、軸を表す変数名と、状態情報とを含む。状態情報には、変数で特定される軸が有効か無効かを示す情報が格納される。
【０１１２】
また、ＰＬＣ１は、図８（Ａ）におけるスレーブ装置のノード番号と、図８（Ｂ）における変数とを対応付けたデータを有している。たとえば、ノード番号２のスレーブ装置（たとえば、サーボモータドライバ３）が、第１のグループのＹ軸（図８（Ｂ）における「Ｇｒｏｕｐ１−Ｙ」）であることが対応付けられている。
【０１１３】
ＰＬＣ１は、変数テーブル２５０における状態情報を変更する処理を行なうことによって、軸の状態を変更する。また、ＰＬＣ１が、軸が有効になるよう命令を行なう場合には、スレーブ装置が有効であることを確認した後に、軸の状態情報を「無効」から「有効」に書き換える。
【０１１４】
なお、変数テーブル２５０も、システム構成情報２４０と同様に、不揮発性のメモリに格納されるため、ＰＬＣ１への電源供給が停止した場合であっても、ＰＬＣ１は、電源供給が停止する直前の軸の状態情報（有効または無効）を失うことはない。
【０１１５】
図９は、スレーブ装置の状態情報を説明するための図である。図９を参照して、スレーブ装置は、電源が投入されると、自己診断の後、初期化状態に遷移する。次いで、スレーブ装置は、プレオペレーショナル状態に遷移する。その後、スレーブ装置は、セーフオペレーショナル状態に遷移する。さらにその後、スレーブ装置は、オペレーショナル状態に遷移する。
【０１１６】
初期化状態では、スレーブ装置は、マスタ装置であるＰＬＣ１との間で、プロセスデータ通信およびＳＤＯ（Service Data Objects）通信を行なうことができない。「プロセスデータ通信」とは、定周期でリアルタイムの情報交換を行なうプロセスデータオブジェクトを使用した通信である。「ＳＤＯ」とは、任意のタイミングで情報伝達を行なうサービスデータオブジェクトを使用した通信である。
【０１１７】
プレオペレーショナル状態では、スレーブ装置は、ＰＬＣ１との間で、ＳＤＯ通信を行えるが、プロセスデータ通信を行なえない。セーフオペレーショナル状態では、スレーブ装置は、ＰＬＣ１との間で、プロセスデータ通信の入力および出力のうちの入力と、ＳＤＯ通信とを行なえる。オペレーショナル状態は、定常状態である。オペレーショナル状態では、スレーブ装置は、ＰＬＣ１との間で、プロセスデータ通信の入出力と、ＳＤＯ通信とを行なえる。
【０１１８】
また、スレーブ装置は、たとえば、オペレーショナル状態からプレオペレーショナル状態に遷移することもできる。この場合、スレーブ装置は、再度、オペレーショナル状態に遷移する為には、セーフオペレーショナル状態を経ることになる。
【０１１９】
図１０は、スレーブ装置が無効となったときのスレーブ装置の仕様およびプロセスデータの仕様等を説明するための図である。図１０を参照して、スレーブ装置が無効な状態とは、スレーブ装置の状態が「プレオペレーショナル状態」である場合をいう。スレーブ装置の状態がプレオペレーショナル状態である場合には、スレーブ装置は、上述したように、ＰＬＣ１との間でプロセスデータ通信を行なえない。この場合、スレーブ装置は、プロセスデータのＩＮデータ（スレーブ装置が書き込むデータ）を更新しない。つまり、スレーブ装置は、プロセスデータのＩＮデータとして、有効な状態の値を書き込む。プロセスデータのＯＵＴデータ（ＰＬＣ１が書き込むデータ）は、ユーザプログラム２３６に従う。また、スレーブ装置からの実際の出力（フィールドネットワーク２には直接的には接続されていない、スレーブ装置に接続されたセンサ等の装置への出力）は、スレーブ装置の設定に従った値となる。
【０１２０】
また、スレーブ装置が有効な状態とは、スレーブ装置の状態が「オペレーショナル状態」であることを意味する。
【０１２１】
図１１は、プロセスデータを説明するための図である。図１１（Ａ）は、プロセスデータの流れを説明するための図である。図１１（Ｂ）は、プロセスデータの構造を説明するための図である。図１１（Ａ）を参照して、ＰＬＣ１は、プロセスデータＤ１１を出力する。プロセスデータＤ１１は、フィールドネットワーク２（ＥｔｈｅｒＣＡＴ）によって、スレーブ装置Ａ、スレーブ装置Ｂ、スレーブ装置Ｃ、スレーブ装置Ｄをこの順番に通過する。なお、図１１（Ａ）のプロセスデータＤ１１におけるＡ，Ｂ，Ｃ，Ｄの記号は、それぞれ、スレーブ装置Ａに関するデータ、スレーブ装置Ｂに関するデータ、スレーブ装置Ｃに関するデータ、スレーブ装置Ｄに関するデータを表している。
【０１２２】
図１１（Ｂ）を参照して、プロセスデータＤ１１は、スレーブ装置ＡのＯＵＴデータが格納される領域と、スレーブ装置ＢのＯＵＴデータが格納される領域と、スレーブ装置ＣのＯＵＴデータが格納される領域と、スレーブ装置ＤのＯＵＴデータが格納される領域とを含む。さらに、プロセスデータＤ１１は、スレーブ装置ＡのＩＮデータが格納される領域と、スレーブ装置ＢのＩＮデータが格納される領域と、スレーブ装置ＣのＩＮデータが格納される領域と、スレーブ装置ＤのＩＮデータが格納される領域とを含む。
【０１２３】
スレーブ装置ＡのＯＵＴデータが格納される領域には、スレーブ装置Ａが取得する（読み出す）データがＰＬＣ１によって書き込まれる。また、同様に、スレーブ装置Ｂ，Ｃ，ＤのＯＵＴデータが格納される領域には、それぞれ、スレーブ装置Ｂ，Ｃ，Ｄが取得するデータが書き込まれる。
【０１２４】
また、スレーブ装置ＡのＩＮデータが格納される領域は、スレーブ装置Ａがセンサ等の装置から取り込んだデータが書き込まれる。また、同様に、スレーブ装置Ｂ，Ｃ，ＤのＩＮデータが格納される領域には、それぞれ、スレーブ装置Ｂ，Ｃ，Ｄがセンサ等の装置から取り込んだデータが書き込まれる。
【０１２５】
図１２は、スレーブ装置Ｃが有効であり、かつスレーブ装置Ｄが無効である場合における、スレーブ装置Ｃとスレーブ装置Ｄとのプロセスデータに対する処理を説明するための図である。図１２を参照して、スレーブ装置Ｃは、プロセスデータＤ１１におけるスレーブ装置ＣのＯＵＴデータが格納される領域に格納されたデータを読み出す。また、スレーブ装置Ｃは、当該読み出したデータに基づき、スレーブ装置Ａに接続されたセンサ等の装置に対して出力を行なう。さらに、スレーブ装置Ｃは、当該センサ等の装置からのデータを取り込む。また、スレーブ装置Ｃは、当該取り込んだデータを、スレーブ装置ＣのＩＮデータが格納される領域に書き込む。
【０１２６】
スレーブ装置Ｄは、無効の状態（プレオペレーショナル状態）であるため、プロセスデータＤ１１におけるスレーブ装置ＤのＯＵＴデータが格納される領域に格納されたデータを読み出さない。また、スレーブ装置Ｄは、スレーブ装置Ｄの設定に従った値を出力する。さらに、スレーブ装置Ｄは、取り込んだデータを用いたプロセスデータのＩＮデータの更新を行なわない。つまり、スレーブ装置は、プロセスデータのＩＮデータとして、有効な状態の値を書き込む。
【０１２７】
図１３は、ＰＬＣ１とスレーブ装置との処理を説明するためのシーケンス図である。具体的には、図１３は、無効なスレーブ装置を有効にするための処理を説明するための図である。
【０１２８】
図１３を参照して、シーケンスＳＱ２において、スレーブ装置は、初期化状態またはプレオペレーショナル状態で動作する。シーケンスＳＱ４において、ＰＬＣ１は、スレーブ装置を有効にする有効ＦＢ（図３参照）に規定される処理を実行する命令を受け付ける。シーケンスＳＱ６において、ＰＬＣ１は、有効にする対象となるスレーブ装置に対して、オペレーショナル状態への移行を指示する。シーケンスＳＱ８において、ＰＬＣ１は、スレーブ装置の監視を行なう。シーケンスＳＱ１０において、スレーブ装置は、オペレーショナル状態に移行（遷移）する。シーケンスＳＱ１２において、スレーブ装置は、移行完了通知をＰＬＣ１に送信する。シーケンスＳＱ１４において、ＰＬＣ１は、上記有効ＦＢに規定された処理を終了する。
【０１２９】
図１４は、ＰＬＣ１とスレーブ装置との他の処理の説明するためのシーケンス図である。具体的には、図１４は、有効なスレーブ装置を無効にするための処理を説明するための図である。
【０１３０】
図１４を参照して、シーケンスＳＱ１０２において、スレーブ装置は、オペレーショナル状態で動作する。シーケンスＳＱ１０４において、ＰＬＣ１は、スレーブ装置を無効にする無効ＦＢに規定される処理を実行する命令を受け付ける。シーケンスＳＱ１０６において、ＰＬＣ１は、無効にする対象となるスレーブ装置に対して、プレオペレーショナル状態への移行を指示する。シーケンスＳＱ１０８において、ＰＬＣ１は、スレーブ装置の監視を行なう。シーケンスＳＱ１１０において、スレーブ装置は、プレオペレーショナル状態に移行（遷移）する。シーケンスＳＱ１１２において、スレーブ装置は、移行完了通知をＰＬＣ１に送信する。シーケンスＳＱ１１４において、ＰＬＣ１は、上記無効ＦＢに規定された処理を終了する。
【０１３１】
＜Ｆ．軸の有効化および無効化＞
図１５は、軸制御を行なう場合のソース形式のユーザプログラム３３０の一部を表した図である。図１５（Ａ）は、軸が割り付けられたスレーブ装置をフィールドネットワーク２から取り外すときの処理を記述した命令（ＦＢ）を説明するための図である。図１５（Ｂ）は、軸が割り付けたスレーブ装置をフィールドネットワーク２に取り付けるときの処理を記述した命令（ＦＢ）を説明するための図である。
【０１３２】
図１５（Ａ）を参照して、ユーザプログラム３３０は、軸を無効にするためのＦＢ２９５と、スレーブ装置を無効にするためのＦＢ２９６とを、この順に含む。ＰＬＣ１は、当該ユーザプログラム３３０をコンパイルしたユーザプログラム２３６を実行することにより、スレーブ装置に割り付けられた軸を有効な状態から無効な状態へ変更するための処理を実行した後に、スレーブ装置を有効な状態から無効な状態へ変更するための処理を実行する。このような順序で処理を実行させる理由（つまり、このような順序での処理を実行させるユーザプログラムを作成する必要がある理由）は、軸が動作中に、スレーブ装置を先に無効にしてしまうと、後述する対応策を取っておかなければ軸を安全に停止することができないおそれがあるためである。
【０１３３】
図１５（Ｂ）を参照して、ユーザプログラム３３０は、スレーブ装置を有効にするためのＦＢ２９７と、軸を有効にするためのＦＢ２９８とを、この順に含む。ＰＬＣ１は、当該ユーザプログラム３３０をコンパイルしたユーザプログラム２３６を実行することにより、スレーブ装置を無効な状態から有効な状態へ変更するための処理を実行した後に、スレーブ装置に割り付けられた軸を無効な状態から有効な状態へ変更するための処理を実行する。
【０１３４】
図１６は、ＰＬＣ１の処理の一例を説明するためのフローチャートである。具体的には、図１６は、無効な軸を有効にするための命令を含むユーザプログラムに基づいたＰＬＣ１の処理の一例を説明するためのフローチャートである。
【０１３５】
図１６を参照して、ステップＳ２において、ＰＬＣ１は、たとえばスレーブ装置をフィールドネットワーク２に取り付けるトリガの入力に基づき、軸を有効にする有効ＦＢ（たとえば図１５（Ｂ）におけるＦＢ２９８）に規定された処理を実行する命令を受け付ける。ステップＳ４において、ＰＬＣ１は、軸を有効にするＦＢにおいて指定された軸を有効な状態にする。具体的には、ＰＬＣ１は、軸を有効にするＦＢに対応付けられたプログラム２８３をライブラリから読み出し、当該読み出したプログラム２８３を実行する。なお、プログラム２８３は、上述したように、スレーブ装置に割り付けられた軸を有効にするための機能を実現するためのプログラムである。
【０１３６】
ステップＳ６において、ＰＬＣ１は、モーション命令で指定された軸が有効か否かを判断する。ＰＬＣ１は、指定された軸が有効であると判断された場合（ステップＳ６においてＹＥＳ）、ステップＳ１０において、軸が割り付けられたスレーブ装置に対して、モーション命令に従った動作命令を行なう。ＰＬＣ１は、指定された軸が無効であると判断された場合（ステップＳ６においてＮＯ）、ステップＳ８において、指定された軸が割り付けられたスレーブ装置に対して、当該モーション命令を送信しない。
【０１３７】
図１７は、ＰＬＣ１の処理の他の例を説明するためのフローチャートである。具体的には、図１７は、有効な軸を無効にするための命令を含むユーザプログラムに基づいたＰＬＣ１の処理の一例を説明するためのフローチャートである。
【０１３８】
図１７を参照して、ステップＳ１０２において、ＰＬＣ１は、たとえばスレーブ装置をフィールドネットワーク２から取り外すトリガの入力に基づき、軸を無効にする無効ＦＢたとえば図１５（Ａ）におけるＦＢ２９５）に規定された処理を実行する命令を受け付ける。ステップＳ１０４において、ＰＬＣ１は、軸を無効にする無効ＦＢにおいて指定された軸が動作中か否かを判断する。
【０１３９】
ＰＬＣ１は、動作中であると判断した場合（ステップＳ１０４においてＹＥＳ）、ステップＳ１０８において、エラー処理として、スレーブ装置に対して軸を停止させる命令（減速命令）を送信する。ＰＬＣ１は、停止中であると判断した場合（ステップＳ１０４においてＮＯ）およびステップＳ１０８の処理によって軸が停止したときは、ステップＳ１０６において、指定された軸を有効な状態から無効な状態へ移行させる。
【０１４０】
＜Ｇ．機能的構成＞
図１８は、ＰＬＣ１の機能的構成を説明するための機能ブロック図である。図１８を参照して、ＰＬＣ１は、記憶部１０１０と、制御プログラム実行部１０２０と、通信部１０３０と、変更部１０４０とを備えている。
【０１４１】
記憶部１０１０は、ＰＬＣサポート装置８において作成されたプロジェクト２７０と、ライブラリ２８０とが記憶されている。プロジェクト２７０は、ユーザプログラム２３６とシステム構成情報２４０とを含む。
【０１４２】
（１）通信部１０３０は、スレーブ側のシステムを構成する複数のスレーブ装置の各々と、フィールドネットワーク２を介して通信する。制御プログラム実行部１０２０は、ユーザプログラム２３６を含む制御プログラム２３０（図５参照）を実行する。
【０１４３】
ライブラリ２８０には、スレーブ装置を無効な状態から有効な状態へ変更するための機能を実現するためのプログラム２８１と、スレーブ装置を有効な状態から無効な状態へ変更するための機能を実現するためのプログラム２８２とが含まる。
【０１４４】
ユーザプログラム２３６には、予め定められた第１の入力（ディップスイッチを介した入力、表示器を介した入力等）を受け付けた場合に、複数のスレーブ装置のうちの指定された第１のスレーブ装置（たとえば、図６におけるスレーブ装置Ｃ）の状態を変更対象として第１のプログラム（たとえばプログラム２８１）の実行を指示するための記述（たとえば、図３の有効ＦＢ２９１，図１５の有効ＦＢ２９７）が含まれている。
【０１４５】
（２）ユーザプログラム２３６には、上記第１の入力とは異なる第２の入力を受け付けた場合に、複数のスレーブ装置のうちの指定された第２のスレーブ装置（たとえば、図６におけるスレーブ装置Ｄ）の状態を変更対象として上記第１のプログラムの実行を指示するための記述がさらに含まれている。
【０１４６】
（３）制御プログラム実行部１０２０は、第１のプログラムを利用することにより、システム構成情報２４０を変更する。具体的には、制御プログラム実行部１０２０は、システム構成情報２４０におけるスレーブ装置の状態情報（図８参照）を変更する処理を行なうことによって、スレーブ装置の状態を変更する機能を実現する。たとえば、制御プログラム１０２０は、スレーブ装置を無効にするときには、スレーブ装置の状態をオペレーショナル状態からプレオペレーショナル状態に変更する処理を行なうことによって、スレーブ装置の状態を変更する機能を実現する。
【０１４７】
（４）ライブラリ２８０には、スレーブ装置に割り付けられたモーション制御の制御対象である軸を無効な状態から有効な状態へ変更するための機能を実現するためのプログラム２８３と、軸を有効な状態から無効な状態へ変更するための機能を実現するためのプログラム２８４がさらに含まれている。
【０１４８】
ユーザプログラム２３６には、上記第１の入力を受け付けた場合に、上記第１のスレーブ装置の状態を変更対象として第２のプログラム（たとえばプログラム２８３）の実行を指示するための記述と、上記第２の入力を受け付けた場合に、上記第２のスレーブ装置の状態を変更対象として上記第２のプログラムの実行を指示するための記述がさらに含まれている。
【０１４９】
ＰＬＣ１は、上述したように、変数テーブル２５０における状態情報を変更する処理を行なうことによって、軸の状態を変更する。
【０１５０】
（５）制御プログラム実行部１０２０は、ある局面において、上記第１の入力を受け付けた場合、軸を有効な状態から無効な状態へ変更するための機能を実現するプログラム２８４の実行がなされた後に、スレーブ装置を有効な状態から無効な状態へ変更するための機能を実現するためのプログラム２８２を実行をする。
【０１５１】
（６）変更部１０４０は、ＰＬＣサポート装置８からの指示に基づき、記憶部１０１０に記憶されているシステム構成情報２４０を変更する。具体的には、変更部１０４０は、システム構成情報２４０におけるスレーブ装置の状態情報（図８参照）を変更する。制御プログラム実行部１０２０は、システム構成情報２４０の変更に基づき、スレーブ装置の状態を変更する機能を実現する。
【０１５２】
＜Ｈ．サポート装置＞
（ｈ１．ハードウェア構成）
図１９は、本発明の実施の形態に係るＣＰＵユニット１３に接続して用いられるＰＬＣサポート装置８のハードウェア構成を示す模式図である。図１９を参照して、ＰＬＣサポート装置８は、典型的には、汎用のコンピュータで構成される。なお、メンテナンス性の観点からは、可搬性に優れたノート型のパーソナルコンピュータが好ましい。
【０１５３】
図１９を参照して、ＰＬＣサポート装置８は、ＯＳを含む各種プログラムを実行するＣＰＵ８１と、ＢＩＯＳや各種データを格納するＲＯＭ（Read Only Memory）８２と、ＣＰＵ８１でのプログラムの実行に必要なデータを格納するための作業領域を提供するメモリＲＡＭ８３と、ＣＰＵ８１で実行されるプログラムなどを不揮発的に格納するハードディスク（ＨＤＤ）８４とを含む。
【０１５４】
ＰＬＣサポート装置８は、さらに、ユーザからの操作を受け付けるキーボード８５およびマウス８６と、情報をユーザに提示するためのディスプレイ８７とを含む。さらに、ＰＬＣサポート装置８は、ＰＬＣ１（ＣＰＵユニット１３）などと通信するための通信インターフェイス（ＩＦ）を含む。
【０１５５】
後述するように、ＰＬＣサポート装置８で実行される各種プログラムは、ＣＤ−ＲＯＭ９に格納されて流通する。このＣＤ−ＲＯＭ９に格納されたプログラムは、ＣＤ−ＲＯＭ（Compact Disk-Read Only Memory）ドライブ８８によって読取られ、ハードディスク（ＨＤＤ）８４などへ格納される。あるいは、上位のホストコンピュータなどからネットワークを通じてプログラムをダウンロードするように構成してもよい。
【０１５６】
上述したように、ＰＬＣサポート装置８は、汎用的なコンピュータを用いて実現されるので、これ以上の詳細な説明は行わない。
【０１５７】
（ｈ２．ソフトウェア構成）
図２０は、本発明の実施の形態に係るＣＰＵユニット１３に接続して用いられるＰＬＣサポート装置８のソフトウェア構成を示す模式図である。図２０を参照して、ＰＬＣサポート装置８ではＯＳ３１０が実行され、ＰＬＣサポートプログラム３２０に含まれる各種のプログラムを実行可能な環境が提供される。
【０１５８】
ＰＬＣサポートプログラム３２０は、エディタプログラム３２１と、コンパイラプログラム３２２と、デバッガプログラム３２３と、シミュレーション用シーケンス命令演算プログラム３２４と、シミュレーション用モーション演算プログラム３２５と、通信プログラム３２６とを含む。ＰＬＣサポートプログラム３２０に含まれるそれぞれのプログラムは、典型的には、ＣＤ−ＲＯＭ９に格納された状態で流通して、ＰＬＣサポート装置８にインストールされる。
【０１５９】
エディタプログラム３２１は、実行可能なオブジェクトプログラム形式のユーザプログラム２３６を作成するための入力および編集といった機能を提供する。より具体的には、エディタプログラム３２１は、ユーザがキーボード８５やマウス８６を操作してユーザプログラム２３６のソース形式のユーザプログラム３３０を作成する機能に加えて、作成したユーザプログラム３３０の保存機能および編集機能を提供する。また、エディタプログラム３２１は、外部からのユーザプログラム３３０の入力を受け付ける。
【０１６０】
コンパイラプログラム３２２は、ユーザプログラム３３０をコンパイルして、ＣＰＵユニット１３のマイクロプロセッサ１００で実行可能なオブジェクトプログラム形式のユーザプログラム２３６を生成する機能を提供する。また、コンパイラプログラム３２２は、ユーザプログラム３３０をコンパイルして、ＰＬＣサポート装置８のＣＰＵ８１で実行可能なオブジェクトプログラム形式のユーザプログラム３４０を生成する機能を提供する。このユーザプログラム３４０は、ＰＬＣサポート装置８によってＰＬＣ１の動作をシミュレート（模擬）するために使用される、シミュレーション用のオブジェクトプログラムである。
【０１６１】
デバッガプログラム３２３は、ユーザプログラムのソースプログラムに対してデバッグを行なうための機能を提供する。このデバッグの内容としては、ソースプログラムのうちユーザが指定した範囲を部分的に実行する、ソースプログラムの実行中における変数値の時間的な変化を追跡する、といった動作を含む。
【０１６２】
デバッガプログラム３２３は、さらに、シミュレーション用のオブジェクトプログラムであるユーザプログラム３４０を実行する機能を提供する。このシミュレーション時には、ＣＰＵユニット１３のシステムプログラムに含まれるシーケンス命令演算プログラム２３２およびモーション演算プログラム２３４に代えて、ＰＬＣサポートプログラム３２０に含まれるシミュレーション用シーケンス命令演算プログラム３２４およびシミュレーション用モーション演算プログラム３２５が用いられる。
【０１６３】
通信プログラム３２６は、ＰＬＣ１のＣＰＵユニット１３へユーザプログラム２３６を転送する機能を提供する。
【０１６４】
一般的には、ＰＬＣ１に実装されるシステムプログラム２１０は、ＣＰＵユニット１３の製造段階でＣＰＵユニット１３の不揮発性メモリ１０６へ格納される。但し、ＣＤ−Ｒ
ＯＭ９にシステムプログラム２１０を格納しておけば、ユーザは、ＣＤ−ＲＯＭ９のシステムプログラム２１０をＰＬＣサポート装置８へコピーし、通信プログラム３２６が提供する機能を利用してコピーしたシステムプログラム２１０をＣＰＵユニット１３へ転送することもできる。さらに、ＣＤ−ＲＯＭ９に、ＰＬＣ１のＣＰＵユニット１３で実行されるリアルタイムＯＳ２００を格納しておけば、リアルタイムＯＳ２００についてもユーザ操作によってＰＬＣ１へ再インストールできる。
【０１６５】
図２１は、ユーザプログラム３３０の一部を表示した図である。図２１を参照して、ＰＬＣサポート装置８のユーザは、ＰＬＣサポート装置８のエディタプログラム３２１を利用してソース形式のユーザプログラム３３０を作成する。ＰＬＣサポート装置８は、当該作成されたユーザプログラム３３０をコンパイルすることにより、オブジェクトプログラム形式のユーザプログラム２３６を生成する。
【０１６６】
＜Ｉ．変形例＞
上記においては、図２に示したとおり、ＰＬＣ１が、プロジェクト２７０をＰＬＣサポート装置８から受信する以前にライブラリ２８０を格納している構成を例に挙げて説明したが、これに限定されるものではない。たとえば、ＰＬＣサポート装置８においてコンパイルした、ユーザプログラム２３６と、システム構成情報２４０と、変数テーブル２５０と、ライブラリ２８０とを、ＰＬＣ１が受信する構成としてもよい。
【０１６７】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１６８】
１  ＰＬＣ、２  フィールドネットワーク、３  サーボモータドライバ、４  サーボモータ、５  リモートＩＯターミナル、６  検出スイッチ、７  リレー、８  ＰＬＣサポート装置、９  ＣＤ−ＲＯＭ、１０  接続ケーブル、１１  ＰＬＣシステムバス、１２  電源ユニット、１３  ＣＰＵユニット、１４，５３  ＩＯユニット、１５  特殊ユニット、５１  ターミナルバス、５２  通信カプラ、２８１，２８２，２８３，２８４  プログラム、２３０，１０２０  制御プログラム、２３２  シーケンス命令演算プログラム、２３４  モーション演算プログラム、２３６，３３０，３４０  ユーザプログラム、２４０  システム構成情報、２５０  変数テーブル、２７０  プロジェクト、２８０  ライブラリ、２９１  記述、３２０  サポートプログラム、３２１  エディタプログラム、３２２  コンパイラプログラム、３２６  通信プログラム、１０１０  記憶部、１０２０  制御プログラム実行部、１０３０  通信部、１０４０  変更部、Ａ〜Ｄ，Ｊ〜Ｌ，Ｓ，Ｔ  スレーブ装置、Ｄ１１  プロセスデータ、Ｇ，Ｈ，Ｐ，Ｑ  機械、ＳＹＳ  ＰＬＣシステム、Ｘ，Ｙ１，Ｙ２  ライン。
【図１】
2014146070.tif 000003
【図２】
2014146070.tif 000004
【図３】
2014146070.tif 000005
【図４】
2014146070.tif 000006
【図５】
2014146070.tif 000007
【図６】
2014146070.tif 000008
【図７】
2014146070.tif 000009
【図８】
2014146070.tif 000010
【図９】
2014146070.tif 000011
【図１０】
2014146070.tif 000012
【図１１】
2014146070.tif 000013
【図１２】
2014146070.tif 000014
【図１３】
2014146070.tif 000015
【図１４】
2014146070.tif 000016
【図１５】
2014146070.tif 000017
【図１６】
2014146070.tif 000018
【図１７】
2014146070.tif 000019
【図１８】
2014146070.tif 000020
【図１９】
2014146070.tif 000021
【図２０】
2014146070.tif 000022
【図２１】
2014146070.tif 000023