このような従来のPLCシステムにおいては、マスタ局として機能するPLC装置とリモートターミナル装置の通信ユニットとは所謂上位通信としてフィールドバス81にて接続されており、スレーブ局として機能するリモートターミナル装置の通信ユニットは、さらに下位通信としてのスライスバス84によって複数のI/Oユニットに接続されている。しかし、このような従来のシステムにおいては、エラー等により、上位通信が切断されてしまった場合、システムを制御するマスタ局とスレーブ局との通信が遮断されてしまい、その結果、下位通信も切断するしかなかった。
そして、上位通信がエラーから復帰した際には、下位通信に対してもエラー復帰処理を行い、エラー復帰させてからでないと通信加入できないため、復帰に時間がかかりシステムのダウンタイムが長大化してしまうという欠点が指摘されていた。
この発明は、このような従来の問題点に着目してなされたものであり、その目的とするところは、複数のリモートターミナル装置を制御するPLCシステムにおいて、上位通信(フィールドバス)が何らかのエラーによって遮断されてしまっても、エラーから復帰したときに即座にリモートターミナル装置との通信を再開できることを可能とすることにある。
この発明の他の目的ならびに作用効果については、明細書の以下の記述を参照することにより、当業者であれば容易に理解される筈である。
本発明の実施形態によれば、通信機能を有するプログラマブル・コントローラと、当該プログラマブル・コントローラにフィールドバスを介して接続される1台もしくは2台以上のリモートターミナル装置とを有し、当該リモートターミナル装置は、さらに1台の通信ユニットと、スライスバスを介して当該通信ユニットと交信可能な1台もしくは2台以上のI/Oユニットとを有するプログラマブル・コントローラ・システムであって、リモートターミナル装置の通信ユニットは、プログラマブル・コントローラから送信されるOUTフレームを含むデータフレームと、当該通信ユニットに接続されているI/Oユニットから返信されるINデータとを送受信する、プログラマブル・コントローラとのI/Oリフレッシュ処理及びI/OユニットとのI/Oリフレッシュ処理を実行する通常通信状態と、、プログラマブルコントローラとのデータ通信は行わず、接続されているI/Oユニットの存在確認のみ実行し、I/Oデータの送受信を行わないIDLE状態とを備え、通常通信状態とIDLE状態との2つの通信状態を所定の条件に基づき遷移することを特徴とすることを特徴とする。
ここで言う『I/Oユニットの存在確認』とは、リモートターミナル装置の通信ユニットから接続されているI/Oユニットに対してBCONフレームを送信し、そのBCONフレームを受信したI/Oユニットが通信ユニットに対してCNフレームを返信することにより実行され、当該I/Oユニットがスライスバスを介して接続されていること(存在していること)を意味する。このとき、I/Oユニットから返信されるCNフレームには、当該I/Oユニットを特定するユニット情報が含まれる。そのユニット情報の例としては、当該ユニットがどこの会社製かを示すVendorID、ユニットの種別を示すDeviceType(例えば、DIO、AIO等)、Vendor毎に機種単位に設定する値であるProductCode、等が含まれる。
このような構成により、当該プログラマブル・コントローラ・システムにおけるリモートターミナル装置の通信ユニットは、通常通信状態とIDLE状態との2つの通信形態を有し、それらの通信形態を所定の条件に基づき遷移するため、通信形態をシステムの状態に応じて切り替えることが可能とされている。
本発明の実施の形態においては、リモートターミナル装置の通信ユニットは、プログラマブル・コントローラからのOUTフレームを所定時間内に受信しない場合において通常通信状態からIDLE状態へと遷移することを特徴とする
このような構成により、プログラマブル・コントローラ・システムにおいて、プログラマブル・コントローラと、リモートターミナル装置とのフィールドバス通信がエラー等により切断されてしまい、OUTフレームを所定時間内に受信できないような状況において、リモートターミナル装置の通信ユニットとI/Oユニットとのスライスバス通信はIDLE状態へと遷移し接続状態を保ち、継続して存在確認を実行する。そのため、フィールドバス通信がエラーから復帰した場合、スライスバス通信のエラー復帰にを行う必要がなく、システム全体の早期復帰が実現される。
本発明の実施形態によれば、リモートターミナル装置の通信ユニットは、IDLE状態において、さらに接続されるI/OユニットとのINリフレッシュ処理を実行すること、を特徴とする。
このような構成により、IDLE状態においては、スライスバス通信の通信状態を維持するだけではなく、I/OユニットのINリフレッシュを実行しているため、フィールドバス通信が復帰したら、直ちに最新のINデータをプログラマブル・コントローラに送信することが可能となり、システムの現状復帰が一段と早まる。
本発明の実施形態においては、I/Oユニットは、通信ユニットがIDLE状態であることを識別し、出力を予め定められたIDLE状態設定に従って制御することを特徴とする。
ここで言う『IDLE状態設定』とは、ユーザがI/Oユニットに対して予め設定する設定事項であり、スライスバス通信がIDLE状態となったときに、プログラマブル・コントローラからのOUTデータが送信されないため、I/Oユニットの出力機器への出力設定をどうするか予め設定しておくものである。その設定としては、例えば、最後に受信したOUTデータを保持することや、OUTデータを一端クリアし0に戻す、等が挙げられる。
本発明の実施形態によれば、1台の通信ユニットと、それぞれスライスバスラインを介して通信ユニットと交信可能な1台もしくは2台以上のI/Oユニットとを有し、フィールドバスを介して通信機能を有するプログラマブル・コントローラ装置と接続されるリモートターミナル装置であって、当該通信ユニットは、プログラマブル・コントローラから送信されるOUTフレームを含むデータフレームと、当該通信ユニットに接続されているI/Oユニットから返信されるINデータとを送受信する、プログラマブル・コントローラとのI/Oリフレッシュ処理及びI/OユニットとのI/Oリフレッシュ処理を実行する通常通信状態と、プログラマブルコントローラとの通信は行わず、接続されているI/Oユニットの存在確認のみ実行し、I/Oデータの送受信を行わないIDLE状態とを備え、通常通信状態とIDLE状態との2つの通信状態を所定の条件に基づき遷移すること、を特徴とする。
このような構成により、当該プログラマブル・コントローラ・システムにおけるリモートターミナル装置の通信ユニットは、通常通信状態とIDLE状態との2つの通信形態を有し、それらの通信形態を所定の条件に基づき遷移するため、通信形態をシステムの状態に応じて切り替えることが可能とされている。
本発明の実施の形態においては、リモートターミナル装置の通信ユニットは、プログラマブル・コントローラからのOUTフレームを所定時間内に受信しない場合において通常通信状態からIDLE状態へと遷移することを特徴とする
このような構成により、プログラマブル・コントローラ・システムにおいて、プログラマブル・コントローラと、リモートターミナル装置とのフィールドバス通信がエラー等により切断されてしまい、OUTフレームを所定時間内に受信できないような状況において、リモートターミナル装置の通信ユニットとI/Oユニットとのスライスバス通信はIDLE状態へと遷移し接続状態を保ち、継続して存在確認を実行する。そのため、フィールドバス通信がエラーから復帰した場合、スライスバス通信のエラー復帰にを行う必要がなく、システム全体の早期復帰が実現される。
本発明の実施形態によれば、リモートターミナル装置の通信ユニットは、IDLE状態において、さらに接続されるI/OユニットとのINリフレッシュ処理を実行すること、を特徴とする。
このような構成により、IDLE状態においては、スライスバス通信の通信状態を維持するだけではなく、I/OユニットのINリフレッシュを実行しているため、フィールドバス通信が復帰したら、直ちに最新のINデータをプログラマブル・コントローラに送信することが可能となり、システムの現状復帰が一段と早まる。
本発明のPLCシステムにおいては、上位通信がエラーから復帰した際に即座に通信を開始することが可能となり、システムのダウンタイムを削減することが可能となる。
通信マスタ局及び通信スレーブ局を含むプログラマブルコントローラシステム(PLCシステム)の全体の構成図が図1に示されている。同図に示されるように、このPLCシステムは、通信マスタ局となる通信機能を有するPLC装置1と、通信スレーブ局となる複数台の通信機能を有するリモートターミナル装置2,2・・・とを、バス型ネットワークであるフィールドバス5により繋いで構成されている。なお、図において、11は中継装置として機能するリピータ、6はフィールドバスの終端における反射を低減する終端装置である。
図示のPLC装置1としては、パラレルバスの敷設された図示しないバックプレーン上に多数のコネクタを配置し、それらのコネクタに対して、CPUユニット、I/Oユニット、その他各種の高機能ユニット等々を任意に装着可能とした所謂ビルディングブロック型のPLC装置が採用されている。そして、特に、この例では、バックプレーン上の1のコネクタに対して通信マスタユニットを装着することにより、「通信機能を有するPLC装置」が構成されている。図では、それらのユニットのうちで、CPUユニット20及び通信マスタユニット10のみに参照符号が付されている。
本発明が適応されるPLCシステムにおけるリモートターミナル装置2をより詳細に説明するための構成図が図2に示されている。同図において、1はPCL、2はリモートターミナル装置(本機)、3はリモートターミナル装置(同接機)、4は各種の設定、モニタ、操作などに称されるパソコンである。PLC1は、電源ユニット、全体の制御を司るCPUユニット、入力機器や出力機器を接続したI/Oユニット、リモートターミナル装置に対してフィールドバスを介して制御データを送受信する通信マスタユニットなどが一体的に結合され、各ユニットがバックプレインバスを通じてバス通信するよう構成されている。そしてCPUユニットは、いわゆる共通処理、I/Oリフレッシュ処理、ユーザプログラム実行処理、周辺サービス処理をサイクリックに実行している。PLC1とリモートターミナル装置(本機)2とはフィールドバス5を介して結ばれており、また、リモートターミナル装置(本機)2とリモートターミナル装置(増設機)3とは増設用ケーブル6で結ばれている。
図2に示されるように、リモートターミナル装置(本機)2は一台のSlice通信ユニット21(以下、スライス通信ユニットと言う)と、複数台のSliceI/Oユニット22(以下、I/Oユニットと言う)と、増設用コネクタ付きのENDユニット23とを含んでいる。図のように、それらのユニットは互いに機械的に結合され、それらの背後に位置するDINレール7に装着される。リモートターミナル装置(増設機)3は、一台の通信ユニット31と、複数台のI/Oユニット32と、増設用コネクタを持たないENDユニット33とを含んでいる。それらのユニットについても互いに結合されていて、その背後に位置するDINレール7に装着される。そして各I/Oユニットの端子台にはI/O機器(図示しないが、IN機器としてセンサやスイッチ、OUT機器としてアクチュエータ等)が接続されている。
リモートターミナル装置(本機)2において、スライス通信ユニット21は、フィールドバス5を介してPLC1またはPLCの通信ユニットとの間で制御データを交信すると共に、図示しない内部シリアルバスライン及び単方向通信ラインを介して、一連のI/Oユニット22,22・・・のそれぞれとも交信する。リモートターミナル装置(本機)2は、PLC1と通信するためのフィールドバス上のネットワークアドレスを有していて、PLC1がフィールドバス上の通信マスタ局となって、そのアドレスに対してデータ通信を行う。またリモートターミナル装置(本機)2および一連のI/Oユニット22のそれぞれは、内部シリアルバスライン上のネットワークアドレスを有していて、リモートターミナル装置(本機)2が内部シリアルバスライン上の通信マスタ局となって、一連のI/Oユニット22のアドレスに対してデータ通信を行う。
一方、PLC1においては、バックプレインに接続されたI/OユニットからINデータを取り込むとともに、フィールドバスを介してリモートターミナル装置2からINデータを取り込む。つまり、これがINリフレッシュ処理である。そしてPLC1は、ユーザプログラムを実行してINデータを論理演算する。つまりこれがユーザプログラム実行処理である。そして、演算結果であるOUTデータをバックプレインに接続されたI/Oユニットまたはリモートターミナル装置2へ送る。つまりこれがOUTリフレッシュ処理である。この一連の処理により、I/OユニットはPLC1から送られてくるOUTデータを受信し、I/Oユニットに接続された出力機器へOUTデータを出力する。また、リモートターミナル装置(本機)2またはリモートターミナル装置(増設機)3もPLC1から送られてくるOUTデータを受信し、OUTデータを、リモートターミナル装置2のI/Oユニット22の端子台から、端子に接続された外部の出力機器へと送出される。この一連の動作によってPLC1は各出力機器の動作を制御するわけである。そして再び、リモートターミナル装置(本機)2の端子台またはリモートターミナル装置(増設機)3は、端子台に接続された入力機器から取り込んだINデータを、PLC1へと送り出す。バックプレインに接続されたI/Oユニットも同様にINデータをPLC1へ送り出す。PLC1は各入力機器のINデータを取り込み、INリフレッシュ処理を行う。PLC1は、その後、ユーザプログラム実行処理、OUTリフレッシュ処理をサイクリックに実行する。なお、リモートターミナル装置(本機)2を使用する利点を説明しておく。バックプレインに接続されたI/Oユニットにも入力機器や出力機器を接続するが、このI/OユニットはPLC1に一体的に接続されているので、PLC1の付近に存在する入力機器、出力機器しか扱えない。いっぽう、リモートターミナル装置(本機)2はフィールドバスを介してPLC1に接続されるので、PLC1から離れた場所に存在する入力機器や出力機器を扱えるようになるので、様々な設備に対応できる利点がある。
尚、リモートターミナル装置(本機)2及びリモートターミナル装置(増設機)3のそれぞれにおけるユニット接続構造としては、いわゆるバックプレーンレスタイプのものが採用されている。
そのため、一連のI/Oユニット22または32のそれぞれのハウジングの中には、バスラインの一部を構成する部分バス導体が内蔵されている。この部分バス導体の両端は、ハウジングの左右側面に設けられた接触子列へと導出されている。したがって,I/Oユニット22または32を互いに隣接して連装すると、それらの接触子列同士が電気的に接続されて、一連のシリアルバスライン並びに単方向シリアル通信ラインが完成する。
続いて、図3にフィールドバス通信の通信方法を説明する図が示されている。ここで、フィールドバス通信とは、このPLCシステムにおける上位通信を担うものであり、マスタユニット10と、フィールドバス5によって接続されるリモートターミナル装置としての(Slice)通信ユニット21a〜21dとを接続するものである。同図にて示されるように、このPLCシステムにおいては、1台のマスタユニット10に対して複数台の通信ユニット21a〜21dが接続されている。そしてマスタユニット10及び各通信ユニット21a〜21dには、それぞれのユニットを特定するためのユニットアドレスとしてMAC IDが用いられている。ここでいう、MAC IDとは、Machine IDの略であり、各ユニットを特定するための固有の識別子である。
次に、本実施形態におけるマスタユニットとスライス通信ユニット21との間における通信形態を説明する。本実施形態においては、マスタユニット10と各スライス通信ユニット21a〜21dとの間における通信は、コマンド/レスポンスによる通信を行う。その通信方式として、ポーリング(Polling)方式を採用している。ポーリング方式では、1ユニット毎にコマンド/レスポンスを実行する。例えば、同図にて示されるように、マスタユニット10はスライス通信ユニット21aに対してコマンド(OUTデータ)を送信し、その返信としてレスポンス(INデータ)を受け取る。スライス通信ユニット21aとのコマンド送信とレスポンス受信が完了してから、マスタユニット10は次のユニットである通信ユニット21bに対してのコマンド/レスポンスを実行する。同様に、通信ユニット21c及び21dに対してもコマンド/レスポンスが行われる。尚、本発明は、ビットストローブ(Bitstrove)と呼ばれる、各ユニットに対して一斉同報適にOUTデータの送信を行い、各スレーブユニット(この例ではスライス通信ユニット21a〜21d)が個別に独自のタイミングでINデータを返信するコマンド/レスポンス方式にも適応可能である。
通信マスタユニット10(以下、マスタユニットと言う)の内部構成を示すハードウェア構成図が図4に示されている。同図に示されるように、マスタユニット10は、通信物理層として機能するCANドライバ41と、所望の通信機能を実現するための回路をLSI化してなるマスタ用ASIC42と、CPUユニット20との間で受け渡される送受信データのバッファエリアや、後述するCPU104の演算用ワークエリア等として機能するRAM43と、マイクロプロセッサを主体として構成されて装置全体を統括制御するためのCPU44と、各種の設定データが格納される不揮発性メモリ(EEPROM)45と、各種の動作表示等を行うためのLED表示器46と、各種の設定操作等に使用される設定スイッチ47と、CPUユニット20へ通ずる内部バスへのインタフェースとして機能する内部バスインタフェース(内部バスI/F)48とを含んでいる。
当業者にはよく知られているように、この種のPLCシステムにおいては、CPUユニット20は、共通処理、I/Oリフレッシュ処理、ユーザプログラム実行処理、周辺サービス処理等を繰り返し一巡実行しており、I/Oリフレッシュ処理の実行の際には、バックプレーン上に装着されたローカルI/Oユニットとの間のみならず、マスタユニット10内のRAM43との間においても、I/Oリフレッシュ処理を実行する。
具体的には、CPUユニット20のI/Oメモリ内のOUTデータは、通信マスタユニット10のRAM43内のOUTエリアに書き込まれ、同RAM43のINデータは、CPUユニット20のI/Oメモリ内のINエリアに書き込まれる。
一方、後に詳細に説明するように、マスタユニット10と各I/Oターミナル装置2との間では、CPUユニット20のI/Oリフレッシュ動作とは非同期にフィールドバス6を介する通信が行われており、これにより各I/Oターミナル装置2とマスタユニット10内のRAM103との間においても、一種のI/Oリフレッシュ処理が実行される。
具体的には、I/Oターミナル装置2から受信されたINデータは、マスタユニット10内のRAM103のINエリアに書き込まれ、CPUユニット20はI/Oリフレッシュ動作によりマスタユニット10から取り込む。そしてCPUユニット20はINデータをもとにユーザプログラムを実行し、その実行結果をOUTデータとする。CPUユニット20はI/Oリフレッシュ動作によりOUTデータを通信マスタCPUユニットへ送り出す。マスタユニット10はOUTデータを同RAM103のOUTエリアに格納する。そして通信マスタユニット10は、I/Oリフレッシュとは非同期に、同RAM103のOUTエリアのOUTデータを該当するI/Oターミナル装置2へ送信する。
このようにして、CPUユニット20内のI/Oメモリと各I/Oターミナル装置2,2・・との間において、通信マスタユニット10を経由してI/Oリフレッシュ処理が実行され、その結果として、リモート設置された各I/Oターミナル装置2,2・・・に接続されたI/O機器をCPUユニット20で制御することが可能となるのである。
次に、リモートターミナル装置における通信ユニット21のハードウェア構成図が図5に、そして当該通信ユニット21に接続されるI/Oユニットのハードウェア構成図が図6にそれぞれ示されている。図5にて示されるように、スライス通信ユニット21内に格納されているフィールドバス通信用MPU52は通信物理層として機能するCANドライバ51を介して上位ネットワークに接続されており、当該スライス通信ユニット21と上位ネットワーク(PLC等)との通信を担う。そして、このフィールドバス通信用MPU52は、各種の設定データが格納されるメモリ(DRAM)53を介してスライス(Slice)バス通信用MPU54に接続されている。当該スライスバス通信用MPU54は、I/Oユニットへのスライスバスを介しての通信を制御するものであり、スライスバス通信用ASIC55とスライスバスを介してI/Oユニット22に接続される。また、図6に示されるように、I/Oユニット22は、内蔵されているスライスI/Oユニット用MPU62にスライスバス通信用ASIC61を介して接続されている。また、スライス通信用MPU62は、入出力回路63にさらに接続されている。
そして、マスタユニット10と各スライス通信ユニット21との間では、マスタユニット10を通信マスタ局、各リモートターミナル装置のスライス通信ユニット21を通信スレーブ局とする1対Nのマスタ・スレーブ通信を通じて、I/Oデータのやり取りが行われる。ここで用いられる通信方式については先に図3を参照して説明したとおりである。
次に、本発明の主要部であるエラー制御について説明する。上述したように、本発明が適用されるPLCシステムにおきましては、PLCとリモートターミナル装置の通信ユニットを接続する上位通信(この実施形態ではフィールドバス)と、リモートターミナル装置の通信ユニットとI/Oユニット22とを接続する下位通信(この実施形態ではスライスバス)とに大別される。本発明においては、エラー等により、上位通信が切断され手しまった場合において、PLCからのデータ送信が停止することに伴い、リモートターミナル装置の通信ユニットにIDLE状態というモードを設けて下位通信が切断されてしまうことを防ぐものである。
本実施形態におけるリモートターミナル装置の通信ユニットから各I/Oユニット22に対するスライスバス通信の正常状態とIDLE状態との一例が図7に示されている。同図には、リモートターミナル装置のスライス通信ユニット21と、当該スライス通信ユニット21に接続されている複数のI/Oユニット22との間のデータ送受信を表している。ここでスライス通信ユニット21からI/Oユニットへと送信されるフレームとしては、BCONフレーム70、TRGフレーム71、OUTフレーム75、そしてEVE群フレーム74等があり、I/Oユニット22からスライス通信ユニット21へと送信されるフレームとしてはCNフレーム72とINフレーム73等がある。尚、ここで言うBCONフレーム70(Beaconフレーム)とは、通信速度同期用のフレームであり、TRGフレーム71(Triggerフレーム)とは、I/Oユニット22の存在を確認するためのCNフレーム72の返信をトリガするフレームである。OUTフレームとは、PLCからのOUTデータ及びTRGフレーム71とを含むものである。EVE群フレームとは、メッセージ用のフレームである。CNフレーム72(Connectionフレーム)とは、I/Oユニット22が接続されているという存在を確認するためのフレームである。また、このCNフレームには当該I/Oユニット22を特定するユニット情報等も含まれる。INフレーム73とは、I/Oユニット22のINデータフレームである。
同図にて示されるように、正常状態においては、上位通信も正常に接続されているため、PLC(マスタ局)からのOUTデータがスライス通信ユニット21にて受信される。そのため、BCONフレーム70に続いてOUTフレーム75が通信ユニットからI/Oユニット22に送信され、それに対して各I/Oユニット22が応答フレームであるCNフレーム72並びにINフレーム73をスライス通信ユニット21に返信し、その後EVE群74がスライス通信ユニット21から各I/Oユニット22に対して送信される。それに対して、IDLE状態においては、上位通信がエラー等により切断されているためPLCからのOUTフレーム75が通信ユニットにて受信されない。そのため、IDLE状態においては、スライス通信ユニット21がBCONフレーム70を送信した後に、TRGフレーム71のみが各I/Oユニット22に送信される。そして、そのTRGフレーム71に応答してCNフレーム72がI/Oユニット22からスライス通信ユニット21へと返信され、さらにINフレーム73が送信される。そして、その後EVE群74がスライス通信ユニット21から各I/Oユニット22に対して送信される。
次に、図8を参照して正常通信状態と、IDLE状態に関連するマスタユニット10、スライス通信ユニット21、及びI/Oユニット22における状態遷移を説明する。同図(a)にはマスタユニット10における通常通信状態と、通信切断状態(TIMEOUT状態)との遷移が、同図(b)にはスライス通信ユニット21における通常通信状態とIDLE状態との遷移が、そして同図(c)には、I/Oユニット22における通常通信状態とIDLE状態との遷移がそれぞれ示されている。
図8(a)にて示されるように、マスタユニット10においてはリモートターミナル装置とI/Oリフレッシュを実行している通常通信状態と、リモートターミナル装置との通信が切れており、I/Oリフレッシュが停止しているTIMEOUT状態との2つの状態が存在する。それぞれの状態に遷移するための必要事項が同図に示されており、通常通信状態において、TIMEOUT(すなわち、リモートターミナル装置が一定時間レスポンスを返さない状態)においてTIMEOUT状態となり、そのTIMEOUT状態から通常通信状態に遷移(復帰)するためにはリモートターミナル装置の加入手順が終了していることが条件となる。
図8(b)にて示されるように、スライス通信ユニット21においては、マスタユニット10及びI/Oユニット22とのI/Oリフレッシュを実行している通常通信状態と、マスタユニット10とのI/Oリフレッシュは停止しており、I/Oユニット22とのINリフレッシュのみを実行しているIDLE状態との2つの状態が存在する。それぞれの状態に遷移するための必要事項が同図に示されており、通常通信状態において、TIMEOUT(すなわち、マスタユニットが一定時間コマンド(OUTデータ)を送ってこない状態)においてIDLE状態となり、そのIDLE状態から通常通信状態に遷移(復帰)するためにはマスタユニット10からのコマンド(OUTデータ)を受信することが条件となる。ここで、マスタユニット10からのOUTデータを受信した場合、上位通信が復帰したことを意味するため、通常通信へと移行する。
図8(c)にて示されるように、I/Oユニット22においては、スライス通信ユニット21とのI/Oリフレッシュを実行している通常通信状態と、スライス通信ユニット21から(さらにはマスタユニット10から)OUTフレームが送信されず、スライス通信ユニット21とのINリフレッシュのみを実行しているIDLE状態との2つの状態が存在する。それぞれの状態に遷移するための必要事項が同図に示されており、通常通信状態において、TRGフレームを受信(すなわち、OUTフレームではなくTRGフレームのみを受信)においてIDLE状態となり、そのIDLE状態から通常通信状態に遷移(復帰)するためにはOUTフレームを受信することが条件となる。
続いて、マスタユニット10並びにスライス通信ユニット21におけるIDLE状態への遷移に係る処理を示すフローチャートが図9及び図10にて示されている。図9には、マスタユニット10側における処理が示されており、図10にはスライス通信ユニット21側における処理が示されている。
図9にて示されるように、マスタユニット10は、まずPLCのCPUとI/Oリフレッシュを実行する(ステップ901)。その後、更新されたデータを元に、OUTフレームを送信する(ステップ902)。ここで、一定時間内に送信されたOUTフレームに対するI/Oユニット22からのレスポンスがなければ(ステップ903,未受信)、何らかの通信エラーが発生したと認識し、当該ユニットとのI/Oコネクションを切断し(ステップ904)、コネクションが張られている全ユニットとのI/Oリフレッシュが完了しているかどうかの確認が実行される(ステップ905)。ここで、I/Oリフレッシュが完了していれば(ステップ905,完了)、ステップ901に戻り、CPUとのI/Oリフレッシュを行い処理を繰り返す。それに対して、I/Oリフレッシュが完了していなければ(ステップ905,未完了)、ステップ902に戻り、同じデータにてOUTフレームの送信を実行して処理を繰り返す。ステップ903に戻り、OUTフレームに対するレスポンスがあれば(ステップ903,受信)、ステップ905のコネクションが張られている全ユニットとのI/Oリフレッシュが完了しているかの確認に移行し、上記処理を繰り返す。
それに対して、図10にて示されるように、スライス通信ユニット21側においては、先ずマスタユニット10からOUTフレームを受信したがどうかの確認が行われる(ステップ1001)。ここで、予め定められた所定時間内にOUTフレームの受信が行われない場合(ステップ1001,未受信)、スライス通信ユニット21はIDLE状態へと遷移し、状態フラグを『通常』から『IDLE』へと変更する(ステップ1004)。また、OUTフレームを受信した場合(ステップ1001,受信)、レスポンスとしてINデータをマスタユニットに対して送信し(ステップ1002)、I/Oデータの更新を実行する(ステップ1003)。このI/Oデータの更新は、フィールドバス通信MPUとDPRAMとの間にて実行され、その後、ステップ1001に戻り、次なるOUTフレームの受信を待つ。
このように、マスタユニット10はスライス通信ユニット21に対して通信異常を検知した場合、当該ユニットとのコネクションを切断し、再度コネクションを張るまで当該ユニットに対してOUTフレームの送信は出力しない。そして、スライス通信ユニット21側においては、OUTフレームが所定時間内に受信しないことで通信異常を検知し、状態を通常からIDLEへと遷移させる。そして、後に詳細に説明するが、スライス通信ユニット21側においては、マスタユニット10との通信が切断されているIDLE状態においても、INリフレッシュは常時行っていることにより、IDLE状態から通常状態に復帰した際に即座にINデータをマスタユニットに送信することが可能となる。尚、ここで、上位通信であるフィールドバス通信と、下位通信であるスライスバス通信とでは非同期に通信サイクルが実行されている。
次に、上述のIDLE状態へと遷移したスライス通信ユニット21が通常通信状態へと復帰する際の処理を図11〜15のフローチャートを参照して説明する。
マスタユニット10側における処理が図11のフローチャートに示されている。同図にて示されるように、まず、マスタユニット10への加入処理が実行される(ステップ1101)。この加入処理については後に詳細に説明するが、これはマスタユニット10に対するリモートターミナル装置のシステムへの加入処理である。マスタユニット10とスライス通信ユニット21との間の通信は、上述したTIMEOUTが発生するとコネクションが切断される。コネクションが切断されたユニットと再度I/Oリフレッシュ処理を実行するためには、コネクションを改めて設定する必要が生じる。このステップは、そのコネクションを確立するための加入処理である。ここで、当該スライス通信ユニット21とマスタユニット10とのコネクションが開設したら、CPUユニットとI/Oリフレッシュを実行する(ステップ1102)。そしてその後OUTフレームの送信を行い(ステップ1103)、先に図9を参照して説明した通常通信を実行する(ステップ1104)そして、その通常通信処理において、OUTフレーム送信後のレスポンスが所定時間内に受信されなければ当該スライス通信ユニット21とのコネクションを切断し、マスタユニット10への加入処理が実行されると通常通信に復帰する。
図12に、上記マスタユニット10側における加入処理の詳細を示すフローチャートが示されている。同図にて示されるように、通信異常となったスライス通信ユニット21に対してコネクション開設依頼を送信する(ステップ1201)。このコネクション開設依頼に対して、スライス通信ユニット21からレスポンスがなければ(ステップ1202,なし)、ステップ1201に戻りレスポンスが来るまでコネクション開設依頼の送信が繰り返される。ここで、対象のスライス通信ユニット21からレスポンスがあれば(ステップ1202,あり)、当該レスポンスに含まれるユニット情報の読み出しが実行される(ステップ1203)。尚、ここで言うユニット情報には、当該ユニットがどこの会社製かを示すVendorID、ユニットの種別を示すDeviceType(例えば、DIO、AIO等)、Vendor毎に機種単位に設定する値であるProductCode、等が含まれる。ユニット情報の読み出し完了後、スライス通信ユニット21へのコネクションの設定が行われ(ステップ1204)、コネクションのタイムアウト時間の設定も行われる(ステップ1205)。これらの処理が終了すると、当該スライス通信ユニット21の加入処理が完了する。このとき、マスタユニット10からスライス通信ユニット21への通信には、先に説明したPollingやBitstrove等がある。
続いて、スライス通信ユニット21におけるフィールドバス側のIDLE状態からの復帰処理を示すフローチャートが図13に示されている。スライス通信ユニット21においては、マスタユニット10との通信を実行するフィールドバス側と、I/Oユニットとの通信を実行するスライスバス側との処理があるため、まずここではフィールドバス側の処理から説明する。
図13にて示されるように、IDLE状態となったスライス通信ユニット21は、マスタユニット10からのOUTフレームを受信することで通常通信状態への復帰処理が開始する。そのため、OUTフレームを受信しなければ(ステップ1301,未受信)、IDLE状態が継続するため、OUTフレームを受信するまでINデータの更新のみ実行される(ステップ1302)。スライス通信ユニット21にて、マスタユニット10からのOUTフレームを受信したら(ステップ1301,受信)、当該OUTフレームに対するレスポンスの送信が行われる(ステップ1303)。ここで言うレスポンスとは、スライス通信ユニット21が接続しているI/Oユニット22とのINリフレッシュ処理から得たINデータを表している。INデータの送信後、当該スライス通信ユニット21において後述するIDLE復帰待機設定がなされているかどうかの確認が行われる。ここで言うIDLE復帰待機設定とは、対象となるスライス通信ユニット21に予め設定されているものであって、IDLE状態から通常通信状態へと復帰可能となってから、設定された所定時間通常通信への復帰を行わずに待機する設定のことである。このIDLE復帰待機設定が設定されていなければ(ステップ1304,なし)、待機することなく直ちに通常通信状態へと遷移し、状態フラグがIDLEから通常に変更される(ステップ1305)。それに対して、IDLE復帰待機設定がされている場合(ステップ1304,あり)、予め設定されているPLCのIN処理時間が経過したかどうかの判定が行われる(ステップ1306)。ここで、所定時間が経過していれば(ステップ1306,YES)、所定時間を待機した後に通常通信状態へと遷移し、状態フラグがIDLEから通常に変更される(ステップ1305)。また、所定時間が経過していなければ(ステップ1306,NO)、INデータの更新が実行され(ステップ1307)、ステップ1306に戻り、所定時間の経過を待ち、以後の処理を繰り返す。
IDLE状態から通常通信状態への復帰手順としては、マスタユニット10からのOUTフレームをスライス通信ユニット21にて受信し、そのOUTフレームに対してINデータをレスポンスとして送信することで、通常通信状態へと移行するのであるが、ここで、本発明の実施形態では上述したようにさらにIDLE状態から通常通信状態への復帰を所定時間待機させることが可能とされている。その理由として、スライス通信ユニット21がIDLE状態になってからは通常通信状態に復帰するまでマスタユニット10とのI/Oリフレッシュは実行されておらず、ステップ1301にて受信するOUTデータはエラーが生じてIDLE状態に遷移する前に得られたINデータに基づいて出力されているため、IDLE状態から復帰した最新のINデータに基づく演算結果からOUTデータを出力することが望ましい。そこで、スライス通信ユニット21側にてOUTフレームを受信した後、最新のINデータをレスポンスとして返信し、その後、通常通信への復帰は所定時間待機させて新しいINデータに基づくOUTフレームが送信されてくるのを待つために待機期間を設定することが可能とされている。尚、このような機能を実現するためにも、マスタユニット10との通信が切断された状態においても、スライス通信ユニット21は常にI/OユニットとのINリフレッシュを実行し、INデータを常に更新しておくことが必要となる。
続いて、スライス通信ユニット21におけるI/Oユニット22との通信を実行するスライスバス側のIDLE状態からの復帰処理を示すフローチャートが図14に示されている。同図にて示されるように、スライスバス側のスライス通信ユニット21の処理は、I/Oデータの更新から始まる(ステップ1401)。このI/Oデータの更新とは、スライスバス通信用MPU54と、DPRAM53との間にて実行される。I/Oデータの更新後、スライス通信ユニット21の状態フラグが確認される(ステップ1402)。ここで、状態フラグが『IDLE』であれば(ステップ1402,IDLE)、OUTフレームはマスタユニット10からのOUTフレームは受信していないため、TRGフレームのみ当該スライス通信ユニット21に接続されているI/Oユニット22に対して送信される(ステップ1405)。また、状態フラグが『通常』である場合(ステップ1402,通常)、当該スライス通信ユニット21に接続されているI/Oユニット22に対してOUTフレームの送信が実行される(ステップ1403)。ここで、スライス通信ユニット21から送信されるフレームがTRGフレームであっても、OUTフレームであっても、接続されているI/Oユニット22からのINデータの受信が行われる(ステップ1404)。尚、ここで言うOUTフレームとは、先に説明したように、TRGフレームとマスタユニットからのOUTデータとを含むものである。
図15に、I/Oユニット22側におけるIDLE状態からの復帰処理が示されている。同図にて示されるように、先ずI/Oユニット22においてはスライス通信ユニット21からフレームを受信する(ステップ1501)。ここで、図14にて説明したように、スライス通信ユニット21の状態フラグによって送信されるフレームがTRGフレームとOUTフレームとの2種類存在する。図15に戻り、受信したフレームがOUTフレームである場合(ステップ1501,OUTフレーム)、マスタユニット10との通信が復帰したことを表し、通常通信へと遷移する。ここで言う通常通信とは、当該OUTフレームに含まれるOUTデータを出力機器へと出力し(ステップ1503)、入力機器からのINデータに基づいて返信フレームを作成し(ステップ1506)、返信フレームの送信を実行することである(ステップ1507)。ステップ1501において、受信したフレームがTRGフレームであった場合(ステップ1501,TRGフレーム)、OUTデータのクリアか保持かの設定が参照される。この設定はIDLE状態設定であり、予めI/Oユニットに対してIDLE状態になった場合を想定してユーザが設定するものである。このIDLE状態設定として『保持』が設定されていれば(ステップ1502,保持)、最後に受信したOUTフレームに基づき、現在出力を保持し、保持データを出力機器へと出力する(ステップ1504)。ここで、現在出力を保持するとは、換言すれば出力ラッチに対して何もしないことである。最後に受信した最新のOUTデータをそのまま出力機器へと出力し、その後入力機器からのINデータに基づいて返信フレームを作成し(ステップ1506)、返信フレームの送信を実行する。また、IDLE状態設定が『クリア』であれば(ステップ1502,クリア)、OFFデータを出力機器へ出力し(ステップ1505)、その後入力機器からのINデータに基づいて返信フレームを作成し(ステップ1506)、返信フレームの送信を実行する。尚、ここで言うOFFデータとは、出力ラッチを0にクリアすることを意味している。
このように、本実施形態においては、フィールドバスの状態(スライス通信ユニット21の状態フラグが通常かIDLEか)によって、スライス通信ユニット21がI/Oユニット22に送信するフレームの種別が異なる(OUTフレームかTRGフレームか)。そして、I/Oユニット22側においては、受信するフレームの種別と、設定データに基づいて、出力機器に対してOUTデータ、保持データ、またはOFFデータのいずれかの出力を実行する。INデータに関しては、スライス通信ユニットの状態に関わらず行い続ける。
尚、上記の実施形態においては、リモートターミナル装置のスライス通信ユニット21は、上位通信が切断された場合に遷移するIDLE状態において、当該スライス通信ユニット21に接続される複数台のI/Oユニット22とのINリフレッシュは継続して実行していたが、このIDLE状態においては、INリフレッシュは実行しない場合も容易に実現可能である。そのような場合、IDLE状態においては、スライス通信ユニットは各I/Oユニット22に対してBCONフレームのみ送信し、その応答としてI/Oユニット22はCNフレームのみを返信する。このような態様とすることで、スライス通信ユニット21はIDLE状態においてI/Oユニット22の存在確認のみを実行することとなる。そして、I/Oユニット22の存在確認は常に実行されているため、上位通信がエラーから復帰する際には、容易に通常通信に復帰することが可能となる。