以下に本発明の一実施形態を示す。以下で説明される個別の実施形態は、本発明の上位概念、中位概念および下位概念など種々の概念を理解するために役立つであろう。また、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。
図1(A)は、プログラマブルロジックコントローラ(PLC)の外観を示す斜視図である。PLCはたんにプログラマブルコントローラと呼ばれることもある。図1において、PLC1は本体2とオペレーションモジュール3とに分離されている。本体2には、リミットスイッチ、センサなどの入力機器と接続するための入力端子群4と、電磁開閉器、ソレノイド、モータ、アクチュエータ、シリンダ、リレー、位置決めシステムなどの出力機器と接続するための出力端子群5とを備えている(図1ではカバーがかかっている)。また、本体2の外側にはモジュールカセット形態のオペレーションモジュール3を収容する収容部6を備えている。つまり、オペレーションモジュール3は、本体2の収容部6に対して取り付けたり、取り外したりすることが可能である。収容部6には、オペレーションモジュール3を位置決めするためのボス8(円筒形状の突起部)と、オペレーションモジュール3の内部の制御部や記憶部と通信するためのコネクタ7が設けられている。オペレーションモジュール3の背面(後面)には、ボス8が嵌合する不図示の穴部が設けられている。また、オペレーションモジュール3の背面には、コネクタ7の接点と接触する端子が設けられている。また、オペレーションモジュール3の側面にはメモリカードを挿入するためのカードスロット13が設けられている。カードスロット13の位置は、オペレーションモジュール3の前面であってもよいし、背面であってもよい。なお、本実施形態ではメモリカードを挿入するためのカードスロット13を設けているが、これを設けない構成でも勿論よい。この場合、オペレーションモジュール3内に、不揮発性の記憶媒体が設けられる。
図1(B)は、PLC1の本体2の収容部6にオペレーションモジュール3が取り付けられた様子を示している。図1(B)が示すように、オペレーションモジュール3の前面に表示部が設けられており、この表示部が本体2の前面に来るように本体2に対して取り付けられる。本体2の背面には、PLC1を所定の規格レール(例えばDINレール)に取り付けるためのレール取付部2aが設けられており、オペレーションモジュール3は、レール取付部2aが設けられた面と反対側の面(前面)に取り付けられる。つまり、オペレーションモジュール3は、その背面と収容部6の底面とを対向させつつ本体2の収容部6に収容される。
このように取り付けられた結果、オペレーションモジュール3の前面に設けられた表示部は、外部から視認可能になる。また、オペレータは、表示部の表示画面を確認しながら、後述する操作部11(図2)を簡易に操作(例えばロード操作)することができる。なお、オペレーションモジュール3におけるDINレールの配置は、外部から視認可能な程度に改変可能であって、図示する構成に限られない。
図2は、オペレーションモジュール3の前面側を示した図である。オペレーションモジュール3の前面には、液晶表示装置や自発光型表示装置などの表示部10が設けられている。表示部10は、オペレーションモジュール3が収容部6に取り付けられているときに、本体2に関する情報などを表示する。オペレーションモジュール3の前面には、オペレータが各種の指示を入力するための操作部11が設けられている。操作部11には、オペレータの操作を受け付けるための複数のボタン(キー)が設けられている。操作部11のうち、Mキーはトップメニューに戻るためのキーであって、S(Shift)キーは長押しにより無効状態にする機能が割り当てられたキーであって、上下キー(上三角キー及び下三角キー)はメニューを選択するためのキー、或いは、デバイス値などの数値をカウントアップ又はカウントダウンするためのキーであって、Rキーは選択されたメニューを実行するためのキー、或いは、次の画面に遷移するためのキーである。オペレータは、操作部11を操作することで、表示部10に表示される画面を所望の画面にまで遷移させることができ、PLC1に所望の処理を実行させることができる(例えば後述する図7など)。
特に、操作部11の上下キーを操作することで、例えば、リレーデバイスのON・OFFを切り換えたり、ワードデバイスのデバイス値をカウントアップ又はカウントダウンしたりする等、デバイス情報を変更することができる。操作部11は、PLC1内に記憶されたデバイス情報を変更するための機能を有している。
オペレーションモジュール3の前面上部にはオペレーションモジュール3を着脱する際にオペレータが指を掛けることができるツマミ12が設けられている。ツマミ12を設けることで、オペレーションモジュール3を手から滑らせにくくし、安全に取り外したり、取り付けたりすることができる。なお、本実施形態では、オペレーションモジュール3を取り外し容易にするためにツマミ12を設けているが、例えば凹みや窪みを設けてもよい。オペレーションモジュール3が収容部6から取り外されるときにオペレータの指先を引っ掛けることが可能な、引っ掛け部を形成することによって、同様の効果が得られる。
また、オペレーションモジュール3又は本体2の収容部6のいずれか一方に、弾性を有する係合突起が設けられ、他方に、この係合突起と係合する係合溝が形成されてもよい。これにより、PLC1の前面を鉛直方向で下に向けてもオペレーションモジュール3が外れて落下しないようになっている。例えば、本実施形態では、オペレーションモジュール3の上面及び下面には、それぞれ、オペレーションモジュール3を収容部6に取り付けた後に本体2に固定するためのポッチ(弾性部材)3aが2個設けられている(図1(A)及び図2参照)。一方、本体2の収容部6の内側には、これら4個のポッチ3aが嵌め込まれる溝が形成されている。オペレーションモジュール3を収容部6に取り付けると、ポッチ3aが溝に嵌め込まれ、PLC1の前面を下に向けてもオペレーションモジュール3が外れて落下しないようになっている。
オペレーションモジュール3の側面に設けられたカードスロット13には、図2に示すように、メモリカード14が挿入される。メモリカード14には、PCなどのプログラム作成支援装置により作成されたプロジェクトデータ(ラダープログラムや各種のパラメータ)が記憶されたり、PLC1はオペレーションモジュール3からデバイス情報などがセーブされたりする。メモリカード14は、ログラマブルロジックコントローラの本体にロードされる設定情報を記憶した記憶部の一例である。
図3は、2つの収容部を本体2に備えたPLC1を示している。これらの複数の収容部は、それぞれ共通の形状と共通の接点とを有している。一方の収容部にはオペレーションモジュール3が取り付けられており、他方の収容部にはシリアル通信モジュール9が取り付けられている。このように収容部6に対して各モジュールは形状およびコネクタに関して互換性がある。そのため、オペレーションモジュール3とシリアル通信モジュール9とを入れ替えて収容部6に取り付けることもできる。これにより、必要な収容部6(スロット)の数を減らすことができ、PLC1の筐体の小型化に資することができる。特に、収容部6が2個あるため、多機能化と筐体小型化とを同時に実現することができる。なお、シリアル通信モジュール9は、PCなどのプログラム作成支援装置や、拡張ユニット、入力機器、出力機器などの被制御機器とシリアル通信するためのコネクタを備えた通信モジュールである。ここでは、2つの収容部を本体2に設けられているが、3つ以上の収容部6が本体2に設けられていてもよい。このように収容部6は、オペレーションモジュール3だけでなく、他の用途のモジュールを取り付けられるように構成されていてもよい。つまり、収容部6を1つだけ備えることができる小型のPLCであっても、本発明を適用できる。たとえば、ラダープログラムを転送可能なプログラムモードでPLC1が作動しているときはオペレーションモジュール3を取り付け、ラダープログラムを実行するランモードでPLC1が作動しているときはシリアル通信モジュール9を取り付けるといった使い方も可能である。なお、モジュールの取り付けと取り外しは、基本的に、PLC1の電源をOFFにしてから実行される。
図4は、PLC1の本体2のブロック図である。本体2の内部に設けられたコントローラは、CPUやASICなどの論理回路、メモリなどの記憶装置を備えている。制御部20は、記憶部用ドライバ36を介して記憶部30にアクセスする。つまり、制御部20からのライトコマンドやリードコマンドにしたがって、記憶部用ドライバ36は、記憶部30へ情報を書き出す書き出し部、および、記憶部30から情報を読み出す読み出し部として機能する。記憶部30は、プログラム作成支援装置50から通信部35を介して受信したラダープログラム31やデバイス情報34などの設定情報を保持する保持部として機能する。デバイス情報34は、記憶部30に確保された記憶領域であるデバイス33に記憶される。ログデータ32は、制御部20がラダープログラム31を実行した結果を示すデータである。また、記憶部30は、オペレーションモジュール3からロードされた設定情報を保持する保持部として機能する。
制御部20は、本体2に接続されている被制御機器を記憶部30に保持されている設定情報にしたがって制御する被制御機器制御部として機能する。制御部20は、被制御機器の制御機能に加えて、本実施形態に特有の機能を実現する各種の制御部を備えている。データロック制御部21は、たとえば、オペレーションモジュール3のメモリカード14に記憶されているデータの消去、上書き、変更などを許容したり禁止したりするための制御部である。ロード制御部22は、たとえば、オペレーションモジュール3の記憶部に記憶されているラダープログラムやデバイス情報などの設定情報を、本体2の記憶部30にロードする処理を制御する。つまり、ロード制御部22は、オペレーションモジュール3が収容部6に取り付けられているときに、メモリカード14に記憶されている設定情報を本体2に対してロードするためのロード指示が操作部11を通じて入力されると、メモリカード14に記憶されている設定情報を本体2に対してロードするロード制御部として機能する。セキュリティ制御部23は、オペレーションモジュール3に対する特定の操作を禁止する操作禁止機能を制御する制御部である。セーブ制御部24は、記憶部30に記憶されているラダープログラム31、ログデータ32、デバイス情報34などをオペレーションモジュール3の記憶部にセーブする処理を制御する。データクリア制御部25は、記憶部30にラダープログラム31、ログデータ32、デバイス情報34などを部分的または全体的にクリアしたり、オペレーションモジュール3に記憶されているデータやプログラムなどを部分的または全体的にクリアしたりする処理を制御する。プロパティ表示制御部26は、オペレーションモジュール3のメモリカード14に記憶されているプロジェクトデータのプロパティ情報を表示部10に表示するプロパティ表示処理を制御する。
なお、本実施形態では制御部20は本体2側に設けているが、これをオペレーションモジュール3側に設けることも可能である。本実施形態のように本体2側に設けることで、PLC1による画面の違いをオペレーションモジュール3により吸収するよう構成できる(例えば、特定のPLC1が画面Aを表示させる機能を有し、他のPLC1が画面Bを表示させる機能を有する場合であっても、オペレーションモジュール3に適切に表示させることができる)。一方で、制御部20をオペレーションモジュール3側に設けた場合には、PLC1側のプラットフォームの共通化を図ることができる。
また、制御部20内の各部のうち、一部の機能のみをオペレーションモジュールに設けることも可能である。例えばプロパティ表示制御部26をオペレーションモジュール3に設けることで、オペレーションモジュール3においてプロパティ表示させるなど、モジュール単独での操作が可能になる。
オペレーションモジュール管理部40は、オペレーションモジュール3のメモリカード14にアクセスするためのアドレス情報41を保持している。制御部20は、このアドレス情報41を参照して、オペレーションモジュール3のメモリカード14にアクセスする。制御部20は、読み出し部および書き出し部として機能するメモリカードドライバ37を介してオペレーションモジュール3のメモリカード14にアクセスする。モジュール通信部42は、オペレーションモジュール3と通信するためのユニットである。解釈部43は、モジュール通信部42により受信されたデータやコマンドなどを解釈し、解釈結果を制御部20に渡す。表示情報作成部44は、制御部20からの命令やデータにしたがって表示情報を作成し、モジュール通信部42を介してオペレーションモジュール3に出力する。たとえば、メニュー画面やエラー画面などを示す表示情報は表示情報作成部44によって作成され、モジュール通信部42を介してオペレーションモジュール3に渡され、表示部10に表示される。このように、オペレーションモジュール3は、モジュール通信部42から送信されてきた表示情報を表示部10に表示させる。
PLC状態管理部38は、PLC1がラダープログラムを実行しているランモードにあるのか、それともPLC1がラダープログラムを実行していないプログラムモードにあるのかを管理している。ランモードにある場合、制御部20は、プログラム作成支援装置50からの指示や、オペレーションモジュール3からの特定の指示を無視する。このように無視される指示は、例えば、ロード指示などである。プログラムモードにある場合に、制御部20は、プログラム作成支援装置50からの指示や、オペレーションモジュール3からの指示を受信して、それを実行する。
図5は、オペレーションモジュール3のブロック図である。制御部60は、表示部10への表示制御と、操作部11から入力される指示の受け付け制御と、モジュール通信部61によるPLC1の本体2との通信制御とを担当している。ここで、制御部60が直接的にはメモリカード14にアクセスできないものとして説明するが、直接的にメモリカード14にアクセスできるように制御部60が構成されてもよい。
メモリカード14は、オペレーションモジュール3の記憶部である。メモリカード14に代えて、内蔵型の記憶デバイスが採用されてもよい。内蔵型の記憶デバイスにデータをライトしたり、データをリードしたりするためには、たとえば、オペレーションモジュール3を(PLC1の本体2に接続した状態で)プログラム作成支援装置50などのPCに接続すればよい。オペレーションモジュール3とプログラム作成支援装置50との間の通信インタフェースは、無線(例:IrDA、NFC、ブルートゥース(登録商標)、無線LANなど)であってもよいし有線(例:RS−232CやUSB、イーサネット(登録商標)など)であってもよい。メモリカード14は、オペレーションモジュール3から取り外され、プログラム作成支援装置50のカードリーダ51に取り付けられてもよい。プログラム作成支援装置50はカードリーダ51を通じて、設定情報の一例であるラダープログラム71、デバイス情報74などをメモリカード14に書き込むことができる。デバイス情報74は、記憶部として機能するメモリカード14に確保された記憶領域であるデバイス73に記憶されていてもよい。また、プログラム作成支援装置50はカードリーダ51を通じてメモリカード14からログデータ72やデバイス情報74などの設定情報を読み出すことができる。
<起動処理>
図6は、PLC1の起動処理を示すフローチャートである。なお、図6でいう「起動処理」では、主に、自動ロード処理が行われるか否かの分岐に関連する処理を中心に説明しており、他の処理は省略している。すなわち、PLC1の電源を投入したときに、図6以外の他の処理が行われても勿論よい。PLC1の制御部20は、電源が投入されると、収容部6にどのようなモジュールが接続されているかを判別する。制御部20はモジュール通信部42を介して収容部6に取り付けられているモジュールに対してモジュール識別情報を問い合わせる。オペレーションモジュール3の制御部60はモジュール通信部61を介して問い合わせを受信すると、自己がオペレーションモジュール3であることを示すモジュール識別情報を、モジュール通信部61を介して本体2に送信する。解釈部43は、モジュール通信部42が受信したデータを解釈し、当該データがモジュール識別情報であることを認識すると、制御部20へ転送する。制御部20は、モジュール識別情報を解釈し、オペレーションモジュール3が接続されていることを認識する。上述したシリアル通信モジュール9など他の機能を有したモジュールについても同様の手順で認識処理が実行される。
S600で、制御部20は、オペレーションモジュール3の操作部11に設けられた複数のキーのうちあらかじめ定められた特定のキーが押されながら、PLC1に電源が投入されたかどうかを判定する。これは、あらかじめ定められた特定のキーが押されながらPLC1に電源が投入されたときに設定情報の自動ロードを実行するためである。つまり、オペレータが強制的な自動ロードを希望する場合は、特定のキーを押しながらPLC1の電源を投入すればよい。オペレーションモジュール3の制御部60は本体2から電力を供給されると、操作部11の特定のキーが押されていることを示すキー情報を、モジュール通信部61を介して本体2へ送信する。本体2の制御部20は、モジュール通信部42および解釈部43を通じてキー情報を取得する。
このキー情報が、特定キーが押されていることを示す情報であれば、制御部20は、特定のキーが押されながら起動したと判定する。この場合はS601に進む。S601で、制御部20は、オペレーションモジュール3のメモリカード14に記憶されている設定情報を、操作部11からのロード指示を待つことなく、記憶部30へロードする。
一方で、特定キーが押されていることを示すキー情報をオペレーションモジュール3から受信していない場合、制御部20は、特定キーが押されずに起動した(自動ロードが指示されていない)と判定し、S602に進む。
S602で、制御部20は、表示情報作成部44にメニューを表示するための表示情報を作成させ、モジュール通信部42を介して表示情報を送信する。オペレーションモジュール3の制御部60は、表示情報を受信すると、表示部10に表示させる。
図7(A)は、表示部10に表示されるメニュー画面を示している。メニュー画面には、どの処理を実行するかをオペレータに対して実質的に問い合わせるためのメッセージとして機能する項目(処理の名称など)の情報が含まれている。メニュー画面には、オペレータが操作部11を操作することで選択することが可能な複数の選択項目が含まれている。この例では、ロード処理、セーブ処理、プロパティ表示処理およびデータクリア処理が含まれている。ロード処理とは、オペレーションモジュール3から本体2に対してラダープログラム等の設定情報を上書きする処理のことである。セーブ処理とは、本体2に保持されているデバイス情報34やログデータ32、ラダープログラム等をオペレーションモジュール3のメモリカード14へ書き出す処理のことである。プロパティ表示処理とは、メモリカード14に格納されているラダープログラム71のプロジェクト名、作成日時、対象PLC、機能バージョンなどのプロパティを表示部10に表示させる処理のことである。データクリア処理とは、本体2の記憶部に記憶されている設定情報(ラダープログラム31など)を消去したり、メモリカード14に記憶されている設定情報を消去したりする処理を示している。ここでいうデータクリアは、設定情報を全て消去するオールクリアを意味しているが、設定情報の一部を消去するような構成でもよい。オペレータは操作部11のキーを適宜操作して所望の項目を選択する。
S603で、制御部20は、解釈部43を使用して、メニュー画面に表示されている複数の項目のうちどの項目が選択されたかをオペレーションモジュール3から受信したキー情報にしたがって判別する。図7(A)は、ロードが反転表示されているため、ロードが選択されていることを示す。制御部20は、操作部11の上下キーが押されると、反転表示される項目を変更し、変更後の表示情報を表示情報作成部44に作成させてオペレーションモジュール3に送信する。オペレーションモジュールの制御部60は変更後の表示情報を表示部10に表示させる。反転表示されている項目について操作部11のリターンキーが押されると、どのキーが押されたかを示すキー情報が解釈部43に届く。解釈部43は、どの項目が選択されているかを示す情報を制御部20から伝達される。解釈部43は、項目の選択情報とキー情報を解釈し、制御部20に特定の処理の実行が指示されたことを示す解釈結果を伝達する。制御部20は、解釈結果にしたがって、反転表示している項目の実行が選択されたことを認識する。ここでは、ロード処理、セーブ処理、プロパティ表示処理およびデータクリア処理が選択されることになる。セーブ処理の実行が指示されると、解釈部43は、セーブ制御部24にそれを通知する。データクリア処理の実行が指示されると、解釈部43は、データクリア制御部25にそれを通知する。図7(A)に示したメニュー画面には図示されていないが、データロック処理やセキュリティ処理が含まれてもよい。データロック処理の実行が指示されると、解釈部43は、データロック制御部21にそれを通知する。セキュリティ処理の実行が指示されると、解釈部43は、セキュリティ制御部23にそれを通知する。
S603で、制御部20は、選択された項目を実行する。たとえば、ロード処理、セーブ処理、プロパティ表示処理およびデータクリア処理のうち操作部11を通じて選択された処理を制御部20は実行する。
<ロード処理>
図8は、ロード制御部22が実行するロード処理の各工程を示したフローチャートである。ロード処理とは、オペレーションモジュール3から本体2に対して設定情報を書き込む処理のことである。本実施形態では、プログラム作成支援装置50をPLC1に接続しなくても、オペレーションモジュール3から本体2に対して設定情報をロードできる。そのため、簡易かつ確実にPLC1をメンテナンスできるようになる。
S801で、ロード制御部22は、オペレーションモジュール3のメモリカード14に記憶されている設定情報を本体2の記憶部30へロード可能かどうかを判定する。PLC1には様々な機種が存在する。異なる機種向けの設定情報をPLC1の本体にロードしてしまうと、工場の設備が予期しない動作を実行してしまうかもしれない。また、すでにPLC1がランモードに移行してラダープログラムを実行しているときに、設定情報の上書きを実行してしまうと、やはり予期せぬエラーが発生するかもしれない。同一の機種であっても、拡張ユニットを増設することで新規の機能をサポートした機種もある。そのため、PLC1がサポートしている機能と、ラダープログラムが必要とする機能とが一致している、換言すれば、これらの機能が適合している必要がある。PLC1がどの機能をサポートしているかを示す情報として機能バージョンがある。よって、PLC1の機能バージョンとラダープログラムの機能バージョンとが一致(適合)していないと、PLC1が予期せぬ動作をする可能性がある。また、記憶部30に予め記憶されている設定情報にライトプロテクトがかけられていることがある。この場合にも、原則として、メモリカード14から設定情報を記憶部30へロードすることが禁止されるべきである。よって、ロード制御部22は、メモリカード14に記憶されている設定情報をPLC1の本体2にロード可能かどうかを事前に判定することが望ましい。なお、この判定処理の詳細は図9を用いて後述する。ロード可能でなければ、S805で、ロード制御部22は、表示情報作成部にエラー画面の表示情報を作成させ、オペレーションモジュール3へ転送する。オペレーションモジュール3の制御部60は、この表示情報を受信すると、表示部10にエラー画面を表示する。
図7(B)にエラー画面の一例を示している。エラー画面には、ロード処理が選択されたこと、ロードが実行できないこと、および、具体的なエラー原因を示すメッセージなどが含まれていてもよい。具体的なエラー原因を示すメッセージが含まれていれば、オペレータは、エラー原因を即座に理解できる利点がある。
S801で、ロードが可能と判定されると、S802に進む。S802で、ロード制御部22は、メモリカード14から記憶部30へ設定情報をロードするとともに、ロード中画面を表示部10に表示させる。たとえば、ロード制御部22は、ロード確認画面を表示部10に表示させ、操作部11からロードの開始指示を待つ。
図7(C)は、ロード確認画面の一例を示している。ロード確認画面は、ロードの準備が完了した段階で表示部10に表示される画面であるため、ロード準備完了画面と呼ばれてもよい。ロード確認画面には、メモリカード14に記憶されている設定情報を本体2に対してロードするかどうかを問い合わせるメッセージが含まれていてもよい。図7(C)が示すように、ロード確認画面には、ロード処理が選択されていること、ロードの実行を問い合わせるメッセージ、および設定情報から読み出されたプロジェクト名が含まれていてもよい。なお、プロジェクト名は、オペレータが任意に付与できるものであり、様々なプロジェクトデータを識別するための名称である。ロード確認画面を参照することで、オペレータは意図した設定情報を安全かつ確実にロードできるようになる。つまり、意図していない設定情報がメモリカード14に格納されているときは、オペレータは、ロードを中止できるようになる。
メモリカード14に記憶されている設定情報を本体2に対してロードするかどうかを問い合わせるメッセージ表示した後で操作部11から開始指示(ロード指示)が入力されたことを解釈部43から通知されると、ロード制御部22は、メモリカードドライバ37を介してメモリカード14にアクセスして読み出した設定情報を、記憶部用ドライバ36を介して記憶部30に書き込み始める。記憶部30へのロードを実行している際に、ロード制御部22は、ロード中画面を表示部10に表示させてもよい。
図7(D)は、ロード中画面の一例を示している。ロード中画面には、ロード処理が選択されていること、ロード処理を実行中であること、全体の何パーセントの書き込みが終了したかを示す数値などが含まれてもよい。ロード中画面を表示することで、ロードの途中でPLC1の電源を誤ってオフにしてしまうような操作ミスをしにくくなるであろう。
S803で、ロード制御部22は、ロードが完了したかどうかを判定する。たとえば、ロード制御部22は、設定情報の書き込みが完了した後で、メモリカード14に記憶されている設定情報と記憶部30に記憶されている設定情報とを比較し、両者が一致すれば、ロード完了と判定してもよい。あるいは、ロード制御部22がCRC(巡回冗長検査符号)チェックを実行することで、記憶部30に記憶されている設定情報が正常であることを確認し、ロード完了と判定してもよい。ロードが完了すると、S804に進む。
S804で、ロード制御部22は、ロード完了画面を表示部10に表示させる。たとえば、ロード制御部22は、ロード完了画面の表示情報を表示情報作成部44に作成させ、モジュール通信部42を介してオペレーションモジュール3へ転送する。オペレーションモジュール3の制御部60は、モジュール通信部61を通じて表示情報を受信し、表示部10にロード完了画面を表示させる。
図7(E)はロード完了画面の一例を示している。ロード完了画面には、ロード処理が選択されていること、記憶部30への設定情報の書き込みが完了したことを示すメッセージが含まれている。これにより、オペレータはロードが完了したことを視覚的にかつ確実に把握できるようになる。
図9は、ロード可能判定処理を示すフローチャートである。このロード可能判定処理は上述したS801に相当する処理である。ロード可能判定処理を実行することで、誤動作を招くようなロードを禁止できるようになろう。
S901で、ロード制御部22は、メモリカードドライバ37を通じてメモリカード14にアクセスし、ラダープログラム71が記憶されているかどうかを判定する。ラダープログラム71がメモリカード14に記憶されていなければ、S910に進む。S910で、ロード制御部22は、エラー画面を表示部10に表示させる。図7(F)はラダープログラムが存在していないときに表示されるエラー画面の一例を示している。これにより、オペレータは、オペレーションモジュール3にメモリカード14を挿入し忘れていたり、メモリカード14に設定情報を書き込みし忘れていたりすることを認識しやすくなる。一方で、ラダープログラム71が存在していれば、S902に進む。
S902で、ロード制御部22は、PLC状態管理部38から状態情報を読み出し、PLC1の現在の動作モードがプログラムモードであるかどうかを判定する。状態情報が、ランモードを示していれば、S910に進む。S910で、ロード制御部22は、エラー画面を表示部10に表示させる。図7(G)はPLC1の動作モードがプログラムモードラでないときに表示されるエラー画面の一例を示している。このエラーメッセージには、動作モードがプログラムモードでないこと、動作モードがランモードであること、設定情報のロードはプログラムモードのときにだけ実行可能であることを示すメッセージが含まれてもよい。これにより、オペレータは、ランモード中に誤ってラダープログラムを上書きしてしまうことを防止できる。また、PLC1や被制御機器の誤動作を抑制できるようになる。一方で、動作モードがプログラムモードであれば、S903に進む。
S903で、ロード制御部22は、メモリカード14に記憶されている、本体2にロード可能な設定情報の条件を示す情報と、記憶部30に記憶されている、本体2にロード可能な設定情報の条件を示す情報とを比較し、両者が一致するかどうかを判定する。たとえば、ロード制御部22は、メモリカード14に記憶されている設定情報に対応している機種情報と、記憶部30に記憶されている機種情報とを比較し、両者が一致するかどうかを判定する。機種情報が一致してなければ、S910に進む。このように、記憶部30には本体2を識別するための識別情報が予め保持されており、メモリカード14には設定情報をロード可能な本体2の識別情報が予め記憶されている。S910で、ロード制御部22は、エラー画面を表示部10に表示させる。図7(H)はPLC1の機種情報とメモリカード14に記憶されている設定情報の機種情報が不一致であるときに表示されるエラー画面の一例を示している。これにより、オペレータは、意図している機種とは異なる機種にオペレーションモジュール3を装着してしまったことや、意図している設定情報とは異なる設定情報が記憶されたオペレーションモジュール3を収容部6に取り付けてしまったことを認識しやすくなる。また、意図していない機種向けの設定情報を書き込んでしまうことを防止できるようになる。さらに、意図していない設定情報によってPLC1が誤動作するのを防止できるようになる。一方で、機種情報が一致していれば、S904に進む。
S904で、ロード制御部22は、本体2の機能バージョンと、メモリカード14に記憶されている設定情報の機能バージョンとを比較し、両者が一致しているかどうか、すなわち設定情報が本体に適合しているかどうかを判定する。上述したように、機能バージョンは、PLC1がどのような機能に対応しているかを示している情報である。機能バージョンが一致していなければ、S910に進む。S910で、ロード制御部22は、エラー画面を表示部10に表示させる。図7(I)はPLC1の機能バージョンとメモリカード14に記憶されている設定情報の機能バージョンとが不一致であるときに表示されるエラー画面の一例を示している。これにより、機能バージョンが異なるPLC向けの設定情報が誤って記憶部30に書き込まれてしまうことを防止できる。また、意図していない機能バージョンのPLC向けの設定情報によってPLC1が誤動作することを事前に防止できる。なお、エラー表示画面には、PLC1の機能バージョンと、メモリカード14に記憶されている機能バージョンとが含まれてもよい。これにより、オペレータは、より直感的に機能バージョンの違いを認識できるようになろう。機能バージョンも一致していれば、ロード制御部22は、ロード可能と判定し、上述したS802に進む。
このように、本実施形態によれば、メモリカード14に記憶されているロード可能条件と、記憶部30に記憶されているロード可能条件とが一致すると、ロード制御部22がロードを実行するため、本来意図していないロードを抑制できるようになろう。また、これにより、意図しないロードに起因したPLC1の誤動作を抑制できるようになろう。
言い換えると、ロード制御部22は、オペレーションモジュール3に記憶されている設定情報がPLC1の本体2に適合するか否かを判断する機能を有しており、適合する場合にはロード処理を実行し、適合しない場合にはロード処理を実行せず、表示部10を介してオペレータに不適合である旨を報知する。これにより、意図していないロードやPLC1の誤動作を抑制することができる。
<セーブ処理>
セーブ処理は、PLC1の本体2に保持されている設定情報(例:ラダープログラム31、ログデータ32、デバイス情報34など)をオペレーションモジュール3のメモリカード14に書き出す処理である。これにより、オペレータは、PLC1の動作状態や設定状態をプログラム作成支援装置50などのPCにおいて分析しやすくなる。オペレーションモジュール3に搭載される表示部10もスペースの制約から数十文字を表示できる程度であることが多い。よって、PLC1のログデータ32やデバイス情報を詳細に分析したり、ラダープログラム31を本格的に修正したりすることは、オペレーションモジュール3だけでは難しい。そこで、PLC1の本体2に保持されている設定情報をオペレーションモジュール3に転送し、さらにオペレーションモジュール3またはメモリカード14をPCに接続する。これにより、オペレータは、PC上で本格的な修正や分析を実行できるようになる。
また、PLC1のコピー(複製)を作り出す際、セーブ処理を利用すれば、簡易にPLC1のコピーを作りだすことができる。具体的には、特定のPLC1から設定情報として、例えばラダープログラム(マスタープログラム)やデバイス情報を読み出して、オペレーションモジュール3に書き出す。その後、このオペレーションモジュール3を別のPLC1に取り付けて、格納された設定情報をロードすることで、同じ動作が行われるPLC1を簡易に作り出すことができる。
図10は、セーブ制御部24が実行するセーブ処理の各ステップを示すフローチャートである。図11(A)に示したメニュー画面でセーブ処理が選択されたことを示すキー操作が操作部11においてオペレータにより実行される。解釈部43は、キー情報を解釈して、セーブ処理の選択を認識し、セーブ処理が選択されたことをセーブ制御部24に通知する。セーブ制御部24は、表示情報作成部44にセーブ確認画面を表示するための表示情報を作成させる。オペレーションモジュール3の制御部60は、表示情報を受信すると、セーブ確認画面を表示部10に表示させる。図11(B)はセーブ確認画面の一例を示している。セーブ確認画面が表示されているときに、操作部11において実行を指示するリターンキーが操作されたことを解釈部43から通知されると、セーブ制御部24は、以下のセーブ処理を開始する。
S1001で、セーブ制御部24は、セーブを実行可能かどうかを判定する。たとえば、セーブ制御部24は、メモリカード14がオペレーションモジュール3に取り付けられているかどうかを判定する。また、セーブ制御部24は、メモリカード14の空き容量が十分かどうかを判定してもよい。セーブ制御部24は、記憶部30に記憶されているバックアップ(セーブ)対象のデータの容量を取得するとともに、メモリカード14の空き容量も取得し、両者を比較する。メモリカード14の空き容量が十分であれば、セーブ制御部24は、セーブ可能と判定する。また、セーブ制御部24は、メモリカード14にすでにラダープログラム71などの設定情報が記憶されているかどうかを判定してもよい。これは、重要な設定情報を誤って別の設定情報によって上書きしてしまうことを防止するためである。セーブ可能であれば、S1005に進み、ロード制御部22は、エラー画面を表示部10に表示させる。図11(C)は、メモリカード14にすでにラダープログラム71などの設定情報が記憶されているときのエラー画面の一例である。このようなエラー内容を含むエラー画面を表示することで、オペレータは、セーブが実行できないこと、および、実行できない原因を把握しやすくなる。一方で、セーブ可能であれば、S1002に進む。
S1002で、セーブ制御部24は、記憶部30から設定情報を読み出して、メモリカード14に書き出す。この際に、セーブ制御部24は、図11(D)に示したようなセーブ中画面を表示してもよい。また、セーブ中画面にはセーブ処理が全体の何パーセント完了したかを示すメッセージが含まれてもよい。これにより、オペレータは、セーブ処理が実行中であること、および、セーブ処理がどの程度まで完了したかを把握しやすくなる。
S1003で、セーブ制御部24は、設定情報のセーブが完了したかどうかを判定する。たとえば、セーブ制御部24は、設定情報の書き込みが完了したかどうか、設定情報のCRCが正しいかどうかなどを判定してもよい。セーブが完了するとS1004に進む。
S1004で、セーブ制御部24は、セーブが完了したことを示すセーブ完了画面を表示部10に表示させる。
このように、表示部10は、本体2の記憶部30に保持されている設定情報をオペレーションモジュール3のメモリカード14にセーブするかどうかを問い合わせるメッセージを表示するように構成されている。操作部11は、本体2の記憶部30に保持されている設定情報をオペレーションモジュール3のメモリカード14にセーブするためのセーブ指示を受け付けるように構成されている。セーブ制御部24は、操作部11を通じてセーブ指示が入力されると、メモリカードドライバ37を通じて記憶部30に保持されている設定情報を読み出して、メモリカード14にセーブする。これにより、PLC1の本体2に保持されている設定情報を、プログラム作成支援装置50を本体2に接続せずに、取り出すことが可能になる。これにより、プログラム作成支援装置50などのPC上でより詳細に設定情報を分析しやすくなろう。また、上述したように、セーブとロードを繰り返すことで、PLC1の複製を簡易に作り出すことができるであろう。
<データクリア処理>
データクリア機能とは、オペレーションモジュール3のメモリカード14に記憶されているすべてまたは一部のデータを消去する機能のことである。たとえば、メモリカード14に過去にセーブしたログデータがあるために、メモリカード14の空き容量が不足することがある。この場合、本体2に格納されているより重要なデータをメモリカード14へセーブできなくなってしまう。また、メモリカード14から設定情報を本体2にロードするときに特定のパラメータ(デバイス情報など)を消去してからロードできれば、便利なこともあるだろう。さらに、セキュリティの問題上、ラダープログラム等の設定情報を複製されると困る場合には、これを必要に応じて消去したい、というニーズもある。そこで、データクリア制御部25は、オペレーションモジュール3の操作部11から入力された消去指示にしたがってメモリカード14に記憶されているデータをクリアする。
図12は、データクリア制御部25が実行するデータクリア処理の各ステップを示したフローチャートである。ここでは、設定情報のうちプロジェクトデータの一部のデータをクリアする例について説明する。なお、データクリア処理は、図13(A)が示すように、表示部10に表示されたメニューからデータクリア処理が選択されると開始される。つまり、データクリア処理が操作部11を通じて選択されたことを、解釈部43はキー情報から解釈し、データクリア処理が選択されたことをデータクリア制御部25に通知する。
S1201で、データクリア制御部25は、メモリカード14にアクセスし、プロジェクトデータのプロパティを取得する。プロパティ情報には、プロジェクトデータのプロジェクト名、作成時刻、作成日時などのデータが含まれている。
S1202で、データクリア制御部25は、クリア確認画面を表示部10に表示させる。たとえば、データクリア制御部25は、取得したプロパティ情報をクリア確認画面の表示情報の作成指示を表示情報作成部44に渡す。表示情報作成部44は指示にしたがって表示情報を作成し、モジュール通信部42を介してオペレーションモジュール3に出力する。オペレーションモジュール3の制御部60は、表示情報に基づいてクリア確認画面を表示部10に表示させる。図13(B)が示すように、クリア確認画面には、データクリアを実行するかどうかを問い合わせるメッセージやプロジェクト情報が含まれている。オペレータは、表示部10に表示されたプロパティ情報にしたがってプロジェクトデータを削除すべきかどうかを最終的に確認できる。
S1203で、データクリア制御部25は、クリア開始指示が入力されたかどうかを判定する。たとえば、クリア確認画面が表示されている状態で操作部11のリターンキーが押されると、解釈部43は、クリア開始指示が入力されたことをデータクリア制御部25へ通知する。クリア開始指示が入力されると、S1204に進む。
S1204で、データクリア制御部25は、クリア中画面を表示部10に表示させる。表示情報作成部44はデータクリア制御部25からの指示にしたがって表示情報を作成し、モジュール通信部42を介してオペレーションモジュール3に出力する。オペレーションモジュール3の制御部60は、表示情報に基づいてクリア中画面を表示部10に表示させる。図13(C)はクリア中画面の一例を示している。クリア中画面には、データクリア処理を実行中であることを示すメッセージが含まれている。なお、クリア中画面には、クリア処理を開始してから完了するまでに必要となる処理時間が含まれてもよい。
S1205で、データクリア制御部25は、メモリカード14にアクセスし、プロジェクトデータ(ラダープログラム71やデバイス情報74など)を消去する。
S1206で、データクリア制御部25は、プロジェクトデータの消去が完了したかどうかを判定する。メモリカードドライバ37はデータの消去が完了すると、完了したことを示す信号をデータクリア制御部25に送信する。データクリア制御部25は、プロジェクトデータの消去が完了したことを認識すると、S1207に進む。
S1207で、データクリア制御部25は、クリア完了画面を表示部10に表示させる。表示情報作成部44は指示にしたがって表示情報を作成し、モジュール通信部42を介してオペレーションモジュール3に出力する。オペレーションモジュール3の制御部60は、表示情報に基づいてクリア完了画面を表示部10に表示させる。図13(D)が示すように、クリア完了画面には、プロジェクトデータの消去が完了したことを示すメッセージが含まれている。その後、表示部10は、メインメニューの表示に復帰する。
このように、表示部10は、オペレーションモジュール3のメモリカード14に保持されている設定情報を消去するかどうかを問い合わせるメッセージを表示するように構成されている。操作部11は、オペレーションモジュール3のメモリカード14に保持されている設定情報を消去するための消去指示を受け付けるようにさらに構成されている。データクリア制御部25は、操作部11を通じて消去指示が入力されると、オペレーションモジュール3のメモリカード14に保持されている設定情報を消去する消去制御部として機能する。よって、オペレータは、オペレーションモジュール3またはメモリカード14をプログラム作成支援装置50に接続せずに、メモリカード14に記憶されている設定情報を消去できるようになる。たとえば、メモリカード14にロード済みのラダープログラム71が残存しているために、ログデータ32をメモリカード14にセーブできないことも考えられる。このような場合には、ラダープログラム71を消去することで、ログデータ32をメモリカード14にセーブできるようになろう。
ここでは、メモリカード14に記憶されているデータのクリアについて説明したが、記憶部30に記憶されているデータをクリアしてもよい。この場合、表示部10は、本体2の記憶部30に保持されている設定情報を消去するかどうかを問い合わせるメッセージを表示する。操作部11は、本体2の記憶部30に保持されている設定情報を消去するための消去指示を受け付けるようにさらに構成されている。データクリア制御部25は、操作部11を通じて消去指示が入力されると、本体2の記憶部30に記憶されている設定情報を消去する。
<データロック処理>
データロック機能とは、オペレーションモジュール3のメモリカード14に記憶されているデータの消去、上書き、変更などを禁止する機能である。これにより、オペレータが誤操作によりデータを消失してしまうことを防止できる。なお、データロック機能を、オペレーションモジュール3に設けた機械式のスイッチによって実現してもよい。しかし、機械式のスイッチは、摩耗によって寿命が尽きやすく、また、何かがふれることでスイッチ状態が変化してロックが解除されてしまう可能性がある。そこで、本実施形態では、オペレーションモジュール3の内部にデータロックが指定されているか否かを示すデータ(フラグなど)を保持することで、データロック機能を実現する。よって、オペレーションモジュール3の寿命を長くでき、かつ、誤操作によるデータロックの解除の抑制できるであろう。
図14は、データロック制御部21が実行するデータロック処理の各ステップを示すフローチャートである。図15(A)は表示部10に表示されたメニューからデータロック処理が選択されたことを示している。データロック処理が選択されているときに操作部11においてリターンキーが押し下げられると、解釈部43は、データロック処理の実行が指示されたことをデータロック制御部21に通知する。
S1401で、データロック制御部21は、メモリカード14に記憶されているプロジェクトデータのロック状態を確認する。メモリカード14には、ロック状態かアンロック状態かを示すロックフラグが記憶されている。データロック制御部21は、このロックフラグを読み出す。
S1402で、データロック制御部21は、データフラグを参照し、プロジェクトデータがロック状態かアンロック状態かを決定する。アンロック状態であれば、データロック制御部21は、図15(B)が示すような、ロック状態へ変更することを確認するための確認画面を表示部10に表示させる。一方で、ロック状態であれば、データロック制御部21は、図15(E)が示すような、アンロック状態へ変更することを確認するための確認画面を表示部10に表示させる
S1403で、データロック制御部21は、操作部11からデータロック状態の変更指示が入力されたかどうかを判定する。確認画面が表示されているときに、操作部11のリターンキーが押されると、解釈部43は、変更指示が入力されたことをデータロック制御部21に通知する。これにより、データロック制御部21は、ロック状態/アンロック状態の変更指示が入力されたと判定する。
S1404で、データロック制御部21は、ロック状態に変更する場合はロック中画面を、アンロック状態に変更する場合はアンロック中画面を表示部に表示させる。図15(C)はロック中画面の一例を示し、図15(F)はアンロック中画面の一例を示している。
S1405で、データロック制御部21は、ロックフラグを変更する。データロック制御部21は、ロック状態であればアンロック状態に変更し、アンロック状態であればロック状態に変更にロックフラグを変更し、メモリカード14に書き込む。
S1406で、データロック制御部21は、ロックフラグの書き込みが完了したかどうかを判定する。メモリカードドライバ37は、ロックフラグの書き込みが完了すると、その旨をデータロック制御部21に通知する。ロックフラグの書き込みが完了すると、S1407に進む。
S1407で、データロック制御部21は、完了画面を表示部10に表示させる。図15(D)はデータロックが完了したことを示す完了画面の一例を示している。図15(G)はデータアンロックが完了したことを示す完了画面の一例を示している。
このように、データロック制御部21は、オペレーションモジュール3のメモリカード14に記憶されている設定情報の変更または消去を許容するアンロック状態と設定情報の変更または消去を禁止するロック状態とを制御する。これにより、オペレータが誤操作によりデータを消失してしまうことを防止できるだろう。また、機械式のスイッチによりデータロック機能を実現する場合と比較して、本実施形態では、オペレーションモジュール3の寿命を長くでき、かつ、誤操作によるデータロックの解除の抑制できるであろう。
<プロパティ表示処理>
プロパティ表示処理とは、オペレーションモジュール3のメモリカード14に記憶されているプロジェクトデータのプロパティ情報を表示部10に表示する機能のことである。パロパティ情報には、たとえば、プロジェクトデータのプロジェクト名や作成日時、対象PLC、機能バージョンなどの情報が含まれている。複数のオペレーションモジュール3を有しているオペレータは外観だけではどのオペレーションモジュール3にどのPLC用のプロジェクトデータが入っているかを認識できない。そこで、オペレーションモジュール3に格納されているプロジェクトデータのプロパティ情報を簡易に見ることができれば、非常に便利であろう。
図16は、制御部20のプロパティ表示制御部26が実行するプロパティ表示処理の各ステップを示すフローチャートである。図17(A)はメニュー画面においてプロパティの表示処理が選択されていることを示している。プロパティ表示処理が選択されているときに操作部11においてリターンキーが押し下げられると、解釈部43は、プロパティ表示処理の実行が指示されたことをプロパティ表示制御部26に通知する。
S1601で、プロパティ表示制御部26は、メモリカード14にアクセスし、プロパティ情報を取得する。S1602で、プロパティ表示制御部26は、取得したプロパティ情報のすべてまたは一部を表示部10に表示させる。
図17(B)はプロパティ表示画面の一例を示している。このプロパティ表示画面には、プロジェクト名、対象PLCの名称(PLC ABC123)、プロジェクトデータの作成日時の上方が含まれている。表示部10は、画面サイズの制限により、プロパティ情報のすべてを表示できない場合もある。この場合、プロパティ表示制御部26は、プロパティ情報のうち1画面で収まる程度の情報を表示情報作成部44に渡して、プロパティ表示画面の表示情報を作成させてもよい。プロパティ表示画面を表示しているときに、操作部11の上下キーが操作されると、解釈部43は、プロパティ表示画面の切り替え指示が入力されたことをプロパティ表示制御部26に通知する。プロパティ表示制御部26は、切り替え指示にしたがってプロパティ情報のうち次に表示すべき情報を表示情報作成部44に渡して、プロパティ表示画面の表示情報を作成させる。図17(C)は、切り替えられたプロパティ表示画面の一例を示している。このプロパティ表示画面には、プロジェクト名と機能バージョンの情報が示されている。
このように、表示部10は、オペレーションモジュール3のメモリカード14に記憶されている設定情報に関する情報であるプロパティ情報を表示するかどうかを問い合わせるメッセージを表示するように構成されている。操作部11を通じてオペレーションモジュール3のメモリカード14に記憶されている設定情報に関する情報であるプロパティ情報を表示するための表示指示が入力されると、表示部10は、オペレーションモジュール3のメモリカード14に記憶されている設定情報に関する情報であるプロパティ情報を表示するように構成されている。よって、オペレータは、オペレーションモジュール3のメモリカード14に記憶されているプロジェクトデータのプロパティ情報を視覚的に確認しやすくなる。ここでは、プロパティ情報について表示したが、デバイス情報を表示してもよい。多数のデバイス情報が存在するときは、一画面では収まらないことがある。この場合も、プロパティ情報と同様に、プロパティ表示制御部26は、表示画面を切り替えて、デバイス情報を順番に表示してもよい。表示部10におけるデバイス情報の表示制御については、[デバイス情報の表示制御]にて後述する。
<操作禁止機能>
操作禁止機能とは、オペレーションモジュール3に対する特定の操作を禁止する機能のことである。たとえば、PLCに習熟したオペレータは、習熟度の低いオペレータには操作部11を操作してほしくないと考える場合がある。また、上述したデータロック機能ではデータをロックできるためデータの改変等を防止できるが、データのロードまでは防止できない。そこで、本実施形態では、オペレーションモジュール3の操作禁止機能を提供する。操作禁止機能はセキュリティ制御部23によってコントロールされるものとする。
図18は、セキュリティ制御部23が実行するキーロック処理の各ステップを示すフローチャートである。セキュリティ制御部23は、メニュー画面でキーロックが選択されたことを解釈部43から通知されると、キーロック処理を開始する。図19(A)はメニュー画面においてキーロック処理が選択されたことを示している。
S1801で、セキュリティ制御部23は、解釈部43を通じてキーロック指示が入力されたかどうかを判定する。キーロック指示が入力されると、S1802に進む。
S1802で、セキュリティ制御部23は、記憶部30に記憶されている複数のデバイス情報のうちキーロックに関するデバイス情報に1をセットする。キーロックに関するデバイス情報は1ビットであり、1がキーロックを示し、0がアンロックを示すものとする。
S1803で、セキュリティ制御部23は、キーロック状態にPLC1が設定されていることを示すメッセージを表示部10に表示させる。図19(B)はPLC1がキーロックされていることを示す表示画面の一例である。
S1804で、セキュリティ制御部23は、操作部11においてキー操作がなされたかどうかを判定する。キー操作がなされると、操作されたキーを示す情報が解釈部43からセキュリティ制御部23に通知される。操作がなされていなかれば、S1803に戻る。一方で、キーロックに関するデバイス情報が1に設定されているときに、操作部11が操作されると、S1805に進む。
S1805で、セキュリティ制御部23は、キー操作が解除指示に相当するキー操作であるかどうかを判定する。たとえば、操作部11において特定の複数のキーが同時に押されたことなどを、解除指示に相当するキー操作としてもよい。解除指示でないキー操作がなされた場合、S1808に進む。S1808で、セキュリティ制御部23は、表示部10にキー入力が無効になったことを示すメッセージを表示する。このメッセージはオペレータに警告を認知させるため、数秒間にわたって表示される。その後、S1804に戻る。一方で、解除指示が入力されると、S1806に進む。
S1806で、セキュリティ制御部23は、キーロックに関するデバイス情報を0に書き換えることで、キーロックを解除する。S1807で、セキュリティ制御部23は、キーロックが解除されたことを示す表示画面を表示部10に表示させる。
このように、セキュリティ制御部23は、記憶部30に設けられたデバイスに記憶されているデバイス情報にしたがって、操作部のキー操作を無効とするか有効とするかを制御するキーロック制御部として機能する。このようなキーロック機能を設けることで、意図しない操作による誤動作やオペレーションモジュール3からのデータの消失を抑制できるようになろう。
なお、本実施形態では、「キーロック」をメニューの一つに加え(図19(A)参照)、図18に示すフローチャートに従ってキーロック処理が実行されるようにしているが、本発明はこのような実施形態に限られない。例えば、特定キーの長押しによって、キーロックとキーロック解除を切り換えるようにしてもよい。この場合、セキュリティ制御部23は、特定キーが長押しされたか否かを判断し、特定キーが長押しされたと判定した場合には、キーロック状態を設定する又は解除する一方、特定キーが長押しされていないと判定した場合には、何も行わない。これにより、PLC自体やPLCを含むシステムに詳しくない人が勝手に操作部を操作して所望の画面以外から遷移させないようにすることができる。
また、本実施形態では、「キーロック」を、オペレーションモジュール3のキー操作を一切禁止するための処理としているが、他にも例えば、オペレーションモジュール3上での操作を機能別に禁止してもよい。つまり、操作禁止設定の対象を絞って禁止するようにしてもよい。例えば、デバイス値の確認は許可するが、プロジェクトのロードは許可しない、といった場合に、この機能別操作禁止設定が有用である。このように、セキュリティ制御部23は、表示部10上で、例えばプロジェクトのロードに関するデバイスなど、特定のデバイスが操作禁止対象として選択されたか否かを判断し、これが選択されたと判定した場合には、プロジェクトのロードなど、そのデバイスに関する処理が禁止状態に設定される。
<リードプロテクト機能設定時のセーブ動作>
プログラム作成支援装置50からラダープログラムなどのプロジェクトデータがPLC1の本体2に転送する際に、オペレータは、ラダープログラムのリードプロテクトを設定できる。記憶部30に記憶されたラダープログラム31にリードプロテクトが設定されると、オペレーションモジュール3にメモリカード14にはラダープログラム31をセーブできなくなってしまう。リードプロテクトは、オペレーションモジュール3への無差別的なコピーを禁止できる利点があるが、その一方で、一切のバックアップセーブが禁止されてしまうと不便である。そこで、本実施形態では、一定の条件が満たされるときにだけ、リードプロテクトのかかっているラダープログラム等のオペレーションモジュール3へのセーブを許可する。
図20は、セーブ制御部24が実行するリードプロテクトされているラダープログラムのセーブ処理の各ステップを示すフローチャートである。なお、このセーブ処理は、図10に示したセーブ処理の一部を改良したものである。以下のS2001とS2002は上述したS1001に相当するセーブ可能判定処理に相当する。よって、すでに説明した個所については、詳細な説明を省略する。
S2001で、セーブ制御部24は、記憶部30に記憶されているラダープログラム31にリードプロテクトがかかっているかどうかを判定する。ラダープログラム31のファイルにはリードプロテクトを属性として設定できるようになっているものとする。リードプロテクトがかかっていなければ、S1002に進む。セーブ制御部24は、上述したS1002ないしS1004を実行することで、リードプロテクトのかかったラダープログラム31をオペレーションモジュール3のメモリカード14にセーブする。一方で、リードプロテクトがかかっていれば、S2002に進む。
S2002で、セーブ制御部24は、プログラム作成支援装置50からラダープログラムを含むプロジェクトデータの記憶部30への書き込みが終了してからの経過時間が所定時間(例:30秒など)を超えているかどうかを判定する。セーブ制御部24は、時間を計時するためのタイマーやカウンタを備えている。経過時間が所定時間を超えていなければ、本実施形態では、ラダープログラム31等のセーブを許可する。このように、リードプロテクトのかかったラダープログラム31のセーブを許可するための所定の条件が満たされているため、S1002に進む。セーブ制御部24は、上述したS1002ないしS1004を実行することで、リードプロテクトのかかったラダープログラム31をオペレーションモジュール3のメモリカード14にセーブする。
このように本実施形態によれば、セーブ制御部24は、本体2の記憶部30に保持されている設定情報にリードプロテクトがかけられている場合に、記憶部30に設定情報が記憶されてから所定期間が経過するまでは、オペレーションモジュール3のメモリカード14への設定情報のセーブを許容し、所定期間が経過した後は、オペレーションモジュール3のメモリカード14への設定情報のセーブを禁止するように制御する。つまり、リードプロテクトがかかっているラダープログラム31については、予め定められた条件を満たしている場合に限ってオペレーションモジュール3のメモリカード14にセーブできるようになる。たとえば、プログラム作成支援装置50からラダープログラム31が書き込まれてから30秒を経過する前にセーブ指示が実行された場合に限って、オペレーションモジュール3へのセーブが許可されてもよい。これにより、ラダープログラム31の無差別的なコピーを防止しつつ、適正にラダープログラム31のオペレーションモジュール3へのセーブを実行できるようになる。
<その他>
上述した実施形態では、オペレーションモジュール3にはメモリカード14が搭載されているものとして説明したが、メモリカード14に代えて内蔵型の不揮発性記憶デバイスが採用されてもよい。メモリカード14とともにこのような不揮発性記憶デバイスが採用されてもよい。
また、制御部20は、本体2の記憶部30に記憶されているデバイス情報をオペレーションモジュール3の表示部10に表示してもよい。本体2には表示部がないため、デバイス情報を直接表示することはできないが、オペレーションモジュール3を本体2に取り付けることで、表示部10にデバイス情報を表示できるようになる。
[デバイス情報の表示制御]
制御部20は、記憶部30に設けられたデバイス33に記憶されているデバイス情報34を表示するかどうかを問い合わせるメッセージを表示部10に表示させる。制御部20は、操作部11を通じて本体2の記憶部30に設けられたデバイス33に記憶されているデバイス情報34を表示するための表示指示を、解釈部43を通じて、受け付ける。制御部20は、デバイス情報の読み出し部として機能する記憶部用ドライバ36を通じて記憶部30から情報を読み出す。つまり、制御部20は、操作部11を通じて表示指示が入力されると、本体2の記憶部30に保持されているデバイス情報34を読み出す。制御部20は、表示情報作成部44にデバイス情報を表示する表示画面の表示情報を作成し、オペレーションモジュール3に出力させる。表示部10は、制御部20が本体2の記憶部30から読み出したデバイス情報34を表示する。
図21(A)および図21(D)は、デバイス情報の表示例を示している。図21(A)は、1ビット型のデバイス情報を記憶するデバイスR1000とR1001とを示している。デバイスR1000にはOFFが記憶されており、デバイスR1001にはONが記憶されていることをオペレータは視覚的に把握できる。図21(D)は、数値型のデバイス情報を記憶するデバイスDM1000とDM1001が示されている。デバイスDM1000には100が記憶されており、デバイスDM1001には105が記憶されている。
オペレータは、表示部10に表示されているデバイス情報を編集または変更したいと希望するであろう。そこで、制御部20は、操作部11の操作にしたがって、本体2の記憶部30に記憶されているデバイス情報を変更してもよい。
図21(B)および図21(C)が示すように、たとえば、操作部11に設けられた上キーまたは下キーを押すことで、ON⇒OFF⇒ON⇒OFF⇒・・・といったように制御部20は、デバイス情報を変更してもよい。
また、操作部11のリターンキーが一定期間(例:1秒)にわたって押されたことを検知すると、制御部20は、変更指示が入力されたものと認識し、表示部10にデバイス情報を点滅表示させる。この状態で、操作部11の上キーが操作されると、制御部20は、図21(E)に示すように、デバイス情報である数値を1ステップずつ増加してもよい。
このようにオペレーションモジュール3はデバイス情報を表示できるため、オペレータは、プログラム作成支援装置50を接続せずに、デバイス情報を確認できるようになる。また、オペレータは、オペレーションモジュール3は使用することで、プログラム作成支援装置50を接続せずに、デバイス情報を変更できるようになる。
[ライトプロテクトが設定されているときの強制ロード]
上述したように、オペレーションモジュール3は、PLC1の内部に保持されているデバイス情報を表示可能な表示部10とデバイス情報を変更可能な操作部11を備えている。そして、表示部10にロード準備完了画面が表示されている状態で、操作部11を通じてロード指示が入力されると、ロード制御部22は、上述したロード処理を実行する。しかし、記憶部30に記憶されているラダープログラムなどのプロジェクトデータにライトプロテクトがかかっていると、ロード制御部22は、オペレーションモジュール3に記憶されているプロジェクトデータのロードを実行できない。そこで、ロード制御部22は、表示部10にロードが実行できない旨(例:ライトプロテクト)を表示している最中に、特定のキー(例:リターンキーなど)が一定期間(例:1秒)にわたって連続して押され続けたことを条件として、強制ロードを実行してもよい。このように、ロード制御部22は、記憶部30に保持されている設定情報にライトプロテクトがかかっている場合に操作部11において強制ロードの指示が入力されると、オペレーションモジュール3のメモリカード14に記憶されている設定情報を本体2の記憶部30へ強制的にロードするよう構成されていてもよい。