"制御対象を制御するPLCのCPUユニットであって、マイクロプロセッサと、記憶手段と、通信回路と、を備え、前記PLCのCPUユニットは、出力データの送信と、入力データの受信と、前記入力データを使用して前記出力データを生成する制御プログラムの実行とを繰り返すことによって前記制御対象を制御するように構成されており、前記記憶手段は、前記制御プログラムおよびシステムプログラムの格納に用いられ、前記マイクロプロセッサは、前記記憶手段に格納された前記システムプログラムおよび前記制御プログラムを実行し、前記通信回路は、前記出力データを送信および前記入力データを受信し、前記システムプログラムは、前記PLCの制御動作の実行準備処理として、受信された入力データを格納する受信バッファを前記記憶手段内に生成する処理と、前記制御プログラムから参照される入力データごとに、その制御プログラムが入力データの参照先とする入力同期バッファを前記記憶手段内に生成する処理とを含み、前記システムプログラムは、前記PLCの制御動作の実行制御処理として、受信された前記入力データを前記受信バッファからその入力データに対応する前記入力同期バッファにコピーする入力コピー処理と、前記制御プログラムを実行開始させる制御プログラム開始処理とを含む、PLCのCPUユニット。前記入力同期バッファを生成する処理は、前記制御プログラムから参照される入力データごとに、第1入力同期バッファおよび第2入力同期バッファを入力同期バッファの組として生成する処理であり、前記第1入力同期バッファおよび前記第2入力同期バッファは、前記受信バッファから入力データをコピー可能な状態である書込先状態、および、前記制御プログラムから参照可能な状態である参照先状態、のいずれかの状態が重複せずに付与されるものであり、前記入力コピー処理は、前記書込先状態である入力同期バッファにコピーする処理である、請求項1に記載のPLCのCPUユニット。前記入力同期バッファを生成する処理は、前記制御プログラムから参照される入力データごとに、前記第1入力同期バッファと、前記第2入力同期バッファと、第3入力同期バッファとを入力同期バッファの組として生成する処理であり、前記第1入力同期バッファ、前記第2入力同期バッファおよび前記第3入力同期バッファは、前記書込先状態、前記参照先状態、待機状態、のいずれかの状態が重複せずに付与されるものであり、前記入力コピー処理は、さらに、コピー先となった前記書込先状態である入力同期バッファおよびその入力同期バッファと同じ組の中で前記待機状態である入力同期バッファの書込先状態と待機状態とを入れ替える第1入替処理を含み、前記制御プログラム開始処理は、さらに、実行開始させる制御プログラムの入力同期バッファについて、最新データを格納している入力同期バッファが前記待機状態であることを条件として、前記待機状態である入力同期バッファおよび前記参照先状態である入力同期バッファの待機状態と参照先状態とを入れ替える第2入替処理を含む、請求項2に記載のPLCのCPUユニット。前記システムプログラムは、前記PLCの制御動作の実行準備処理として、さらに、前記制御プログラムごとに最新入力データ更新フラグを前記記憶手段内に生成する処理を含み、前記入力コピー処理は、さらに、当該入力コピーに関連する最新入力データ更新フラグをオンにする処理を含み、前記制御プログラム開始処理は、さらに、実行開始させる前記制御プログラムの入力同期バッファに関連する最新入力データ更新フラグがオンであることを条件として、前記第2入替処理および当該最新入力データ更新フラグをオフにする処理を含み、それにより、最新データを格納している入力同期バッファが前記待機状態であることを条件として実行する前記第2入替処理を実現する、請求項3に記載のPLCのCPUユニット。前記システムプログラムは、前記PLCの制御動作の実行準備処理として、さらに、最新状態記録領域を前記記憶手段内に生成する処理を含み、前記入力コピー処理は、さらに、コピー先の入力同期バッファが最新状態であることを前記最新状態記録領域に記録する処理を含み、前記制御プログラム開始処理は、さらに、前記最新状態記録領域の内容によって特定される最新状態である入力同期バッファが前記待機状態であることを条件として実行される前記第2入替処理を含む、請求項3に記載のPLCのCPUユニット。前記制御プログラム開始処理は、さらに、実行開始させる制御プログラムの入力同期バッファについて、最新データを格納している入力同期バッファが前記書込先状態であることを条件として、前記書込先状態である入力同期バッファおよび前記参照先状態である入力同期バッファの書込先状態と参照先状態とを入れ替える第3入替処理を含む、請求項2に記載のPLCのCPUユニット。前記入力同期バッファを生成する処理は、前記制御プログラムから参照される入力データごとに、第1入力同期バッファおよび第2入力同期バッファを同期バッファの組として生成する処理であり、前記システムプログラムは、前記PLCの制御動作の実行準備処理として、さらに、最新状態記録領域を前記記憶手段内に生成する処理を含み、前記入力コピー処理は、さらに、コピー先の入力同期バッファが最新状態であることを前記最新状態記録領域に記録する処理を含み、前記制御プログラム開始処理は、さらに、前記最新状態記録領域の内容によって特定される最新状態である入力同期バッファをその制御プログラムの実行において参照する参照先状態とする処理を含む、請求項1に記載のPLCのCPUユニット。前記制御プログラム開始処理は、さらに、実行開始させる制御プログラムが参照する前記入力同期バッファを書込禁止状態とする処理を含み、前記システムプログラムは、前記PLCの制御動作の実行制御処理として、さらに、前記制御プログラムの実行が終了すると、前記書込禁止状態であった同期バッファの前記書込禁止状態を解除する書込禁止解除処理を含み、前記入力コピー処理は、コピー先の前記入力同期バッファが前記書込禁止状態でないことを条件として行う処理である、請求項1に記載のPLCのCPUユニット。前記入力同期バッファを生成する処理は、前記制御プログラムから参照される入力データごとに、第1入力同期バッファおよび第2入力同期バッファを同期バッファの組として生成する処理であり、前記第2入力同期バッファは、前記制御プログラムが入力データを参照するときに参照先とする入力同期バッファであり、前記入力コピー処理は、前記第1入力同期バッファにコピーする処理であり、前記制御プログラム開始処理は、さらに、前記制御プログラムを実行開始させる前に前記第1入力同期バッファに格納されているデータを前記第2入力同期バッファにコピーする処理を含む、請求項1に記載のPLCのCPUユニット。前記システムプログラムは、前記PLCの制御動作の実行準備処理として、さらに、送信されるべき出力データを格納する送信バッファを前記記憶手段内に生成する処理と、前記送信バッファにコピーされる前記出力データが格納される出力同期バッファを前記出力データごとに前記記憶手段内に生成する処理とを含み、前記システムプログラムは、前記PLCの制御動作の実行制御処理として、さらに、前記出力データを前記出力同期バッファから前記送信バッファにコピーする出力コピー処理を含む、請求項1~9のいずれか1項に記載のPLCのCPUユニット。前記出力コピー処理は、前記制御プログラムの実行が終了すると前記出力データをコピーする処理である、請求項10に記載のPLCのCPUユニット。前記システムプログラムは、前記PLCの制御動作の実行準備処理として、さらに、前記制御プログラムが前記出力データを格納する演算用バッファを前記記憶手段内に生成する処理を含み、前記出力同期バッファを生成する処理は、前記出力データごとに、第1出力同期バッファ、第2出力同期バッファおよび第3出力同期バッファを出力同期バッファの組として生成する処理であり、前記第1出力同期バッファ、前記第2出力同期バッファおよび前記第3出力同期バッファは、前記演算用バッファから出力データをコピー可能な状態である書込先状態、前記送信バッファにコピーするための参照が可能な状態である参照先状態、および待機状態のいずれかの状態が重複せずに付与されるものであり、前記システムプログラムは、前記PLCの制御動作の実行制御処理として、さらに、前記制御プログラムの実行が終了すると、その制御プログラムの実行により生成された前記出力データを前記演算用バッファから前記書込先状態である出力同期バッファにコピーし、さらに、コピー先となった前記書込先状態である出力同期バッファおよびその出力同期バッファと同じ組の中で前記待機状態である出力同期バッファの書込先状態と待機状態とを入れ替える第4入替処理を実行する出力同期バッファ格納処理を含み、前記出力コピー処理は、最新データを格納している出力同期バッファが前記待機状態であることを条件として、前記待機状態である出力同期バッファおよび前記参照先状態である出力同期バッファの待機状態と参照先状態とを入れ替える第5入替処理を実行し、かつ、前記出力データを前記参照先状態となった出力同期バッファから前記送信バッファにコピーする処理である、請求項10に記載のPLCのCPUユニット。前記入力データの受信は、制御サイクルごとに実行され、前記入力コピー処理は、受信された前記入力データを、当該入力データが前記制御プログラムの実行サイクルが開始した前記制御サイクルと関係する受信タイミングにおいて受信されたことを条件として、前記受信バッファからその入力データに対応する前記入力同期バッファにコピーする処理であり、前記制御プログラム開始処理は、前記制御プログラムを前記制御サイクルの整数倍の前記実行サイクルごとに実行開始させる処理である、請求項1に記載のPLCのCPUユニット。前記入力同期バッファを生成する処理は、前記制御プログラムから参照される入力データごとに、第1入力同期バッファ、第2入力同期バッファおよび第3入力同期バッファを入力同期バッファの組として生成する処理であり、前記第1入力同期バッファ、前記第2入力同期バッファおよび前記第3入力同期バッファは、前記受信バッファから入力データをコピー可能な状態である書込先状態、前記制御プログラムから参照可能な状態である参照先状態、および、待機状態、のいずれかの状態が重複せずに付与されるものであり、前記入力データの受信は、制御サイクルごとに実行され、前記入力コピー処理は、前記書込先状態である入力同期バッファにコピーし、さらに、コピー先となった前記書込先状態である入力同期バッファおよびその入力同期バッファと同じ組の中で前記待機状態である入力同期バッファの書込先状態と待機状態とを入れ替える第1入替処理を実行する処理であり、前記システムプログラムは、前記PLCの制御動作の実行制御処理として、さらに、前記制御プログラムの実行サイクルが開始した前記制御サイクルであることを条件として、前記待機状態である入力同期バッファおよび前記参照先状態である入力同期バッファの待機状態と参照先状態とを入れ替える第2入替処理を実行する実行サイクル入力初期処理を含み、前記制御プログラム開始処理は、前記制御プログラムを前記制御サイクルの整数倍の前記実行サイクルごとに実行開始させる処理である、請求項1に記載のPLCのCPUユニット。前記システムプログラムは、前記PLCの制御動作の実行準備処理として、さらに、送信されるべき出力データを格納する送信バッファを前記記憶手段内に生成する処理と、前記送信バッファにコピーされる前記出力データが格納される出力同期バッファを前記出力データごとに前記記憶手段内に生成する処理とを含み、前記システムプログラムは、前記PLCの制御動作の実行制御処理として、さらに、前記出力データを、その出力データを生成した前記制御プログラムが実行された実行サイクルの次の実行サイクルの最初の制御サイクルにおいてその出力データが前記送信バッファから送信されることになるタイミングで、前記出力同期バッファから前記送信バッファにコピーする出力コピー処理を含む、請求項1に記載のPLCのCPUユニット。前記システムプログラムは、前記PLCの制御動作の実行準備処理として、さらに、前記制御プログラムが前記出力データを格納する演算用バッファを前記記憶手段内に生成する処理を含み、前記出力同期バッファを生成する処理は、前記出力データごとに、第1出力同期バッファ、第2出力同期バッファおよび第3出力同期バッファを出力同期バッファの組として生成する処理であり、前記第1出力同期バッファ、前記第2出力同期バッファおよび前記第3出力同期バッファは、前記演算用バッファから出力データをコピー可能な状態である書込先状態、前記送信バッファにコピーするための参照が可能な状態である参照先状態、待機状態、のいずれかの状態が重複せずに付与されるものであり、前記システムプログラムは、前記PLCの制御動作の実行制御処理として、さらに、前記制御プログラムの実行が終了すると、その制御プログラムの実行により生成された前記出力データを前記演算用バッファから前記書込先状態である出力同期バッファにコピーし、さらに、コピー先となった前記書込先状態である出力同期バッファおよびその出力同期バッファと同じ組の中で前記待機状態である出力同期バッファの書込先状態と待機状態とを入れ替える第4入替処理を実行する出力同期バッファ格納処理を含み、前記出力コピー処理は、各制御サイクルの開始後、前記送信バッファからの前記出力データの送信までの間に、前記出力データを前記参照先状態である出力同期バッファから前記送信バッファにコピーし、さらに、前記制御プログラムの実行サイクルが開始した制御サイクルであることを条件として、前記送信バッファへの前記コピーを実行するより前に前記待機状態である出力同期バッファおよび前記参照先状態である出力同期バッファの待機状態と参照先状態とを入れ替える第5入替処理を実行し、それにより、前記出力データを、その出力データを生成した前記制御プログラムが実行された実行サイクルの次の実行サイクルの最初の制御サイクルにおいて前記送信バッファから送信されることになるタイミングで、前記出力同期バッファから前記送信バッファにコピーする処理である、請求項15に記載のPLCのCPUユニット。マイクロプロセッサと、記憶手段と、通信回路とを備え、出力データの送信と、入力データの受信と、前記入力データを使用して前記出力データを生成する制御プログラムの実行とを繰り返すことによって制御対象を制御するPLCのCPUユニットにおいて、前記記憶手段に格納されて前記マイクロプロセッサによって実行されるためのPLC用のシステムプログラムであって、前記記憶手段は、前記制御プログラムおよび前記システムプログラムの格納に用いられ、前記マイクロプロセッサは、前記システムプログラムに加えて、前記制御プログラムを実行し、前記通信回路は、前記出力データを送信しおよび前記入力データを受信し、前記システムプログラムは、前記PLCの制御動作の実行準備処理として、受信された入力データを格納する受信バッファを前記記憶手段内に生成する処理と、前記制御プログラムから参照される入力データごとに、その制御プログラムが入力データの参照先とする入力同期バッファを前記記憶手段内に生成する処理とを実行させ、前記システムプログラムは、前記PLCの制御動作の実行制御処理として、受信された前記入力データを前記受信バッファからその入力データに対応する前記入力同期バッファにコピーする入力コピー処理と、前記制御プログラムを実行開始させる制御プログラム開始処理とを実行させる、PLC用のシステムプログラム。前記入力同期バッファを生成する処理は、前記制御プログラムから参照される入力データごとに、第1入力同期バッファおよび第2入力同期バッファを入力同期バッファの組として生成する処理であり、前記第1入力同期バッファおよび前記第2入力同期バッファは、前記受信バッファから入力データをコピー可能な状態である書込先状態、および、前記制御プログラムから参照可能な状態である参照先状態、のいずれかの状態が重複せずに付与されるものであり、前記入力コピー処理は、前記書込先状態である入力同期バッファにコピーする処理である、請求項17に記載のPLC用のシステムプログラム。前記入力同期バッファを生成する処理は、前記制御プログラムから参照される入力データごとに、前記第1入力同期バッファと、前記第2入力同期バッファと、第3入力同期バッファとを入力同期バッファの組として生成する処理であり、前記第1入力同期バッファ、前記第2入力同期バッファおよび前記第3入力同期バッファは、前記書込先状態、前記参照先状態、待機状態、のいずれかの状態が重複せずに付与されるものであり、前記入力コピー処理は、さらに、コピー先となった前記書込先状態である入力同期バッファおよびその入力同期バッファと同じ組の中で前記待機状態である入力同期バッファの書込先状態と待機状態とを入れ替える第1入替処理を含み、前記制御プログラム開始処理は、さらに、実行開始させる制御プログラムの入力同期バッファについて、最新データを格納している入力同期バッファが前記待機状態であることを条件として、前記待機状態である入力同期バッファおよび前記参照先状態である入力同期バッファの待機状態と参照先状態とを入れ替える第2入替処理を含む、請求項18に記載のPLC用のシステムプログラム。前記制御プログラム開始処理は、さらに、実行開始させる制御プログラムの入力同期バッファについて、最新データを格納している入力同期バッファが前記書込先状態であることを条件として、前記書込先状態である入力同期バッファおよび前記参照先状態である入力同期バッファの書込先状態と参照先状態とを入れ替える第3入替処理を含む、請求項18に記載のPLC用のシステムプログラム。前記入力同期バッファを生成する処理は、前記制御プログラムから参照される入力データごとに、第1入力同期バッファおよび第2入力同期バッファを同期バッファの組として生成する処理であり、前記システムプログラムは、前記PLCの制御動作の実行準備処理として、さらに、最新状態記録領域を前記記憶手段内に生成する処理を含み、前記入力コピー処理は、さらに、コピー先の入力同期バッファが最新状態であることを前記最新状態記録領域に記録する処理を含み、前記制御プログラム開始処理は、さらに、前記最新状態記録領域の内容によって特定される最新状態である入力同期バッファをその制御プログラムの実行において参照する参照先状態とする処理を含む、請求項17に記載のPLC用のシステムプログラム。前記制御プログラム開始処理は、さらに、実行開始させる制御プログラムが参照する前記入力同期バッファを書込禁止状態とする処理を含み、前記システムプログラムは、前記PLCの制御動作の実行制御処理として、さらに、前記制御プログラムの実行が終了すると、前記書込禁止状態であった同期バッファの前記書込禁止状態を解除する書込禁止解除処理を含み、前記入力コピー処理は、コピー先の前記入力同期バッファが前記書込禁止状態でないことを条件として行う処理である、請求項17に記載のPLC用のシステムプログラム。前記入力同期バッファを生成する処理は、前記制御プログラムから参照される入力データごとに、第1入力同期バッファおよび第2入力同期バッファを同期バッファの組として生成する処理であり、前記第2入力同期バッファは、前記制御プログラムが入力データを参照するときに参照先とする入力同期バッファであり、前記入力コピー処理は、前記第1入力同期バッファにコピーする処理であり、前記制御プログラム開始処理は、さらに、前記制御プログラムを実行開始させる前に前記第1入力同期バッファに格納されているデータを前記第2入力同期バッファにコピーする処理を含む、請求項17に記載のPLC用のシステムプログラム。前記システムプログラムは、前記PLCの制御動作の実行準備処理として、さらに、送信されるべき出力データを格納する送信バッファを前記記憶手段内に生成する処理と、前記送信バッファにコピーされる前記出力データが格納される出力同期バッファを前記出力データごとに前記記憶手段内に生成する処理とを含み、前記システムプログラムは、前記PLCの制御動作の実行制御処理として、さらに、前記出力データを前記出力同期バッファから前記送信バッファにコピーする出力コピー処理を含む、請求項17~23のいずれか1項に記載のPLC用のシステムプログラム。前記出力コピー処理は、前記制御プログラムの実行が終了すると前記出力データをコピーする処理である、請求項24に記載のPLC用のシステムプログラム。前記システムプログラムは、前記PLCの制御動作の実行準備処理として、さらに、前記制御プログラムが前記出力データを格納する演算用バッファを前記記憶手段内に生成する処理を含み、前記出力同期バッファを生成する処理は、前記出力データごとに、第1出力同期バッファ、第2出力同期バッファおよび第3出力同期バッファを出力同期バッファの組として生成する処理であり、前記第1出力同期バッファ、前記第2出力同期バッファおよび前記第3出力同期バッファは、前記演算用バッファから出力データをコピー可能な状態である書込先状態、前記送信バッファにコピーするための参照が可能な状態である参照先状態、および待機状態のいずれかの状態が重複せずに付与されるものであり、前記システムプログラムは、前記PLCの制御動作の実行制御処理として、さらに、前記制御プログラムの実行が終了すると、その制御プログラムの実行により生成された前記出力データを前記演算用バッファから前記書込先状態である出力同期バッファにコピーし、さらに、コピー先となった前記書込先状態である出力同期バッファおよびその出力同期バッファと同じ組の中で前記待機状態である出力同期バッファの書込先状態と待機状態とを入れ替える第4入替処理を実行する出力同期バッファ格納処理を含み、前記出力コピー処理は、最新データを格納している出力同期バッファが前記待機状態であることを条件として、前記待機状態である出力同期バッファおよび前記参照先状態である出力同期バッファの待機状態と参照先状態とを入れ替える第5入替処理を実行し、かつ、前記出力データを前記参照先状態となった出力同期バッファから前記送信バッファにコピーする処理である、請求項24に記載のPLC用のシステムプログラム。前記入力データの受信は、制御サイクルごとに実行され、前記入力コピー処理は、受信された前記入力データを、当該入力データが前記制御プログラムの実行サイクルが開始した前記制御サイクルと関係する受信タイミングにおいて受信されたことを条件として、前記受信バッファからその入力データに対応する前記入力同期バッファにコピーする処理であり、前記制御プログラム開始処理は、前記制御プログラムを前記制御サイクルの整数倍の前記実行サイクルごとに実行開始させる処理である、請求項17に記載のPLC用のシステムプログラム。前記入力同期バッファを生成する処理は、前記制御プログラムから参照される入力データごとに、第1入力同期バッファ、第2入力同期バッファおよび第3入力同期バッファを入力同期バッファの組として生成する処理であり、前記第1入力同期バッファ、前記第2入力同期バッファおよび前記第3入力同期バッファは、前記受信バッファから入力データをコピー可能な状態である書込先状態、前記制御プログラムから参照可能な状態である参照先状態、および、待機状態、のいずれかの状態が重複せずに付与されるものであり、前記入力データの受信は、制御サイクルごとに実行され、前記入力コピー処理は、前記書込先状態である入力同期バッファにコピーし、さらに、コピー先となった前記書込先状態である入力同期バッファおよびその入力同期バッファと同じ組の中で前記待機状態である入力同期バッファの書込先状態と待機状態とを入れ替える第1入替処理を実行する処理であり、前記システムプログラムは、前記PLCの制御動作の実行制御処理として、さらに、前記制御プログラムの実行サイクルが開始した前記制御サイクルであることを条件として、前記待機状態である入力同期バッファおよび前記参照先状態である入力同期バッファの待機状態と参照先状態とを入れ替える第2入替処理を実行する実行サイクル入力初期処理を含み、前記制御プログラム開始処理は、前記制御プログラムを前記制御サイクルの整数倍の前記実行サイクルごとに実行開始させる処理である、請求項17に記載のPLC用のシステムプログラム。前記システムプログラムは、前記PLCの制御動作の実行準備処理として、さらに、送信されるべき出力データを格納する送信バッファを前記記憶手段内に生成する処理と、前記送信バッファにコピーされる前記出力データが格納される出力同期バッファを前記出力データごとに前記記憶手段内に生成する処理とを含み、前記システムプログラムは、前記PLCの制御動作の実行制御処理として、さらに、前記出力データを、その出力データを生成した前記制御プログラムが実行された実行サイクルの次の実行サイクルの最初の制御サイクルにおいてその出力データが前記送信バッファから送信されることになるタイミングで、前記出力同期バッファから前記送信バッファにコピーする出力コピー処理を含む、請求項17に記載のPLC用のシステムプログラム。前記システムプログラムは、前記PLCの制御動作の実行準備処理として、さらに、前記制御プログラムが前記出力データを格納する演算用バッファを前記記憶手段内に生成する処理を含み、前記出力同期バッファを生成する処理は、前記出力データごとに、第1出力同期バッファ、第2出力同期バッファおよび第3出力同期バッファを出力同期バッファの組として生成する処理であり、前記第1出力同期バッファ、前記第2出力同期バッファおよび前記第3出力同期バッファは、前記演算用バッファから出力データをコピー可能な状態である書込先状態、前記送信バッファにコピーするための参照が可能な状態である参照先状態、待機状態、のいずれかの状態が重複せずに付与されるものであり、前記システムプログラムは、前記PLCの制御動作の実行制御処理として、さらに、前記制御プログラムの実行が終了すると、その制御プログラムの実行により生成された前記出力データを前記演算用バッファから前記書込先状態である出力同期バッファにコピーし、さらに、コピー先となった前記書込先状態である出力同期バッファおよびその出力同期バッファと同じ組の中で前記待機状態である出力同期バッファの書込先状態と待機状態とを入れ替える第4入替処理を実行する出力同期バッファ格納処理を含み、前記出力コピー処理は、各制御サイクルの開始後、前記送信バッファからの前記出力データの送信までの間に、前記出力データを前記参照先状態である出力同期バッファから前記送信バッファにコピーし、さらに、前記制御プログラムの実行サイクルが開始した制御サイクルであることを条件として、前記送信バッファへの前記コピーを実行するより前に前記待機状態である出力同期バッファおよび前記参照先状態である出力同期バッファの待機状態と参照先状態とを入れ替える第5入替処理を実行し、それにより、前記出力データを、その出力データを生成した前記制御プログラムが実行された実行サイクルの次の実行サイクルの最初の制御サイクルにおいて前記送信バッファから送信されることになるタイミングで、前記出力同期バッファから前記送信バッファにコピーする処理である、請求項29に記載のPLC用のシステムプログラム。マイクロプロセッサと、記憶手段と、通信回路とを備え、出力データの送信と、入力データの受信と、前記入力データを使用して前記出力データを生成する制御プログラムの実行とを繰り返すことによって制御対象を制御するPLCのCPUユニットにおいて、前記記憶手段に格納されて前記マイクロプロセッサによって実行されるためのPLC用のシステムプログラムを格納した記録媒体であって、前記記憶手段は、前記制御プログラムおよび前記システムプログラムの格納に用いられ、前記マイクロプロセッサは、前記システムプログラムに加えて、前記制御プログラムを実行し、前記通信回路は、前記出力データを送信しおよび前記入力データを受信し、前記システムプログラムは、前記PLCの制御動作の実行準備処理として、受信された入力データを格納する受信バッファを前記記憶手段内に生成する処理と、前記制御プログラムから参照される入力データごとに、その制御プログラムが入力データの参照先とする入力同期バッファを前記記憶手段内に生成する処理とを実行させ、前記システムプログラムは、前記PLCの制御動作の実行制御処理として、受信された前記入力データを前記受信バッファからその入力データに対応する前記入力同期バッファにコピーする入力コピー処理と、前記制御プログラムを実行開始させる制御プログラム開始処理とを実行させる、PLC用のシステムプログラムを格納した記録媒体。前記入力同期バッファを生成する処理は、前記制御プログラムから参照される入力データごとに、第1入力同期バッファおよび第2入力同期バッファを入力同期バッファの組として生成する処理であり、前記第1入力同期バッファおよび前記第2入力同期バッファは、前記受信バッファから入力データをコピー可能な状態である書込先状態、および、前記制御プログラムから参照可能な状態である参照先状態、のいずれかの状態が重複せずに付与されるものであり、前記入力コピー処理は、前記書込先状態である入力同期バッファにコピーする処理である、請求項31に記載のPLC用のシステムプログラムを格納した記録媒体。前記入力同期バッファを生成する処理は、前記制御プログラムから参照される入力データごとに、前記第1入力同期バッファと、前記第2入力同期バッファと、第3入力同期バッファとを入力同期バッファの組として生成する処理であり、前記第1入力同期バッファ、前記第2入力同期バッファおよび前記第3入力同期バッファは、前記書込先状態、前記参照先状態、待機状態、のいずれかの状態が重複せずに付与されるものであり、前記入力コピー処理は、さらに、コピー先となった前記書込先状態である入力同期バッファおよびその入力同期バッファと同じ組の中で前記待機状態である入力同期バッファの書込先状態と待機状態とを入れ替える第1入替処理を含み、前記制御プログラム開始処理は、さらに、実行開始させる制御プログラムの入力同期バッファについて、最新データを格納している入力同期バッファが前記待機状態であることを条件として、前記待機状態である入力同期バッファおよび前記参照先状態である入力同期バッファの待機状態と参照先状態とを入れ替える第2入替処理を含む、請求項32に記載のPLC用のシステムプログラムを格納した記録媒体。前記制御プログラム開始処理は、さらに、実行開始させる制御プログラムの入力同期バッファについて、最新データを格納している入力同期バッファが前記書込先状態であることを条件として、前記書込先状態である入力同期バッファおよび前記参照先状態である入力同期バッファの書込先状態と参照先状態とを入れ替える第3入替処理を含む、請求項32に記載のPLC用のシステムプログラムを格納した記録媒体。前記入力同期バッファを生成する処理は、前記制御プログラムから参照される入力データごとに、第1入力同期バッファおよび第2入力同期バッファを同期バッファの組として生成する処理であり、前記システムプログラムは、前記PLCの制御動作の実行準備処理として、さらに、最新状態記録領域を前記記憶手段内に生成する処理を含み、前記入力コピー処理は、さらに、コピー先の入力同期バッファが最新状態であることを前記最新状態記録領域に記録する処理を含み、前記制御プログラム開始処理は、さらに、前記最新状態記録領域の内容によって特定される最新状態である入力同期バッファをその制御プログラムの実行において参照する参照先状態とする処理を含む、請求項31に記載のPLC用のシステムプログラムを格納した記録媒体。前記制御プログラム開始処理は、さらに、実行開始させる制御プログラムが参照する前記入力同期バッファを書込禁止状態とする処理を含み、前記システムプログラムは、前記PLCの制御動作の実行制御処理として、さらに、前記制御プログラムの実行が終了すると、前記書込禁止状態であった同期バッファの前記書込禁止状態を解除する書込禁止解除処理を含み、前記入力コピー処理は、コピー先の前記入力同期バッファが前記書込禁止状態でないことを条件として行う処理である、請求項31に記載のPLC用のシステムプログラムを格納した記録媒体。前記入力同期バッファを生成する処理は、前記制御プログラムから参照される入力データごとに、第1入力同期バッファおよび第2入力同期バッファを同期バッファの組として生成する処理であり、前記第2入力同期バッファは、前記制御プログラムが入力データを参照するときに参照先とする入力同期バッファであり、前記入力コピー処理は、前記第1入力同期バッファにコピーする処理であり、前記制御プログラム開始処理は、さらに、前記制御プログラムを実行開始させる前に前記第1入力同期バッファに格納されているデータを前記第2入力同期バッファにコピーする処理を含む、請求項31に記載のPLC用のシステムプログラムを格納した記録媒体。前記システムプログラムは、前記PLCの制御動作の実行準備処理として、さらに、送信されるべき出力データを格納する送信バッファを前記記憶手段内に生成する処理と、前記送信バッファにコピーされる前記出力データが格納される出力同期バッファを前記出力データごとに前記記憶手段内に生成する処理とを含み、前記システムプログラムは、前記PLCの制御動作の実行制御処理として、さらに、前記出力データを前記出力同期バッファから前記送信バッファにコピーする出力コピー処理を含む、請求項31~37のいずれか1項に記載のPLC用のシステムプログラムを格納した記録媒体。前記出力コピー処理は、前記制御プログラムの実行が終了すると前記出力データをコピーする処理である、請求項38に記載のPLC用のシステムプログラムを格納した記録媒体。前記システムプログラムは、前記PLCの制御動作の実行準備処理として、さらに、前記制御プログラムが前記出力デ従来の、各制御サイクルの中で1組の入出力処理と1つの制御プログラムとを実行するPLCにおいては、入出力処理と制御プログラムとが1対1に対応しているため、それらの間での入力データおよび出力データの受け渡しは簡単である。しかしながら、入出力処理の実行周期と制御プログラムの実行周期とが異なる場合や、1組の入出力処理に複数の制御プログラムが関係する場合や、1つの制御プログラムに複数組の入出力処理が関係する場合のように、入出力処理と制御プログラムとが1対1に対応しない場合がある。このような場合には、制御プログラムの作成者が制御プログラムの実行と入出力処理の実行とに関するシステムの実行制御態様スケジューリングを熟知した上で、入出力処理と制御プログラムとの間での入力データと出力データとの受け渡しが適切に行われるように配慮してプログラミングする必要がある。そのため、制御プログラム作成者の負担が大きかった。特に、同じ入力データを複数の制御プログラムが利用する場合には、その入力データへの複数の制御プログラムからのアクセスが競合することがあった。また、制御プログラムの実行中における他の制御プログラムの実行、または、新たな入力データの受信、などによって、使用中の入力データが上書きされることがあった。これらのことを防ぐために、その入力データを制御プログラム自身が自己のローカル変数にコピーしてから使用するような処理が必要であった。本発明は、入出力処理と制御プログラムとが1対1に対応していない場合であっても、少なくとも受信された入力データを制御プログラムが利用可能にすることを、そのための制御プログラム自身による処理を必要とせずに、適切に行うことができるようにすることを目的とする。本発明のある局面によれば、制御対象を制御するPLCのCPUユニットを提供する。PLCのCPUユニットは、マイクロプロセッサと、記憶手段と、通信回路とを含む。PLCのCPUユニットは、出力データの送信と、入力データの受信と、入力データを使用して出力データを生成する制御プログラムの実行とを繰り返すことによって制御対象を制御するように構成されている。記憶手段は、制御プログラムおよびシステムプログラムの格納に用いられる。マイクロプロセッサは、記憶手段に格納されたシステムプログラムおよび制御プログラムを実行する。通信回路は、出力データを送信および入力データを受信する。システムプログラムは、PLCの制御動作の実行準備処理として、受信された入力データを格納する受信バッファを記憶手段内に生成する処理と、制御プログラムから参照される入力データごとに、その制御プログラムが入力データの参照先とする入力同期バッファを記憶手段内に生成する処理とを含む。システムプログラムは、PLCの制御動作の実行制御処理として、受信された入力データを受信バッファからその入力データに対応する入力同期バッファにコピーする入力コピー処理と、制御プログラムを実行開始させる制御プログラム開始処理とを含む。好ましくは、入力同期バッファを生成する処理は、制御プログラムから参照される入力データごとに、第1入力同期バッファおよび第2入力同期バッファを入力同期バッファの組として生成する処理である。第1入力同期バッファおよび第2入力同期バッファは、受信バッファから入力データをコピー可能な状態である書込先状態、および、制御プログラムから参照可能な状態である参照先状態、のいずれかの状態が重複せずに付与されるものである。入力コピー処理は、書込先状態である入力同期バッファにコピーする処理である。さらに好ましくは、入力同期バッファを生成する処理は、制御プログラムから参照される入力データごとに、第1入力同期バッファと、第2入力同期バッファと、第3入力同期バッファとを入力同期バッファの組として生成する処理である。第1入力同期バッファ、第2入力同期バッファおよび第3入力同期バッファは、書込先状態、参照先状態、待機状態、のいずれかの状態が重複せずに付与されるものである。入力コピー処理は、さらに、コピー先となった書込先状態である入力同期バッファおよびその入力同期バッファと同じ組の中で待機状態である入力同期バッファの書込先状態と待機状態とを入れ替える第1入替処理を含む。制御プログラム開始処理は、さらに、実行開始させる制御プログラムの入力同期バッファについて、最新データを格納している入力同期バッファが待機状態であることを条件として、待機状態である入力同期バッファおよび参照先状態である入力同期バッファの待機状態と参照先状態とを入れ替える第2入替処理を含む。さらに好ましくは、システムプログラムは、PLCの制御動作の実行準備処理として、さらに、制御プログラムごとに最新入力データ更新フラグを記憶手段内に生成する処理を含む。入力コピー処理は、さらに、当該入力コピーに関連する最新入力データ更新フラグをオンにする処理を含む。制御プログラム開始処理は、さらに、実行開始させる制御プログラムの入力同期バッファに関連する最新入力データ更新フラグがオンであることを条件として、第2入替処理および当該最新入力データ更新フラグをオフにする処理を含み、それにより、最新データを格納している入力同期バッファが待機状態であることを条件として実行する第2入替処理を実現する。あるいはさらに好ましくは、システムプログラムは、PLCの制御動作の実行準備処理として、さらに、最新状態記録領域を記憶手段内に生成する処理を含む。入力コピー処理は、さらに、コピー先の入力同期バッファが最新状態であることを最新状態記録領域に記録する処理を含む。制御プログラム開始処理は、さらに、最新状態記録領域の内容によって特定される最新状態である入力同期バッファが待機状態であることを条件として実行される第2入替処理を含む。あるいは好ましくは、制御プログラム開始処理は、さらに、実行開始させる制御プログラムの入力同期バッファについて、最新データを格納している入力同期バッファが書込先状態であることを条件として、書込先状態である入力同期バッファおよび参照先状態である入力同期バッファの書込先状態と参照先状態とを入れ替える第3入替処理を含む。好ましくは、入力同期バッファを生成する処理は、制御プログラムから参照される入力データごとに、第1入力同期バッファおよび第2入力同期バッファを同期バッファの組として生成する処理である。システムプログラムは、PLCの制御動作の実行準備処理として、さらに、最新状態記録領域を記憶手段内に生成する処理を含む。入力コピー処理は、さらに、コピー先の入力同期バッファが最新状態であることを最新状態記録領域に記録する処理を含む。制御プログラム開始処理は、さらに、最新状態記録領域の内容によって特定される最新状態である入力同期バッファをその制御プログラムの実行において参照する参照先状態とする処理を含む。好ましくは、制御プログラム開始処理は、さらに、実行開始させる制御プログラムが参照する入力同期バッファを書込禁止状態とする処理を含む。システムプログラムは、PLCの制御動作の実行制御処理として、さらに、制御プログラムの実行が終了すると、書込禁止状態であった同期バッファの書込禁止状態を解除する書込禁止解除処理を含む。入力コピー処理は、コピー先の入力同期バッファが書込禁止状態でないことを条件として行う処理である。好ましくは、入力同期バッファを生成する処理は、制御プログラムから参照される入力データごとに、第1入力同期バッファおよび第2入力同期バッファを同期バッファの組として生成する処理である。第2入力同期バッファは、制御プログラムが入力データを参照するときに参照先とする入力同期バッファである。入力コピー処理は、第1入力同期バッファにコピーする処理である。制御プログラム開始処理は、さらに、制御プログラムを実行開始させる前に第1入力同期バッファに格納されているデータを第2入力同期バッファにコピーする処理を含む。好ましくは、システムプログラムは、PLCの制御動作の実行準備処理として、さらに、送信されるべき出力データを格納する送信バッファを記憶手段内に生成する処理と、送信バッファにコピーされる出力データが格納される出力同期バッファを出力データごとに記憶手段内に生成する処理とを含む。システムプログラムは、PLCの制御動作の実行制御処理として、さらに、出力データを出力同期バッファから送信バッファにコピーする出力コピー処理を含む。さらに好ましくは、出力コピー処理は、制御プログラムの実行が終了すると出力データをコピーする処理である。あるいはさらに好ましくは、システムプログラムは、PLCの制御動作の実行準備処理として、さらに、制御プログラムが出力データを格納する演算用バッファを記憶手段内に生成する処理を含む。出力同期バッファを生成する処理は、出力データごとに、第1出力同期バッファ、第2出力同期バッファおよび第3出力同期バッファを出力同期バッファの組として生成する処理である。第1出力同期バッファ、第2出力同期バッファおよび第3出力同期バッファは、演算用バッファから出力データをコピー可能な状態である書込先状態、送信バッファにコピーするための参照が可能な状態である参照先状態、および待機状態のいずれかの状態が重複せずに付与されるものである。システムプログラムは、PLCの制御動作の実行制御処理として、さらに、制御プログラムの実行が終了すると、その制御プログラムの実行により生成された出力データを演算用バッファから書込先状態である出力同期バッファにコピーし、さらに、コピー先となった書込先状態である出力同期バッファおよびその出力同期バッファと同じ組の中で待機状態である出力同期バッファの書込先状態と待機状態とを入れ替える第4入替処理を実行する出力同期バッファ格納処理を含む。出力コピー処理は、最新データを格納している出力同期バッファが待機状態であることを条件として、待機状態である出力同期バッファおよび参照先状態である出力同期バッファの待機状態と参照先状態とを入れ替える第5入替処理を実行し、かつ、出力データを参照先状態となった出力同期バッファから送信バッファにコピーする処理である。好ましくは、入力データの受信は、制御サイクルごとに実行される。入力コピー処理は、受信された入力データを、当該入力データが制御プログラムの実行サイクルが開始した制御サイクルと関係する受信タイミングにおいて受信されたことを条件として、受信バッファからその入力データに対応する入力同期バッファにコピーする処理である。制御プログラム開始処理は、制御プログラムを制御サイクルの整数倍の実行サイクルごとに実行開始させる処理である。好ましくは、入力同期バッファを生成する処理は、制御プログラムから参照される入力データごとに、第1入力同期バッファ、第2入力同期バッファおよび第3入力同期バッファを入力同期バッファの組として生成する処理である。第1入力同期バッファ、第2入力同期バッファおよび第3入力同期バッファは、受信バッファから入力データをコピー可能な状態である書込先状態、制御プログラムから参照可能な状態である参照先状態、および、待機状態、のいずれかの状態が重複せずに付与されるものである。入力データの受信は、制御サイクルごとに実行される。入力コピー処理は、書込先状態である入力同期バッファにコピーし、さらに、コピー先となった書込先状態である入力同期バッファおよびその入力同期バッファと同じ組の中で待機状態である入力同期バッファの書込先状態と待機状態とを入れ替える第1入替処理を実行する処理である。システムプログラムは、PLCの制御動作の実行制御処理として、さらに、制御プログラムの実行サイクルが開始した制御サイクルであることを条件として、待機状態である入力同期バッファおよび参照先状態である入力同期バッファの待機状態と参照先状態とを入れ替える第2入替処理を実行する実行サイクル入力初期処理を含む。制御プログラム開始処理は、制御プログラムを制御サイクルの整数倍の実行サイクルごとに実行開始させる処理である。好ましくは、システムプログラムは、PLCの制御動作の実行準備処理として、さらに、送信されるべき出力データを格納する送信バッファを記憶手段内に生成する処理と、送信バッファにコピーされる出力データが格納される出力同期バッファを出力データごとに記憶手段内に生成する処理とを含む。システムプログラムは、PLCの制御動作の実行制御処理として、さらに、出力データを、その出力データを生成した制御プログラムが実行された実行サイクルの次の実行サイクルの最初の制御サイクルにおいてその出力データが送信バッファから送信されることになるタイミングで、出力同期バッファから送信バッファにコピーする出力コピー処理を含む。好ましくは、システムプログラムは、PLCの制御動作の実行準備処理として、さらに、制御プログラムが出力データを格納する演算用バッファを記憶手段内に生成する処理を含む。出力同期バッファを生成する処理は、出力データごとに、第1出力同期バッファ、第2出力同期バッファおよび第3出力同期バッファを出力同期バッファの組として生成する処理である。第1出力同期バッファ、第2出力同期バッファおよび第3出力同期バッファは、演算用バッファから出力データをコピー可能な状態である書込先状態、送信バッファにコピーするための参照が可能な状態である参照先状態、待機状態、のいずれかの状態が重複せずに付与されるものである。システムプログラムは、PLCの制御動作の実行制御処理として、さらに、制御プログラムの実行が終了すると、その制御プログラムの実行により生成された出力データを演算用バッファから書込先状態である出力同期バッファにコピーし、さらに、コピー先となった書込先状態である出力同期バッファおよびその出力同期バッファと同じ組の中で待機状態である出力同期バッファの書込先状態と待機状態とを入れ替える第4入替処理を実行する出力同期バッファ格納処理を含む。出力コピー処理は、各制御サイクルの開始後、送信バッファからの出力データの送信までの間に、出力データを参照先状態である出力同期バッファから送信バッファにコピーし、さらに、制御プログラムの実行サイクルが開始した制御サイクルであることを条件として、送信バッファへのコピーを実行するより前に待機状態である出力同期バッファおよび参照先状態である出力同期バッファの待機状態と参照先状態とを入れ替える第5入替処理を実行し、それにより、出力データを、その出力データを生成した制御プログラムが実行された実行サイクルの次の実行サイクルの最初の制御サイクルにおいて送信バッファから送信されることになるタイミングで、出力同期バッファから送信バッファにコピーする処理である。この発明の別の局面に従えば、マイクロプロセッサと、記憶手段と、通信回路とを含み、出力データの送信と、入力データの受信と、入力データを使用して出力データを生成する制御プログラムの実行とを繰り返すことによって制御対象を制御するPLCのCPUユニットにおいて、記憶手段に格納されてマイクロプロセッサによって実行されるためのPLC用のシステムプログラムを提供する。記憶手段は、制御プログラムおよびシステムプログラムの格納に用いられる。マイクロプロセッサは、システムプログラムに加えて、制御プログラムを実行する。通信回路は、出力データを送信しおよび入力データを受信する。システムプログラムは、PLCの制御動作の実行準備処理として、受信された入力データを格納する受信バッファを記憶手段内に生成する処理と、制御プログラムから参照される入力データごとに、その制御プログラムが入力データの参照先とする入力同期バッファを記憶手段内に生成する処理とを実行させる。システムプログラムは、PLCの制御動作の実行制御処理として、受信された入力データを受信バッファからその入力データに対応する入力同期バッファにコピーする入力コピー処理と、制御プログラムを実行開始させる制御プログラム開始処理とを実行させる。好ましくは、入力同期バッファを生成する処理は、制御プログラムから参照される入力データごとに、第1入力同期バッファおよび第2入力同期バッファを入力同期バッファの組として生成する処理である。第1入力同期バッファおよび第2入力同期バッファは、受信バッファから入力データをコピー可能な状態である書込先状態、および、制御プログラムから参照可能な状態である参照先状態、のいずれかの状態が重複せずに付与されるものである。入力コピー処理は、書込先状態である入力同期バッファにコピーする処理である。さらに好ましくは、入力同期バッファを生成する処理は、制御プログラムから参照される入力データごとに、第1入力同期バッファと、第2入力同期バッファと、第3入力同期バッファとを入力同期バッファの組として生成する処理である。第1入力同期バッファ、第2入力同期バッファおよび第3入力同期バッファは、書込先状態、参照先状態、待機状態、のいずれかの状態が重複せずに付与されるものである。入力コピー処理は、さらに、コピー先となった書込先状態である入力同期バッファおよびその入力同期バッファと同じ組の中で待機状態である入力同期バッファの書込先状態と待機状態とを入れ替える第1入替処理を含む。制御プログラム開始処理は、さらに、実行開始させる制御プログラムの入力同期バッファについて、最新データを格納している入力同期バッファが待機状態であることを条件として、待機状態である入力同期バッファおよび参照先状態である入力同期バッファの待機状態と参照先状態とを入れ替える第2入替処理を含む。あるいはさらに好ましくは、制御プログラム開始処理は、さらに、実行開始させる制御プログラムの入力同期バッファについて、最新データを格納している入力同期バッファが書込先状態であることを条件として、書込先状態である入力同期バッファおよび参照先状態である入力同期バッファの書込先状態と参照先状態とを入れ替える第3入替処理を含む。あるいは好ましくは、入力同期バッファを生成する処理は、制御プログラムから参照される入力データごとに、第1入力同期バッファおよび第2入力同期バッファを同期バッファの組として生成する処理である。システムプログラムは、PLCの制御動作の実行準備処理として、さらに、最新状態記録領域を記憶手段内に生成する処理を含む。入力コピー処理は、さらに、コピー先の入力同期バッファが最新状態であることを最新状態記録領域に記録する処理を含む。制御プログラム開始処理は、さらに、最新状態記録領域の内容によって特定される最新状態である入力同期バッファをその制御プログラムの実行において参照する参照先状態とする処理を含む。あるいは好ましくは、制御プログラム開始処理は、さらに、実行開始させる制御プログラムが参照する入力同期バッファを書込禁止状態とする処理を含む。システムプログラムは、PLCの制御動作の実行制御処理として、さらに、制御プログラムの実行が終了すると、書込禁止状態であった同期バッファの書込禁止状態を解除する書込禁止解除処理を含む。入力コピー処理は、コピー先の入力同期バッファが書込禁止状態でないことを条件として行う処理である。あるいは好ましくは、入力同期バッファを生成する処理は、制御プログラムから参照される入力データごとに、第1入力同期バッファおよび第2入力同期バッファを同期バッファの組として生成する処理である。第2入力同期バッファは、制御プログラムが入力データを参照するときに参照先とする入力同期バッファである。入力コピー処理は、第1入力同期バッファにコピーする処理である。制御プログラム開始処理は、さらに、制御プログラムを実行開始させる前に第1入力同期バッファに格納されているデータを第2入力同期バッファにコピーする処理を含む。好ましくは、システムプログラムは、PLCの制御動作の実行準備処理として、さらに、送信されるべき出力データを格納する送信バッファを記憶手段内に生成する処理と、送信バッファにコピーされる出力データが格納される出力同期バッファを出力データごとに記憶手段内に生成する処理とを含む。システムプログラムは、PLCの制御動作の実行制御処理として、さらに、出力データを出力同期バッファから送信バッファにコピーする出力コピー処理を含む。さらに好ましくは、出力コピー処理は、制御プログラムの実行が終了すると出力データをコピーする処理である。あるいはさらに好ましくは、システムプログラムは、PLCの制御動作の実行準備処理として、さらに、制御プログラムが出力データを格納する演算用バッファを記憶手段内に生成する処理を含む。出力同期バッファを生成する処理は、出力データごとに、第1出力同期バッファ、第2出力同期バッファおよび第3出力同期バッファを出力同期バッファの組として生成する処理である。第1出力同期バッファ、第2出力同期バッファおよび第3出力同期バッファは、演算用バッファから出力データをコピー可能な状態である書込先状態、送信バッファにコピーするための参照が可能な状態である参照先状態、および待機状態のいずれかの状態が重複せずに付与されるものである。システムプログラムは、PLCの制御動作の実行制御処理として、さらに、制御プログラムの実行が終了すると、その制御プログラムの実行により生成された出力データを演算用バッファから書込先状態である出力同期バッファにコピーし、さらに、コピー先となった書込先状態である出力同期バッファおよびその出力同期バッファと同じ組の中で待機状態である出力同期バッファの書込先状態と待機状態とを入れ替える第4入替処理を実行する出力同期バッファ格納処理を含む。出力コピー処理は、最新データを格納している出力同期バッファが待機状態であることを条件として、待機状態である出力同期バッファおよび参照先状態である出力同期バッファの待機状態と参照先状態とを入れ替える第5入替処理を実行し、かつ、出力データを参照先状態となった出力同期バッファから送信バッファにコピーする処理である。好ましくは、入力データの受信は、制御サイクルごとに実行される。入力コピー処理は、受信された入力データを、当該入力データが制御プログラムの実行サイクルが開始した制御サイクルと関係する受信タイミングにおいて受信されたことを条件として、受信バッファからその入力データに対応する入力同期バッファにコピーする処理である。制御プログラム開始処理は、制御プログラムを制御サイクルの整数倍の実行サイクルごとに実行開始させる処理である。好ましくは、入力同期バッファを生成する処理は、制御プログラムから参照される入力データごとに、第1入力同期バッファ、第2入力同期バッファおよび第3入力同期バッファを入力同期バッファの組として生成する処理である。第1入力同期バッファ、第2入力同期バッファおよび第3入力同期バッファは、受信バッファから入力データをコピー可能な状態である書込先状態、制御プログラムから参照可能な状態である参照先状態、および、待機状態、のいずれかの状態が重複せずに付与されるものである。入力データの受信は、制御サイクルごとに実行される。入力コピー処理は、書込先状態である入力同期バッファにコピーし、さらに、コピー先となった書込先状態である入力同期バッファおよびその入力同期バッファと同じ組の中で待機状態である入力同期バッファの書込先状態と待機状態とを入れ替える第1入替処理を実行する処理である。システムプログラムは、PLCの制御動作の実行制御処理として、さらに、制御プログラムの実行サイクルが開始した制御サイクルであることを条件として、待機状態である入力同期バッファおよび参照先状態である入力同期バッファの待機状態と参照先状態とを入れ替える第2入替処理を実行する実行サイクル入力初期処理を含む。制御プログラム開始処理は、制御プログラムを制御サイクルの整数倍の実行サイクルごとに実行開始させる処理である。好ましくは、システムプログラムは、PLCの制御動作の実行準備処理として、さらに、送信されるべき出力データを格納する送信バッファを記憶手段内に生成する処理と、送信バッファにコピーされる出力データが格納される出力同期バッファを出力データごとに記憶手段内に生成する処理とを含む。システムプログラムは、PLCの制御動作の実行制御処理として、さらに、出力データを、その出力データを生成した制御プログラムが実行された実行サイクルの次の実行サイクルの最初の制御サイクルにおいてその出力データが送信バッファから送信されることになるタイミングで、出力同期バッファから送信バッファにコピーする出力コピー処理を含む。好ましくは、システムプログラムは、PLCの制御動作の実行準備処理として、さらに、制御プログラムが出力データを格納する演算用バッファを記憶手段内に生成する処理を含む。出力同期バッファを生成する処理は、出力データごとに、第1出力同期バッファ、第2出力同期バッファおよび第3出力同期バッファを出力同期バッファの組として生成する処理である。第1出力同期バッファ、第2出力同期バッファおよび第3出力同期バッファは、演算用バッファから出力データをコピー可能な状態である書込先状態、送信バッファにコピーするための参照が可能な状態である参照先状態、待機状態、のいずれかの状態が重複せずに付与されるものである。システムプログラムは、PLCの制御動作の実行制御処理として、さらに、制御プログラムの実行が終了すると、その制御プログラムの実行により生成された出力データを演算用バッファから書込先状態である出力同期バッファにコピーし、さらに、コピー先となった書込先状態である出力同期バッファおよびその出力同期バッファと同じ組の中で待機状態である出力同期バッファの書込先状態と待機状態とを入れ替える第4入替処理を実行する出力同期バッファ格納処理を含む。出力コピー処理は、各制御サイクルの開始後、送信バッファからの出力データの送信までの間に、出力データを参照先状態である出力同期バッファから送信バッファにコピーし、さらに、制御プログラムの実行サイクルが開始した制御サイクルであることを条件として、送信バッファへのコピーを実行するより前に待機状態である出力同期バッファおよび参照先状態である出力同期バッファの待機状態と参照先状態とを入れ替える第5入替処理を実行し、それにより、出力データを、その出力データを生成した制御プログラムが実行された実行サイクルの次の実行サイクルの最初の制御サイクルにおいて送信バッファから送信されることになるタイミングで、出力同期バッファから送信バッファにコピーする処理である。この発明のさらに別の局面に従えば、マイクロプロセッサと、記憶手段と、通信回路とを含み、出力データの送信と、入力データの受信と、入力データを使用して出力データを生成する制御プログラムの実行とを繰り返すことによって制御対象を制御するPLCのCPUユニットにおいて、記憶手段に格納されてマイクロプロセッサによって実行されるためのPLC用のシステムプログラムを格納した記録媒体を提供する。記憶手段は、制御プログラムおよびシステムプログラムの格納に用いられる。マイクロプロセッサは、システムプログラムに加えて、制御プログラムを実行する。通信回路は、出力データを送信しおよび入力データを受信する。システムプログラムは、PLCの制御動作の実行準備処理として、受信された入力データを格納する受信バッファを記憶手段内に生成する処理と、制御プログラムから参照される入力データごとに、その制御プログラムが入力データの参照先とする入力同期バッファを記憶手段内に生成する処理とを実行させる。システムプログラムは、PLCの制御動作の実行制御処理として、受信された入力データを受信バッファからその入力データに対応する入力同期バッファにコピーする入力コピー処理と、制御プログラムを実行開始させる制御プログラム開始処理とを実行させる。好ましくは、入力同期バッファを生成する処理は、制御プログラムから参照される入力データごとに、第1入力同期バッファおよび第2入力同期バッファを入力同期バッファの組として生成する処理である。第1入力同期バッファおよび第2入力同期バッファは、受信バッファから入力データをコピー可能な状態である書込先状態、および、制御プログラムから参照可能な状態である参照先状態、のいずれかの状態が重複せずに付与されるものである。入力コピー処理は、書込先状態である入力同期バッファにコピーする処理である。さらに好ましくは、入力同期バッファを生成する処理は、制御プログラムから参照される入力データごとに、第1入力同期バッファと、第2入力同期バッファと、第3入力同期バッファとを入力同期バッファの組として生成する処理である。第1入力同期バッファ、第2入力同期バッファおよび第3入力同期バッファは、書込先状態、参照先状態、待機状態、のいずれかの状態が重複せずに付与されるものである。入力コピー処理は、さらに、コピー先となった書込先状態である入力同期バッファおよびその入力同期バッファと同じ組の中で待機状態である入力同期バッファの書込先状態と待機状態とを入れ替える第1入替処理を含む。制御プログラム開始処理は、さらに、実行開始させる制御プログラムの入力同期バッファについて、最新データを格納している入力同期バッファが待機状態であることを条件として、待機状態である入力同期バッファおよび参照先状態である入力同期バッファの待機状態と参照先状態とを入れ替える第2入替処理を含む。あるいはさらに好ましくは、制御プログラム開始処理は、さらに、実行開始させる制御プログラムの入力同期バッファについて、最新データを格納している入力同期バッファが書込先状態であることを条件として、書込先状態である入力同期バッファおよび参照先状態である入力同期バッファの書込先状態と参照先状態とを入れ替える第3入替処理を含む。あるいは好ましくは、入力同期バッファを生成する処理は、制御プログラムから参照される入力データごとに、第1入力同期バッファおよび第2入力同期バッファを同期バッファの組として生成する処理である。システムプログラムは、PLCの制御動作の実行準備処理として、さらに、最新状態記録領域を記憶手段内に生成する処理を含む。入力コピー処理は、さらに、コピー先の入力同期バッファが最新状態であることを最新状態記録領域に記録する処理を含む。制御プログラム開始処理は、さらに、最新状態記録領域の内容によって特定される最新状態である入力同期バッファをその制御プログラムの実行において参照する参照先状態とする処理を含む。あるいは好ましくは、制御プログラム開始処理は、さらに、実行開始させる制御プログラムが参照する入力同期バッファを書込禁止状態とする処理を含む。システムプログラムは、PLCの制御動作の実行制御処理として、さらに、制御プログラムの実行が終了すると、書込禁止状態であった同期バッファの書込禁止状態を解除する書込禁止解除処理を含む。入力コピー処理は、コピー先の入力同期バッファが書込禁止状態でないことを条件として行う処理である。あるいは好ましくは、入力同期バッファを生成する処理は、制御プログラムから参照される入力データごとに、第1入力同期バッファおよび第2入力同期バッファを同期バッファの組として生成する処理である。第2入力同期バッファは、制御プログラムが入力データを参照するときに参照先とする入力同期バッファである。入力コピー処理は、第1入力同期バッファにコピーする処理である。制御プログラム開始処理は、さらに、制御プログラムを実行開始させる前に第1入力同期バッファに格納されているデータを第2入力同期バッファにコピーする処理を含む。好ましくは、システムプログラムは、PLCの制御動作の実行準備処理として、さらに、送信されるべき出力データを格納する送信バッファを記憶手段内に生成する処理と、送信バッファにコピーされる出力データが格納される出力同期バッファを出力データごとに記憶手段内に生成する処理とを含む。システムプログラムは、PLCの制御動作の実行制御処理として、さらに、出力データを出力同期バッファから送信バッファにコピーする出力コピー処理を含む。さらに好ましくは、出力コピー処理は、制御プログラムの実行が終了すると出力データをコピーする処理である。あるいはさらに好ましくは、システムプログラムは、PLCの制御動作の実行準備処理として、さらに、制御プログラムが出力データを格納する演算用バッファを記憶手段内に生成する処理を含む。出力同期バッファを生成する処理は、出力データごとに、第1出力同期バッファ、第2出力同期バッファおよび第3出力同期バッファを出力同期バッファの組として生成する処理である。第1出力同期バッファ、第2出力同期バッファおよび第3出力同期バッファは、演算用バッファから出力データをコピー可能な状態である書込先状態、送信バッファにコピーするための参照が可能な状態である参照先状態、および待機状態のいずれかの状態が重複せずに付与されるものである。システムプログラムは、PLCの制御動作の実行制御処理として、さらに、制御プログラムの実行が終了すると、その制御プログラムの実行により生成された出力データを演算用バッファから書込先状態である出力同期バッファにコピーし、さらに、コピー先となった書込先状態である出力同期バッファおよびその出力同期バッファと同じ組の中で待機状態である出力同期バッファの書込先状態と待機状態とを入れ替える第4入替処理を実行する出力同期バッファ格納処理を含む。出力コピー処理は、最新データを格納している出力同期バッファが待機状態であることを条件として、待機状態である出力同期バッファおよび参照先状態である出力同期バッファの待機状態と参照先状態とを入れ替える第5入替処理を実行し、かつ、出力データを参照先状態となった出力同期バッファから送信バッファにコピーする処理である。好ましくは、入力データの受信は、制御サイクルごとに実行される。入力コピー処理は、受信された入力データを、当該入力データが制御プログラムの実行サイクルが開始した制御サイクルと関係する受信タイミングにおいて受信されたことを条件として、受信バッファからその入力データに対応する入力同期バッファにコピーする処理である。制御プログラム開始処理は、制御プログラムを制御サイクルの整数倍の実行サイクルごとに実行開始させる処理である。好ましくは、入力同期バッファを生成する処理は、制御プログラムから参照される入力データごとに、第1入力同期バッファ、第2入力同期バッファおよび第3入力同期バッファを入力同期バッファの組として生成する処理である。第1入力同期バッファ、第2入力同期バッファおよび第3入力同期バッファは、受信バッファから入力データをコピー可能な状態である書込先状態、制御プログラムから参照可能な状態である参照先状態、および、待機状態、のいずれかの状態が重複せずに付与されるものである。入力データの受信は、制御サイクルごとに実行される。入力コピー処理は、書込先状態である入力同期バッファにコピーし、さらに、コピー先となった書込先状態である入力同期バッファおよびその入力同期バッファと同じ組の中で待機状態である入力同期バッファの書込先状態と待機状態とを入れ替える第1入替処理を実行する処理である。システムプログラムは、PLCの制御動作の実行制御処理として、さらに、制御プログラムの実行サイクルが開始した制御サイクルであることを条件として、待機状態である入力同期バッファおよび参照先状態である入力同期バッファの待機状態と参照先状態とを入れ替える第2入替処理を実行する実行サイクル入力初期処理を含む。制御プログラム開始処理は、制御プログラムを制御サイクルの整数倍の実行サイクルごとに実行開始させる処理である。好ましくは、システムプログラムは、PLCの制御動作の実行準備処理として、さらに、送信されるべき出力データを格納する送信バッファを記憶手段内に生成する処理と、送信バッファにコピーされる出力データが格納される出力同期バッファを出力データごとに記憶手段内に生成する処理とを含む。システムプログラムは、PLCの制御動作の実行制御処理として、さらに、出力データを、その出力データを生成した制御プログラムが実行された実行サイクルの次の実行サイクルの最初の制御サイクルにおいてその出力データが送信バッファから送信されることになるタイミングで、出力同期バッファから送信バッファにコピーする出力コピー処理を含む。好ましくは、システムプログラムは、PLCの制御動作の実行準備処理として、さらに、制御プログラムが出力データを格納する演算用バッファを記憶手段内に生成する処理を含む。出力同期バッファを生成する処理は、出力データごとに、第1出力同期バッファ、第2出力同期バッファおよび第3出力同期バッファを出力同期バッファの組として生成する処理である。第1出力同期バッファ、第2出力同期バッファおよび第3出力同期バッファは、演算用バッファから出力データをコピー可能な状態である書込先状態、送信バッファにコピーするための参照が可能な状態である参照先状態、待機状態、のいずれかの状態が重複せずに付与されるものである。システムプログラムは、PLCの制御動作の実行制御処理として、さらに、制御プログラムの実行が終了すると、その制御プログラムの実行により生成された出力データを演算用バッファから書込先状態である出力同期バッファにコピーし、さらに、コピー先となった書込先状態である出力同期バッファおよびその出力同期バッファと同じ組の中で待機状態である出力同期バッファの書込先状態と待機状態とを入れ替える第4入替処理を実行する出力同期バッファ格納処理を含む。出力コピー処理は、各制御サイクルの開始後、送信バッファからの出力データの送信までの間に、出力データを参照先状態である出力同期バッファから送信バッファにコピーし、さらに、制御プログラムの実行サイクルが開始した制御サイクルであることを条件として、送信バッファへのコピーを実行するより前に待機状態である出力同期バッファおよび参照先状態である出力同期バッファの待機状態と参照先状態とを入れ替える第5入替処理を実行し、それにより、出力データを、その出力データを生成した制御プログラムが実行された実行サイクルの次の実行サイクルの最初の制御サイクルにおいて送信バッファから送信されることになるタイミングで、出力同期バッファから送信バッファにコピーする処理である。この明細書における日本語の命令は、ある機能を実現するための、プログラムのソースリストに表れる個々の命令に限らず、それら個々の命令や関数等の集合をも意味しており、たとえば英語ではinstructionsのように複数形で表記されるべきものである。本発明によれば、PLCにおいて、入出力処理と制御プログラムとが1対1に対応していない場合であっても、受信された入力データを制御プログラムが利用可能にすることを、そのための制御プログラム自身による処理を必要とせずに、行うことができる。本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。<A.システム構成>本実施の形態に係るPLCは、機械や設備などの制御対象を制御する。本実施の形態に係るPLCは、その構成要素としてCPUユニットを含む。CPUユニットは、マイクロプロセッサと、記憶手段と、通信回路とを含む。記憶手段は、制御プログラムおよびプログラムの実行を制御するシステムプログラムの格納に用いられる。マイクロプロセッサは、記憶手段に格納されたシステムプログラムおよび制御プログラムを実行する。通信回路は、出力データを送信しおよび記入力データを受信する。まず、図1を参照して、本実施の形態に係るPLC1のシステム構成について説明する。図1は、本発明の実施の形態に係るPLCシステムの概略構成を示す模式図である。図1を参照して、PLCシステムSYSは、PLC1と、PLC1とフィールドネットワーク2を介して接続されるサーボモータドライバ3およびリモートIOターミナル5と、フィールド機器である検出スイッチ6およびリレー7とを含む。また、PLC1には、接続ケーブル10などを介してPLCサポート装置8が接続される。PLC1は、主たる演算処理を実行するCPUユニット13と、1つ以上のIOユニット14と、特殊ユニット15とを含む。これらのユニットは、PLCシステムバス11を介して、データを互いに遣り取りできるように構成される。また、これらのユニットには、電源ユニット12によって適切な電圧の電源が供給される。なお、PLC1として構成される各ユニットは、PLCメーカーが提供するものであるので、PLCシステムバス11は、一般にPLCメーカーごとに独自に開発され、使用されている。これに対して、後述するようにフィールドネットワーク2については、異なるメーカーの製品同士が接続できるように、その規格などが公開されている場合も多い。CPUユニット13の詳細については、図2を参照して後述する。IOユニット14は、一般的な入出力処理に関するユニットであり、オン/オフといった2値化されたデータの入出力を司る。すなわち、IOユニット14は、検出スイッチ6などのセンサが何らかの対象物を検出している状態オンおよび何らの対象物も検出していない状態オフのいずれであるかという情報を収集する。また、IOユニット14は、リレー7やアクチュエータといった出力先に対して、活性化するための指令オンおよび不活性化するための指令オフのいずれかを出力する。特殊ユニット15は、アナログデータの入出力、温度制御、特定の通信方式による通信といった、IOユニット14ではサポートしない機能を有する。フィールドネットワーク2は、CPUユニット13と遣り取りされる各種データを伝送する。フィールドネットワーク2としては、典型的には、各種の産業用イーサネット登録商標を用いることができる。産業用イーサネット登録商標としては、たとえば、EtherCAT登録商標、ProfinetIRT、MECHATROLINK登録商標-III、Powerlink、SERCOS登録商標-III、CIPMotionなどが知られており、これらのうちのいずれを採用してもよい。さらに、産業用イーサネット登録商標以外のフィールドネットワークを用いてもよい。たとえば、モーション制御を行わない場合であれば、DeviceNet、CompoNet/IP登録商標などを用いてもよい。本実施の形態に係るPLCシステムSYSでは、典型的に、本実施の形態においては、産業用イーサネット登録商標であるEtherCAT登録商標をフィールドネットワーク2として採用する場合の構成について例示する。なお、図1には、PLCシステムバス11およびフィールドネットワーク2の両方を有するPLCシステムSYSを例示するが、一方のみを搭載するシステム構成を採用することもできる。たとえば、フィールドネットワーク2ですべてのユニットを接続してもよい。あるいは、フィールドネットワーク2を使用せずに、サーボモータドライバ3をPLCシステムバス11に直接接続してもよい。さらに、フィールドネットワーク2の通信ユニットをPLCシステムバス11に接続し、CPUユニット13から当該通信ユニット経由で、フィールドネットワーク2に接続された機器との間の通信を行うようにしてもよい。なお、PLC1は、CPUユニット13にIOユニット14の機能やサーボモータドライバ3の機能を持たせることにより、IOユニット14やサーボモータドライバ3などを介さずにCPUユニット13が直接制御対象を制御する構成でもよい。サーボモータドライバ3は、フィールドネットワーク2を介してCPUユニット13と接続されるとともに、CPUユニット13からの指令値に従ってサーボモータ4を駆動する。より具体的には、サーボモータドライバ3は、PLC1から一定周期で、位置指令値、速度指令値、トルク指令値といった指令値を受ける。また、サーボモータドライバ3は、サーボモータ4の軸に接続されている位置センサロータリーエンコーダやトルクセンサといった検出器から、位置、速度典型的には、今回位置と前回位置との差から算出される、トルクといったサーボモータ4の動作に係る実測値を取得する。そして、サーボモータドライバ3は、CPUユニット13からの指令値を目標値に設定し、実測値をフィードバック値として、フィードバック制御を行う。すなわち、サーボモータドライバ3は、実測値が目標値に近づくようにサーボモータ4を駆動するための電流を調整する。なお、サーボモータドライバ3は、サーボモータアンプと称されることもある。また、図1には、サーボモータ4とサーボモータドライバ3とを組み合わせたシステム例を示すが、その他の構成、たとえば、パルスモータとパルスモータドライバとを組み合わせたシステムを採用することもできる。図1に示すPLCシステムSYSのフィールドネットワーク2には、さらに、リモートIOターミナル5が接続されている。リモートIOターミナル5は、基本的には、IOユニット14と同様に、一般的な入出力処理に関する処理を行う。より具体的には、リモートIOターミナル5は、フィールドネットワーク2でのデータ伝送に係る処理を行うための通信カプラ52と、1つ以上のIOユニット53とを含む。これらのユニットは、リモートIOターミナルバス51を介して、データを互いに遣り取りできるように構成される。PLCサポート装置8については後述する。<B.CPUユニットのハードウェア構成>次に、図2を参照して、CPUユニット13のハードウェア構成について説明する。図2は、本発明の実施の形態に係るCPUユニット13のハードウェア構成を示す模式図である。図2を参照して、CPUユニット13は、マイクロプロセッサ100と、チップセット102と、メインメモリ104と、不揮発性メモリ106と、システムタイマ108と、PLCシステムバスコントローラ120と、フィールドネットワークコントローラ140と、USBコネクタ110とを含む。チップセット102と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。マイクロプロセッサ100およびチップセット102は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、マイクロプロセッサ100は、チップセット102から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット102は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、マイクロプロセッサ100に必要な命令コードを生成する。さらに、チップセット102は、マイクロプロセッサ100での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。マイクロプロセッサ100は、以下に説明する実施の形態1~7においては、マルチコアであることを明示していない場合には、シングルコアであるとする。マルチコアとはコア数が2以上の場合を意味するコア数が2の場合も含む。CPUユニット13は、記憶手段として、メインメモリ104および不揮発性メモリ106を有する。メインメモリ104は、揮発性の記憶領域RAMであり、CPUユニット13への電源投入後にマイクロプロセッサ100で実行されるべき各種プログラムを保持する。また、メインメモリ104は、マイクロプロセッサ100による各種プログラムの実行時の作業用メモリとしても使用される。このようなメインメモリ104としては、DRAMDynamicRandomAccessMemoryやSRAMStaticRandomAccessMemoryといったデバイスが用いられる。一方、不揮発性メモリ106は、リアルタイムOSOperatingSystem、PLC1のシステムプログラム、ユーザプログラム、モーション演算プログラム、システム設定パラメータといったデータを不揮発的に保持する。これらのプログラムやデータは、必要に応じて、マイクロプロセッサ100がアクセスできるようにメインメモリ104にコピーされる。このような不揮発性メモリ106としては、フラッシュメモリのような半導体メモリを用いることができる。あるいは、ハードディスクドライブのような磁気記録媒体や、DVD-RAMDigitalVersatileDiskRandomAccessMemoryのような光学記録媒体などを用いることもできる。システムタイマ108は、一定周期ごとに割り込み信号を発生してマイクロプロセッサ100に提供する。典型的には、ハードウェアの仕様によって、複数の異なる周期でそれぞれ割り込み信号を発生するように構成されるが、OSOperatingSystemやBIOSBasicInputOutputSystemなどによって、任意の周期で割り込み信号を発生するように設定することもできる。このシステムタイマ108が発生する割り込み信号を利用して、後述するような制御サイクルごとの制御動作が実現される。CPUユニット13は、通信回路として、PLCシステムバスコントローラ120およびフィールドネットワークコントローラ140を有する。これらの通信回路は、出力データの送信および入力データの受信を行う。なお、CPUユニット13自体にIOユニット14やサーボモータドライバ3の機能を持たせる場合は、通信回路による出力データの送信および入力データの受信は、それらの機能を担う部分を通信の相手方としてCPUユニット13の内部で行われる送信および受信となる。PLCシステムバスコントローラ120は、PLCシステムバス11を介したデータの遣り取りを制御する。より具体的には、PLCシステムバスコントローラ120は、DMADynamicMemoryAccess制御回路122と、PLCシステムバス制御回路124と、バッファメモリ126とを含む。なお、PLCシステムバスコントローラ120は、PLCシステムバスコネクタ130を介してPLCシステムバス11と内部的に接続される。バッファメモリ126は、PLCシステムバス11を介して他のユニットへ出力されるデータ以下出力データとも称す。の送信バッファ、および、PLCシステムバス11を介して他のユニットから入力されるデータ以下入力データとも称す。の受信バッファとして機能する。なお、マイクロプロセッサ100による演算処理によって作成された出力データは、原始的にはメインメモリ104に格納される。そして、特定のユニットへ転送されるべき出力データは、メインメモリ104から読み出されて、バッファメモリ126に一次的に保持される。また、他のユニットから転送された入力データは、バッファメモリ126に一次的に保持された後、メインメモリ104に移される。DMA制御回路122は、メインメモリ104からバッファメモリ126への出力データの転送、および、バッファメモリ126からメインメモリ104への入力データの転送を行う。PLCシステムバス制御回路124は、PLCシステムバス11に接続される他のユニットとの間で、バッファメモリ126の出力データを送信する処理および入力データを受信してバッファメモリ126に格納する処理を行う。典型的には、PLCシステムバス制御回路124は、PLCシステムバス11における物理層およびデータリンク層の機能を提供する。フィールドネットワークコントローラ140は、フィールドネットワーク2を介したデータの遣り取りを制御する。すなわち、フィールドネットワークコントローラ140は、用いられるフィールドネットワーク2の規格に従い、出力データの送信および入力データの受信を制御する。上述したように、本実施の形態においてはEtherCAT登録商標規格に従うフィールドネットワーク2が採用されるので、通常のイーサネット登録商標通信を行うためのハードウェアを含む、フィールドネットワークコントローラ140が用いられる。EtherCAT登録商標規格では、通常のイーサネット登録商標規格に従う通信プロトコルを実現する一般的なイーサネット登録商標コントローラを利用できる。但し、フィールドネットワーク2として採用される産業用イーサネット登録商標の種類によっては、通常の通信プロトコルとは異なる専用仕様の通信プロトコルに対応した特別仕様のイーサネット登録商標コントローラが用いられる。また、産業用イーサネット登録商標以外のフィールドネットワークを採用した場合には、当該規格に応じた専用のフィールドネットワークコントローラが用いられる。バッファメモリ146は、フィールドネットワーク2を介して他の装置などへ出力されるデータこのデータについても、以下出力データと称す。の送信バッファ、および、フィールドネットワーク2を介して他の装置などから入力されるデータこのデータについても、以下入力データとも称す。の受信バッファとして機能する。上述したように、マイクロプロセッサ100による演算処理によって作成された出力データは、原始的にはメインメモリ104に格納される。そして、特定の装置へ転送されるべき出力データは、メインメモリ104から読み出されて、バッファメモリ146に一次的に保持される。また、他の装置から転送された入力データは、バッファメモリ146に一次的に保持された後、メインメモリ104に移される。DMA制御回路142は、メインメモリ104からバッファメモリ146への出力データの転送、および、バッファメモリ146からメインメモリ104への入力データの転送を行う。フィールドネットワーク制御回路144は、フィールドネットワーク2に接続される他の装置との間で、バッファメモリ146の出力データを送信する処理および入力データを受信してバッファメモリ146に格納する処理を行う。典型的には、フィールドネットワーク制御回路144は、フィールドネットワーク2における物理層およびデータリンク層の機能を提供する。USBコネクタ110は、PLCサポート装置8とCPUユニット13とを接続するためのインターフェイスである。典型的には、PLCサポート装置8から転送される、CPUユニット13のマイクロプロセッサ100で実行可能なプログラムなどは、USBコネクタ110を介してPLC1に取込まれる。<C.CPUユニットのソフトウェア構成>次に、図3を参照して、本実施の形態に係る各種機能を提供するためのソフトウェア群について説明する。これらのソフトウェアに含まれる命令コードは、適切なタイミングで読み出され、CPUユニット13のマイクロプロセッサ100によって実行される。図3は、本発明の実施の形態に係るCPUユニット13で実行されるソフトウェア構成を示す模式図である。図3を参照して、CPUユニット13で実行されるソフトウェアとしては、リアルタイムOS200と、システムプログラム210と、ユーザプログラム236との3階層になっている。リアルタイムOS200は、CPUユニット13のコンピュータアーキテクチャに応じて設計されており、マイクロプロセッサ100がシステムプログラム210およびユーザプログラム236を実行するための基本的な実行環境を提供する。このリアルタイムOSは、典型的には、PLCのメーカーあるいは専門のソフトウェア会社などによって提供される。システムプログラム210は、PLC1としての機能を提供するためのソフトウェア群である。具体的には、システムプログラム210は、スケジューラプログラム212と、出力処理プログラム214と、入力処理プログラム216と、シーケンス命令演算プログラム232と、モーション演算プログラム234と、その他のシステムプログラム220とを含む。なお、一般には出力処理プログラム214および入力処理プログラム216は、連続的一体としてに実行されるので、これらのプログラムを、IO処理プログラム218と総称する場合もある。ユーザプログラム236は、ユーザにおける制御目的に応じて作成される。すなわち、PLCシステムSYSを用いて制御する対象のラインプロセスなどに応じて、任意に設計されるプログラムである。後述するように、ユーザプログラム236は、シーケンス命令演算プログラム232およびモーション演算プログラム234と協働して、ユーザにおける制御目的を実現する。すなわち、ユーザプログラム236は、シーケンス命令演算プログラム232およびモーション演算プログラム234によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。そのため、ユーザプログラム236、シーケンス命令演算プログラム232、およびモーション演算プログラム234を、制御プログラム230と総称する場合もある。このように、CPUユニット13のマイクロプロセッサ100は、記憶手段に格納されたシステムプログラム210およびユーザプログラム236を実行する。以下、各プログラムについてより詳細に説明する。ユーザプログラム236は、上述したように、ユーザにおける制御目的たとえば、対象のラインやプロセスに応じて作成される。ユーザプログラム236は、典型的には、CPUユニット13のマイクロプロセッサ100で実行可能なオブジェクトプログラム形式になっている。このユーザプログラム236は、PLCサポート装置8などにおいて、ラダー言語などによって記述されたソースプログラムがコンパイルされることで生成される。そして、生成されたオブジェクトプログラム形式のユーザプログラム236は、PLCサポート装置8から接続ケーブル10を介してCPUユニット13へ転送され、不揮発性メモリ106などに格納される。スケジューラプログラム212は、出力処理プログラム214、入力処理プログラム216、および制御プログラム230について、各実行サイクルでの処理開始および処理中断後の処理再開を制御する。より具体的には、スケジューラプログラム212は、ユーザプログラム236およびモーション演算プログラム234の実行を制御する。本実施の形態に係るCPUユニット13では、モーション演算プログラム234に適した一定周期の実行サイクル制御サイクルを処理全体の共通サイクルとして採用する。そのため、1つの制御サイクル内で、すべての処理を完了することは難しいので、実行すべき処理の優先度などに応じて、各制御サイクルにおいて実行を完了すべき処理と、複数の制御サイクルに亘って実行してもよい処理とが区分される。スケジューラプログラム212は、これらの区分された処理の実行順序などを管理する。より具体的には、スケジューラプログラム212は、各制御サイクル期間内において、より高い優先度が与えられているプログラムほど先に実行する。出力処理プログラム214および入力処理プログラム216については、図4を参照して後に詳述する。シーケンス命令演算プログラム232は、ユーザプログラム236で使用されるある種のシーケンス命令が実行されるときに呼び出されて、その命令の内容を実現するために実行されるプログラムである。モーション演算プログラム234は、ユーザプログラム236による指示に従って実行され、サーボモータドライバ3やパルスモータドライバといったモータドライバに対して出力する指令値を実行されるごとに算出するプログラムである。その他のシステムプログラム220は、図3に個別に示したプログラム以外の、PLC1の各種機能を実現するためのプログラム群をまとめて示したものである。リアルタイムOS200は、複数のプログラムを時間の経過に従い切り替えて実行するための環境を提供する。本実施の形態に係るPLC1においては、CPUユニット13のプログラム実行によって生成された出力データを他のユニットまたは他の装置へ出力送信するためのイベント割り込みとして、制御サイクル開始の割り込みが初期設定される。リアルタイムOS200は、制御サイクル開始の割り込みが発生すると、マイクロプロセッサ100での実行対象を、割り込み発生時点で実行中のプログラムからスケジューラプログラム212に切り替える。なお、リアルタイムOS200は、スケジューラプログラム212およびスケジューラプログラム212がその実行を制御するプログラムが何ら実行されていない場合に、その他のシステムプログラム210に含まれているプログラムを実行する。このようなプログラムとしては、たとえば、CPUユニット13とPLCサポート装置8との間の接続ケーブル10USBなどを介した通信処理に関するものが含まれる。なお、制御プログラム230およびスケジューラプログラム212は、記憶手段であるメインメモリ104および不揮発性メモリ106に格納される。<D.メインメモリ構成>次に、図4を参照して、CPUユニット13のメインメモリ104に構成される記憶領域について説明する。図4は、本発明の実施の形態に係るCPUユニット13のメインメモリ104の領域構成を示す模式図である。図4を参照して、メインメモリ104には、各種のプログラム領域1041と、制御プログラムの作業領域1042と、PLCシステムバス送信バッファ1043と、PLCシステムバス受信バッファ1044と、フィールドネットワーク送信バッファ1045と、フィールドネットワーク受信バッファ1046とが形成される。制御プログラムの作業領域1042には、各出力データに対応する出力同期バッファが生成される出力同期バッファ領域1042a、および、各入力データに対応する入力同期バッファが生成される入力同期バッファ領域1042bが、システムプログラム210によって生成される。また、PLCシステムバス送信バッファ1043およびフィールドネットワーク送信バッファ1045以下、両者を送信バッファと総称する、ならびに、PLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046以下、両者を受信バッファと総称するについても、システムプログラム210によって生成される。出力処理プログラム214図3は、ユーザプログラム236の実行によって生成された出力データを出力同期バッファから送信バッファにコピーする。すなわち、出力処理プログラム214は、出力コピー命令を含む。具体的には、出力処理プログラム214は、PLCシステムバス11へ送信する出力データを出力同期バッファからPLCシステムバス送信バッファにコピーする。その際、PLCシステムバス送信バッファ1043において送信先のユニットごとにまとめて配置する形式になるように出力データを再配置する。また、出力処理プログラム214は、フィールドネットワーク2へ送信する出力データを出力同期バッファからフィールドネットワーク送信バッファ1045にコピーする。その際、フィールドネットワーク送信バッファ1045においてシリアルフレームとして送信できる形式に出力データを再配置する。出力処理プログラム214は、PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140が、マイクロプロセッサ100からの送信実行指示を必要とする場合は、そのような指示を発行する。それらの通信コントローラがシステムタイマ108や自己の有するタイマを利用するなどして自律的に送信を実行する場合には、マイクロプロセッサ100が送信実行指示を発行する必要はない。入力処理プログラム216は、PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140が受信して受信バッファに格納した入力データを入力同期バッファにコピーする。すなわち、入力処理プログラム216は、入力コピー命令を含む。具体的には、入力処理プログラム216は、PLCシステムバスコントローラ120が受信してPLCシステムバス受信バッファ1044格納した入力データ、および/または、フィールドネットワークコントローラ140が受信してフィールドネットワーク受信バッファ1046に格納した入力データを、入力同期バッファにコピーする。その際、制御プログラム230が使用するのに適した形式に入力データを再配置する。入力処理プログラム216は、PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140が、マイクロプロセッサ100からの受信実行指示を必要とする場合は、そのような指示を発行する。それらの通信コントローラがシステムタイマ108や自己の有するタイマを利用するなどして自律的に受信を実行する場合には、マイクロプロセッサ100からの受信実行指示を発行する必要はない。フィールドネットワーク2としてEtherCAT登録商標を用いる場合には、フィールドネットワークコントローラ140から送信されたフレームが、スレーブ機器とデータ交換をしながら、スレーブ機器を一巡して戻ってくる。フィールドネットワークコントローラ140は戻ってきたフレームを自動的に受信するので、マイクロプロセッサ100が受信実行指示を発行する必要はない。PLCシステムバスコントローラ120のDMA制御回路122は、PLCシステムバス送信バッファ1043に格納されている出力データをPLCシステムバスコントローラ120のバッファメモリ146へ転送するとともに、バッファメモリ146に格納されている入力データをPLCシステムバス受信バッファ1044へ転送する。この転送された入力データは、PLCシステムバス受信バッファ1044に格納される。フィールドネットワークコントローラ140のDMA制御回路142は、フィールドネットワーク送信バッファ1045に格納されている出力データをフィールドネットワークコントローラ140のバッファメモリ146へ転送するとともに、バッファメモリ146に格納されている入力データをフィールドネットワーク受信バッファ1046へ転送する。この転送された入力データは、フィールドネットワーク受信バッファ1046に格納される。制御プログラムの作業領域1042、PLCシステムバス送信バッファ1043、PLCシステムバス受信バッファ1044、フィールドネットワーク送信バッファ1045、および、フィールドネットワーク受信バッファ1046は、それぞれのアクセスを互いに独立に制御できるように構成されている。そのため、たとえば、以下に示す1~3といった複数の動作を並列実行することができる。1マイクロプロセッサ100が行う、ユーザプログラム236実行に伴う制御プログラムの作業領域1042へのアクセス。2PLCシステムバスコントローラ120のDMA制御回路122が行う、メインメモリ104上のPLCシステムバス送信バッファ1043および/またはPLCシステムバス受信バッファ1044とPLCシステムバスコントローラ120内のバッファメモリ126との間のデータ転送のための、メインメモリ104上のPLCシステムバス送信バッファ1043および/またはPLCシステムバス受信バッファ1044へのアクセス。3フィールドネットワークコントローラ140のDMA制御回路142が行う、メインメモリ104上のフィールドネットワーク送信バッファ1045および/またはフィールドネットワーク受信バッファ1046とフィールドネットワークコントローラ140内のバッファメモリ146との間のデータ転送のための、メインメモリ104上のフィールドネットワーク送信バッファ1045および/またはフィールドネットワーク受信バッファ1046へのアクセス。<E.システムプログラムの全体処理動作>次に、システムプログラム210の全体処理動作について説明する。システムプログラム210は、入力データの入力に関する基本的な処理命令として以下を含む。すなわち、システムプログラム210の実行段階では、PLC1の制御動作の実行準備処理およびPLC1の制御動作の実行制御処理が順次実行される。より具体的には、システムプログラム210は、PLC1の制御動作の実行準備処理として、以下の1および2の処理を含む。1受信された入力データを格納する受信バッファをメインメモリ104記憶手段内に生成する処理。2制御プログラム230から参照される入力データごとに、その制御プログラム230が入力データの参照先とする入力同期バッファをメインメモリ104記憶手段内入力同期バッファ領域1042bに生成する処理。また、システムプログラム210は、PLC1の制御動作の実行制御処理として、以下の3および4の処理を含む。3受信された入力データを受信バッファからその入力データに対応する入力同期バッファにコピーする入力コピー処理。4制御プログラム230を実行開始させる制御プログラム開始処理。また、制御プログラム230が複数ある場合、入力同期バッファは、各制御プログラムについて、その制御プログラムから参照される入力データごとに生成される。さらに、システムプログラム210は、出力データの出力に関する基本的な処理命令として以下を含む。すなわち、システムプログラム210の実行段階では、PLC1の制御動作の実行準備処理およびPLC1の制御動作の実行制御処理が順次実行される。より具体的には、システムプログラム210は、PLC1の制御動作の実行準備処理として、さらに以下の5および6の処理を含んでもよい。5送信されるべき出力データを格納する送信バッファをメインメモリ104記憶手段内出力同期バッファ領域1042aに生成する処理。6送信バッファにコピーされる出力データが格納される出力同期バッファを出力データごとにメインメモリ104記憶手段内に生成する処理。また、システムプログラム210は、PLC1の制御動作の実行制御処理として、さらに以下の7の処理を含んでもよい。7出力データを出力同期バッファから送信バッファにコピーする出力コピー処理。さらに、制御プログラム230の実行準備処理は、具体的な実装形態に応じたその他の実行準備処理を含みうる。制御動作の実行準備処理に含まれる各処理の実行順序は、適宜設計される。また、制御プログラム230の実行制御処理は、具体的な実装形態に応じたその他の実行制御処理を含みうる。制御動作の実行制御処理に含まれる各処理は、制御プログラム230を繰り返し実行するのに伴い繰り返し実行されるものであり、その実行順序は具体的な実施形態に依存する。図5は、本発明の実施の形態に係るCPUユニットにおけるシステムプログラムの全体処理を示すフローチャートである。図5に示すように、まず、PLC1の制御動作の実行準備処理が実行されステップS1、続いて、PLC1の制御動作の実行制御処理が実行されるステップS2。制御プログラム230の実行準備処理ステップS1に含まれる各処理の実行順序は、適宜設計される。同様に、制御プログラム230の実行制御処理ステップS2に含まれる各処理は、制御プログラム230を繰り返し実行するのに伴い繰り返し実行されるものであり、その実行順序は具体的な実装形態に依存する。以下、具体的な実装形態の典型例として、実施の形態1~13について説明する。<F.単一バッファ方式実施の形態1>f1:概要実施の形態1においては、複数の制御プログラムが時分割的に実行される場合を想定する。特に、それぞれの制御プログラムから参照される入力データごとに、入力同期バッファがそれぞれ設けられ、かつ、それぞれの制御プログラムが出力データを格納する出力同期バッファがそれぞれ設けられる構成について説明する。f2:シーケンス図図6は、実施の形態1に係る入力方向の動作を示すシーケンス図である。図7は、図6に示す制御サイクル1および2について拡大して示すシーケンス図である。一方、図8は、実施の形態1に係る出力方向の動作を示すシーケンス図である。図9は、図8に示す制御サイクル1および2について拡大して示すシーケンス図である。図6~図9には、2つの制御プログラム制御プログラム1および2が時分割的に実行される例を示す。この例において、制御プログラム1および2から参照される入力データごとに、入力同期バッファ1および2がそれぞれ設けられ、かつ、それぞれの制御プログラム1および2が出力データを格納する出力同期バッファ1および2がそれぞれ設けられている。なお、入力同期バッファ1および2には、受信バッファを介して、入力データがそれぞれ転送され、また、出力同期バッファ1および2からは、それぞれ出力データが送信バッファへ転送される。なお、図6~図9においては、説明を簡略化する観点から、2つの制御プログラムが時分割的に実行される例を示すが、時分割的に実行される制御プログラムの数は任意に設定できる。この点は、本実施の形態に限られず、後述する他の実施の形態についても同様である。したがって、説明の便宜上、実行される制御プログラムを1つしか示していない実施の形態であっても、本実施の形態に係る説明特に、図6~図9を参考にすれば、複数の制御プログラムが時分割的に実行される動作を容易に理解できるであろう。図6~図9の制御プログラム1および2のそれぞれの時間軸に沿って示した破線の角丸の矩形は、対応する制御プログラムの実行サイクルを示す。たとえば、制御プログラム1は、1回分の制御サイクルを実行サイクルとしており、同様に、制御プログラム2は、2回分の制御サイクルを実行サイクルとしている。なお、以下、説明に用いるシーケンス図においては同様の方法で実行サイクルを表す。図6および図8に示すシステムプログラムの実行時間は、制御サイクルの開始から、その制御サイクルで最初に実行開始される制御プログラムの実行開始までの期間に対応している。この期間において、システムプログラムは、出力データの送信、受信バッファから入力同期バッファへの入力データのコピー入力データの受信は通信コントローラが行う、制御プログラムの実行開始の実行制御を行う。この期間における処理内容は、実施の形態によって異なることがある。図7および図9に示す拡大図では、制御プログラムの実行終了後にもシステムプログラムの実行時間があることを示している。この期間において、システムプログラムは、出力同期バッファから送信バッファへの出力データのコピー、次に実行開始すべき制御プログラムがある場合はその実行開始の制御を行う。システムプログラムが実行されるこの微小な時間は、説明の便宜上、図6および8、ならびに他の実施の形態に係るシーケンス図では図示を省略している。制御サイクル開始割込みがあれば、リアルタイムOSは、制御プログラムの実行を中断し、システムプログラムを実行する。いずれの実施の形態においても、制御サイクルの周期が一定であることは、入力データの受信周期および出力データの送信周期を一定にしやすいという観点から好ましいが、必須ではない。たとえば、制御プログラムが設定された実行サイクル内に終了しない場合に、実行サイクル内における最後の制御サイクル時間を延長することにより実行サイクル時間を延長するようにしてもよい。図6~図9には、制御プログラム1および2のそれぞれの時間軸に沿って、その制御プログラムの実行状態を示す。より具体的には、制御プログラム1および2は、予め定められた処理を実行すべき実行サイクル内において、未だ処理を開始していない状態である実行前、当該実行サイクル内において処理が行なわれている実行中、および、当該実行サイクル内においては既に処理が完了している実行終了のいずれかの実行状態にある。このような実行状態は、実行状態記録領域に各制御プログラムの実行状態を記録することよって表される。実行状態記録領域は、システムプログラム210がPLC1の制御動作の実行準備処理図5に示すステップS1において、メインメモリ104内の制御プログラムの作業領域1042に生成する。実行状態の記録の態様は、適宜定めることができる。たとえば、実行状態ごとにその実行状態にある制御プログラムを特定する情報制御プログラムの名称や識別番号などを記録する態様、制御プログラムごとに実行状態を表すフラグまたは状態変数を設けてそのフラグまたは状態変数の値を用いて記録する態様、などを採用することができる。実行状態フラグは、たとえば、実行前フラグがオンなら実行前状態、実行中フラグがオンなら実行中状態、などのように用いる。このような実行状態変数としては、たとえば、状態変数の値が1なら実行前、2なら実行中、などのように設定することができる。以下、説明する他の実施の形態における制御プログラムの実行状態の管理についても同様である。通信回路PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140による入力データの受信後、1つの制御プログラムが複数の入力データの使用を要求する場合、それらの入力データについての、受信バッファから対応する入力同期バッファへのコピーは一括して行われる。入力同期バッファは、そのように一括してコピーが行われる単位でグループ化される。入力同期バッファの書込禁止状態は、同じグループの入力同期バッファに共通に設定される。入力同期バッファの状態が、そのような同じグループの入力同期バッファに共通して設定されることは、以下、説明する他の実施の形態における、参照先状態、書込先状態、待機状態、最新状態のいずれについても同様である。入力データを、2つまたは3つの入力同期バッファからなる入力同期バッファの組にコピーする場合は、1回の一括コピーでコピー先になるのは組の中の1つの入力同期バッファであるから、同じ組に属する2つまたは3つの入力同期バッファはそれぞれ異なるグループに属することになる。実施の形態1においては、出力同期バッファの状態は設定されていないが、以下、説明する他の実施の形態において出力同期バッファの状態が設定される場合は、入力同期バッファの状態が設定される場合と同様、出力データが送信バッファに一括してコピーされる単位で出力同期バッファはグループ化される。出力同期バッファの状態は、同じグループに属する出力同期バッファに共通に設定される。このような、入力同期バッファの書込禁止状態は、書込禁止状態記録領域に入力同期バッファが書込禁止状態であることを記録することよって表される。書込禁止状態記録領域は、システムプログラム210がPLC1の制御動作の実行準備処理図5に示すステップS1において、メインメモリ104内の制御プログラムの作業領域1042に生成する。入力同期バッファが書込禁止状態であることの記録の態様は適宜に定めることができる。たとえば、一括してコピー処理が行われる単位でグループ化された入力同期バッファのグループのうち書込禁止状態であるものを特定する情報入力同期バッファのグループの識別番号などを記録する態様、そのような入力同期バッファのグループごとに書込禁止状態であるかどうかを表すフラグまたは状態変数を設けてそのフラグまたは状態変数の値を用いて記録する態様、などを採用することができる。実施の形態1においては、出力同期バッファは、出力データごとに1つ生成され、書込禁止状態への設定も行われない。したがって、制御プログラム230が出力データを格納する通常の変数領域を出力同期バッファとして使用してもよい。図6に示す受信タイミング、および/または、図8に示した送信タイミングとは異なるタイミングで、追加の受信および/または送信を行うようにしてもよい。このような場合には、そのような追加の受信で扱われる入力データ、および/または、追加の送信で扱われる出力データ、に関係する追加の入力同期バッファおよび/または出力同期バッファを設け、それを使用して、追加の制御プログラムをマイクロプロセッサ100の空き時間で実行するようにしてもよい。図6に示すシーケンス図では、制御サイクル2における入力データの受信直後は入力同期バッファ2が書込禁止状態になっているので、入力同期バッファ2への入力データのコピーが行われない。それにより、制御サイクル1において実行開始した制御プログラム2は、制御サイクル2において実行を再開した後も、更新されていない入力データを入力同期バッファ2から読み出すことになるので、実行開始から実行終了まで一貫性のある入力データを用いて処理を実行することができる。また、制御サイクル3におけるように、制御プログラム2が短時間で実行終了した場合は、制御サイクル4ですでに入力同期バッファ2の書込禁止状態が解除されているので、制御サイクル4における入力同期バッファ2へのコピーが行われる。f3:フローチャート図10は、実施の形態1に係る実行動作を示すフローチャートである。図10を参照して、マイクロプロセッサ100は、システムプログラム210における、PLC1の制御動作の実行準備処理を実行するステップS1。続いて、マイクロプロセッサ100は、システムプログラム210における、PLC1の制御動作の実行制御処理を実行する図5に示すステップS2。このPLC1の制御動作の実行制御処理の詳細な一例がステップS200~S238に相当する。まず、マイクロプロセッサ100は、制御サイクル開始の割り込み信号を待つステップS200。制御サイクル開始の割り込み信号を受けるとステップS200においてYES、マイクロプロセッサ100は、現在の制御サイクルから開始する制御プログラムを実行前状態に設定するとともに、通信回路PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140に対して送信実行を指示するステップS202。すなわち、制御プログラム1の実行サイクルが現在の制御サイクルから開始する場合には、制御プログラム1を実行前状態に設定する。同様に、制御プログラム2の実行サイクルが現在の制御サイクルから開始する場合には、制御プログラム2を実行前状態に設定する。また、送信実行の指示に応答して、送信バッファPLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045に格納されているデータが他のユニットなどへ送信される。その後、マイクロプロセッサ100は、通信回路PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140からの受信完了通知を待つステップS204。通信回路は、入力データをメインメモリ104の受信バッファPLCシステムバス受信バッファ1044および/またはフィールドネットワーク受信バッファ1046に格納した後、受信完了通知を発行する。通信回路からの受信完了通知を受けるとステップS204においてYES、マイクロプロセッサ100は、受信バッファに格納されている入力データを、入力同期バッファ1および入力同期バッファ2にコピーするステップS206。但し、入力同期バッファ1および入力同期バッファ2のうち、書込禁止状態になっている入力同期バッファには入力データのコピーは行われない。その後、マイクロプロセッサ100は、制御プログラム1の実行状態を判断するステップS210。制御プログラム1が実行前状態である場合ステップS210において実行前には、マイクロプロセッサ100は、入力同期バッファ1の実行状態を書込禁止に設定し、制御プログラム1の実行状態を実行中状態に設定し、さらに制御プログラム1の実行を開始するステップS212。制御プログラム1が実行中状態である場合ステップS210において実行中には、マイクロプロセッサ100は、制御プログラム1の未実行の部分の実行を開始するステップS214。なお、入力同期バッファ1の実行状態書込禁止については変更せず、そのまま維持する。制御プログラム1が実行終了状態である場合ステップS210において実行終了には、処理はステップS230へ進む。ステップS212またはS214において、制御プログラム1の実行を開始または、再開すると、マイクロプロセッサ100は、制御プログラム1の実行終了通知、または、次の制御サイクル開始の割り込み信号を待つステップS216。なお、ステップS212またはS214において、制御プログラム1の実行が開始または、再開されることで、マイクロプロセッサ100で実行される処理は、システムプログラムによる処理から制御プログラム1による処理に切り替わる。すなわち、制御プログラム1の実行開始から実行終了するまでの間は、マイクロプロセッサ100は、システムプログラムを実行しない。そして、制御プログラム1の実行が終了するまでに次の制御サイクル開始の割り込みがあれば、リアルタイムOS200が、マイクロプロセッサ100での制御プログラム1の実行を中断させ、システムプログラムの実行を再開させる。あるいは、制御プログラム1の実行が終了した通知制御プログラム1の実行終了通知があれば、マイクロプロセッサ100における実行対象は、制御プログラム1からシステムプログラムへ戻る。制御プログラム1の実行終了通知を受けるとステップS216において実行終了通知、マイクロプロセッサ100は、制御プログラム1の実行状態を実行終了に設定し、出力同期バッファ1に格納されている出力データを送信バッファPLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045にコピーし、入力同期バッファ1の書込禁止状態を解除するステップS218。そして、処理はステップS230へ進む。一方、制御プログラム1の実行終了通知までに次の制御サイクル開始の割り込みを受けるとステップS216において制御サイクル開始、マイクロプロセッサ100で実行中の制御プログラム1は中断され、マイクロプロセッサ100は、ステップS202以下の処理を再度実行する。ただし、図6~9は、制御プログラム1の実行サイクルが制御サイクルに等しく、制御プログラム1が制御サイクル内に実行終了する処理量しか含まないようにプログラムされている場合を示している。制御プログラム1の実行が制御サイクル内に終了しなければ、制御プログラム1の実行サイクルが延長される。すなわち、制御プログラム1の実行が中断されて、次の制御サイクルにおいて制御プログラム1の未実行の部分が実行される。あるいは、制御プログラム1の実行が制御サイクル実行サイクル内に終了しなかった段階で、エラー発生と判断してエラー処理を行うようにしてもよい。図6~9の制御プログラム2や、他の実施の形態についても、制御プログラムが実行サイクル内に終了しなかった場合には、同様に、実行サイクルの延長またはエラー処理が行われる。ステップS230において、マイクロプロセッサ100は、制御プログラム2の実行状態を判断するステップS230。制御プログラム2が実行前状態である場合ステップS220において実行前には、マイクロプロセッサ100は、入力同期バッファ2の実行状態を書込禁止に設定し、制御プログラム2の実行状態を実行中状態に設定し、さらに制御プログラム2の実行を開始するステップS232。制御プログラム2が実行中状態である場合ステップS230において実行中には、マイクロプロセッサ100は、制御プログラム2の未実行の部分の実行を開始するステップS234。なお、入力同期バッファ2の実行状態書込禁止については変更せず、そのまま維持する。制御プログラム2が実行終了状態である場合ステップS230において実行終了には、処理はステップS200へ進む。すなわち、次の制御サイクル開始の割り込み信号を待つ。ステップS232またはS234において、制御プログラム2の実行を開始または、再開すると、マイクロプロセッサ100は、制御プログラム2の実行終了通知、または、次の制御サイクル開始の割り込み信号を待つステップS236。なお、ステップS232またはS234において、制御プログラム2の実行が開始または、再開されることで、マイクロプロセッサ100で実行される処理は、システムプログラムによる処理から制御プログラム2による処理に切り替わる。すなわち、制御プログラム2の実行開始から実行終了するまでの間は、マイクロプロセッサ100は、システムプログラムを実行しない。そして、制御プログラム2の実行が終了するまでに次の制御サイクル開始の割り込みがあれば、リアルタイムOS200が、マイクロプロセッサ100での制御プログラム2の実行を中断させ、システムプログラムの実行を再開させる。あるいは、制御プログラム2の実行が終了した通知制御プログラム2の実行終了通知があれば、マイクロプロセッサ100における実行対象は、制御プログラム2からシステムプログラムへ戻る。制御プログラム2の実行終了通知を受けるとステップS236において実行終了通知、マイクロプロセッサ100は、制御プログラム2の実行状態を実行終了に設定し、出力同期バッファ2に格納されている出力データを送信バッファPLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045にコピーし、入力同期バッファ2の書込禁止状態を解除するステップS238。そして、処理はステップS200へ進む。すなわち、次の制御サイクル開始の割り込み信号を待つ。一方、制御プログラム2の実行終了通知までに次の制御サイクル開始の割り込みを受けるとステップS236において制御サイクル開始、マイクロプロセッサ100で実行中の制御プログラム2は中断され、マイクロプロセッサ100は、ステップS202以下の処理を再度実行する。f4:まとめ上述したように、実施の形態1においては、システムプログラム210は、入力データの入力に関するPLC1の制御動作の実行準備処理として、以下のaおよびbの処理を含む。a受信された入力データを格納する受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046をメインメモリ104記憶手段内に生成する処理図10に示すステップS1。b制御プログラムから参照される入力データごとに、その制御プログラムが入力データの参照先とする1つの入力同期バッファ図6および図7に示す入力同期バッファ1および2をメインメモリ104記憶手段内図4に示す入力同期バッファ領域1042bに生成する処理図10に示すステップS1。また、実施の形態1においては、システムプログラム210は、PLC1の制御動作の実行制御処理として、以下のc~eの処理を含む。c受信された入力データを受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046からその入力データに対応する入力同期バッファに、コピー先の入力同期バッファが書込禁止状態でないことを条件として、コピーする入力コピー処理図10に示すステップS206。d実行開始させる制御プログラムが参照する入力同期バッファを書込禁止状態した後に、制御プログラムを実行開始させる制御プログラム開始処理図10に示すステップS212およびS232。e制御プログラムの実行が終了すると、書込禁止状態であった同期バッファの書込禁止状態を解除する書込禁止解除処理図10に示すステップS218およびS238。上述のような実施の形態1に係る入力データに関する処理方式によれば、入力同期バッファへの書込禁止状態の期間が存在したとしても、たとえば入出力処理と各制御プログラムとに共通の制御サイクルの中で、実行の優先度制御がなされているような場合には、制御プログラムは、その実行開始時における最新の入力データを参照できる。すなわち、このような場合には、制御プログラムにおいて参照すべき入力データは、書込禁止状態の期間中以外の期間における入力コピー処理によって取得することができる。また、実施の形態1に係る入力データに関する処理方式によれば、各制御プログラムについて、その制御プログラムから参照される入力データごとに入力同期バッファが単一に設けられているので、入力データの数および/または制御プログラムの数が多くても、入力同期バッファが占めるメモリサイズが小さくて済む。また、入力同期バッファが単一である点において、アルゴリズムが単純であるので、システムプログラムの設計を容易化できる。一方、実施の形態1においては、システムプログラム210は、出力データの出力に関する処理を含めると、PLC1の制御動作の実行準備処理として、以下のα~γの処理を含む。α受信された入力データを格納する受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046および送信されるべき出力データを格納する送信バッファ図4に示すPLCシステムバス送信バッファ1043およびフィールドネットワーク送信バッファ1045をメインメモリ104記憶手段内に生成する処理図10に示すステップS1。β制御プログラムから参照される入力データごとに、その制御プログラムが入力データの参照先とする1つの入力同期バッファ図6および図7に示す入力同期バッファ1および2をメインメモリ104記憶手段内図4に示す入力同期バッファ領域1042bに生成する処理図10に示すステップS1。γ送信バッファにコピーされる出力データが格納される出力同期バッファ図8および図9に示す出力同期バッファ1および2をメインメモリ104記憶手段内図4に示す出力同期バッファ領域1042aに生成する処理図10に示すステップS1。また、実施の形態1においては、システムプログラム210は、PLC1の制御動作の実行制御処理として、以下のδ~ζの処理を含む。δ受信された入力データを受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046からその入力データに対応する入力同期バッファにコピーする入力コピー処理図10に示すステップS206。ε制御プログラムを実行開始させる制御プログラム開始処理図10に示すステップS212およびS232。ζ制御プログラムの実行が終了すると、その制御プログラムの実行により生成された出力データを出力同期バッファから送信バッファにコピーする出力コピー処理図10に示すステップS218およびS238。上述のような実施の形態1に係る出力データに関する処理方式によれば、出力同期バッファは、出力データごとに1つで足りる。また、実施の形態1に係る出力データに関する処理方式によれば、制御プログラムの実行が終了することをもって、出力データは出力同期バッファから送信バッファにコピーされる。したがって、制御プログラムの実行中のまだ確定していない出力データが送信されることを回避できる。また、制御プログラムの実行サイクル中であるかどうかにかかわらず、送信バッファへのコピー後の最初の送信タイミングで出力データが送信されるので、確定した出力データを迅速に送信することができる。<G.2入力同期バッファへの順次コピー方式実施の形態2>g1:概要上述の実施の形態1においては、制御プログラムの実行中は入力同期バッファを書込禁止状態とし、書込禁止状態になっている入力同期バッファには、入力データはコピーされない構成を採用した例を示す。これに対して、制御プログラムの実行状態にかかわらず、受信バッファに格納されている入力データを入力同期バッファにコピーできる構成について説明する。より具体的には、実施の形態2においては、入力同期バッファとして、制御プログラムから参照される入力データごとに、2つの入力同期バッファを入力同期バッファの組として生成する。g2:シーケンス図図11は、実施の形態2に係る入力方向の動作を示すシーケンス図である。図11には、2つの制御プログラム制御プログラム1および2が時分割的に実行される例を示す。この例において、制御プログラム1から参照される入力データについて、一組の入力同期バッファ入力同期バッファ1Aおよび1Bが設けられ、同様に、制御プログラム2から参照される入力データについて、一組の入力同期バッファ入力同期バッファ2Aおよび2Bが設けられる。なお、実施の形態2に係る出力方向の動作出力データに関する処理は、上述の実施の形態1における動作図8に示すシーケンス図に記載の処理と同様であるので、ここでは、その詳細な説明は繰り返さない。実施の形態2では、受信バッファからの入力データのコピーは、一組の入力同期バッファのうち常に特定の一方入力同期バッファ1Aまたは2Aに対して行われる。入力データは、制御プログラムの実行開始前に入力同期バッファの一方入力同期バッファ1Aまたは2Aから他方入力同期バッファ1Bまたは2Bにコピーされる。他方の入力同期バッファ入力同期バッファ1Bまたは2Bに格納された入力データが制御プログラムから参照される。すなわち、一組の入力同期バッファのうち、一方の入力同期バッファに対しては、制御プログラムの実行状態にかわらず、常に受信バッファから入力データをコピーできる。他方の入力同期バッファに対しては、受信バッファからの入力データのコピー動作にかかわらず、制御プログラムが当該入力同期バッファに格納されている入力データを参照できる。g3:フローチャート図12は、実施の形態2に係る実行動作を示すフローチャートである。図12のフローチャートにおいては、図10に示すフローチャートと同一の処理を実行するステップについては、図10と同一のステップ番号を付与している。図12に示すフローチャートは、図10に示すフローチャートと比較して、ステップS206,S212,S218,S232,S238に代えて、それぞれステップS206A,S212A,S218A,S232A,S238Aの処理が実行される点が異なっている。以下、主としてこの相違点について説明し、その他の処理についての詳細な説明は繰り返さない。通信回路からの受信完了通知を受けるとステップS204においてYES、マイクロプロセッサ100は、受信バッファPLCシステムバス受信バッファ1044および/またはフィールドネットワーク受信バッファ1046に格納されている入力データを、入力同期バッファ1Aおよび入力同期バッファ2AにコピーするステップS206A。入力同期バッファ1Aおよび2Aは、書込禁止状態には設定されないので、入力データのコピーは制限されない。制御プログラム1が実行前状態である場合ステップS210において実行前に実行されるステップS212Aにおいては、マイクロプロセッサ100は、入力同期バッファ1Aに格納されている入力データを入力同期バッファ1Bにコピーし、制御プログラム1の実行状態を実行中状態に設定し、さらに制御プログラム1の実行を開始するステップS212A。なお、制御プログラム1が実行中状態である場合ステップS210において実行中に実行されるステップS214においては、入力同期バッファ1Aに格納されている入力データの入力同期バッファ1Bへのコピーは、行われない。制御プログラム1の実行終了通知を受けた場合ステップS216において実行終了通知に実行されるステップS218Aにおいては、マイクロプロセッサ100は、制御プログラム1の実行状態を実行終了に設定し、出力同期バッファ1に格納されている出力データを送信バッファPLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045にコピーするステップS218A。制御プログラム2が実行前状態である場合ステップS230において実行前に実行されるステップS232Aにおいては、マイクロプロセッサ100は、入力同期バッファ2Aに格納されている入力データを入力同期バッファ2Bにコピーし、制御プログラム2の実行状態を実行中状態に設定し、さらに制御プログラム2の実行を開始するステップS232A。なお、制御プログラム2が実行中状態である場合ステップS230において実行中に実行されるステップS234においては、入力同期バッファ2Aに格納されている入力データの入力同期バッファ2Bへのコピーは、行われない。制御プログラム2の実行終了通知を受けた場合ステップS236において実行終了通知に実行されるステップS238Aにおいては、マイクロプロセッサ100は、制御プログラム2の実行状態を実行終了に設定し、出力同期バッファ2に格納されている出力データを送信バッファPLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045にコピーするステップS238A。g4:まとめ上述したように、実施の形態2においては、システムプログラム210は、入力データの入力に関するPLC1の制御動作の実行準備処理として、以下のaおよびbの処理を含む。a受信された入力データを格納する受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046をメインメモリ104記憶手段内に生成する処理図10に示すステップS1。b制御プログラムから参照される入力データごとに、第1入力同期バッファ図11に示す入力同期バッファ1A,2Aおよび第2入力同期バッファ図11に示す入力同期バッファ1B,2Bを同期バッファの組としてメインメモリ104記憶手段内に生成する処理図10に示すステップS1。ここで、第2入力同期バッファは、制御プログラムが入力データの参照先とする入力同期バッファである。また、実施の形態2においては、システムプログラム210は、PLC1の制御動作の実行制御処理として、以下のcおよびdの処理を含む。c受信された入力データを受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046からその入力データに対応する第1入力同期バッファ図11に示す入力同期バッファ1A,2Aにコピーする入力コピー処理図12に示すステップS206A。d第1入力同期バッファ図11に示す入力同期バッファ1A,2Aに格納されているデータを第2入力同期バッファ図11に示す入力同期バッファ1B,2Bにコピーした後に、制御プログラムを実行開始させる制御プログラム開始処理図12に示すステップS212AおよびS232A。上述のような実施の形態2に係る処理方式によれば、受信バッファから第1入力同期バッファへの入力データのコピーを行うことが常に可能であり、さらに制御プログラムの実行開始時に第1入力同期バッファから第2入力同期バッファへのコピーを行うので、制御プログラムは、その実行開始時における最新の入力データを参照することができる。また、実施の形態2に係る処理方式によれば、第1入力同期バッファへの入力データのコピーの際にコピー先の入力同期バッファの状態についての判断をする必要がない点で、アルゴリズムが単純であるので、システムプログラムの設計を容易化できる。<H.2入力同期バッファの選択利用方式実施の形態3>h1:概要実施の形態2においては、2つの入力同期バッファを使用して入力データを順送りする形態について例示した。これに対して、実施の形態3においては、複数典型的には、2つの入力同期バッファを選択的に利用することで、入力データを書き込むことのできる入力同期バッファを常に少なくとも1つは確保することができる構成について説明する。h2:シーケンス図図13は、実施の形態3に係る入力方向の動作を示すシーケンス図である。図13には、典型的に、複数のコアを有するマルチコア具体的には、デュアルコアのマイクロプロセッサを用いた場合の処理を示す。すなわち、コア1がシステムプログラムを実行し、コア2が制御プログラム1を実行するものとする。但し、実施の形態3に係る方式は、単一のコアのみを有するシングルコアのマイクロプロセッサを用いた場合でも実行可能である。より具体的には、図13に示す実施の形態3に係る方式においては、システムプログラムと制御プログラム1とが並列実行される。制御プログラム1は、コアの資源利用上はいつでも実行可能であるが、ここでは制御プログラム1もシステムプログラムの出力処理と入力処理とを利用する想定であるため、各制御サイクル冒頭の出力処理と入力処理との終了を待って、制御プログラム1の実行が開始されることを基本としている。図13に示すとおり、制御プログラム1から参照される入力データについて、一組の入力同期バッファ入力同期バッファ1Aおよび1Bが設けられる。入力同期バッファの状態には、書込禁止状態、参照先状態、最新状態最新データを格納している状態がある。入力同期バッファの状態は、書込禁止状態記録領域、参照先状態記録領域、最新状態記録領域に、それぞれの入力同期バッファが書込禁止状態、参照先状態、最新状態であることを記録することよって表される。これらの各記録領域は、システムプログラム210のPLC1の制御動作の制御プログラムの実行準備処理図5に示すステップS1において、メインメモリ104内の制御プログラムの作業領域1042に生成される。入力同期バッファが書込禁止状態、参照先状態、最新状態であることの記録の態様は適宜に定めることができる。たとえば、一括してコピー処理が行われる単位でグループ化された入力同期バッファのグループのうち書込禁止状態、参照先状態、最新状態であるものを特定する情報入力同期バッファのグループの識別番号などを記録する態様、そのような入力同期バッファのグループごとに書込禁止状態、参照先状態、最新状態であるかどうかを表すフラグまたは状態変数を設けてそのフラグまたは状態変数の値を用いて記録する態様、などを採用することができる。なお、実施の形態3に係る出力方向の動作出力データに関する処理は、上述の実施の形態1における動作図8に示すシーケンス図に記載の処理と同様である。すなわち、制御プログラムの実行が終了すると、その制御プログラムの実行により生成された出力データは、出力同期バッファから送信バッファにコピーされる。また、制御サイクルが開始すると、送信バッファから出力データが送信される。ここでは、これ以上の詳細な説明は繰り返さない。h3:フローチャート図14は、実施の形態3に係る実行動作を示すフローチャートである。図14を参照して、マイクロプロセッサ100コア1は、システムプログラムにおける、PLC1の制御動作の実行準備処理を実行するステップS1。続いて、マイクロプロセッサ100コア1は、システムプログラム210における、PLC1の制御動作の実行制御処理を実行する図5に示すステップS2。このPLC1の制御動作の実行制御処理の詳細な一例がステップS250~S274に相当する。まず、マイクロプロセッサ100コア1は、制御サイクル開始の割り込み信号を待つステップS250。制御サイクル開始の割り込み信号を受けるとステップS250においてYES、マイクロプロセッサ100コア1は、通信回路PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140に対して送信実行を指示するステップS252。送信実行の指示に応答して、送信バッファPLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045に格納されているデータが他のユニットなどへ送信される。続いて、マイクロプロセッサ100は、通信回路PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140からの受信完了通知、または、制御プログラム1の実行終了通知を待つステップS254。制御プログラム1の実行終了通知を受けるとステップS254において実行終了通知、処理はステップS270へ進む。一方、通信回路からの受信完了通知を受けるとステップS254において受信完了通知、マイクロプロセッサ100コア1は、受信バッファPLCシステムバス受信バッファ1044および/またはフィールドネットワーク受信バッファ1046に格納されている入力データを、前回入力データを書き込んだのと同じ入力同期バッファ1入力同期バッファ1Aまたは入力同期バッファ1Bにコピーするとともに、入力データを書き込んだ入力同期バッファ1を最新状態に設定するステップS256。但し、前回入力データを書き込んだのと同じ入力同期バッファ1が書込禁止状態に設定されている場合には、他方の入力同期バッファ1に入力データがコピーされる。その後、マイクロプロセッサ100コア1は、制御プログラム1の実行状態を判断するステップS260。制御プログラム1が実行終了状態である場合ステップS260において実行終了には、マイクロプロセッサ100コア1は、最新状態に設定されている入力同期バッファ1入力同期バッファ1Aまたは入力同期バッファ1Bを参照先状態に設定するとともに書込禁止状態にも設定し、さらに、制御プログラム1の実行状態を実行中状態に設定するとともに、コア2に制御プログラム1の実行を開始させるステップS262。そして、処理はステップS266へ進む。制御プログラム1が実行中状態または継続実行中状態である場合ステップS260において実行中/継続実行中には、マイクロプロセッサ100コア1は、制御プログラム1の実行状態を継続実行中状態に設定するステップS264。このとき、対応する入力同期バッファ1入力同期バッファ1Aまたは入力同期バッファ1Bの参照先状態および書込禁止状態はいずれも維持されて、制御プログラム1の実行が継続される。そして、処理はステップS266へ進む。ステップS262またはS264において、制御プログラム1の実行を開始または、再開させると、マイクロプロセッサ100コア1は、制御プログラム1の実行終了通知、または、次の制御サイクル開始の割り込み信号を待つステップS266。制御プログラム1の実行終了通知までに次の制御サイクル開始の割り込みを受けるとステップS266において制御サイクル開始、マイクロプロセッサ100コア1は、ステップS252以下の処理を再度実行する。一方、制御プログラム1の実行終了通知を受けるとステップS266において実行終了通知、マイクロプロセッサ100コア1は、制御プログラム1の実行状態を判断するステップS270。制御プログラム1が実行中状態である場合ステップS270において実行中には、マイクロプロセッサ100コア1は、制御プログラム1の実行状態を実行終了に設定し、出力同期バッファ1に格納されている出力データを送信バッファPLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045にコピーし、参照先状態である入力同期バッファ1の書込禁止状態を解除するステップS272。そして、処理はステップS270以前に実行されていた処理ステップS254またはS266の続きへ戻る。ステップS266の続きへ戻った後は、ステップS250へ進む。一方、制御プログラム1が継続実行中状態である場合ステップS270において継続実行中には、マイクロプロセッサ100コア1は、制御プログラム1の実行状態を実行終了に設定し、出力同期バッファ1に格納されている出力データを送信バッファPLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045にコピーし、参照先状態である入力同期バッファ1の書込禁止状態を解除し、最新状態に設定されている入力同期バッファ1入力同期バッファ1Aまたは入力同期バッファ1Bを参照先状態に設定するとともに書込禁止状態にも設定し、その後、制御プログラム1の実行状態を実行中に設定するとともに、コア2に制御プログラム1の実行を開始させるステップS274。そして、処理はステップS270以前に実行していた処理ステップS254またはS266の続きへ戻る。ステップS266の続きへ戻った後は、ステップS250へ進む。h4:まとめ上述したように、実施の形態3においては、システムプログラム210は、入力データの入力に関するPLC1の制御動作の実行準備処理として、以下のa~cの処理を含む。a受信された入力データを格納する受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046をメインメモリ104記憶手段内に生成する処理図14に示すステップS1。b制御プログラムから参照される入力データごとに、その制御プログラムが入力データの参照先とする第1入力同期バッファ図13に示す入力同期バッファ1Aおよび第2入力同期バッファ図13に示す入力同期バッファ1Bを同期バッファの組としてメインメモリ104記憶手段内に生成する処理図14に示すステップS1。c最新状態記録領域をメインメモリ104記憶手段内に生成する処理図14に示すステップS1。また、実施の形態3においては、システムプログラム210は、PLC1の制御動作の実行制御処理として、以下のd~fの処理を含む。d受信された入力データを受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046からその入力データに対応する第1入力同期バッファ図13に示す入力同期バッファ1Aおよび第2入力同期バッファ図13に示す入力同期バッファ1Bのうち書込禁止状態ではないいずれかの入力同期バッファをコピー先としてコピーし、さらに、コピー先の入力同期バッファが最新状態であることを最新状態記録領域に記録する入力コピー処理図14に示すステップS256。e制御プログラムを実行開始させ、さらに、最新状態記録領域の内容によって特定される最新状態である入力同期バッファをその制御プログラムの実行において参照する参照先状態とし、かつ、当該入力同期バッファを書込禁止状態とする制御プログラム開始処理図14に示すステップS262。f制御プログラムの実行が終了すると、入力同期バッファの書込禁止状態を解除する書込禁止解除処理図14に示すステップS274。上述のような実施の形態3に係る入力データに関する処理方式によれば、各制御プログラムについて、その制御プログラムから参照される入力データごとに入力同期バッファが2つ設けられており、常に少なくとも1つの入力同期バッファに入力データを書込可能である。そのため、いつでも入力データのコピーが可能である。さらに、制御プログラムの実行開始時に、最新状態記録領域の内容に基づいて、コピーされた最新データが格納されている入力同期バッファを参照先とすることにより、制御プログラムはその実行開始時における最新の入力データを参照することができる。なお、書込禁止状態を採用することにおいて共通する実施の形態1と比較すると、実施の形態3においては、たとえば、図13中に円で囲って示すように、一方の入力同期バッファの書込禁止状態の期間中に入力データのコピーを行うべきタイミングが到来し場合でも、他方の入力同期バッファに対してコピーを実行したうえで、そのコピーした入力データを後に制御プログラムが参照することが可能である。したがって、入力データのコピーのタイミングが書込禁止状態の期間中に到来したために、その入力データを制御プログラムが参照できなくなるという事態を回避できる。特に、マルチコアのマイクロプロセッサでシステムプログラムと制御プログラムとを並列実行する場合には、一方の入力同期バッファの書込禁止状態の期間中に他方の入力同期バッファにコピーした入力データを制御プログラムが参照するということが発生するので、実施の形態3はより有利となる。<I.更新フラグ型の2入力同期バッファ入替方式実施の形態4>i1:概要上述の実施の形態3においては、少なくとも1つの書込禁止状態ではない入力同期バッファが存在するようにすることで、いつでも入力データのコピーを可能にする構成を説明した。これに対して、実施の形態4および5では、入力同期バッファに対して書込先状態と参照先状態とを排他的に設定し、これらの状態を入れ替えることにより、いつでも入力データのコピーを可能にする構成が採用される。特に、実施の形態4においては、最新入力データ更新フラグを利用して入力同期バッファの状態の入れ替えを制御する構成について例示する。i2:シーケンス図図15は、実施の形態4および5に係る入力方向の動作を示すシーケンス図である。実施の形態4および後述する実施の形態5について、図15に示すシーケンス図を共通的に参照しつつ、その詳細について説明する。より具体的には、後述する実施の形態5においては、コピーされた最新データが格納されている同期バッファを参照先として識別するための情報を扱う構成について説明する。そのため、図15を参照して、実施の形態4について説明する場合には、最新入力データ更新フラグ1についてのみ着目し、入力同期バッファ1Aおよび1Bの時間軸に沿って示した最新状態の識別は不要である。一方、図15を参照して、実施の形態5について説明する場合には、入力同期バッファ1Aおよび1Bの時間軸に沿って示した最新状態の識別についてのみ着目し、最新入力データ更新フラグ1は不要となる。また、図15に示すシーケンス図においては、書込先状態および参照先状態を、単に、書込先および参照先と記述する。図15には、典型的に、複数のコアを有するマルチコア具体的には、デュアルコアのマイクロプロセッサを用いた場合の処理を示す。すなわち、コア1がシステムプログラムを実行し、コア2が制御プログラム1を実行するものとする。但し、実施の形態4および5に係る方式は、単一のコアのみを有するシングルコアのマイクロプロセッサを用いた場合でも実行可能である。より具体的には、図15に示す実施の形態4および5に係る方式においては、システムプログラムと制御プログラム1とが並列実行される。制御プログラム1は、コアの資源利用上はいつでも実行可能であるが、ここでは制御プログラム1もシステムプログラムの出力処理と入力処理とを利用する想定であるため、各制御サイクル冒頭の出力処理と入力処理との終了を待って、制御プログラム1の実行が開始されることを基本としている。なお、実施の形態4および5に係る出力方向の動作出力データに関する処理は、上述の実施の形態1における動作図7に示すシーケンス図に記載の処理と同様である。すなわち、制御プログラムの実行が終了すると、その制御プログラムの実行により生成された出力データは、出力同期バッファから送信バッファにコピーされる。また、制御サイクルが開始すると、送信バッファから出力データが送信される。ここでは、これ以上の詳細な説明は繰り返さない。このような、入力同期バッファの書込先状態および参照先状態は、書込先状態記録領域および参照先状態記録領域に入力同期バッファが書込先状態および参照先状態であることをそれぞれ記録することよって表される。これらの各状態記録領域は、システムプログラム210がPLC1の制御動作の実行準備処理図5に示すステップS1において、メインメモリ104内の制御プログラムの作業領域1042に生成する。入力同期バッファが書込先状態/参照先状態であることの記録の態様は適宜に定めることができる。たとえば、一括してコピー処理が行われる単位でグループ化された入力同期バッファのグループのうち書込先状態および/または参照先状態であるものを特定する情報入力同期バッファのグループの識別番号などを記録する態様、そのような入力同期バッファのグループごとに書込先状態/参照先状態であるかどうかを表すフラグまたは状態変数を設けてそのフラグまたは状態変数の値を用いて記録する態様、などを採用することができる。特に、本実施の形態においては、1つの入力同期バッファに対して、書込先状態または参照先状態が互いに重複しないように付与されるので、書込先状態記録領域と参照先状態記録領域とを分けずに共通の状態記録領域を生成し、1つのフラグまたは状態変数によって書込先状態か参照先状態かを表してもよい。なお、実施の形態4に係るシーケンス図図15に表されている最新入力データ更新フラグ1の垂直線時間軸に沿った線のうち、太い線の部分は最新入力データ更新フラグ1がオンであることを表す。この最新入力データ更新フラグ1は、システムプログラムがPLC1の制御動作の実行準備処理において、メインメモリ104内の制御プログラムの作業領域1042に生成する。ここで、最新入力データ更新フラグ1は、一括してコピーが行われるときのコピー先となる入力同期バッファの組の集合ごとに設けられる。i3:フローチャート図16は、実施の形態4に係る実行動作を示すフローチャートである。図16のフローチャートにおいては、図14に示すフローチャートと同一の処理を実行するステップについては、図14と同一のステップ番号を付与している。図16に示すフローチャートは、図14に示すフローチャートと比較して、ステップS256,S262,S272,S274に代えて、それぞれステップS256A,S262A,S272A,S274Aの処理が実行される点が異なっている。以下、主としてこの相違点について説明し、その他の処理についての詳細な説明は繰り返さない。通信回路からの受信完了通知を受けた場合ステップS254において受信完了通知に実行されるステップS256Aにおいて、マイクロプロセッサ100コア1は、受信バッファPLCシステムバス受信バッファ1044および/またはフィールドネットワーク受信バッファ1046に格納されている入力データを、書込先状態の入力同期バッファ1入力同期バッファ1Aまたは入力同期バッファ1Bにコピーするとともに、最新入力データ更新フラグ1をオンに設定するステップS256A。制御プログラム1が実行終了状態である場合ステップS260において実行終了において実行されるステップS262Aにおいて、最新入力データ更新フラグ1がオンに設定されていれば、書込先状態であった入力同期バッファ1入力同期バッファ1Aまたは入力同期バッファ1Bを参照先状態に設定するとともに、参照先状態であった入力同期バッファ1入力同期バッファ1Aまたは入力同期バッファ1Bを書込先状態に設定した上で、最新入力データ更新フラグ1をオンからオフに変更するステップS262A。さらに、ステップS262Aにおいては、マイクロプロセッサ100コア1は、制御プログラム1の実行状態を実行中状態に設定するとともに、コア2に制御プログラム1の実行を開始させるステップS262A。なお、制御プログラム1が実行中状態または継続実行中状態である場合ステップS260において実行中/継続実行中には、マイクロプロセッサ100コア1は、制御プログラム1の実行状態を継続実行中状態に設定するステップS264。このとき、対応する入力同期バッファ1入力同期バッファ1Aまたは入力同期バッファ1Bの参照先状態および書込先状態はいずれも維持されて、制御プログラム1の実行が継続される。制御プログラム1が実行中状態である場合ステップS270において実行中には、マイクロプロセッサ100コア1は、制御プログラム1の実行状態を実行終了に設定し、出力同期バッファ1に格納されている出力データを送信バッファPLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045にコピーするステップS272A。制御プログラム1が継続実行中状態である場合ステップS270において継続実行中において実行されるステップS274Aにおいては、マイクロプロセッサ100コア1は、制御プログラム1の実行状態を実行終了に設定し、出力同期バッファ1に格納されている出力データを送信バッファPLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045にコピーするステップS274A。さらに、ステップS274Aにおいては、マイクロプロセッサ100コア1は、最新入力データ更新フラグ1がオンに設定されていれば、書込先状態であった入力同期バッファ1入力同期バッファ1Aまたは入力同期バッファ1Bを参照先状態に設定するとともに、参照先状態であった入力同期バッファ1入力同期バッファ1Aまたは入力同期バッファ1Bを書込先状態に設定した上で、最新入力データ更新フラグ1をオンからオフに変更する。このとき、最新入力データ更新フラグ1がオフであれば、入力同期バッファ1の書込先状態および参照先状態は変更されず、最新入力データ更新フラグ1はオフのまま維持される。その後、制御プログラム1の実行状態を実行中に設定するとともに、コア2に制御プログラム1の実行を開始させる。i4:まとめ上述したように、実施の形態4においては、システムプログラム210は、入力データの入力に関するPLC1の制御動作の実行準備処理として、以下のa~cの処理を含む。a受信された入力データを格納する受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046をメインメモリ104記憶手段内に生成する処理図16に示すステップS1。b制御プログラムから参照される入力データごとに、その制御プログラムが入力データの参照先とする第1入力同期バッファ図15に示す入力同期バッファ1Aおよび第2入力同期バッファ図15に示す入力同期バッファ1Bを同期バッファの組としてメインメモリ104記憶手段内に生成する処理図16に示すステップS1。c制御プログラムごとに最新入力データ更新フラグをメインメモリ104記憶手段内に生成する処理図16に示すステップS1。第1入力同期バッファおよび第2入力同期バッファには、受信バッファ図4に示すPLCシステムバス受信バッファ1044および/またはフィールドネットワーク受信バッファ1046から入力データをコピー可能な状態である書込先状態、および、制御プログラムから参照可能な状態である参照先状態、のいずれかの状態が重複せずに付与される。また、実施の形態4においては、システムプログラム210は、PLC1の制御動作の実行制御処理として、以下のdおよびeの処理を含む。d受信された入力データを受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046からその入力データに対応する書込先状態である入力同期バッファにコピーし、さらに、当該入力コピーに関連する最新入力データ更新フラグをオンにする入力コピー処理図16に示すステップS256A。e制御プログラムを実行開始させ、さらに、実行開始させる制御プログラムの入力同期バッファについて、最新データを格納している入力同期バッファが書込先状態であることを条件としてすなわち、実行開始させる制御プログラムの入力同期バッファに関連する最新入力データ更新フラグがオンであることを条件として、書込先状態である入力同期バッファ、および、参照先状態である入力同期バッファについて、書込先状態と参照先状態とを入れ替える第3入替処理を実行し、かつ、当該オン状態であった最新入力データ更新フラグをオフにする制御プログラム開始処理図16に示すステップS274A。上述のような実施の形態4に係る処理方式によれば、各制御プログラムについて、その制御プログラムから参照される入力データごとに入力同期バッファが2つ設けられており、制御プログラム開始処理において入力同期バッファの書込先状態と参照先状態との入替第3入替処理をしている間の短い時間を除き、常にいずれかの入力同期バッファが書込先状態となっている。そのため、いつでも入力データをコピーできる。さらに、制御プログラムの実行開始時に、最新入力データ更新フラグの状態に基づいて、コピーされた最新データが格納されている入力同期バッファを参照先状態に設定することにより、制御プログラムはその実行開始時における最新の入力データを参照することができる。<J.最新データ型の2入力同期バッファ入替方式実施の形態5>j1:概要上述したように、実施の形態5においては、コピーされた最新データが格納されている同期バッファを参照先として識別するための情報を扱う。j2:シーケンス図実施の形態5に係る入力方向の動作は、上述した図15のシーケンス図に示す。但し、図15は、上述の実施の形態4と共通的に説明するためのシーケンス図であり、実施の形態5においては、入力同期バッファ1Aおよび2Bの時間軸に沿って示した最新状態の識別についてのみ着目し、最新入力データ更新フラグは不要となる。このような、入力同期バッファの書込先状態、参照先状態および最新状態は、書込先状態記録領域、参照先状態記録領域および最新状態記録領域に入力同期バッファが書込先状態、参照先状態および最新状態であることをそれぞれ記録することよって表される。これらの各状態記録領域は、システムプログラム210がPLC1の制御動作の実行準備処理図5に示すステップS1において、メインメモリ104内の制御プログラムの作業領域1042に生成する。入力同期バッファが書込先状態/参照先状態/最新状態であることの記録の態様は適宜に定めることができる。たとえば、一括してコピー処理が行われる単位でグループ化された入力同期バッファのグループのうち書込先状態、参照先状態、および/または最新状態であるものを特定する情報入力同期バッファのグループの識別番号などを記録する態様、そのような入力同期バッファのグループごとに書込先状態/参照先状態/最新状態であるかどうかを表すフラグまたは状態変数を設けてそのフラグまたは状態変数の値を用いて記録する態様、などを採用することができる。特に、本実施の形態においては、1つの入力同期バッファに対して、書込先状態または参照先状態が互いに重複しないように付与されるので、書込先状態記録領域と参照先状態記録領域とを分けずに共通の状態記録領域を生成し、1つのフラグまたは状態変数によって書込先状態か参照先状態かを表してもよい。j3:フローチャート図17は、実施の形態5に係る実行動作を示すフローチャートである。図17のフローチャートにおいては、図16に示すフローチャートと同一の処理を実行するステップについては、図16と同一のステップ番号を付与している。図17に示すフローチャートは、図16に示すフローチャートと比較して、ステップS256A,S262A,S274Aに代えて、それぞれステップS256B,S262B,S274Bの処理が実行される点が異なっている。以下、主としてこの相違点について説明し、その他の処理についての詳細な説明は繰り返さない。通信回路からの受信完了通知を受けた場合ステップS254において受信完了通知に実行されるステップS256Bにおいて、マイクロプロセッサ100コア1は、受信バッファPLCシステムバス受信バッファ1044および/またはフィールドネットワーク受信バッファ1046に格納されている入力データを、書込先状態の入力同期バッファ1入力同期バッファ1Aまたは入力同期バッファ1Bにコピーするとともに、入力データを書き込んだ入力同期バッファ1を最新状態に設定するステップS256B。制御プログラム1が実行終了状態である場合ステップS260において実行終了において実行されるステップS262Bにおいて、最新状態に設定されている入力同期バッファ1入力同期バッファ1Aまたは入力同期バッファ1Bを参照先状態に設定するとともに、他方の入力同期バッファ1を書込先状態に設定した上で、制御プログラム1の実行状態を実行中状態に設定するとともに、コア2に制御プログラム1の実行を開始させるステップS262B。なお、制御プログラム1が実行中状態または継続実行中状態である場合ステップS260において実行中/継続実行中には、マイクロプロセッサ100コア1は、制御プログラム1の実行状態を継続実行中状態に設定するステップS264。このとき、対応する入力同期バッファ1入力同期バッファ1Aまたは入力同期バッファ1Bの参照先状態および書込先状態はいずれも維持されて、制御プログラム1の実行が継続される。制御プログラム1が継続実行中状態である場合ステップS270において継続実行中において実行されるステップS274Bにおいては、マイクロプロセッサ100コア1は、制御プログラム1の実行状態を実行終了に設定し、出力同期バッファ1に格納されている出力データを送信バッファPLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045にコピーする。その後、制御プログラム1の実行状態を実行中に設定するとともに、コア2に制御プログラム1の実行を開始させるステップS274B。j4:まとめ上述したように、実施の形態5においては、システムプログラム210は、入力データの入力に関するPLC1の制御動作の実行準備処理として、以下のa~cの処理を含む。a受信された入力データを格納する受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046をメインメモリ104記憶手段内に生成する処理図17に示すステップS1。b制御プログラムから参照される入力データごとに、その制御プログラムが入力データの参照先とする、第1入力同期バッファ図15に示す入力同期バッファ1Aおよび第2入力同期バッファ図15に示す入力同期バッファ1Bを同期バッファの組としてメインメモリ104記憶手段内に生成する処理図17に示すステップS1。c最新状態記録領域をメインメモリ104記憶手段内に生成する処理図17に示すステップS1。第1入力同期バッファおよび第2入力同期バッファには、受信バッファ図4に示すPLCシステムバス受信バッファ1044および/またはフィールドネットワーク受信バッファ1046から入力データをコピー可能な状態である書込先状態、および、制御プログラムから参照可能な状態である参照先状態、のいずれかの状態が重複せずに付与される。また、実施の形態5においては、システムプログラム210は、PLC1の制御動作の実行制御処理として、以下のdおよびeの処理を含む。d受信された入力データを受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046からその入力データに対応する書込先状態である入力同期バッファにコピーし、さらに、コピー先の入力同期バッファが最新状態であることを最新状態記録領域に記録する入力コピー処理図17に示すステップS256B。e制御プログラムを実行開始させ、さらに、実行開始させる制御プログラムの入力同期バッファについて、最新状態記録領域の内容によって特定される最新状態である入力同期バッファが書込先状態であることを条件として、書込先状態である入力同期バッファ、および、参照先状態である入力同期バッファについて、書込先状態と参照先状態とを入れ替える第3入替処理を含む制御プログラム開始処理図17に示すステップS262B。なお、制御プログラム開始処理については、以下のように表現することもできる。e’制御プログラムを実行開始させ、さらに、最新状態記録領域の内容によって特定される最新状態である入力同期バッファをその制御プログラムの実行において参照する参照先状態とし、かつ、参照先状態とする入力同期バッファと同じ組に属する他方の入力同期バッファを書込先状態とする処理を含む制御プログラム開始処理図17に示すステップS262B。上述のような実施の形態5に係る処理方式によれば、各制御プログラムについて、その制御プログラムから参照される入力データごとに入力同期バッファが2つ設けられており、制御プログラム開始処理において入力同期バッファの書込先状態と参照先状態との入替第3入替処理をしている間の短い時間を除き、常にいずれかの入力同期バッファが書込先状態となっている。そのため、いつでも入力データをコピーできる。さらに、制御プログラムの実行開始時に、最新状態記録領域の内容に基づいて、コピーされた最新データが格納されている入力同期バッファを参照先とすることにより、制御プログラムはその実行開始時における最新の入力データを参照することができる。<K:更新フラグ型の3入力同期バッファ入替方式実施の形態6>k1:概要上述の実施の形態4および5においては、2つの入力同期バッファを利用する構成について例示したが、実施の形態6および後述する実施の形態7においては、3つの同期バッファを利用する構成について例示する。すなわち、実施の形態6は、実施の形態4の構成を3つの入力同期バッファに拡張した構成に相当し、後述する実施の形態7は、実施の形態5の構成を3つの入力同期バッファに拡張した構成に相当する。k2:シーケンス図図18は、実施の形態6および7に係る入力方向の動作を示すシーケンス図である。実施の形態6および後述する実施の形態7について、図18に示すシーケンス図を共通的に参照しつつ、その詳細について説明する。より具体的には、後述する実施の形態7においては、コピーされた最新データが格納されている同期バッファを参照先として識別するための情報を扱う構成について説明する。そのため、図18を参照して、実施の形態6について説明する場合には、最新入力データ更新フラグ1についてのみ着目し、入力同期バッファ1A,1B,1Cの時間軸に沿って示した最新状態の識別は不要である。一方、図18を参照して、実施の形態7について説明する場合には、入力同期バッファ1A,1B,1Cの時間軸に沿って示した最新状態の識別についてのみ着目し、最新入力データ更新フラグ1は不要となる。また、図18に示すシーケンス図においては、書込先状態および参照先状態を、単に、書込先および参照先と記述する。図18には、典型的に、複数のコアを有するマルチコア具体的には、デュアルコアのマイクロプロセッサを用いた場合の処理を示す。すなわち、コア1がシステムプログラムを実行し、コア2が制御プログラム1を実行するものとする。但し、実施の形態6および7に係る方式は、上述の実施の形態4および5と同様に、単一のコアのみを有するシングルコアのマイクロプロセッサを用いた場合でも実行可能である。より具体的には、図18に示す実施の形態6および7に係る方式においては、システムプログラムと制御プログラム1とが並列実行される。制御プログラム1は、コアの資源利用上はいつでも実行可能であるが、ここでは制御プログラム1もシステムプログラムの出力処理と入力処理とを利用する想定であるため、各制御サイクル冒頭の出力処理と入力処理との終了を待って、制御プログラム1の実行が開始されることを基本としている。なお、実施の形態6および7に係る出力方向の動作出力データに関する処理は、上述の実施の形態1における動作図7に示すシーケンス図に記載の処理と同様である。すなわち、制御プログラムの実行が終了すると、その制御プログラムの実行により生成された出力データは、出力同期バッファから送信バッファにコピーされる。また、制御サイクルが開始すると、送信バッファから出力データが送信される。ここでは、これ以上の詳細な説明は繰り返さない。このような、入力同期バッファの書込先状態、参照先状態、および待機状態は、書込先状態記録領域、参照先状態記録領域および待機状態記録領域に入力同期バッファが書込先状態、参照先状態、および待機状態であることをそれぞれ記録することよって表される。これらの各状態記録領域は、システムプログラム210がPLC1の制御動作の実行準備処理図5に示すステップS1において、メインメモリ104内の制御プログラムの作業領域1042に生成する。入力同期バッファが書込先状態/参照先状態/待機状態であることの記録の態様は適宜に定めることができる。たとえば、一括してコピー処理が行われる単位でグループ化された入力同期バッファのグループのうち書込先状態、参照先状態、および/または待機状態であるものを特定する情報入力同期バッファのグループの識別番号などを記録する態様、そのような入力同期バッファのグループごとに書込先状態/参照先状態/待機状態であるかどうかを表すフラグまたは状態変数を設けてそのフラグまたは状態変数の値を用いて記録する態様、などを採用することができる。特に、本実施の形態においては、1つの入力同期バッファに対して、書込先状態、参照先状態、または待機状態が互いに重複しないように付与されるので、これらの記録領域を分けずに共通の状態記録領域を生成し、1組のフラグまたは1つの状態変数によっていずれの状態であるかを表してもよい。なお、実施の形態6に係るシーケンス図図18に表されている最新入力データ更新フラグ1の垂直線時間軸に沿った線のうち、太い線の部分は最新入力データ更新フラグ1がオンであることを表す。この最新入力データ更新フラグ1は、システムプログラムがPLC1の制御動作の実行準備処理において、メインメモリ104内の制御プログラムの作業領域1042に生成する。ここで、最新入力データ更新フラグ1は、一括してコピーが行われるときのコピー先となる入力同期バッファの組の集合ごとに設けられる。k3:フローチャート図19は、実施の形態6に係る実行動作を示すフローチャートである。図19のフローチャートにおいては、図16に示すフローチャートと同一の処理を実行するステップについては、図16と同一のステップ番号を付与している。図19に示すフローチャートは、図16に示すフローチャートと比較して、ステップS256A,S262A,S274Aに代えて、それぞれステップS256C,S262C,S274Cの処理が実行される点が異なっている。以下、主としてこの相違点について説明し、その他の処理についての詳細な説明は繰り返さない。通信回路からの受信完了通知を受けた場合ステップS254において受信完了通知に実行されるステップS256Cにおいて、マイクロプロセッサ100コア1は、受信バッファPLCシステムバス受信バッファ1044および/またはフィールドネットワーク受信バッファ1046に格納されている入力データを、書込先状態の入力同期バッファ1入力同期バッファ1A,1B,1Cのいずれかにコピーし、さらに、書込先状態であった入力同期バッファ1入力同期バッファ1A,1B,1Cのいずれかを待機状態に設定するとともに、待機状態であった入力同期バッファ1入力同期バッファ1A,1B,1Cのいずれかを書込先状態に設定した上で、最新入力データ更新フラグ1をオフからオンに変更するステップS256C。制御プログラム1が実行終了状態である場合ステップS260において実行終了において実行されるステップS262Cにおいて、最新入力データ更新フラグ1がオンに設定されていれば、待機状態であった入力同期バッファ1入力同期バッファ1A,1B,1Cのいずれかを参照先状態に設定するとともに、参照先状態であった入力同期バッファ1入力同期バッファ1A,1B,1Cのいずれかを待機状態に設定した上で、最新入力データ更新フラグ1をオンからオフに変更するステップS262C。さらに、ステップS262Cにおいては、マイクロプロセッサ100コア1は、制御プログラム1の実行状態を実行中状態に設定するとともに、コア2に制御プログラム1の実行を開始させるステップS262C。なお、制御プログラム1が実行中状態または継続実行中状態である場合ステップS260において実行中/継続実行中には、マイクロプロセッサ100コア1は、制御プログラム1の実行状態を継続実行中状態に設定するステップS264。このとき、対応する入力同期バッファ1入力同期バッファ1A,1B,1Cのいずれかの参照先状態および待機状態はいずれも維持されて、制御プログラム1の実行が継続される。制御プログラム1が継続実行中状態である場合ステップS270において継続実行中において実行されるステップS274Cにおいては、マイクロプロセッサ100コア1は、制御プログラム1の実行状態を実行終了に設定し、出力同期バッファ1に格納されている出力データを送信バッファPLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045にコピーするステップS274C。さらに、ステップS274Cにおいては、マイクロプロセッサ100コア1は、最新入力データ更新フラグ1がオンに設定されていれば、待機状態であった入力同期バッファ1入力同期バッファ1A,1B,1Cのいずれかを参照先状態に設定するとともに、参照先状態であった入力同期バッファ1入力同期バッファ1A,1B,1Cのいずれかを待機状態に設定した上で、最新入力データ更新フラグ1をオンからオフに変更する。このとき、最新入力データ更新フラグ1がオフであれば、入力同期バッファ1の待機状態および参照先状態は変更されず、最新入力データ更新フラグ1はオフのまま維持される。その後、制御プログラム1の実行状態を実行中に設定するとともに、コア2に制御プログラム1の実行を開始させる。k4:まとめ上述したように、実施の形態6においては、システムプログラム210は、入力データの入力に関するPLC1の制御動作の実行準備処理として、以下のa~cの処理を含む。a受信された入力データを格納する受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046をメインメモリ104記憶手段内に生成する処理図19に示すステップS1。b制御プログラムから参照される入力データごとに、その制御プログラムが入力データの参照先とする第1入力同期バッファ、第2入力同期バッファおよび第3入力同期バッファ図18に示す入力同期バッファ1A,1B,1Cを入力同期バッファの組としてメインメモリ104記憶手段内に生成する処理図19に示すステップS1。c制御プログラムごとに最新入力データ更新フラグをメインメモリ104記憶手段内に生成する処理図19に示すステップS1。第1入力同期バッファ、第2入力同期バッファおよび第3入力同期バッファには、受信バッファ図4に示すPLCシステムバス受信バッファ1044および/またはフィールドネットワーク受信バッファ1046から入力データをコピー可能な状態である書込先状態、制御プログラムから参照可能な状態である参照先状態、待機状態のいずれかの状態が重複せずに付与される。また、実施の形態6においては、システムプログラム210は、PLC1の制御動作の実行制御処理として、以下のdおよびeの処理を含む。d受信された入力データを受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046からその入力データに対応する書込先状態である入力同期バッファにコピーし、さらに、コピー先となった書込先状態である入力同期バッファ、および、その入力同期バッファと同じ組の中で待機状態である入力同期バッファについて、書込先状態と待機状態とを入れ替える第1入替処理を実行し、かつ、当該入力コピーに関連する最新入力データ更新フラグをオンにする入力コピー処理図19に示すステップS256C。e制御プログラムを実行開始させ、さらに、実行開始させる制御プログラムの入力同期バッファについて、最新データを格納している入力同期バッファが待機状態であることを条件としてすなわち、実行開始させる制御プログラムの入力同期バッファに関連する最新入力データ更新フラグがオンであることを条件として、待機状態である入力同期バッファ、および、参照先状態である入力同期バッファについて、待機状態と参照先状態とを入れ替える第2入替処理を実行し、かつ、当該オン状態であった最新入力データ更新フラグをオフにする制御プログラム開始処理図19に示すステップS274C。上述のような実施の形態6に係る処理方式によれば、各制御プログラムについて、その制御プログラムから参照される入力データごとに入力同期バッファが3つ設けられており、常にいずれかの入力同期バッファが書込先状態となっている。そのため、いつでも入力データをコピーできる。さらに、制御プログラムの実行開始時に、コピーされた最新データが格納されている入力同期バッファを参照先とすることにより、制御プログラムはその実行開始時における最新の入力データを参照することができる。実施の形態6によれば、制御プログラムの実行開始時にコピーされた最新データが格納されている入力同期バッファを参照先とする手段として、入力コピー処理において入力同期バッファの書込先状態と待機状態との入替を行い、制御プログラム開始処理において、最新入力データ更新フラグの状態に基づいて、入力同期バッファの待機状態と参照先状態の入替を行う。たとえば、受信バッファからコピーが行われたときに書込先状態であった入力同期バッファは、待機状態を経て参照先状態となる。入力データの数が多い場合には、受信バッファから入力同期バッファへの入力データのコピーには、ある程度の時間を要する。上述の実施の形態4の場合には、制御プログラム開始処理における入力同期バッファの書込先状態と参照先状態との入替処理第3入替処理と受信バッファから入力同期バッファへのコピーとを同時に行うことができず、いずれかの処理の終了を待って他方の処理を行う必要があったが、実施の形態6の場合には、制御プログラム開始処理における入力同期バッファの待機状態と参照先状態との入替処理第2入替処理と受信バッファから書込先状態の入力同期バッファへのコピーとを並行して実行するように設計することが可能であり、より有利となる。<L.最新データ型の3入力同期バッファ入替方式実施の形態7>l1:概要上述したように、実施の形態7においては、コピーされた最新データが格納されている同期バッファを参照先として識別するための情報を扱う。但し、入力同期バッファは、3個に拡張されている。l2:シーケンス図実施の形態7に係る入力方向の動作は、上述した図18のシーケンス図に示す。但し、図18は、上述の実施の形態6と共通的に説明するためのシーケンス図であり、実施の形態7においては、入力同期バッファ1A,1B,1Cの時間軸に沿って示した最新状態の識別についてのみ着目し、最新入力データ更新フラグ1は不要となる。このような、入力同期バッファの書込先状態、参照先状態、待機状態、および最新状態は、書込先状態記録領域、参照先状態記録領域、待機状態記録領域、および最新状態記録領域に入力同期バッファが書込先状態、参照先状態、待機状態、および最新状態であることをそれぞれ記録することよって表される。これらの各状態記録領域は、システムプログラム210がPLC1の制御動作の実行準備処理図5に示すステップS1において、メインメモリ104内の制御プログラムの作業領域1042に生成する。入力同期バッファが書込先状態/参照先状態/待機状態/最新状態であることの記録の態様は適宜に定めることができる。たとえば、一括してコピー処理が行われる単位でグループ化された入力同期バッファのグループのうち書込先状態、参照先状態、待機状態、および/または最新状態であるものを特定する情報入力同期バッファのグループの識別番号などを記録する態様、そのような入力同期バッファのグループごとに書込先状態/参照先状態/待機状態/最新状態であるかどうかを表すフラグまたは状態変数を設けてそのフラグまたは状態変数の値を用いて記録する態様、などを採用することができる。特に、本実施の形態においては、1つの入力同期バッファに対して、書込先状態、参照先状態、または待機状態が互いに重複しないように付与されるので、書込先状態記録領域、参照先状態記録領域、および待機状態記録領域を分けずに共通の状態記録領域を生成し、1組のフラグまたは1つの状態変数によって書込先状態、参照先状態、および待機状態のうちどの状態であるかを表してもよい。l3:フローチャート図20は、実施の形態7に係る実行動作を示すフローチャートである。図20のフローチャートにおいては、図17に示すフローチャートと同一の処理を実行するステップについては、図17と同一のステップ番号を付与している。図20に示すフローチャートは、図17に示すフローチャートと比較して、ステップS256B,S262B,S274Bに代えて、それぞれステップS256D,S262D,S274Dの処理が実行される点が異なっている。以下、主としてこの相違点について説明し、その他の処理についての詳細な説明は繰り返さない。通信回路からの受信完了通知を受けた場合ステップS254において受信完了通知に実行されるステップS256Dにおいて、マイクロプロセッサ100コア1は、受信バッファPLCシステムバス受信バッファ1044および/またはフィールドネットワーク受信バッファ1046に格納されている入力データを、書込先状態の入力同期バッファ1入力同期バッファ1A,1B,1Cのいずれかにコピーし、さらに、書込先状態であった入力同期バッファ1入力同期バッファ1A,1B,1Cのいずれかを待機状態に設定するとともに、最新状態にも設定し、待機状態であった入力同期バッファ1入力同期バッファ1A,1B,1Cのいずれかを書込先状態に設定するステップS256D。制御プログラム1が実行終了状態である場合ステップS260において実行終了において実行されるステップS262Dにおいて、最新状態の入力同期バッファ1が待機状態であれば、待機状態であった入力同期バッファ1入力同期バッファ1A,1B,1Cのいずれかを参照先状態に設定するとともに、参照先状態であった入力同期バッファ1入力同期バッファ1A,1B,1Cのいずれかを待機状態に設定した上で、制御プログラム1の実行状態を実行中状態に設定するとともに、コア2に制御プログラム1の実行を開始させるステップS262D。なお、制御プログラム1が実行中状態または継続実行中状態である場合ステップS260において実行中/継続実行中には、マイクロプロセッサ100コア1は、制御プログラム1の実行状態を継続実行中状態に設定するステップS264。このとき、対応する入力同期バッファ1入力同期バッファ1A,1B,1Cのいずれかの参照先状態および待機状態はいずれも維持されて、制御プログラム1の実行が継続される。制御プログラム1が継続実行中状態である場合ステップS270において継続実行中において実行されるステップS274Dにおいては、マイクロプロセッサ100コア1は、制御プログラム1の実行状態を実行終了に設定し、出力同期バッファ1に格納されている出力データを送信バッファPLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045にコピーするステップS274D。さらに、ステップS274Dにおいては、マイクロプロセッサ100コア1は、最新状態の入力同期バッファ1が待機状態であれば、待機状態であった入力同期バッファ1入力同期バッファ1A,1B,1Cのいずれかを参照先状態に設定するとともに、参照先状態であった入力同期バッファ1入力同期バッファ1A,1B,1Cのいずれかを待機状態に設定する。このとき、最新状態の入力同期バッファ1が参照先状態であれば、入力同期バッファ1の待機状態および参照先状態は変更されない。その後、制御プログラム1の実行状態を実行中に設定するとともに、コア2に制御プログラム1の実行を開始させる。l4:まとめ上述したように、実施の形態7においては、システムプログラム210は、入力データの入力に関するPLC1の制御動作の実行準備処理として、以下のa~cの処理を含む。a受信された入力データを格納する受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046をメインメモリ104記憶手段内に生成する処理図20に示すステップS1。b制御プログラムから参照される入力データごとに、その制御プログラムが入力データの参照先とする、第1入力同期バッファ、第2入力同期バッファおよび第3入力同期バッファ図18に示す入力同期バッファ1A,1B,1Cを入力同期バッファの組としてメインメモリ104記憶手段内に生成する処理図20に示すステップS1。c最新状態記録領域をメインメモリ104記憶手段内に生成する処理図20に示すステップS1。第1入力同期バッファ、第2入力同期バッファ、および第3入力同期バッファは、受信バッファ図4に示すPLCシステムバス受信バッファ1044および/またはフィールドネットワーク受信バッファ1046から入力データをコピー可能な状態である書込先状態、制御プログラムから参照可能な状態である参照先状態、および、待機状態のいずれかの状態が重複せずに付与される。また、実施の形態7においては、システムプログラム210は、PLC1の制御動作の実行制御処理として、以下のdおよびeの処理を含む。d受信された入力データを受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046からその入力データに対応する書込先状態である入力同期バッファにコピーし、さらに、コピー先となった書込先状態である入力同期バッファ、および、その入力同期バッファと同じ組の中で待機状態である入力同期バッファについて、書込先状態と待機状態とを入れ替える第1入替処理を実行し、かつ、コピー先の入力同期バッファが最新状態であることを最新状態記録領域に記録する入力コピー処理図20に示すステップS256D。e制御プログラムを実行開始させ、さらに、実行開始させる制御プログラムの入力同期バッファについて、最新状態記録領域の内容によって特定される最新状態である入力同期バッファが待機状態であることを条件として、待機状態である入力同期バッファ、および、参照先状態である入力同期バッファについて、待機状態と参照先状態とを入れ替える第2入替処理を含む制御プログラム開始処理図20に示すステップS262D。なお、制御プログラム開始処理については、以下のように表現することもできる。e’制御プログラムを実行開始させ、さらに、最新状態記録領域の内容によって特定される最新状態である入力同期バッファをその制御プログラムの実行において参照する参照先状態とし、かつ、参照先状態とする入力同期バッファと同じ組に属する入力同期バッファであって、書込先状態でない入力同期バッファを待機状態とする処理を含む制御プログラム開始処理図20に示すステップS262D。上述のような実施の形態7に係る処理方式によれば、各制御プログラムについて、その制御プログラムから参照される入力データごとに入力同期バッファが3つ設けられており、常にいずれかの入力同期バッファが書込先状態となっている。そのため、いつでも入力データをコピーできる。さらに、制御プログラムの実行開始時に、コピーされた最新データが格納されている入力同期バッファを参照先とすることにより、制御プログラムはその実行開始時における最新の入力データを参照することができる。実施の形態7によれば、制御プログラムの実行開始時にコピーされた最新データが格納されている入力同期バッファを参照先とする手段として、入力コピー処理において入力同期バッファの書込先状態と待機状態の入替を行い、制御プログラム開始処理において、最新状態記録領域の内容に基づいて、入力同期バッファの待機状態と参照先状態との入替を行う。たとえば、受信バッファからコピーが行われたときに書込先状態であった入力同期バッファは、待機状態を経て参照先状態となる。入力データの数が多い場合には、受信バッファから入力同期バッファへの入力データのコピーには、ある程度の時間を要する。上述の実施の形態5の場合には、制御プログラム開始処理における入力同期バッファの書込先状態と参照先状態との入替処理第3入替処理と受信バッファから入力同期バッファへのコピーとを同時に行うことができず、いずれかの処理の終了を待って他方の処理を行う必要があったが、実施の形態7の場合には、制御プログラム開始処理における入力同期バッファの待機状態と参照先状態との入替処理第2入替処理と受信バッファから書込先状態の入力同期バッファへのコピーとを並行して実行するように設計することが可能であり、より有利となる。<M.更新フラグ型の3出力同期バッファ入替方式実施の形態8>m1:概要上述の実施の形態6および7においては、3つの入力同期バッファを利用する構成について例示したが、実施の形態8および後述する実施の形態9においては、これらの実施の形態における3バッファ入替方式を出力同期バッファに応用したものである。特に、実施の形態8および実施の形態9においては、出力同期バッファとは別に、出力データごとに演算用バッファが生成される。そして、制御プログラムは、この演算用バッファに出力データを格納する。これは以下のような理由による。すなわち、実施の形態8および実施の形態9においては、3つの出力同期バッファが存在しており、書込先となる出力同期バッファが順次変更されるため、制御プログラムが出力データを出力同期バッファに格納したとすると、以前に格納した出力データを制御プログラムが参照することが困難になる。そこで、演算用バッファを設けて制御プログラムがこの演算用バッファに出力データを格納することにより、制御プログラムが以前に格納した出力データを演算バッファから取得できるように構成している。なお、実施の形態8および実施の形態9に係る出力データの出力方式は、上述した実施の形態1~7のうち、いずれの入力データの入力方式とも任意に組み合わせて実施することができる。m2:シーケンス図図21は、実施の形態8および9に係る出力方向の動作を示すシーケンス図である。図21には、実施の形態8および後述する実施の形態9について、図21に示すシーケンス図を共通的に参照しつつ、その詳細について説明する。より具体的には、図21を参照して、実施の形態8について説明する場合には、最新出力データ更新フラグ1についてのみ着目し、出力同期バッファ1D,1E,1Fの時間軸に沿って示した最新状態の識別は不要である。一方、図21を参照して、実施の形態9について説明する場合には、出力同期バッファ1D,1E,1Fの時間軸に沿って示した最新状態の識別についてのみ着目し、最新出力データ更新フラグ1は不要となる。本実施の形態においては、出力同期バッファの各々には、書込先状態、参照先状態、および待機状態のいずれかが設定される。これらの状態の記録方法は、上述の実施の形態6において説明した入力同期バッファの場合と同様である。最新出力データ更新フラグの状態の記録方法についても、上述の実施の形態6において説明した最新入力データ更新フラグの場合と同様である。m3:フローチャート図22は、実施の形態8に係る実行動作を示すフローチャートである。図22のフローチャートにおいては、図19に示すフローチャートと同一の処理を実行するステップについては、図19と同一のステップ番号を付与している。図22に示すフローチャートは、図19に示すフローチャートと比較して、ステップS251Eの処理が追加され、かつ、ステップS272およびS274Cに代えて、それぞれステップS272EおよびS274Eの処理が実行される点が異なっている。以下、主としてこの相違点について説明し、その他の処理についての詳細な説明は繰り返さない。制御サイクル開始の割り込み信号を受けた場合ステップS250においてYESに実行されるステップS251Eにおいて、マイクロプロセッサ100コア1は、最新出力データ更新フラグ1がオンに設定されていれば、待機状態であった出力同期バッファ1出力同期バッファ1D,1E,1Fのいずれかを参照先状態に設定するとともに、参照先状態であった出力同期バッファ1出力同期バッファ1D,1E,1Fのいずれかを待機状態に設定した上で、最新出力データ更新フラグ1をオンからオフに変更するステップS251E。なお、最新出力データ更新フラグ1がオンに設定されていなければ最新出力データ更新フラグ1がオフに設定されていれば、出力同期バッファ1の待機状態および参照先状態については変更せず、最新出力データ更新フラグ1についてもオフのまま維持する。さらに、ステップS251Eにおいては、マイクロプロセッサ100コア1は、参照先状態である出力同期バッファ1に格納されている出力データを、送信バッファPLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045にコピーする。制御プログラム1が実行中状態である場合ステップS270において実行中において実行されるS272Eにおいては、マイクロプロセッサ100コア1は、制御プログラム1の実行状態を実行終了に設定し、演算用バッファ1に格納されている出力データを、書込先状態の出力同期バッファ1出力同期バッファ1D,1E,1Fのいずれかにコピーした上で、書込先状態であった出力同期バッファ1出力同期バッファ1D,1E,1Fのいずれかを待機状態に設定するとともに、待機状態であった出力同期バッファ1出力同期バッファ1D,1E,1Fのいずれかを書込先状態に設定した上で、最新出力データ更新フラグ1をオフからオンに変更するステップS272E。制御プログラム1が継続実行中状態である場合ステップS270において継続実行中において実行されるステップS274Eにおいては、マイクロプロセッサ100コア1は、制御プログラム1の実行状態を実行終了に設定し、演算用バッファ1に格納されている出力データを、書込先状態の出力同期バッファ1出力同期バッファ1D,1E,1Fのいずれかにコピーした上で、書込先状態であった出力同期バッファ1出力同期バッファ1D,1E,1Fのいずれかを待機状態に設定するとともに、待機状態であった出力同期バッファ1出力同期バッファ1D,1E,1Fのいずれかを書込先状態に設定した上で、最新出力データ更新フラグ1をオフからオンに変更するステップS274E。さらに、ステップS274Eにおいては、最新入力データ更新フラグ1がオンに設定されていれば、待機状態であった入力同期バッファ1入力同期バッファ1A,1B,1Cのいずれかを参照先状態に設定するとともに、参照先状態であった入力同期バッファ1入力同期バッファ1A,1B,1Cのいずれかを待機状態に設定した上で、最新入力データ更新フラグ1をオンからオフに変更する。このとき、最新入力データ更新フラグ1がオフであれば、入力同期バッファ1の待機状態および参照先状態は変更されず、最新入力データ更新フラグ1はオフのまま維持される。その後、制御プログラム1の実行状態を実行中に設定するとともに、コア2に制御プログラム1の実行を開始させる。m4:まとめ上述したように、実施の形態8においては、システムプログラム210は、PLC1の制御動作の実行準備処理として、以下のa~eの処理を含む。a受信された入力データを格納する受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046および送信されるべき出力データを格納する送信バッファ図4に示すPLCシステムバス送信バッファ1043およびフィールドネットワーク送信バッファ1045をメインメモリ104記憶手段内に生成する処理図22に示すステップS1。b制御プログラムから参照される入力データごとに、その制御プログラムが入力データの参照先とする入力同期バッファ任意の1または複数の入力同期バッファをメインメモリ104記憶手段内に生成する処理図22に示すステップS1。c制御プログラムが出力データを格納する演算用バッファ図21に示す演算用バッファ1をメインメモリ104記憶手段内に生成する処理図22に示すステップS1。d送信バッファにコピーされる出力データが格納される、第1出力同期バッファ、第2出力同期バッファおよび第3出力同期バッファ図21に示す出力同期バッファ1E,1F,1Gを出力同期バッファの組として、出力データごとにメインメモリ104記憶手段内に生成する処理図22に示すステップS1。e制御プログラムごとに最新出力データ更新フラグをメインメモリ104記憶手段内に生成する処理図22に示すステップS1。第1出力同期バッファ、第2出力同期バッファおよび第3出力同期バッファには、演算用バッファから出力データをコピー可能な状態である書込先状態、送信バッファにコピーするための参照が可能な状態である参照先状態、待機状態のいずれかの状態が重複せずに付与される。また、実施の形態8においては、システムプログラム210は、PLC1の制御動作の実行制御処理として、以下のf~iの処理を含む。f受信された入力データを受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046からその入力データに対応する入力同期バッファにコピーする入力コピー処理図22に示すステップS256C。g制御プログラムを実行開始させる制御プログラム開始処理図22に示すステップS262C。h制御プログラムの実行が終了すると、その制御プログラムの実行により生成された出力データを演算用バッファから書込先状態である出力同期バッファにコピーし、さらに、コピー先となった書込先状態である出力同期バッファ、および、その出力同期バッファと同じ組の中で待機状態である出力同期バッファについて、書込先状態と待機状態とを入れ替える第4入替処理を実行し、かつ、当該出力コピーに関連する最新出力データ更新フラグをオンにする出力同期バッファ格納処理図22に示すステップS272E。i最新データを格納している出力同期バッファが待機状態であることを条件としてすなわち、実行開始させる制御プログラムの出力同期バッファに関連する最新出力データ更新フラグがオンであることを条件として、待機状態である出力同期バッファ、および、参照先状態である出力同期バッファについて、待機状態と参照先状態とを入れ替える第5入替処理を実行し、当該オン状態であった最新出力データ更新フラグをオフにし、および出力データを参照先状態となった出力同期バッファから送信バッファにコピーする出力コピー処理図22に示すステップS251E。上述のような実施の形態8に係る処理方式によれば、各制御プログラムについて、その制御プログラムが生成する出力データごとに出力同期バッファが3つ設けられており、常にいずれかの出力同期バッファが書込先状態となっている。そのため、いつでも演算バッファから出力同期バッファに出力データをコピーできる。また、実施の形態8に係る処理方式によれば、制御プログラムの実行終了時に演算バッファからコピーされた最新データが格納されている出力同期バッファを参照先送信バッファへのコピー元とする手段として、出力同期バッファ格納処理において出力同期バッファの書込先状態と待機状態の入替第4入替処理を行い、出力コピー処理において、最新出力データ更新フラグの状態に基づいて、出力同期バッファの待機状態と参照先状態の入替第5入替処理を行う。たとえば、演算バッファからコピーが行われたときに書込先状態であった出力同期バッファは、待機状態を経て、参照先状態となる。出力データの数が多い場合には、演算バッファから出力同期バッファへの出力データのコピー、および、出力同期バッファから送信バッファへの出力データのコピーには、それぞれある程度の時間を要する。実施の形態8の場合には、それらのコピーの実行時期が重なった場合に並行してコピーを実行するように設計することが可能であり、より有利となる。なお、出力データを出力同期バッファから送信バッファにコピーする出力コピー処理は、送信実行の直前に実行するのが好ましい。たとえば、図21のように各制御サイクルの冒頭近くで送信する場合であれば、制御サイクル開始後、まず出力コピー処理を実行し、続いて送信が実行されるようにするとよい。<N.最新データ型の3出力同期バッファ入替方式実施の形態9>n1:概要上述したように、実施の形態9においては、コピーされた最新データが格納されている同期バッファを最新状態として識別するための情報を扱う。n2:シーケンス図実施の形態9に係る出力方向の動作は、上述した図21のシーケンス図に示す。但し、図21は、上述の実施の形態8と共通的に説明するためのシーケンス図であり、実施の形態9においては、出力同期バッファ1D,1E,1Fの時間軸に沿って示した最新状態の識別についてのみ着目し、最新出力データ更新フラグ1は不要となる。n3:フローチャート図23は、実施の形態9に係る実行動作を示すフローチャートである。図23のフローチャートにおいては、図22に示すフローチャートと同一の処理を実行するステップについては、図22と同一のステップ番号を付与している。図23に示すフローチャートは、図22に示すフローチャートと比較して、ステップS251E,S272EおよびS274Eに代えて、それぞれステップS251F,S272FおよびS274Fの処理が実行される点が異なっている。以下、主としてこの相違点について説明し、その他の処理についての詳細な説明は繰り返さない。制御サイクル開始の割り込み信号を受けた場合ステップS250においてYESに実行されるステップS251Fにおいて、マイクロプロセッサ100コア1は、最新状態の出力同期バッファ1出力同期バッファ1D,1E,1Fのいずれかが待機状態に設定されていれば、待機状態であった出力同期バッファ1出力同期バッファ1D,1E,1Fのいずれかを参照先状態に設定するとともに、参照先状態であった出力同期バッファ1出力同期バッファ1D,1E,1Fのいずれかを待機状態に設定するステップS251F。なお、最新状態の出力同期バッファ1が参照先状態に設定されていれば、出力同期バッファ1の待機状態および参照先状態については変更せず、そのまま維持する。さらに、ステップS251Fにおいては、マイクロプロセッサ100コア1は、参照先状態である出力同期バッファ1に格納されている出力データを、送信バッファPLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045にコピーする。制御プログラム1が実行中状態である場合ステップS270において実行中において実行されるS272Fにおいては、マイクロプロセッサ100コア1は、制御プログラム1の実行状態を実行終了に設定し、演算用バッファ1に格納されている出力データを、書込先状態の出力同期バッファ1出力同期バッファ1D,1E,1Fのいずれかにコピーした上で、書込先状態であった出力同期バッファ1出力同期バッファ1D,1E,1Fのいずれかを待機状態に設定するとともに、最新状態にも設定し、待機状態であった出力同期バッファ1出力同期バッファ1D,1E,1Fのいずれかを書込先状態に設定するステップS272F。制御プログラム1が継続実行中状態である場合ステップS270において継続実行中において実行されるステップS274Fにおいては、マイクロプロセッサ100コア1は、制御プログラム1の実行状態を実行終了に設定し、演算用バッファ1に格納されている出力データを、書込先状態の出力同期バッファ1出力同期バッファ1D,1E,1Fのいずれかにコピーした上で、書込先状態であった出力同期バッファ1出力同期バッファ1D,1E,1Fのいずれかを待機状態に設定するとともに、最新状態にも設定し、待機状態であった出力同期バッファ1出力同期バッファ1D,1E,1Fのいずれかを書込先状態に設定するステップS274F。さらに、ステップS274Fにおいては、最新状態の入力同期バッファ1が待機状態に設定されていれば、待機状態であった入力同期バッファ1入力同期バッファ1A,1B,1Cのいずれかを参照先状態に設定するとともに、参照先状態であった入力同期バッファ1入力同期バッファ1A,1B,1Cのいずれかを待機状態に設定する。このとき、最新状態の入力同期バッファ1が参照先状態に設定されていなければ、入力同期バッファ1の待機状態および待機状態は変更されず、そのまま維持する。その後、制御プログラム1の実行状態を実行中に設定するとともに、コア2に制御プログラム1の実行を開始させる。m4:まとめ上述したように、実施の形態9においては、システムプログラム210は、PLC1の制御動作の実行準備処理として、以下のa~eの処理を含む。a受信された入力データを格納する受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046および送信されるべき出力データを格納する送信バッファ図4に示すPLCシステムバス送信バッファ1043およびフィールドネットワーク送信バッファ1045をメインメモリ104記憶手段内に生成する処理図23に示すステップS1。b制御プログラムから参照される入力データごとに、その制御プログラムが入力データの参照先とする入力同期バッファ任意の1または複数の入力同期バッファをメインメモリ104記憶手段内に生成する処理図23に示すステップS1。c制御プログラムが出力データを格納する演算用バッファ図21に示す演算用バッファ1をメインメモリ104記憶手段内に生成する処理図23に示すステップS1。d送信バッファにコピーされる出力データが格納される、第1出力同期バッファ、第2出力同期バッファおよび第3出力同期バッファ図21に示す出力同期バッファ1E,1F,1Gを出力同期バッファの組として、出力データごとにメインメモリ104記憶手段内に生成する処理図23に示すステップS1。e最新状態記録領域をメインメモリ104記憶手段内に生成する処理図23に示すステップS1。第1出力同期バッファ、第2出力同期バッファおよび第3出力同期バッファには、演算用バッファから出力データをコピー可能な状態である書込先状態、送信バッファにコピーするための参照が可能な状態である参照先状態、待機状態のいずれかの状態が重複せずに付与される。また、実施の形態9においては、システムプログラム210は、PLC1の制御動作の実行制御処理として、以下のf~iの処理を含む。f受信された入力データを受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046からその入力データに対応する入力同期バッファにコピーする入力コピー処理図23に示すステップS256D。g制御プログラムを実行開始させる制御プログラム開始処理図23に示すステップS262D。h制御プログラムの実行が終了すると、その制御プログラムの実行により生成された出力データを演算用バッファから書込先状態である出力同期バッファにコピーし、さらに、コピー先となった書込先状態である出力同期バッファ、および、その出力同期バッファと同じ組の中で待機状態である出力同期バッファについて、書込先状態と待機状態とを入れ替える第4入替処理を実行し、かつ、コピー先の出力同期バッファが最新状態であることを最新状態記録領域に記録する出力同期バッファ格納処理図23に示すステップS272F。i最新状態記録領域の内容によって特定される最新状態である出力同期バッファが待機状態であることを条件として、待機状態である出力同期バッファ、および、参照先状態である出力同期バッファについて、待機状態と参照先状態とを入れ替える第5入替処理を実行し、出力データを参照先状態となった出力同期バッファから送信バッファにコピーする出力コピー処理図23に示すステップS251F。上述のような実施の形態9に係る処理方式によれば、各制御プログラムについて、その制御プログラムが生成する出力データごとに出力同期バッファが3つ設けられており、常にいずれかの出力同期バッファが書込先状態となっている。そのため、いつでも演算バッファから出力同期バッファに出力データをコピーできる。また、実施の形態9に係る処理方式によれば、制御プログラムの実行終了時に演算バッファからコピーされた最新データが格納されている出力同期バッファを参照先送信バッファへのコピー元とする手段として、出力同期バッファ格納処理において出力同期バッファの書込先状態と待機状態の入替第4入替処理を行い、出力コピー処理において、出力同期バッファの最新状態に基づいて、出力同期バッファの待機状態と参照先状態の入替第5入替処理を行う。たとえば、演算バッファからコピーが行われたときに書込先状態であった出力同期バッファは、待機状態を経て、参照先状態となる。出力データの数が多い場合には、演算バッファから出力同期バッファへの出力データのコピー、および、出力同期バッファから送信バッファへの出力データのコピーには、それぞれある程度の時間を要する。実施の形態9の場合には、それらのコピーの実行時期が重なった場合に並行してコピーを実行するように設計することが可能であり、より有利となる。なお、出力データを出力同期バッファから送信バッファにコピーする出力コピー処理は、送信実行の直前に実行するのが好ましい。たとえば、図21のように各制御サイクルの冒頭近くで送信する場合であれば、制御サイクル開始後、まず出力コピー処理を実行し、続いて送信が実行されるようにするとよい。m5:さらなる拡張上述の実施の形態8および9についての説明により、実施の形態6および7の入力方式を出力方式にも応用できることが必然的に理解されよう。ここでは、その詳細な説明は行わないが、実施の形態2~5に係る入力方式についても、それぞれ出力方式に応用することができる。さらに、それぞれの入力方式とそれぞれの出力方式とは任意に組み合わせて実施することができる。<O.実行サイクル同期型単一バッファ式実施の形態10>o1:概要制御プログラムの実行サイクルが複数の制御サイクルにわたる場合であって、他に実行優先度のより高い制御プログラムが存在する場合には、実行サイクル内の最初の制御サイクルから制御プログラムの実行を開始できないということが起こりうる。上述の実施の形態1~9では、そのような場合に、実際に制御プログラムの実行を開始する制御サイクルと関係する受信タイミングに受信した最新の入力データを使用することが可能である。しかし、そうする代わりに、制御プログラムの実行に使用する入力データを、制御プログラムの実行サイクルが開始する制御サイクルと関係する受信タイミングにおいて受信した入力データに統一することにより、入力データの実効的な更新周期を一定にしたい場合がある。実施の形態10の入力方式によれば、このような要求を満たすことができる。なお、上記の制御サイクルと関係する受信タイミングとは、以下のようなタイミングを意味する。すなわち、制御サイクル内で入力データの受信後に制御プログラムを実行するスケジューリングを採用している場合には、当該制御サイクルにおける受信のタイミングである。また、制御サイクル内で制御プログラムの実行後に入力データの受信をするスケジューリングを採用している場合には、当該制御サイクルの直前の制御サイクルにおける受信のタイミングである。また、別の状況として、制御プログラムの実行サイクルが複数の制御サイクルにわたる場合は、実行サイクル内の最後の制御サイクルが開始するより前に制御プログラムの実行が終了し、出力データが生成されているということが起こりうる。上述の実施の形態1~9では、そのような場合に、最後の制御サイクルと関係する送信タイミングを待たずに更新された出力データを送信することが可能である。しかし、そうする代わりに、更新された出力データの送信タイミングを実行サイクル内の最後の制御サイクルと関係する送信タイミングに統一することにより、送信される出力データの実効的な更新周期を一定にしたい場合がある。実施の形態10の出力方式によれば、このような要求を満たすことができる。なお、上記制御サイクルと関係する送信タイミングとは、以下のようなタイミングを意味する。すなわち、制御サイクル内で出力データの送信後に制御プログラムを実行するスケジューリングを採用している場合には、当該制御サイクルの直後の制御サイクルにおける送信のタイミングである。また、制御サイクル内で制御プログラムの実行後に出力データの送信をするスケジューリングを採用している場合には、当該制御サイクルにおける送信のタイミングである。o2:シーケンス図図24は、実施の形態10に係る入力方向の動作を示すシーケンス図である。図25は、実施の形態10に係る出力方向の動作を示すシーケンス図である。実施の形態10に係る入力方向/出力方向の動作については、上述の実施の形態1における動作と共通する点も多いので、主として両者の間の相違点について説明し、その他の共通な部分についての詳細な説明は繰り返さない。まず、図24を参照して、実施の形態10に係る入力方式について説明する。入力方式について、実施の形態1では、制御プログラムが実行中の間、入力同期バッファが書込禁止状態とされ、受信バッファから入力同期バッファへの入力データのコピーは、コピー先の入力同期バッファが書込禁止状態である場合を除き、毎制御サイクルにおいて行われる。これに対し、実施の形態10では、受信バッファから入力同期バッファへの入力データのコピーは、制御プログラムの実行サイクルが開始した制御サイクルにおいてのみ行われる。このコピー制御は、現在の制御サイクルが実行サイクルの最初の制御サイクルに該当するかどうかを監視することによって行う。そうする代わりに、入力同期バッファへのコピーを行えばその入力同期バッファを書込禁止状態とし、制御プログラムの実行サイクルが終了すれば書込禁止状態を解除することにより、入力同期バッファへのコピーを実行サイクルが開始した最初の制御サイクルにおいてのみ実行するようにしてもよい。次に、図25を参照して、実施の形態10に係る出力方式について説明する。出力方式について、実施の形態1では、制御プログラムの実行が終了すると、出力同期バッファから送信バッファへの出力データのコピーが行われる。その後、次の制御サイクルが開始すると、送信バッファから出力データが送信される。これに対し、実施の形態10では、制御プログラムの実行サイクルが開始すると、出力同期バッファから送信バッファへの出力データのコピーが行われる。その後、送信バッファから出力データが送信される。o3:フローチャート図26は、実施の形態10に係る実行動作を示すフローチャートである。図26を参照して、マイクロプロセッサ100は、システムプログラム210における、PLC1の制御動作の実行準備処理を実行するステップS1。続いて、マイクロプロセッサ100は、システムプログラム210における、PLC1の制御動作の実行制御処理を実行する図5に示すステップS2。このPLC1の制御動作の実行制御処理の詳細な一例がステップS300~S348に相当する。まず、マイクロプロセッサ100は、制御サイクル開始の割り込み信号を待つステップS300。制御サイクル開始の割り込み信号を受けるとステップS300においてYES、マイクロプロセッサ100は、制御プログラム1の実行サイクルが現在の制御サイクルから開始する場合には、制御プログラム1の実行状態を実行前状態に設定するとともに、出力同期バッファ1に格納されている出力データを送信バッファPLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045にコピーするステップS302。続いて、マイクロプロセッサ100は、制御プログラム2の実行サイクルが現在の制御サイクルから開始する場合には、制御プログラム2の実行状態を実行前状態に設定するとともに、出力同期バッファ2に格納されている出力データを送信バッファPLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045にコピーするステップS304。続いて、マイクロプロセッサ100は、通信回路PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140に対して送信実行を指示するステップS306。送信実行の指示に応答して、送信バッファPLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045に格納されているデータが他のユニットなどへ送信される。その後、マイクロプロセッサ100は、通信回路PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140からの受信完了通知を待つステップS308。通信回路からの受信完了通知を受けるとステップS308においてYES、マイクロプロセッサ100は、制御プログラム1の実行サイクルが現在の制御サイクルから開始する場合には、受信バッファPLCシステムバス受信バッファ1044および/またはフィールドネットワーク受信バッファ1046に格納されている入力データを、入力同期バッファ1にコピーしステップS310、制御プログラム2の実行サイクルが現在の制御サイクルから開始する場合には、受信バッファPLCシステムバス受信バッファ1044および/またはフィールドネットワーク受信バッファ1046に格納されている入力データを、入力同期バッファ2にコピーするステップS312。続いて、マイクロプロセッサ100は、制御プログラム1の実行状態を判断するステップS320。制御プログラム1が実行前状態である場合ステップS320において実行前には、マイクロプロセッサ100は、制御プログラム1の実行状態を実行中に設定し、制御プログラム1の実行を開始するステップS322。そして、処理はステップS326へ進む。制御プログラム1が実行中状態である場合ステップS320において実行中には、マイクロプロセッサ100は、制御プログラム1の未実行の部分の実行を開始するステップS324。そして、処理はステップS326へ進む。制御プログラム1が実行終了状態である場合ステップS320において実行終了には、処理はステップS340へ進む。ステップS322またはS334において、制御プログラム1の実行を開始または、再開すると、マイクロプロセッサ100は、制御プログラム1の実行終了通知、または、次の制御サイクル開始の割り込み信号を待つステップS326。なお、ステップS232またはS234において、制御プログラム1の実行が開始または、再開されることで、マイクロプロセッサ100で実行される処理は、システムプログラムによる処理から制御プログラム1による処理に切り替わる。すなわち、制御プログラム1の実行開始から実行終了するまでの間は、マイクロプロセッサ100は、システムプログラムを実行しない。そして、制御プログラム1の実行が終了するまでに次の制御サイクル開始の割り込みがあれば、リアルタイムOS200が、マイクロプロセッサ100での制御プログラム1の実行を中断させ、システムプログラムの実行を再開させる。あるいは、制御プログラム1の実行が終了した通知制御プログラム1の実行終了通知があれば、マイクロプロセッサ100における実行対象は、制御プログラム2からシステムプログラムへ戻る。制御プログラム1の実行終了通知を受けるとステップS336において実行終了通知、マイクロプロセッサ100は、制御プログラム1の実行状態を実行終了に設定するステップS328。そして、処理はステップS340へ進む。一方、制御プログラム1の実行終了通知までに次の制御サイクル開始の割り込みを受けるとステップS336において制御サイクル開始、マイクロプロセッサ100で実行中の制御プログラム1は中断され、マイクロプロセッサ100は、ステップS302以下の処理を再度実行する。ステップS340において、マイクロプロセッサ100は、制御プログラム2の実行状態を判断するステップS340。制御プログラム2が実行前状態である場合ステップS340において実行前には、マイクロプロセッサ100は、制御プログラム2の実行状態を実行中に設定し、制御プログラム2の実行を開始するステップS342。そして、処理はステップS346へ進む。制御プログラム2が実行中状態である場合ステップS340において実行中には、マイクロプロセッサ100は、制御プログラム2の未実行の部分の実行を開始するステップS344。そして、処理はステップS346へ進む。制御プログラム2が実行終了状態である場合ステップS340において実行終了には、処理はステップS300へ進む。ステップS342またはS344において、制御プログラム2の実行を開始または、再開すると、マイクロプロセッサ100は、制御プログラム2の実行終了通知、または、次の制御サイクル開始の割り込み信号を待つステップS346。制御プログラム2の実行終了通知を受けるとステップS346において実行終了通知、マイクロプロセッサ100は、制御プログラム2の実行状態を実行終了に設定するステップS348。そして、処理はステップS300へ進む。一方、制御プログラム2の実行終了通知までに次の制御サイクル開始の割り込みを受けるとステップS346において制御サイクル開始、マイクロプロセッサ100で実行中の制御プログラム2は中断され、マイクロプロセッサ100は、ステップS302以下の処理を再度実行する。o4:まとめ上述したように、実施の形態10においては、システムプログラム210は、入力データの入力に関するPLC1の制御動作の実行準備処理として、以下のaおよびbの処理を含む。なお、入力データの受信は制御サイクルごとに実行される。a受信された入力データを格納する受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046をメインメモリ104記憶手段内に生成する処理図26に示すステップS1。b制御プログラムから参照される入力データごとに、その制御プログラムが入力データの参照先とする1つの入力同期バッファ図24に示す入力同期バッファ1および2をメインメモリ104記憶手段内図4に示す入力同期バッファ領域1042bに生成する処理図26に示すステップS1。また、実施の形態10においては、システムプログラム210は、PLC1の制御動作の実行制御処理として、以下のcまたはdの処理を含む。c受信された入力データを、当該入力データが制御プログラムの実行サイクルが開始した制御サイクルと関係する受信タイミングにおいて受信されたことを条件として、受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046からその入力データに対応する入力同期バッファにコピーする入力コピー処理図26に示すステップS310またはS312。d制御プログラムを制御サイクルの整数倍の実行サイクルごとに実行開始させる制御プログラム開始処理図26に示すステップS322またはS342。上述のような実施の形態10に係る入力データに関する処理方式によれば、制御プログラムの実行サイクルが複数の制御サイクルにわたる場合に、制御プログラムの実行に使用する入力データを、制御プログラムの実行サイクルが開始する制御サイクルと関係する受信タイミングにおいて受信した入力データに統一することができる。なお、上述の制御プログラムを制御サイクルの整数倍の実行サイクルごとに実行開始させるとは、実行サイクル時間が変動する場合を排除する意味ではなく、たとえば、制御プログラムがその実行サイクル内に終了しない場合に、1制御サイクル時間ずつ、実行サイクルを延長する場合を含んでいる。一方、実施の形態10においては、システムプログラム210は、出力データの出力に関する処理を含めると、PLC1の制御動作の実行準備処理として、以下のα~γの処理を含む。α受信された入力データを格納する受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046および送信されるべき出力データを格納する送信バッファ図4に示すPLCシステムバス送信バッファ1043およびフィールドネットワーク送信バッファ1045をメインメモリ104記憶手段内に生成する処理図26に示すステップS1。β制御プログラムから参照される入力データごとに、その制御プログラムが入力データの参照先とする1つの入力同期バッファ図24に示す入力同期バッファ1および2をメインメモリ104記憶手段内図4に示す入力同期バッファ領域1042bに生成する処理図26に示すステップS1。γ送信バッファにコピーされる出力データが格納される出力同期バッファ図25に示す出力同期バッファ1および2を出力データごとにメインメモリ104記憶手段内図4に示す出力同期バッファ領域1042aに生成する処理図26に示すステップS1。また、実施の形態10においては、システムプログラム210は、PLC1の制御動作の実行制御処理として、以下のδ~ζの処理を含む。δ受信された入力データを受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046からその入力データに対応する入力同期バッファにコピーする入力コピー処理図26に示すステップS310またはS312。ε制御プログラムを実行開始させる制御プログラム開始処理図26に示すステップS322またはS342。ζ出力データを、その出力データを生成した制御プログラムが実行された実行サイクルの次の実行サイクルの最初の制御サイクルにおいてその出力データが送信バッファから送信されることになるタイミングで、出力同期バッファから送信バッファにコピーする出力コピー処理図26に示すステップS302またはS304。上述のような実施の形態10に係る出力データに関する処理方式によれば、制御プログラムの実行サイクルが複数の制御サイクルにわたる場合に、更新された出力データの送信タイミングを実行サイクル内の最後の制御サイクルと関係する送信タイミングに統一することができる。なお、出力データの送信が制御サイクルごとに行われる場合は、制御プログラムの実行サイクル内の最後の制御サイクルと関係する送信タイミング以外の送信タイミングにおいては、それ以前に更新されて送信バッファに格納されている出力データが繰り返し送信される。<P.実行サイクル同期型更新フラグ型3バッファ入替方式実施の形態11>p1:概要実施の形態11ならびに後述する実施の形態12および13は、上述の実施の形態10と同様に、実施の形態6~9において説明した3バッファ入替方式を応用して、制御プログラムの実行サイクルに同期して実効的な入力データの受信および出力データの送信を実現する形態である。p2:シーケンス図図27は、実施の形態11に係る入力方向の動作を示すシーケンス図である。図28は、実施の形態11に係る出力方向の動作を示すシーケンス図である。実施の形態11における制御プログラム1および2は、実施の形態10の図24および図25における制御プログラム1および2と同じプログラムであり、同様のスケジュールで実行されるが、図27および図28においては制御プログラム2のみを示し、制御プログラム1は図示しない。実施の形態11に係る入力方向/出力方向の動作については、上述の実施の形態6および8における動作と共通する点も多いので、主として相違点について説明し、その他の共通な部分についての詳細な説明は繰り返さない。まず、図27を参照して、実施の形態11に係る入力方式について説明する。入力方式について、実施の形態6では、制御プログラムの実行開始前に、最新入力データ更新フラグがオンであれば、入力同期バッファの待機状態と参照状態とを入れ替え、最新入力データ更新フラグをオフにする。これに対し、実施の形態11では、受信バッファから入力同期バッファに入力データをコピーした後に、制御プログラムの実行サイクル内の最初の制御サイクルであることを条件として、最新入力データ更新フラグがオンであれば、入力同期バッファの待機状態と参照状態とを入れ替え、最新入力データ更新フラグをオフにする。次に、図28を参照して、実施の形態11に係る出力方式について説明する。出力方式について、出力方式について、実施の形態8では、制御サイクルが開始すると、最新出力データ更新フラグがオンであれば、出力同期バッファの待機状態と参照状態とを入れ替え、最新出力データ更新フラグをオフにする。これに対し、実施の形態11では、制御プログラムの実行サイクルが開始すると、最新出力データ更新フラグがオンであれば、出力同期バッファの待機状態と参照状態とを入れ替え、最新出力データ更新フラグをオフにする。p3:フローチャート図29は、実施の形態11に係る実行動作を示すフローチャートである。図29においては、制御プログラム1に関する処理については記載しない。図29を参照して、マイクロプロセッサ100は、システムプログラムにおける、PLC1の制御動作の実行準備処理を実行するステップS1。続いて、マイクロプロセッサ100は、システムプログラム210における、PLC1の制御動作の実行制御処理を実行する図5に示すステップS2。このPLC1の制御動作の実行制御処理の詳細な一例がステップS350~S376に相当する。まず、マイクロプロセッサ100は、制御サイクル開始の割り込み信号を待つステップS350。制御サイクル開始の割り込み信号を受けるとステップS350においてYES、マイクロプロセッサ100は、制御プログラム2の実行サイクルが現在の制御サイクルから開始する場合には、制御プログラム2の実行状態を実行前状態に設定するステップS352。続いて、マイクロプロセッサ100は、制御プログラム2の実行サイクルが現在の制御サイクルから開始する場合には、最新出力データ更新フラグ1がオンに設定されていれば、待機状態であった出力同期バッファ2出力同期バッファ2D,2E,2Fのいずれかを参照先状態に設定するとともに、参照先状態であった出力同期バッファ2出力同期バッファ2D,2E,2Fのいずれかを待機状態に設定した上で、最新出力データ更新フラグ2をオンからオフに変更するステップS354。このとき、最新出力データ更新フラグ2がオフであれば、出力同期バッファ2の待機状態および参照先状態は変更されず、最新出力データ更新フラグ2はオフのまま維持される。マイクロプロセッサ100は、参照先状態の出力同期バッファ2に格納されている出力データを送信バッファPLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045にコピーするステップS356。続いて、マイクロプロセッサ100は、通信回路PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140に対して送信実行を指示するステップS358。送信実行の指示に応答して、送信バッファPLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045に格納されているデータが他のユニットなどへ送信される。その後、マイクロプロセッサ100は、通信回路PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140からの受信完了通知を待つステップS360。通信回路からの受信完了通知を受けるとステップS360においてYES、マイクロプロセッサ100は、受信バッファPLCシステムバス受信バッファ1044および/またはフィールドネットワーク受信バッファ1046に格納されている入力データを、書込先状態の入力同期バッファ2入力同期バッファ2A,2B,2Cのいずれかにコピーするとともに、書込先状態であった入力同期バッファ2入力同期バッファ2A,2B,2Cのいずれかを待機状態に設定するとともに、待機状態であった入力同期バッファ2入力同期バッファ2A,2B,2Cのいずれかを書込先状態に設定した上で、最新入力データ更新フラグ2をオフからオンに変更するステップS362。続いて、マイクロプロセッサ100は、制御プログラム2の実行サイクルが現在の制御サイクルから開始する場合には、最新入力データ更新フラグ1がオンに設定されていれば、待機状態であった入力同期バッファ2入力同期バッファ2A,2B,2Cのいずれかを参照先状態に設定するとともに、参照先状態であった入力同期バッファ2入力同期バッファ2A,2B,2Cのいずれかを待機状態に設定した上で、最新入力データ更新フラグ2をオンからオフに変更するステップS364。このとき、制御プログラム2の実行サイクルが現在の制御サイクルから開始していなければ、入力同期バッファ2の参照先状態および待機状態は変更されず、最新入力データ更新フラグ2はオフのまま維持される。その後、マイクロプロセッサ100は、制御プログラム1についての処理を実行するステップS366。ステップS366においてマイクロプロセッサ100が制御プログラム1の実行を開始することで、マイクロプロセッサ100で実行される処理は、システムプログラムによる処理から制御プログラム1による処理に切り替わる。すなわち、制御プログラム1の実行開始から実行終了するまでの間は、マイクロプロセッサ100は、システムプログラムを実行しない。そして、制御プログラム1の実行が終了するまでに次の制御サイクル開始の割り込みがあれば、リアルタイムOS200が、マイクロプロセッサ100での制御プログラム1の実行を中断させ、システムプログラムの実行を再開させる。あるいは、制御プログラム1の実行が終了した通知制御プログラム1の実行終了通知を受けて、制御プログラム1についての所定の処理を実行した後、処理はステップS368へ進む。ステップS368において、マイクロプロセッサ100は、制御プログラム2の実行状態を判断するステップS368。制御プログラム2が実行前状態である場合ステップS368において実行前には、マイクロプロセッサ100は、制御プログラム2の実行状態を実行中に設定し、制御プログラム2の実行を開始するステップS370。そして、処理はステップS374へ進む。制御プログラム2が実行中状態である場合ステップS368において実行中には、マイクロプロセッサ100は、制御プログラム2の未実行の部分の実行を開始するステップS372。そして、処理はステップS374へ進む。制御プログラム2が実行終了状態である場合ステップS368において実行終了には、処理はステップS350へ進む。ステップS370またはS372において、制御プログラム2の実行を開始または、再開すると、マイクロプロセッサ100は、制御プログラム2の実行終了通知、または、次の制御サイクル開始の割り込み信号を待つステップS374。制御プログラム2の実行終了通知を受けるとステップS374において実行終了通知、マイクロプロセッサ100は、制御プログラム2の実行状態を実行終了に設定し、演算用バッファ2に格納されている出力データを、書込先状態の出力同期バッファ2出力同期バッファ2D,2E,2Fのいずれかにコピーした上で、書込先状態であった出力同期バッファ2出力同期バッファ2D,2E,2Fのいずれかを待機状態に設定するとともに、待機状態であった出力同期バッファ2出力同期バッファ2D,2E,2Fのいずれかを書込先状態に設定した上で、最新出力データ更新フラグ2をオフからオンに変更するステップS376。そして、処理はステップS350へ進む。一方、制御プログラム2の実行終了通知までに次の制御サイクル開始の割り込みを受けるとステップS374において制御サイクル開始、マイクロプロセッサ100で実行中の制御プログラム2は中断され、マイクロプロセッサ100は、ステップS352以下の処理を再度実行する。p4:まとめ実施の形態11によれば、PLCのシステムプログラムが実施の形態6~9に示す3バッファ方式を採用している場合に、アルゴリズムのわずかな変更で、制御プログラムの実行サイクルに同期した入力データの受信および出力データの送信を実現することができる。<Q.実行サイクル同期型最新データ型3バッファ入替方式実施の形態12>q1:概要上述したように、実施の形態12は、実施の形態6~9において説明した3バッファ入替方式を応用して、制御プログラムの実行サイクルに同期して実効的な入力データの受信および出力データの送信を実現する形態である。q2:シーケンス図実施の形態12に係る入力方向/出力方向の動作については、上述の実施の形態7および9における動作と共通する点も多いので、主として相違点について説明し、その他の共通な部分についての詳細な説明は繰り返さない。まず、図27を参照して、実施の形態12に係る入力方式について説明する。入力方式について、実施の形態7では、制御プログラムの実行開始前に、最新状態の入力同期バッファが待機状態であれば、入力同期バッファの待機状態と参照状態とを入れ替える。これに対し、実施の形態11では、受信バッファから入力同期バッファに入力データをコピーした後に、制御プログラムの実行サイクル内の最初の制御サイクルであることを条件として、最新状態の入力同期バッファが待機状態であれば、入力同期バッファの待機状態と参照状態とを入れ替える。次に、図28を参照して、実施の形態12に係る出力方式について説明する。出力方式について、実施の形態9では、制御サイクルが開始すると、最新状態の出力同期バッファが待機状態であれば、出力同期バッファの待機状態と参照状態とを入れ替える。これに対し、実施の形態11では、制御プログラムの実行サイクルが開始すると、最新状態の出力同期バッファが待機状態であれば、出力同期バッファの待機状態と参照状態とを入れ替える。q3:フローチャート図30は、実施の形態12に係る実行動作を示すフローチャートである。図30においても、制御プログラム1に関する処理については記載しない。図30に示すフローチャートは、図29に示すフローチャートと比較して、ステップS354,S362,S364,S376に代えて、それぞれステップS354A,S362A,S364A,S376Aの処理が実行される点が異なっている。以下、主としてこの相違点について説明し、その他の処理についての詳細な説明は繰り返さない。ステップS352に続いて実行されるステップS354Aにおいて、マイクロプロセッサ100は、制御プログラム2の実行サイクルが現在の制御サイクルから開始する場合には、最新状態の出力同期バッファ2出力同期バッファ2D,2E,2Fのいずれかが待機状態に設定されていれば、待機状態であった出力同期バッファ2出力同期バッファ2D,2E,2Fのいずれかを参照先状態に設定するとともに、参照先状態であった出力同期バッファ2出力同期バッファ2D,2E,2Fのいずれかを待機状態に設定するステップS354A。このとき、最新状態の出力同期バッファ2が参照先状態であれば、出力同期バッファ2の待機状態および参照先状態は変更されず、そのまま維持される。通信回路からの受信完了通知を受けた場合ステップS360においてYESに実行されるステップS362Aにおいて、マイクロプロセッサ100は、受信バッファPLCシステムバス受信バッファ1044および/またはフィールドネットワーク受信バッファ1046に格納されている入力データを、書込先状態の入力同期バッファ2入力同期バッファ2A,2B,2Cのいずれかにコピーするとともに、書込先状態であった入力同期バッファ2入力同期バッファ2A,2B,2Cのいずれかを待機状態に設定するとともに最新状態にも設定し、さらに、待機状態であった入力同期バッファ2入力同期バッファ2A,2B,2Cのいずれかを書込先状態に設定するステップS362A。ステップS362Aに続いて実行されるステップS364Aにおいて、マイクロプロセッサ100は、制御プログラム2の実行サイクルが現在の制御サイクルから開始する場合には、最新状態の出力同期バッファ2が待機状態に設定されていれば、待機状態であった入力同期バッファ2入力同期バッファ2A,2B,2Cのいずれかを参照先状態に設定するとともに、参照先状態であった入力同期バッファ2入力同期バッファ2A,2B,2Cのいずれかを待機状態に設定するステップS364A。このとき、制御プログラム2の実行サイクルが現在の制御サイクルから開始していなければ、入力同期バッファ2の参照先状態および待機状態は変更されず、そのまま維持される。制御プログラム2の実行終了通知を受けた場合ステップS374において実行終了通知において実行させるステップS376Aにおいて、マイクロプロセッサ100は、制御プログラム2の実行状態を実行終了に設定し、演算用バッファ2に格納されている出力データを、書込先状態の出力同期バッファ2出力同期バッファ2D,2E,2Fのいずれかにコピーした上で、書込先状態であった出力同期バッファ2出力同期バッファ2D,2E,2Fのいずれかを待機状態に設定するとともに最新状態にも設定し、待機状態であった出力同期バッファ2出力同期バッファ2D,2E,2Fのいずれかを書込先状態に設定するステップS376A。q4:まとめ実施の形態12によれば、PLCのシステムプログラムが実施の形態6~9に示す3バッファ方式を採用している場合に、アルゴリズムのわずかな変更で、制御プログラムの実行サイクルに同期した入力データの受信および出力データの送信を実現することができる。<R.実行サイクル同期型更新確認省略型3バッファ入替方式実施の形態13>r1:概要上述したように、実施の形態13は、実施の形態6~9において説明した3バッファ入替方式を応用して、制御プログラムの実行サイクルに同期して実効的な入力データの受信および出力データの送信を実現する形態である。r2:シーケンス図実施の形態13に係る入力方向の動作を示すシーケンス図は、上述の実施の形態11に係る入力方向の動作を示す図27と実質的に同一である。また、実施の形態13に係る出力方向の動作を示すシーケンス図は、上述の実施の形態11に係る出力方向の動作を示す図28と実質的に同一である。上述の実施の形態11においては、最新入力データ更新フラグおよび最新出力データ更新フラグを用いて、入力データおよび出力データの更新をそれぞれ確認する。また、上述の実施の形態12においては、入力同期バッファおよび出力同期バッファのそれぞれの最新状態を用いて、入力データおよび出力データの更新をそれぞれ確認する。しかしながら、少なくとも、制御プログラムの実行サイクル内の最初の制御サイクルにおいて入力データの受信と入力同期バッファへのコピーとが確実に行われるのであれば、入力データの更新確認は省略できる。また、制御プログラムの実行サイクルごとに出力データの生成と出力同期バッファへのコピーとが確実に行われるのであれば、出力データの更新は省略できる。そこで、実施の形態13においては、入力データおよび出力データの更新確認を省略する形態を採用している。なお、実行サイクル冒頭の制御サイクルで必ず入力データの受信があり、かつ、実行サイクル中実行サイクルの延長中含むに必ず出力データが生成される、という前提が必ずしも成り立たない場合には、実施の形態11または12に示すような、入力データおよび出力データの更新確認を行う形態が有用である。r3:フローチャート図31は、実施の形態13に係る実行動作を示すフローチャートである。図31においても、制御プログラム1に関する処理については記載しない。図31に示すフローチャートは、図29に示すフローチャートと比較して、ステップS354,S362,S364,S376に代えて、それぞれステップS354B,S362B,S364B,S376Bの処理が実行される点が異なっている。以下、主としてこの相違点について説明し、その他の処理についての詳細な説明は繰り返さない。ステップS352に続いて実行されるステップS354Bにおいて、マイクロプロセッサ100は、制御プログラム2の実行サイクルが現在の制御サイクルから開始する場合には、待機状態であった出力同期バッファ2出力同期バッファ2D,2E,2Fのいずれかを参照先状態に設定するとともに、参照先状態であった出力同期バッファ2出力同期バッファ2D,2E,2Fのいずれかを待機状態に設定するステップS354B。通信回路からの受信完了通知を受けた場合ステップS360においてYESに実行されるステップS362Bにおいて、マイクロプロセッサ100は、受信バッファPLCシステムバス受信バッファ1044および/またはフィールドネットワーク受信バッファ1046に格納されている入力データを、書込先状態の入力同期バッファ2入力同期バッファ2A,2B,2Cのいずれかにコピーするとともに、書込先状態であった入力同期バッファ2入力同期バッファ2A,2B,2Cのいずれかを待機状態に設定し、待機状態であった入力同期バッファ2入力同期バッファ2A,2B,2Cのいずれかを書込先状態に設定するステップS362B。ステップS362Bに続いて実行されるステップS364Bにおいて、マイクロプロセッサ100は、制御プログラム2の実行サイクルが現在の制御サイクルから開始する場合には、待機状態であった入力同期バッファ2入力同期バッファ2A,2B,2Cのいずれかを参照先状態に設定するとともに、参照先状態であった入力同期バッファ2入力同期バッファ2A,2B,2Cのいずれかを待機状態に設定するステップS364B。このとき、制御プログラム2の実行サイクルが現在の制御サイクルから開始していなければ、入力同期バッファ2の参照先状態および待機状態は変更されず、そのまま維持される。制御プログラム2の実行終了通知を受けた場合ステップS374において実行終了通知において実行させるステップS376Bにおいて、マイクロプロセッサ100は、制御プログラム2の実行状態を実行終了に設定し、演算用バッファ2に格納されている出力データを、書込先状態の出力同期バッファ2出力同期バッファ2D,2E,2Fのいずれかにコピーした上で、書込先状態であった出力同期バッファ2出力同期バッファ2D,2E,2Fのいずれかを待機状態に設定するとともに、待機状態であった出力同期バッファ2出力同期バッファ2D,2E,2Fのいずれかを書込先状態に設定するステップS376B。r4:まとめ上述したように、実施の形態13においては、システムプログラム210は、入力データの入力に関するPLC1の制御動作の実行準備処理として、以下のaおよびbの処理を含む。なお、入力データの受信は制御サイクルごとに実行される。a受信された入力データを格納する受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046をメインメモリ104記憶手段内に生成する処理図31に示すステップS1。b制御プログラムから参照される入力データごとに、その制御プログラムが入力データの参照先とする、第1入力同期バッファ、第2入力同期バッファおよび第3入力同期バッファ図27に示す入力同期バッファ2A,2B,2Cを入力同期バッファの組としてメインメモリ104記憶手段内に生成する処理図31に示すステップS1。第1入力同期バッファ、第2入力同期バッファ、および第3入力同期バッファは、受信バッファ図4に示すPLCシステムバス受信バッファ1044および/またはフィールドネットワーク受信バッファ1046から入力データをコピー可能な状態である書込先状態、制御プログラムから参照可能な状態である参照先状態、および、待機状態のいずれかの状態が重複せずに付与される。また、実施の形態13においては、システムプログラム210は、PLC1の制御動作の実行制御処理として、以下のc~eの処理を含む。c受信された入力データを受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046からその入力データに対応する書込先状態である入力同期バッファにコピーし、さらに、コピー先となった書込先状態である入力同期バッファ、および、その入力同期バッファと同じ組の中で待機状態である入力同期バッファについて、書込先状態と待機状態とを入れ替える第1入替処理を実行する入力コピー処理図31に示すステップS362B。d制御プログラムの実行サイクルが開始した制御サイクルであることを条件として、待機状態である入力同期バッファ、および、参照先状態である入力同期バッファについて、待機状態と参照先状態とを入れ替える第2入替処理を実行する実行サイクル入力初期処理図31に示すステップS364B。e制御プログラムを制御サイクルの整数倍の実行サイクルごとに実行開始させる制御プログラム開始処理図31に示すステップS370。一方、実施の形態13においては、システムプログラム210は、出力データの出力に関する処理を含めると、PLC1の制御動作の実行準備処理として、以下のα~γの処理を含む。α受信された入力データを格納する受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046および送信されるべき出力データを格納する送信バッファ図4に示すPLCシステムバス送信バッファ1043およびフィールドネットワーク送信バッファ1045をメインメモリ104記憶手段内に生成する処理図31に示すステップS1。β制御プログラムから参照される入力データごとに、その制御プログラムが入力データの参照先とする入力同期バッファ図27に示す入力同期バッファ2A,2B,2Cをメインメモリ104記憶手段内図4に示す入力同期バッファ領域1042bに生成する処理図31に示すステップS1。γ送信バッファにコピーされる出力データが格納される、第1出力同期バッファ、第2出力同期バッファおよび第3出力同期バッファ図28に示す出力同期バッファ2D,2E,2Fを出力同期バッファの組としてメインメモリ104記憶手段内図4に示す出力同期バッファ領域1042aに生成する処理図31に示すステップS1。第1出力同期バッファ、第2出力同期バッファ、および第3出力同期バッファは、演算用バッファから出力データをコピー可能な状態である書込先状態、送信バッファにコピーするための参照が可能な状態である参照先状態、および、待機状態のいずれかの状態が重複せずに付与される。また、実施の形態13においては、システムプログラム210は、PLC1の制御動作の実行制御処理として、以下のδ~ζの処理を含む。δ受信された入力データを受信バッファ図4に示すPLCシステムバス受信バッファ1044およびフィールドネットワーク受信バッファ1046からその入力データに対応する入力同期バッファにコピーする入力コピー処理図31に示すステップS362B。ε制御プログラムを実行開始させる制御プログラム開始処理図31に示すステップS370。ζ制御プログラムの実行が終了すると、その制御プログラムの実行により生成された出力データを演算用バッファから書込先状態である出力同期バッファにコピーし、さらに、コピー先となった書込先状態である出力同期バッファ、および、その出力同期バッファと同じ組の中で待機状態である出力同期バッファについて、書込先状態と待機状態とを入れ替える第4入替処理を実行する出力同期バッファ格納処理図31に示すステップS376B。η各制御サイクルの開始後、送信バッファからの出力データの送信までの間に、出力データを参照先状態である出力同期バッファから送信バッファにコピーし、さらに、制御プログラムの実行サイクルが開始した制御サイクルであることを条件として、送信バッファへのコピーを実行するより前に、待機状態である出力同期バッファ、および、参照先状態である出力同期バッファについて、待機状態と参照先状態とを入れ替える第5入替処理を実行し、それにより、出力データを、その出力データを生成した制御プログラムが実行された実行サイクルの次の実行サイクルの最初の制御サイクルにおいて送信バッファから送信されることになるタイミングで、出力同期バッファから送信バッファにコピーする、出力コピー処理図31に示すステップS354BおよびS356。実施の形態13によれば、PLCのシステムプログラムが実施の形態6~9に示す3バッファ方式を採用している場合に、アルゴリズムのわずかな変更で、制御プログラムの実行サイクルに同期した入力データの受信および出力データの送信を実現することができる。<S.サポート装置>次に、PLC1で実行されるプログラムの作成およびPLC1のメンテナンスなどを行うためのPLCサポート装置8について説明する。図32は、本発明の実施の形態に係るCPUユニットに接続して用いられるPLCサポート装置8のハードウェア構成を示す模式図である。図32を参照して、PLCサポート装置8は、典型的には、汎用のコンピュータで構成される。なお、メンテナンス性の観点からは、可搬性に優れたノート型のパーソナルコンピュータが好ましい。図32を参照して、PLCサポート装置8は、OSを含む各種プログラムを実行するCPU81と、BIOSや各種データを格納するROMReadOnlyMemory82と、CPU81でのプログラムの実行に必要なデータを格納するための作業領域を提供するメモリRAM83と、CPU81で実行されるプログラムなどを不揮発的に格納するハードディスクHDD84とを含む。PLCサポート装置8は、さらに、ユーザからの操作を受付けるキーボード85およびマウス86と、情報をユーザに提示するためのモニタ87とを含む。さらに、PLCサポート装置8は、PLC1CPUユニット13などと通信するための通信インターフェイスIF89を含む。後述するように、PLCサポート装置8で実行される各種プログラムは、CD-ROM9に格納されて流通する。このCD-ROM9に格納されたプログラムは、CD-ROMCompactDiskReadOnlyMemoryドライブ88によって読取られ、ハードディスクHDD84などへ格納される。あるいは、上位のホストコンピュータなどからネットワークを通じてプログラムをダウンロードするように構成してもよい。上述したように、PLCサポート装置8は、汎用的なコンピュータを用いて実現されるので、これ以上の詳細な説明は行わない。図33は、本発明の実施の形態に係るCPUユニットに接続して用いられるPLCサポート装置8のソフトウェア構成を示す模式図である。図33を参照して、PLCサポート装置8ではOS310が実行され、PLCサポートプログラム320に含まれる各種のプログラムを実行可能な環境が提供される。PLCサポートプログラム320は、エディタプログラム321と、コンパイラプログラム322と、デバッガプログラム323と、シミュレーション用シーケンス命令演算プログラム324と、シミュレーション用モーション演算プログラム325と、通信プログラム326とを含む。PLCサポートプログラム320に含まれるそれぞれのプログラムは、典型的には、CD-ROM9に格納された状態で流通して、PLCサポート装置8にインストールされる。エディタプログラム321は、ユーザプログラム236を作成するための入力および編集といった機能を提供する。より具体的には、エディタプログラム321は、ユーザがキーボード85やマウス86を操作してユーザプログラム236のソースプログラム330を作成する機能に加えて、作成したソースプログラム330の保存機能および編集機能を提供する。また、エディタプログラム321は、外部からの制御プログラム230その中でも特に、ユーザプログラム236のソースプログラムを入力し、またユーザの操作により既存の制御プログラム230のソースプログラムを編集する。コンパイラプログラム322は、制御プログラム230のソースプログラムをコンパイルして、CPUユニット13のマイクロプロセッサ100で実行可能なオブジェクトプログラム形式のユーザプログラム236を生成する機能を提供する。また、コンパイラプログラム322は、ソースプログラム330をコンパイルして、PLCサポート装置8のCPU81で実行可能なオブジェクトプログラム形式のユーザプログラム340を生成する機能を提供する。このユーザプログラム340は、PLCサポート装置8によってPLC1の動作をシミュレート模擬するために使用される、シミュレーション用のオブジェクトプログラムである。デバッガプログラム323は、制御プログラム230のソースプログラムに対してデバッグを行うための機能を提供する。このデバッグの内容としては、ソースプログラムのうちユーザが指定した範囲を部分的に実行する、ソースプログラムの実行中における変数値の時間的な変化を追跡する、といった動作を含む。デバッガプログラム323は、さらに、制御プログラム230のシミュレーション用のオブジェクトプログラムを実行する機能を提供する。このシミュレーション時には、CPUユニット13のシステムプログラムに含まれるシーケンス命令演算プログラム232およびモーション演算プログラム234に代えて、PLCサポートプログラム320に含まれるシミュレーション用シーケンス命令演算プログラム324およびシミュレーション用モーション演算プログラム325が用いられる。通信プログラム326は、PLC1のCPUユニット13へ制御プログラム230のCPUユニット13用のオブジェクトプログラムを転送する機能を提供する。一般的には、PLC1に実装されるシステムプログラム210は、CPUユニット13の製造段階でCPUユニット13の不揮発性メモリ106へ格納される。但し、CD-ROM9にシステムプログラム210を格納しておけば、ユーザは、CD-ROM9のシステムプログラム210をPLCサポート装置8にコピーし、通信プログラム326が提供する機能を利用してコピーしたシステムプログラム210をCPUユニット13へ転送することもできる。さらに、CD-ROM9に、PLC1のCPUユニット13で実行されるリアルタイムOS200を格納しておけば、リアルタイムOS200についてもユーザ操作によってPLC1へ再インストールできる。<T.その他の形態>上述した図13,15,18,21に示すシーケンス図は、PLCにマルチコアのマイクロプロセッサを用いた場合の動作態様の一例を示す。例えば、第1コアおよび第2コアを有するマイクロプロセッサを用いると、第1コアが実行する入出力処理と第2コアが実行する制御プログラムとを並列実行することが実装上は可能となる。しかしながら、PLCで実行される制御プログラムは、受信された入力データを使用し、送信すべき出力データを生成するから、入出力処理と制御プログラムとは交互に実行されることが基本的な動作態様である。また、入出力処理は、制御サイクルごとになるべく一定の周期で実行することが好ましい。このようなPLCで実行される制御プログラムに関する制約は、マルチコアのマイクロプロセッサを用いた場合でも変わらない。そのため、マルチコアのマイクロプロセッサを用いた場合であっても、第1コアが実行する入出力処理と第2コアが実行する制御プログラムとを常に並列実行すると、制御動作に役立たない無駄な動作が多くなる。一方、制御プログラムの実行時間は、入力データの内容などの条件によって変動するので、制御サイクルの周期が制御プログラムの平均実行時間より少し長い程度に設定されていると、入出力処理の終了後に実行開始した制御プログラムが次の入出力処理の開始までに終了しないことがある。このような場合に、シングルコアのマイクロプロセッサを用いる場合は、以下のような対処が考えられる。制御プログラムの実行が終了するまでその制御サイクルを延長するこの場合、入出力処理の周期が乱れる。制御プログラムの実行を中断して入出力処理を行い、その後に、制御プログラムの実行を再開する再開した制御サイクルで新たに実行開始されるはずであった制御プログラムの実行はキャンセルされる。これに対して、マルチコアのマイクロプロセッサを用いる場合は、入出力処理と制御プログラムとを並列実行が可能であることを利用して、制御サイクル内に制御プログラムの実行が終了しなくてもそのまま実行を継続し、次の制御サイクルにおいて実行が終了すれば、引き続き、制御プログラムの新たな実行を開始することが可能である。このような思想を具現化したものが、図13などに示す動作態様である。このような動作態様を有するPLCは、以下のように表現することができる。すなわち、制御対象を制御するPLCのCPUユニットであって、マイクロプロセッサと、記憶手段と、通信回路とを含む。このPLCのCPUユニットは、出力データの送信と、入力データの受信と、入力データを使用して出力データを生成する制御プログラムの実行とを繰り返すことによって制御対象を制御するように構成されている。記憶手段は、制御プログラムおよびシステムプログラムの格納に用いられる。マイクロプロセッサは、少なくとも、第1コアおよび第2コアを有する。通信回路は、出力データを送信し、および、入力データを受信する。システムプログラムは、マイクロプロセッサのいずれかのコアにおいて実行される。システムプログラムは、第1コアおよび第2コアを以下のように動作させるための処理を含む。すなわち、第1コアが、制御サイクルごとに、制御プログラムが生成した出力データを送信可能にし、および受信された入力データを制御プログラムが利用することを可能にすることを含む入出力処理の実行を制御する。第2コアが、1第1制御サイクルにおける入出力処理の実行終了後に制御プログラムの第1実行を開始し、2第1制御サイクルの次の第2制御サイクルにおける入出力処理の実行終了までに制御プログラムの第1実行が終了すれば、第2制御サイクルにおける入出力処理の実行終了後に制御プログラムの第2実行を開始し、3第2制御サイクルにおける入出力処理の実行終了までに制御プログラムの第1実行が終了しなければ、制御プログラムの第1実行の終了後に、第2制御サイクルの次の第3制御サイクルにおける入出力処理の実行終了を待つことなく制御プログラムの第2実行を開始する。このようなPLCによれば、第1制御サイクルで第1実行を開始した制御プログラムの実行が第2制御サイクルにおける入出力処理の開始までに終了しなくても、その入出力処理の終了までに制御プログラムの第1実行が終了する可能性がある。その場合には、その入出力処理の終了を待って新たに実行開始する制御プログラムは新たな入力データを使用することができる。また、第1制御サイクルで第1実行を開始した制御プログラムの実行が第2制御サイクルにおける入出力処理の終了までに終了しない場合には、制御プログラムの第2実行の開始が遅れるが、制御プログラムの平均実行時間が入出力処理の終了から次回の開始までの時間より短ければ、数回の制御サイクルの間に、入出力処理の終了に続いて制御プログラムの実行を開始するという状態に戻ることができる可能性が高い。それまでの間も、PLCは、可能な限り新しく受信された入力データが制御プログラムに使用され、可能な限り新しく生成された出力データが送信される状態で動作することができる。今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。"