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