(57)【特許請求の範囲】
【請求項１】
二重化ＣＰＵシステムと、１若しくは２以上のＩ／Ｏユニットと、それらを結ぶシステムバスとを備え、
前記二重化ＣＰＵシステムは、
ユーザメモリ、Ｉ／Ｏメモリ、演算手段、及びＩ／Ｏリフレッシュ手段を少なくとも含む第１のＣＰＵユニットと、
ユーザメモリ、Ｉ／Ｏメモリ、演算手段、及びＩ／Ｏリフレッシュ手段を少なくとも含む第２のＣＰＵユニットと、
第１のＣＰＵユニットと第２のＣＰＵユニットとの間にあって、両ＣＰＵユニット間におけるＩ／Ｏデータやプログラムデータ等の転送を司るＤＰＬユニットとを含み、さらに
ホットスタンバイ機能を有するデュプレックスモードに対応する第１の設定状態とシンプレックスモードに対応する第２の設定状態とを有する運転モード設定手段と、
運転モード設定手段が第１の設定状態にあることを条件として起動され、一方のＣＰＵユニットをアクティブ機かつ他方のＣＰＵユニットをスタンバイ機とするホットスタンバイ機能を有するデュプレックス運転状態を実現する第１の運転状態実現手段と、
運転モード設定手段が第２の設定状態にあることを条件として起動され、一方のＣＰＵユニットをアクティブ状態としかつ他方のＣＰＵユニットを休止状態とするシンプレックス運転状態を実現する第２の運転状態実現手段とを有し、かつ
運転モード設定手段における第２の設定状態から第１の設定状態への切替に際しては、デュプレックス運転状態の開始に先立ち、休止状態にあるＣＰＵユニットからアクティブ状態にあるＣＰＵユニットへとユーザプログラムデータが自動的に転送されるようにした二重化ＰＬＣにおいて、
運転モード設定手段における設定状態の１つとして、ホットスタンバイ機能を有しないデュプレックスモードに対応する第３の設定状態を設けると共に、
運転モード設定手段が第３の設定状態にあることを条件として起動され、ホットスタンバイ機能を有しないデュプレックス運転状態を実現する第３の運転状態実現手段を設け、さらに
運転モード設定手段における第２の設定状態から第３の設定状態への切替に際しては、デュプレックス運転状態の開始に先立ち、休止状態にあるＣＰＵユニットからアクティブ状態にあるＣＰＵユニットへのユーザプログラムのデータ転送が行われないようにした、ことを特徴とする二重化ＰＬＣ。
【請求項２】
運転モード設定手段における設定状態の１つとして、第２のシンプレックスモードに対応する第４の設定状態を設けると共に、
運転モード設定手段が第４の設定状態にあることを条件として起動され、ホットスタンバイ機能を有しないデュプレックス運転状態において、スタンバイ機とされたＣＰＵユニットをアクティブ機とする第２のシンプレックス運転状態を実現する第４の運転状態実現手段をさらに設けた、ことを特徴とする請求項１に記載の二重化ＰＬＣ。
【請求項３】
運転モード設定手段における第２の設定状態から第１の設定状態への切替に際しては、シンプレックス運転状態からホットスタンバイ機能を有するデュプレックス運転状態への移行が行われる、ことを特徴とする請求項１又は２に記載の二重化ＰＬＣ。
【請求項４】
運転モード設定手段における第３の設定状態から第２の設定状態への切替に際しては、ホットスタンバイ機能を有しないデュプレックス運転状態からシンプレックス運転状態への移行が行われる、ことを特徴とする請求項１〜３のいずれかに記載の二重化ＰＬＣ。
【請求項５】
運転モード設定手段における第４の設定状態から第３の設定状態への切替に際しては、第２のシンプレックス運転状態からホットスタンバイ機能を有しないデュプレックス運転状態への移行が行われる、ことを特徴とする請求項１〜４のいずれかに記載の二重化ＰＬＣ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プログラマブル・コントローラ（以下、ＰＬＣと言う）に係り、特に、互いに並列に動作可能な２系統のＣＰＵユニットを有する二重化ＰＬＣに関する。
【背景技術】
【０００２】
二重化ＰＬＣは、互いに並列に動作可能な２系統のＣＰＵユニットを有するもので、システムダウンにより甚大な損害を生ずるような高度の信頼性を要求されるプロセス制御等の用途に広く使用されている。
【０００３】
この種の二重化ＰＬＣは、二重化ＣＰＵシステムと、１若しくは２以上のＩ／Ｏユニットと、それらを結ぶシステムバスとを備えている（例えば、特許文献１参照）。
【０００４】
二重化ＣＰＵシステムは、ユーザメモリ、Ｉ／Ｏメモリ、演算手段、及びＩ／Ｏリフレッシュ手段を少なくとも含む第１のＣＰＵユニットと、ユーザメモリ、Ｉ／Ｏメモリ、演算手段、及びＩ／Ｏリフレッシュ手段を少なくとも含む第２のＣＰＵユニットと、第１のＣＰＵユニットと第２のＣＰＵユニットとの間にあって、両ＣＰＵユニット間におけるＩ／Ｏデータやプログラムデータ等の転送を司るＤＰＬユニットとを含んでいる。
【０００５】
この二重化ＰＬＣには、ホットスタンバイ機能を有するデュプレックスモードに対応する第１の設定状態とシンプレックスモードに対応する第２の設定状態とを有する運転モード設定手段と、運転モード設定手段が第１の設定状態にあることを条件として起動され、一方のＣＰＵユニットをアクティブ機かつ他方のＣＰＵユニットをスタンバイ機とするホットスタンバイ機能を有するデュプレックス運転状態を実現する第１の運転状態実現手段と、運転モード設定手段が第２の設定状態にあることを条件として起動され、一方のＣＰＵユニットをアクティブ状態としかつ他方のＣＰＵユニットを休止状態とするシンプレックス運転状態を実現する第２の運転状態実現手段とが設けられている。
【０００６】
加えて、運転モード設定手段における第２の設定状態から第１の設定状態への切替に際しては、デュプレックス運転状態の開始に先立ち、休止状態にあるＣＰＵユニットからアクティブ状態にあるＣＰＵユニットへとユーザプログラムデータが自動的に転送されるようにされている。
【０００７】
ここで、「ホットスタンバイ機能を有するデュプレックスモード」とは、実際に制御を司るアクティブ側のＣＰＵユニットと実際の制御には関わらないスタンバイ側のＣＰＵユニットとが常時並列に共通のＩＮデータに基づいて同一のユーザプログラムを実行することにより、アクティブ側のＣＰＵユニットに何等かの異常が発生したときには、直ちに、スタンバイ側のＣＰＵユニットがアクティブ側のＣＰＵユニットに取って代われるようにした２台のＣＰＵユニットの運転状態のことを言う。
【０００８】
また、「シンプレックスモード」とは、互いに並列な２台のＣＰＵユニットのうちの１台のみが制御を司る一方、他の１台はユーザプログラム実行に関してはほぼ完全に休止状態とされるようにした２台のＣＰＵユニットの運転状態のことを言う。
【０００９】
そのため、運転モード設定手段を操作して、ホットスタンバイ機能を有するデュプレックスモードからシンプレックスモードへとモードを切り替えた状態において、休止状態にある側のＣＰＵユニットでユーザプログラムの修正、編集等を行ったのち、再び、運転モード設定手段を操作して、シンプレックスモードからホットスタンバイ機能を有するデュプレックスモードへとモードを切り替えれば、デュプレックスモードの再開に先立って、休止状態にあるＣＰＵユニットの側からアクティブ状態にあるＣＰＵユニットの側へと修正、編集後のユーザプログラムが転送されて、アクティブ状態にあるＣＰＵユニットの側の旧プログラムは瞬時に上書きされ、以後、上書き後のユーザプログラムに基づいてホットスタンバイ機能を有するデュプレックスモードが実行される。これにより、二重化ＰＬＣにおいても、所謂オンラインエディットが可能となるのである。
【特許文献１】特開２００４−６２８７２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、このような従来の二重化ＰＬＣにおけるオンラインエディットにあっては、編集作業それ自体は休止状態にあるＰＬＣユニットの側で安全に行うことができる一方、シンプレックスモードからデュプレックスモードへと切り替えれば、その新プログラムは直ちに実行されてしまうから、十分なデバッグができないこととなり、デュプレックスモードにおいて動作異常が発生する虞がある。
【００１１】
また、一旦、シンプレックスモードからデュプレックスモードへと切り替えれば、アクティブ側のＣＰＵユニット内の旧ユーザプログラムは、直ちに、新ユーザプログラムにて上書き消去されてしまうから、旧ユーザプログラムへ復帰するためには、再度、旧プログラムを作成し直さねばならず、多大な時間と労力が必要となる。
【００１２】
この発明は、従来の二重化ＰＬＣのオンラインエディットに際する以上の問題点に着目してなされたものであり、その目的とするところは、作成されたユーザプログラムの信頼性を十分に検証することができると共に、作成されたユーザプログラムに不都合な点が見いだされた場合には、いつでも容易に、旧プログラムを復元することが可能な二重化ＰＬＣを提供することにある。
【課題を解決するための手段】
【００１３】
上記の技術的な課題は、以下の構成を有する新規な二重化ＰＬＣにより解決することができる。
【００１４】
この二重化ＰＬＣは、二重化ＣＰＵシステムと、１若しくは２以上のＩ／Ｏユニットと、それらを結ぶシステムバスとを備えている。
【００１５】
前記二重化ＣＰＵシステムは、ユーザメモリ、Ｉ／Ｏメモリ、演算手段、及びＩ／Ｏリフレッシュ手段を少なくとも含む第１のＣＰＵユニットと、ユーザメモリ、Ｉ／Ｏメモリ、演算手段、及びＩ／Ｏリフレッシュ手段を少なくとも含む第２のＣＰＵユニットと、第１のＣＰＵユニットと第２のＣＰＵユニットとの間にあって、両ＣＰＵユニット間におけるＩ／Ｏデータやプログラムデータ等の転送を司るＤＰＬユニットとを含んでいる。
【００１６】
さらに、この二重化ＰＬＣには、ホットスタンバイ機能を有するデュプレックスモードに対応する第１の設定状態とシンプレックスモードに対応する第２の設定状態とを有する運転モード設定手段と、運転モード設定手段が第１の設定状態にあることを条件として起動され、一方のＣＰＵユニットをアクティブ機かつ他方のＣＰＵユニットをスタンバイ機とするホットスタンバイ機能を有するデュプレックス運転状態を実現する第１の運転状態実現手段と、運転モード設定手段が第２の設定状態にあることを条件として起動され、一方のＣＰＵユニットをアクティブ状態としかつ他方のＣＰＵユニットを休止状態とするシンプレックス運転状態を実現する第２の運転状態実現手段とが設けられている。
【００１７】
そして、運転モード設定手段における第２の設定状態から第１の設定状態への切替に際しては、デュプレックス運転状態の開始に先立ち、休止状態にあるＣＰＵユニットからアクティブ状態にあるＣＰＵユニットへとユーザプログラムデータが自動的に転送されるようになっている。
【００１８】
本発明の二重化ＰＬＣにあっては、上述の構成において、運転モード設定手段における設定状態の１つとして、ホットスタンバイ機能を有しないデュプレックスモードに対応する第３の設定状態を設けると共に、運転モード設定手段が第３の設定状態にあることを条件として起動され、ホットスタンバイ機能を有しないデュプレックス運転状態を実現する第３の運転状態実現手段を設け、さらに運転モード設定手段における第２の設定状態から第３の設定状態への切替に際しては、デュプレックス運転状態の開始に先立ち、休止状態にあるＣＰＵユニットからアクティブ状態にあるＣＰＵユニットへのユーザプログラムのデータ転送が行われないようにした、ことを特徴とするものである。
【００１９】
このような構成によれば、オンラインエディットを行いたい場合には、運転モード設定手段における設定状態を、ホットスタンバイ機能を有するデュプレックスモードに対応する第１の設定状態からシンプレックス状態に対応する第２の設定状態へと切り替え、その状態において休止状態にあるＣＰＵユニット上においてユーザプロクラムの修正や変更等を行ったのち、運転モード設定手段における設定状態を、シンプレックスモードに対応する第２の設定状態からホットスタンバイ機能を有しないデュプレックスモードに対応する第３の設定状態へと切り替える。
【００２０】
すると、シンプレックスモードからホットスタンバイ機能を有しない（すなわち、なんらかの異常が検出されても、アクティブ機からスタンバイ機への切替が起こらない）デュプレックスモードへの切替が行われ、しかもこの切り替えに際しては、アクティブ側のＣＰＵユニット上の旧ユーザプログラムは上書き消去されないから、旧ユーザプログラムについては保存しつつも、デュプレックスモードにおけるＩＮデータ共用機能を利用して、新ユーザプログラムを出力リフレッシュ処理を禁じつつ実行しながら、その動作を例えばツールでＩ／Ｏメモリの内容を参照することで、検証することができる。
【００２１】
信頼性が検証されたならば、運転モード設定手段における設定状態を、ホットスタンバイ機能を有しないデュプレックスモードに対応する第３の設定状態からホットスタンバイ機能を有するデュプレックスモードに対応する第１の設定状態に切り替えれば、目的とするオンラインエディットを完了して、新ユーザプログラムによる通常のデュプレックスモードの運転状態を再開することができる。
【００２２】
一方、検証作業において新ユーザプログラムに不備が発見されたときには、デバッグ作業と検証作業とを繰り返すのであるが、その結果、元の旧ユーザプログラムに戻したいような場合には、その時点でアクティブ機として機能するＣＰＵユニットには、旧ユーザプログラムがそのまま残されているから、例えば、運転モード設定手段における設定状態をホットスタンバイ機能を有しないデュプレックスモードに対応する第３の設定状態からホットスタンバイ機能を有するデュプレックスモードに対応する第１の設定状態に戻すだけの操作で、旧ユーザプログラムによる運転状態へと復旧させることができる。
【００２３】
本発明の好ましい実施の形態においては、運転モード設定手段における設定状態の１つとして、第２のシンプレックスモードに対応する第４の設定状態を設けると共に、運転モード設定手段が第４の設定状態にあることを条件として起動され、ホットスタンバイ機能を有しないデュプレックスモードにおいて、スタンバイ機とされたＣＰＵユニットをアクティブ機とする第２のシンプレックス運転状態を実現する第４の運転状態実現手段をさらに設けるようにしてもよい。
【００２４】
このような構成によれば、ホットスタンバイ機能を有しないデュプレックス運転状態において、出力リフレッシュ処理を禁じた状態でのツールを介する検証で、新ユーザプログラムの動作が正常と検証されたのち、さらに、運転モード設定手段における設定状態を第２のシンプレックスモードに対応する第４の設定状態とすることで、既に動作検証済みの新ユーザプログラムを出力リフレッシュ処理にて実際に外部負荷に与えつつ、その動作を通じてさらに重ねて検証することができる。
【００２５】
なお、この状態においても、ホットスタンバイ機能を有しないデュプレックス運転状態においてアクティブ機とされたＣＰＵユニット内には、旧ユーザプログラムがそのまま保存されているから、この第２のシンプレックスモードに対応する第４の設定状態から第３の設定状態へと必要に応じて切り替えることで、旧ユーザプログラムへの復帰を容易に行うことができる。
【００２６】
本発明の好ましい他の実施の形態においては、運転モード設定手段における第２の設定状態から第１の設定状態への切替に際しては、シンプレックス運転状態からホットスタンバイ機能を有するデュプレックス運転状態への移行が行われる、ようにしてもよい。
【００２７】
このような構成によれば、シンプレックス運転状態においても、必要に応じて、ホットスタンバイ機能を有する通常のデュプレックスモードへの復帰を容易に行うことが可能となる。
【００２８】
本発明の好ましい他の実施の形態においては、運転モード設定手段における第３の設定状態から第２の設定状態への切替に際しては、ホットスタンバイ機能を有しないデュプレックス運転状態からシンプレックス運転状態への移行が行われる、ようにしてもよい。
【００２９】
このような構成によれば、ホットスタンバイ機能を有しないデュプレックス運転状態においても、必要に応じて、シンプレックス運転状態への復帰を容易に行うことが可能となる。
【００３０】
本発明の好ましい他の実施の形態においては、運転モード設定手段における第４の設定状態から第３の設定状態への切替に際しては、第２のシンプレックス運転状態からホットスタンバイ機能を有しないデュプレックス運転状態への移行が行われる、ようにしてもよい。
【００３１】
このような構成によれば、第２のシンプレックス運転状態においても、必要に応じて、ホットスタンバイ機能を有しないデュプレックス運転状態への復帰を容易に行うことが可能となる。
【発明の効果】
【００３２】
本発明によれば、作成されたユーザプログラムの信頼性を十分に検証することができると共に、作成されたユーザプログラムに不都合な点が見いだされた場合には、いつでも容易に、旧プログラムを復元することが可能な二重化ＰＬＣを提供することができる。
【発明を実施するための最良の形態】
【００３３】
以下に、この発明に係る二重化ＰＬＣの好適な実施の一形態を添付図面を参照しながら詳細に説明する。
【００３４】
本発明に係る二重化ＰＬＣ全体のハードウェア構成図が図１に示されている。同図に示されるように、この二重化ＰＬＣ１００は、二重化ＣＰＵシステム１と、二重化電源システム２と、二重化通信システム３と、高機能ＣＰＵユニット４と、高機能Ｉ／Ｏユニット５と、それらを結ぶシステムバス６０が付設されたベースユニット６とを備えている。
【００３５】
二重化ＣＰＵシステム１は、図２に示されるように、第１のＣＰＵユニット１１ａと第２のＣＰＵユニット１１ｂと、第１のＣＰＵユニット１１ａと第２のＣＰＵユニット１１ｂとの間にあって、両ＣＰＵユニット間におけるＩ／Ｏデータやプログラムデータなどの転送を司るＤＰＬユニット１０とを含んで構成される。
【００３６】
ＣＰＵユニット１１は、図３に示されるように、マイクロプロセッサ（ＭＰＵ）１１０１と、システムプログラムメモリ（ＳＲＯＭ）１１０２と、ワークメモリ（ＷＲＡＭ）１１０３と、バックアップユーザメモリ（Ｂ−ＵＭ）１１０４と、ユーザメモリ（ＵＭ）１１０５と、ＩＯメモリ（ＩＯＭ）１１０６と、バックアップＩＯメモリ（ＢＩＯＭ）１１０７と、命令実行回路（演算回路）（ＡＳＩＣ）１１０８を主体として構成されている。
【００３７】
なお、１１０９はペリフェラルポート、１１１０はＲＳ２３２Ｃポート、１１１１はＣＰうベース向けのポート、１１１２はＭ／Ｃインタフェース、１１１３はＬＥＤ、１１１４はスイッチ類、１１１５はインナボード向けのポート、１１１６はＭ／Ｃ向けのポート、１１１７はスイッチ類、１１１８はＬＥＤである。
【００３８】
マイクロプロセッサ（ＭＰＵ）１１０１は、あらかじめ用意されたシステムプログラムを実行することによって、ＣＰＵユニット１１全体を統括制御する。後に詳細に説明するように、このシステムプログラムは、共通処理、演算処理、Ｉ／Ｏリフレッシュ処理、周辺サービス処理などを含んで構成される。
【００３９】
システムプログラムメモリ（ＳＲＯＭ）１１０２はフラッシュメモリ素子で構成され、マイクロプロセッサ（ＭＰＵ）１１０１が実行するシステムプログラムを格納する。ワークメモリ（ＷＲＡＭ）１１０３はＳＲＡＭ素子で構成され、マイクロプロセッサ（ＭＰＵ）１１０１がシステムプログラムを実行する際のワークエリアとして使用される。バッファユーザメモリ（Ｂ−ＵＭ）１１０４はフラッシュメモリ素子で構成されており、ユーザの作成した制御プログラムに相当するユーザプログラムを格納するものである。ユーザプログラムメモリ（ＵＭ）１１０５はＳＲＡＭ素子で構成されており、このメモリ１１０５には、電源投入直後のイニシャル処理において、バッファユーザメモリ（Ｂ−ＵＭ）１１０４から転送されてくるユーザプログラムが格納される。ＩＯメモリ（ＩＯＭ）１１０６は、高機能Ｉ／Ｏユニット５を含むいくつかのＩ／ＯユニットのＩＯデータに関するバッファエリアとして機能するものであり、このＩＯメモリ（ＩＯＭ）の入力エリアには、該当するＩ／Ｏユニットの入力データが周期的に取り込まれ、また出力エリアの内容はＩ／Ｏユニットの出力エリアへと周期的に転送される。そして、ユーザプログラムを構成する各命令語はこのＩＯメモリ（ＩＯＭ）１１０６の入出力データを適宜参照して実行され、またその実行結果によって、このＩＯエリアのデータが適宜書き換えられる。バッファＩＯメモリ（ＢＩＯＭ）１１０７は、二重化制御などのために利用される。
【００４０】
命令実行回路（ＡＳＩＣ）１１０８は、ユーザメモリ（ＵＭ）１１０５から順次ユーザプログラムを構成する各命令語を読み出すと共に、これをＩＯメモリ（ＩＯＭ）１１０６のＩＯデータを参照して実行するものである。
【００４１】
なお、この種のＣＰＵユニット１１のハードウェア構成については既に各種の公開公報などによって周知であるからこれ以上の説明は省略する。
【００４２】
図１に戻って、二重化ＣＰＵシステム１、二重化電源システム２、二重化通信システム３、高機能ＣＰＵユニット４、及び高機能Ｉ／Ｏユニット５を構成する各種のユニットは、ベースユニット６上に配列された一連のコネクタに対して着脱可能とされ、これらのコネクタにはオンライン脱着制御部６３で制御されるコネクタスイッチ６３−１〜６３−４が設けられる。また、二重化電源システム２を構成する２台の電源ユニット２ａ，２ｂの給電出力はＯＲ出力部６５を介して回路全体に供給されると共に、その通電状態は電源状態監視部６２によって監視される。
【００４３】
二重化ＣＰＵシステム１を構成する第１及び第２のＣＰＵユニット１１ａ，１１ｂとＤＰＬユニット１０とは、バス切替部６１の作用によって、システムバス６０と適宜結合される。なお、この種の二重化ＣＰＵシステムにおけるバス切替制御についても、種々の文献により公知であるからこれ以上の説明は省略する。
【００４４】
ＤＰＬユニットの詳細を示すハードウェア構成図が図４に示されている。同図に示されるように、ＤＰＬユニット１０は、二重化制御回路１００１と、第１の二重化ポート１００２ａと、第２の二重化ポート１００２ｂとを備えており、これらを適宜作動させることによって、左側に位置する第１のＣＰＵユニット１１ａと右側に位置する第２のＣＰＵユニット１１ｂとの間において、ＩＯデータやユーザプログラムデータの転送を制御するようになされている。このＤＰＬユニット１０の動作についても、種々の文献により当業者にはよく知られているため、これ以上の説明は省略する。
【００４５】
次に、この二重化ＰＬＣにおいて、ユーザプログラムの入替（オンラインエディット）を行う場合における各動作状態と状態間遷移条件となる操作との関係を示すフローチャート（その１）〜（その３）が図５〜図７に示されている。また、各動作状態における左右のＣＰＵユニットの動作を並べて示すフローチャートが図１１〜図１６に示されている。
【００４６】
なお、図１１〜図１６のフローチャートに現れる用語の意味内容は下記のとおりである。
「旧プログラム」：現在実行しているユーザプログラム
「新プログラム」：新たに動作させたいユーザプログラム
アクティブ側（ＡＣＴ）
スタンバイ側（ＳＴＢ）
「電源オン初期処理」：電源オン時に１回実行する処理（ハードウェアイニシャルやメモリクリアなど）
「二重化イニシャル」：アクティブ側とスタンバイ側のデータを一致させるために、アクティブ側からスタンバイ側にデータ転送／照合を行う
「共通処理」：メモリチェックやバッテリチェックなどの異常監視とＤＩＰスイッチ監視処理など
「演算処理」：ユーザプログラムの実行
「二重化同期開始」：アクティブ側、スタンバイ側がこれ以降、同期して動作する
「Ｉ／Ｏリフレッシュ」：あらかじめ定められたユニットとのサイクリックなデータ交換
「同期待機」：アクティブ側が実行完了するまで実行待機する
「周辺サービス」：ツールサービスやユニットのイベントサービスなど、イベント発生時にのみ実行されるサービス
「二重化リフレッシュ」：アクティブ側で検出した異常、又は更新した特殊補助リレーの内容をスタンバイ側に転送する
「二重化同期終了待ち」：同期して動作していた、アクティブ側、スタンバイ側が、これ以降非同期で動作する
【００４７】
図５に戻って、いま仮に、左側ＣＰＵユニットをアクティブ機、右側ＣＰＵユニットをスタンバイ機として、デュープレックス（ＤＰＬ）運転中であるものと想定する（ステップ１０１）。
【００４８】
このＤＰＬ運転中における左右のＣＰＵユニットの動作が図１１のフローチャートに示されている。同図に示されるように、このＤＰＬ運転中にあっては、アクティブ機のＩ／Ｏリフレッシュ処理（ステップ３０５）で取得されたＩＮデータは、スタンバイ機における同期待機処理（ステップ３５５）において、スタンバイ機側へと転送処理される。そのため、アクティブ機とスタンバイ機とではＩＮデータを共用しつつ、同一のユーザプログラムに関する演算処理（ステップ３０４，３５４）が実行されるから、両ＣＰＵユニットのＩ／Ｏメモリの内容は同一となる。そのため、アクティブ機側において何らかの異常が発生した場合、直ちに二重化リフレッシュ処理（ステップ３０８）にてその内容がスタンバイ機側へと伝えられ、これによりアクティブ機からスタンバイ機への制御権の移行が瞬時に行われて、スタンバイ機はアクティブ機に取って代わることとなる。
【００４９】
図５に戻って、この状態において、モード設定スイッチをシンプレックス（ＳＰＬ）、リザーブスイッチをＯＦＦとして、イニシャルスイッチ（ＩＮＩＴ−ＳＷ）を押下する（ステップ１０２）。
【００５０】
すると、ステップ１０３へと進んで、左側ＣＰＵユニットをアクティブ機、右側ＣＰＵユニットをスタンバイ機としたシンプレックス運転中となる（ステップ１０３）。
【００５１】
このＳＰＬ運転中における左右のＣＰＵユニットの動作が図１２のフローチャートに示されている。同図に示されるように、このシンプレックスモードにあっては、アクティブ機側のＣＰＵユニットについては、共通処理、演算処理、Ｉ／Ｏリフレッシュ処理、及び周辺サービス処理を繰り返し実行する（ステップ４０１〜４０４）。これに対して、スタンバイ機側のＣＰＵユニットにおいては、共通処理と周辺サービス処理の一部とを繰り返し実行し（ステップ４５１，４５４）、演算処理及びＩ／Ｏリフレッシュ処理は実行しない。つまり、スタンバイ機側のＣＰＵユニットはほぼ休止状態とされる。そのため、図１２のフローチャートに示されるように、スタンバイ機側のＣＰＵユニットはアクティブ機側のＣＰＵユニットに何ら影響を与えないから、スタンバイ機側のＣＰＵユニットに対して安全に新規のユーザプログラムを転送することができる。
【００５２】
図５に戻って、このとき、ＲＵＮ中プログラムを、デバッグ機能を使ってユーザプログラムを変更したい場合には（ステップ１０４ＹＥＳ）、モード設定スイッチをデュープレックス（ＤＰＬ）、リザーブスイッチ（ＲＳＶ−ＳＷ）をＯＮとしたまま、イニシャルスイッチ（ＩＮＩＴ−ＳＷ）を押下する（ステップ１０５）。
【００５３】
すると、図５のステップ１０６へと進んで、仮二重化イニシャル中とされる。仮二重化イニシャル処理が完了すると、ステップ１０７へと進んで、左側ＣＰＵユニットをアクティブ機、右側ＣＰＵユニットをスタンバイ機とした仮デュープレックス（ＤＰＬ）運転中とされる（ステップ１０７）。
【００５４】
この仮ＤＰＬ運転中における左右のＣＰＵユニットの動作が図１３のフローチャートに示されている。同図に示されるように、この仮二重化モードにあっては、ＳＰＬモードから仮ＤＰＬモードへの移行に際して、それまで休止状態とされていたスタンバイ機側のＣＰＵユニットからアクティブ機側のＣＰＵユニットへの新プログラムの転送は行われない。つまり、通常のデュープレックスモードの場合、両ＣＰＵユニットは同一のプログラムに基づいて動作するのに対し、この仮デュープレックスモードにあっては、スタンバイ機側のＣＰＵユニットは新プログラムで動作するのに対し、アクティブ機側のＣＰＵユニットは依然として旧プログラムで動作する。一方、Ｉ／Ｏリフレッシュ処理（ステップ５０３）と同期待機処理（ステップ５５３）との間で転送処理が行われる結果、両ＣＰＵユニットはＩＮデータを共用して演算処理を行う。もちろん、ＯＵＴリフレッシュについては、アクティブ機側のＣＰＵユニットにおいてのみ行われるから、新プログラムの実行結果としての出力データが、ＩＯユニットから外部へと送られることはない。従って、この仮ＤＰＬモードにおいて、ユーザは、スタンバイ機側のＣＰＵユニットに対してツールを接続してＩ／Ｏメモリのデータをモニタすることによって、新プログラムが正常に動作するかどうかを実際のＩＮデータを用いて検証することができる。また、この仮ＤＰＬモードにあっては、アクティブ機側のＣＰＵユニットにおいて何らかの異常が発生したとしても、スタンバイ機側のＣＰＵユニットでは二重化リフレッシュ処理（ステップ５０６）の結果を受け取らないから、そのような異常事態が起きても、アクティブ機側のＣＰＵユニットからスタンバイ機側のＣＰＵユニットへの制御権の移行が行われることがなく、つまり、スタンバイ機がアクティブ機に取って代わることはない。
【００５５】
このようにして、新プログラムを検証した結果、デバッグ機のラダープログラムに問題がなければ（ステップ１０８ＹＥＳ）、ユーザは、モード設定スイッチをデュープレックス（ＤＰＬ）、リザーブスイッチ（ＲＳＶ−ＳＷ）をＯＮとしたまま、イニシャルスイッチ（ＩＮＩＴ−ＳＷ）を押下する（ステップ１０９）。
【００５６】
すると、図７のステップ１１０へと進んで、左側ＣＰＵユニットをスタンバイ機、右側ＣＰＵユニットをアクティブ機としたシンプレックス（ＳＰＬ）運転中となる。このときのＳＰＬ運転は、本発明の第２のＳＰＬ運転状態に相当する。
【００５７】
このＳＰＬ運転中における左右のＣＰＵユニットの動作が図１４のフローチャートに示されている。同図に示されるように、この第２のシンプレックスモードにあっては、アクティブ機側のＣＰＵユニットにあっては、共通処理、演算処理、Ｉ／Ｏリフレッシュ処理、及び周辺サービス処理を繰り返し実行する（ステップ６５１〜６５４）。これに対して、スタンバイ機側のＣＰＵユニットにあっては、共通処理と周辺サービス処理は実行するものの（ステップ６０１，６０４）、演算処理及びＩ／Ｏリフレッシュ処理については実行しない。つまり、スタンバイ機側のＣＰＵユニットはほぼ休止状態となる。従って、この第２のシンプレックスモードにあっては、既にツールを介して正常動作を検証された新プログラムについて、これを更に、実際に出力リフレッシュを行わせることによって、Ｉ／Ｏユニットを介して非制御対象機器へと与えることにより、実際の非制御対象装置の動作を通じて、プログラムの信頼性を確認することができる。なお、このシンプレックスモードにあっては、スタンバイ機側のＣＰＵユニットにおけるユーザプログラムは旧ユーザプログラムの状態に保持されている。
【００５８】
このようにして、アクティブ機における新プログラムの運転で問題がなければ（ステップ１１１ＹＥＳ）、デバッグ機をアクティブ機として運転するために、モード設定スイッチをデュープレックス（ＤＰＬ）、リザーブスイッチ（ＲＳＶ−ＳＷ）をＯＦＦとしたまま、イニシャルスイッチ（ＩＮＩＴ−ＳＷ）を押下する（ステップ１１２）。
【００５９】
すると、ステップ１１３へと移って、二重化イニシャル中とされる。これが完了すると、さらにステップ１１４へと移って、左側ＣＰＵユニットをスタンバイ機、右側ＣＰＵユニットをアクティブ機としたＤＰＬ運転中とされる。
【００６０】
このときのＤＰＬ運転中における左右のＣＰＵユニットの動作が図１５のフローチャートに示されている。同図に示されるように、このＤＰＬ運転中にあっては、第２のシンプレックス運転中にあって、アクティブ機とされたＣＰＵユニットの新プログラムは、スタンバイ機とされたＣＰＵユニットへと転送されるから、左右のＣＰＵユニットの実行するユーザプログラムは、いずれも新プログラムとされる。そして、アクティブ機側とスタンバイ機側とではＩＮデータを共用しつつ、同一のユーザプログラムを実行し、その実行結果でそれぞれのＣＰＵユニットの内部のＩ／Ｏデータを書き換え、ＯＵＴリフレッシュについては、アクティブ機側のみが行うことによって、いわゆるホットスタンバイの状態を実現することができる。つまり、アクティブ機側のＣＰＵユニットにおいて何らかの異常が発生した場合、直ちに、制御権はアクティブ機側のＣＰＵからスタンバイ機側のＣＰＵへと移行され、ホットスタンバイによるバックアップが行われる。
【００６１】
なお、以上説明したフローチャート（図５〜図７）において、例えば、ＲＵＮ中プログラムをデバッグ機能を使ってユーザプログラムを変更することを行わないのであれば（ステップ１０４ＮＯ）、モード設定スイッチをＤＰＬ、リザーブスイッチ（ＲＳＶ−ＳＷ）をＯＦＦとしたまま、イニシャルスイッチ（ＩＮＩＴ−ＳＷ）を押下する（ステップ１１５）。
【００６２】
すると、二重化イニシャル中（ステップ１１６）を経て、当初のＤＰＬ運転中（ステップ１０１）への復帰が可能となる。
【００６３】
また、デバッグ機のラダープログラムに問題ありとされる場合には（ステップ１０８ＮＯ）、モード設定スイッチをＳＰＬ、リザーブスイッチ（ＲＳＶ−ＳＷ）をＯＦＦとしたまま、イニシャルスイッチ（ＩＮＩＴ−ＳＷ）を押下することによって（ステップ１１７）、ＳＰＬ運転中に復帰することができる（ステップ１０３）。
【００６４】
さらに、新ＡＣＴでの運転で問題ありとされる場合には（ステップ１１１ＮＯ）、モード設定スイッチをＤＰＬ、リザーブスイッチ（ＲＳＶ−ＳＷ）をＯＮとしたまま、イニシャルスイッチ（ＩＮＩＴ−ＳＷ）を押下することによって（ステップ１１８）、仮二重化イニシャル中（ステップ１１９）を経て、仮ＤＰＬ運転中（ステップ１２０）へと復帰することができる。
【００６５】
従って、この実施形態によれば、新プログラムを安全に検証した上で、本来の二重化モードへと移行させることができる一方、その途中で何らかの不都合が新プログラムに見出されたような場合には、いつでも簡単にそれ以前の状態へと復帰させることができるから、この種の高信頼性を要求される二重化ＰＬＣにおけるユーザプログラムのオンラインエディットに極めて好適なものとなる。
【００６６】
以上説明した図５〜図７のフローチャートにおける各ステップの内容を図８に表にしてまとめて示す。また、図５〜図７のフローチャートにおける各状態間遷移の判定処理は、各ＣＰＵユニットが実行する共通処理にて判定される。この共通処理中で実行される状態判定処理の詳細が図９及び図１０に示されている。
【００６７】
最後に、以上のプログラム入替えを図１６〜図２０を参照して概念的に説明する。まず、図１６に示されるように、この二重化ＰＬＣには、モード設定スイッチ１００３ａ、イニシャルスイッチ１００３ｂ、リザーブスイッチ１００３ｃが設けられている。なお、この例にあっては、モード設定スイッチ１００３ａは２ビットのＤＩＰスイッチの特定１ビット、リザーブスイッチ１００３ｃは４ビットのＤＩＰスイッチの特定１ビットに割り当てられている。また、イニシャルスイッチ１００３ｂはモメンタリスイッチとされている。
【００６８】
図１６に示されるように、最初の状態では、アクティブ系及びスタンバイ系いずれのＣＰＵユニットも旧プログラムを格納しており、その動作モードは二重化運転状態（デュープレックスモード）とされている。この状態において、モード設定スイッチ１００３ａをＳＰＬとし、リザーブスイッチ１００３ｃをＯＦＦとして、イニシャルスイッチ１００３ｂを押下すると、デュープレックスモードからシンプレックスモードへの移行が行われる。
【００６９】
図１７に示されるように、このシンプレックスモードにおいては、アクティブ系とスタンバイ系とは互いに独立に動作するから、スタンバイ系のＣＰＵユニットに対してユーザプログラムを安全に転送することができる。しかる後、モード設定スイッチ１００３ａをＤＰＬ、リザーブスイッチ１００３ｃをＯＮとしたまま、イニシャルスイッチ１００３ｂを押下することによって、シンプレックスモードから仮二重化モードへの移行を行わせることができる。
【００７０】
仮二重化モードにおいては、図１８に示されるように、両ＣＰＵユニットはＩＮデータを共用するものの、アクティブ系ＣＰＵユニットは旧プログラムを実行するのに対し、スタンバイ系ＣＰＵユニットは新プログラムを実行する。そのため、この状態においては、新プログラムに対し、生のＩＮデータを与えることによって、スタンバイ系ＣＰＵユニットのＩＯメモリに新プログラムによる演算結果を出現させることができる。そのため、このＩＯメモリの内容を適宜なツール装置を介してモニタすることによって、新プログラムが正常に動作するかどうかをツール装置を介して検証することができる。
【００７１】
この状態において、イニシャルスイッチ１００３ｂをさらに押下すると、仮二重化モードから正規の二重化モードへの移行が行われる。
【００７２】
正規の二重化モードにおいては、図２０に示されるように、アクティブ系及びスタンバイ系はいずれも新プログラムを実行し、さらにそれらは共通のＩＮデータで動作するから、アクティブ系のＣＰＵユニットにおいて何らかの異常が発生した場合には、直ちにスタンバイ系ＣＰＵユニットがアクティブ系ＣＰＵユニットに取って代わることが可能となるのである。
【産業上の利用可能性】
【００７３】
本発明によれば、作成されたユーザプログラムの信頼性を十分に検証することができると共に、作成されたユーザプログラムに不都合な点が見いだされた場合には、いつでも容易に、旧プログラムを復元することが可能な二重化ＰＬＣを提供することができる。
【図面の簡単な説明】
【００７４】
【図１】本発明に係る二重化ＰＬＣ全体のハードウェア構成図である。
【図２】二重化ＣＰＵシステムの詳細を示すハードウェア構成図である。
【図３】ＣＰＵユニットの詳細を示すハードウェア構成図である。
【図４】ＤＰＬユニットの詳細を示すハードウェア構成図である。
【図５】ＰＬＣの各動作状態と状態間遷移条件となる操作との関係を示すフローチャート（その１）である。
【図６】ＰＬＣの各動作状態と状態間遷移条件となる操作との関係を示すフローチャート（その２）である。
【図７】ＰＬＣの各動作状態と状態間遷移条件となる操作との関係を示すフローチャート（その３）である。
【図８】図５〜図７のフローチャートにおける各ステップの内容を表にして示す図である。
【図９】共通処理中で実行される状態判定処理の詳細を示すフローチャート（その１）である。
【図１０】共通処理中で実行される状態判定処理の詳細を示すフローチャート（その２）である。
【図１１】入替え前の状態（二重化運転状態）の動作を示すフローチャートである。
【図１２】シンプレックスモードの動作を示すフローチャートである。
【図１３】仮二重化モードの状態（ＩＮデータの共通化）の動作を示すフローチャートである。
【図１４】制御系切換時の状態（シンプレックスモード、新プログラムで制御開始）の動作を示すフローチャートである。
【図１５】二重化運転開始の状態（新プログラムで二重化運転）の動作を示すフローチャートである。
【図１６】入替え前の状態（二重化運転状態）である。
【図１７】シンプレックスモード（シングル状態）：プログラムを転送しますの説明図である。
【図１８】仮二重化モード（ＩＮデータの共有化）である。
【図１９】仮二重化モードでの制御系切替（新プログラムで制御開始）である。
【図２０】二重化運転開始（新プログラムで二重化運転）である。
【符号の説明】
【００７５】
１      二重化ＣＰＵシステム
２      二重化電源システム
３      二重化通信システム
４      高機能ＣＰＵユニット
５      高機能Ｉ／Ｏユニット
６      ベースユニット
１０    ＤＰＬユニット
１１ａ      第１のＣＰＵユニット
１１ｂ      第２のＣＰＵユニット
１１０１    マイクロプロセッサ（ＭＰＵ）
１１０２    システムプログラムメモリ（ＳＲＯＭ）
１１０３    ワーキングメモリ（ＷＲＡＭ）
１１０４    バッファユーザメモリ（Ｂ−ＵＭ）
１１０５    ユーザメモリ（ＵＭ）
１１０６    ＩＯメモリ（ＩＯＭ）
１１０７    バッファＩＯメモリ（ＢＩＯＭ）
１１０８    命令実行回路（ＡＳＩＣ）
１００３ａ  モード設定スイッチ
１００３ｂ  イニシャルスイッチ
１００３ｃ  リザーブスイッチ
【図１】
0004826557.tif 000002
【図２】
0004826557.tif 000003
【図３】
0004826557.tif 000004
【図４】
0004826557.tif 000005
【図５】
0004826557.tif 000006
【図６】
0004826557.tif 000007
【図７】
0004826557.tif 000008
【図８】
0004826557.tif 000009
【図９】
0004826557.tif 000010
【図１０】
0004826557.tif 000011
【図１１】
0004826557.tif 000012
【図１２】
0004826557.tif 000013
【図１３】
0004826557.tif 000014
【図１４】
0004826557.tif 000015
【図１５】
0004826557.tif 000016
【図１６】
0004826557.tif 000017
【図１７】
0004826557.tif 000018
【図１８】
0004826557.tif 000019
【図１９】
0004826557.tif 000020
【図２０】
0004826557.tif 000021