以下に、本発明の実施の形態に係るプログラマブルロジックコントローラを図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
実施の形態1.
図1は、実施の形態1に係るプログラマブルロジックコントローラが備えられる制御システムの構成を示す図である。図2は、図1に示す制御システムのコンピュータが生成する制御プログラムの一例を示す図である。制御システム1は、FA(Factory Automation)分野の設備を構成するものであり、図1に示すように、設備に設置される複数の制御機器2X,3Yと、複数の制御機器2X,3Yに接続したプログラマブルロジックコントローラ(Programmable Logic Controllers:以下、単にPLCと記す)5と、PLC5に接続したコンピュータ6とを備える。
制御機器2X,3Yは、設備に設置されるスイッチ、調整弁、電磁弁、モータ、又はポンプであり、動作を実施する駆動機器である。実施の形態1において、制御機器2Xは、スイッチであり、制御機器3Yは、スイッチ以外の駆動機器である。実施の形態1において、制御システム1は、制御機器2Xと制御機器3Yとをそれぞれ複数備える。本明細書は、複数の制御機器2X同士を区別する場合には、制御機器2Xを、符号2X0,2X1,2X2,2X3・・・2XF(Fは、自然数)で示し、複数の制御機器3Y同士を区別する場合には、制御機器3を、符号3Y0,3Y1,3Y2,3Y3・・・3YFで示す。また、本明細書は、制御機器2X同士を区別しない場合には、制御機器2Xを符号2Xで示し、制御機器3Y同士を区別しない場合には、制御機器3Yを符号3Yで示す。
コンピュータ6は、ネットワークNを介して、PLC5に通信可能に接続している。ネットワークNは、コンピュータ6とPLC5とを相互に通信可能に接続するコンピュータネットワークである。実施の形態1において、ネットワークNは、FA設備に設置されるLAN(Local Area Network)である。
コンピュータ6は、PLC5を介して、制御機器2X0,2X1,2X2,2X3・・・2XF,3Y0,3Y1,3Y2,3Y3・・・3YFに接続している。コンピュータ6は、PLC5で実行される図2に示す制御プログラムSPを生成して、PLC5に送信する。PLC5は、コンピュータ6から受信した制御プログラムSPを記憶する。PLC5が、制御プログラムSPを実行することにより、制御機器3Y0,3Y1,3Y2,3Y3・・・3YFを制御する。即ち、制御プログラムSPは、PLC5に接続された制御機器3Y0,3Y1,3Y2,3Y3・・・3YFを制御するためのコンピュータプログラムである。
また、コンピュータ6は、PLC5が制御プログラムSPを実行する回数を示す情報を生成し、生成した制御プログラムSPを実行する回数を示す情報をPLC5に送信する。PLC5は、制御プログラムSPを実行する回数を示す情報を記憶する。
実施の形態1において、制御プログラムSPは、図2に示すように、ラダー(Ladder:LD)言語で記述されたラダープログラムである。ラダー言語は、IEC(国際電機標準会議) 61131−3及びJIS(日本工業規格) B 3503:2012により規定された言語である。
制御プログラムSPは、図2中の左右両端に位置する2本の平行な母線BLと、2本の母線BL同士を連結する複数のラングLとを備える。各ラングLは、図2中左側に設けられる条件部LAと、図2中右側に設けられる動作部LBとを備える。実施の形態1において、条件部LAは、PLC5が制御機器2X0,2X1,2X2,2X3・・・2XFのうち少なくとも一つから受信するデータDX0,DX1,DX2,DX3・・・DXFにより規定される。動作部LBは、PLC5が制御機器3Y0,3Y1,3Y2,3Y3・・・3YFのうち少なくとも一つに送信する制御信号DY0,DY1,DY2,DY3・・・DYFを規定する。
実施の形態1において、PLC5が制御機器2X0,2X1,2X2,2X3・・・2XFから受信するデータDX0,DX1,DX2,DX3・・・DXFは、スイッチのオンオフを示す信号、即ち「0」か「1」を示すデジタル信号である。
実施の形態1において、図2の一番上のラングL(符号L1で示す)は、制御機器3Y0に送信する制御信号DY0が、制御機器2X0から受信するデータDX0と等しいことを示している。図2の中央のラングL(符号L2で示す)は、制御機器3Y1に送信する制御信号DY1が、制御機器2X2から受信するデータDX2と等しいことを示しているとともに、制御機器3Y3に送信する制御信号DY3が、制御機器2X2から受信するデータDX2と等しいことを示している。図2の一番下のラングL(符号L3で示す)は、制御機器3Y2に送信する制御信号DY2が、制御機器2X3から受信するデータDX3の逆であることを示している。即ち、ラングL3は、制御機器2X3から受信するデータDX3が「0」であると制御機器3Y2に送信する制御信号DY2が「1」であることを示し、制御機器2X3から受信するデータDX3が「1」であると制御機器3Y2に送信する制御信号DY2が「0」であることを示している。
実施の形態1において、制御プログラムSPにより制御信号DY0,DY1,DY2,DY3・・・DYFがデータDX0,DX1,DX2,DX3・・・DXFにより規定されるので、制御信号DY0,DY1,DY2,DY3・・・DYFは、オンオフを示す信号、即ち「0」か「1」を示すデジタル信号である。なお、実施の形態1において、制御プログラムSPは、ラダープログラムであるが、シーケンシャルファンクションチャート(Sequential Function Chart:SFC)で記述されたSFCプログラムでも良い。SFC言語は、IEC(国際電機標準会議) 61131−3により規定された言語である。また、本明細書は、データDX0,DX1,DX2,DX3・・・DXF同士を区別しない場合には、「データDX」と記し、制御信号DY0,DY1,DY2,DY3・・・DYF同士を区別しない場合には、「制御信号DY」と記す。
次に、コンピュータ6の構成を図面に基づいて説明する。図3は、図1に示された制御システムのプログラマブルロジックコントローラに接続されたコンピュータのハードウェアの構成を示す図である。実施の形態1に係るコンピュータ6は、コンピュータプログラムを実行するものであって、図3に示すように、CPU(Central Processing Unit)61と、RAM(Random Access Memory)62と、ROM(Read Only Memory)63と、外部の情報記憶装置である記憶装置64と、入力装置65と、表示装置66と、通信インタフェース67と、を含む。CPU61、RAM62、ROM63、記憶装置64、入力装置65、表示装置66及び通信インタフェース67は、バスB6を介して相互に接続されている。
CPU61は、RAM62を作業領域として使用しながら、ROM63及び記憶装置64に記憶されているプログラムを実行する。ROM63に記憶されているプログラムは、BIOS(Basic Input/Output System)又はUEFI(Unified Extensible Firmware Interface)であるが、ROM63に記憶されているプログラムは、BIOS又はUEFIに限定されない。実施の形態1において、記憶装置64に記憶されているプログラムは、オペレーティングシステムプログラム及びエンジニアリングツールプログラムであるが、記憶装置64に記憶されているプログラムは、オペレーティングシステムプログラム及びエンジニアリングツールプログラムに限定されない。実施の形態1において、記憶装置64は、SSD(Solid State Drive)又はHDD(Hard Disk Drive)であるが、記憶装置64は、SSD又はHDDに限定されない。
入力装置65は、ユーザからの操作入力を受け付ける。実施の形態1において、入力装置65は、キーボード又はマウスであるが、キーボード又はマウスに限定されない。表示装置66は、文字及び画像を表示する。実施の形態1において、表示装置66は、液晶表示装置であるが、液晶表示装置に限定されない。通信インタフェース67は、PLC5と通信を行う。
PLC5は、JIS(日本工業規格)B 3502:2011に規定されたプログラマブルコントローラである。PLC5は、起動された後、制御プログラムSPを予め設定された周期毎に繰り返し実行する。PLC5は、制御プログラムSPを予め設定された回数実行する。制御プログラムSPを繰り返し実行する回数は、コンピュータ6から受信する。PLC5は、制御プログラムSPを実行する毎に、制御機器2X0,2X1,2X2,2X3・・・2XFからのデータDX0,DX1,DX2,DX3・・・DXFを受信する。PLC5は、制御プログラムSPを実行する毎に、制御機器3Y0,3Y1,3Y2,3Y3・・・3YFに送信するデータである制御信号DY0,DY1,DY2,DY3・・・DYFを取得する。制御信号DY0,DY1,DY2,DY3・・・DYFを取得することは、データである制御信号DY0,DY1,DY2,DY3・・・DYFを受信することに相当する。実施の形態1において、PLC5は、制御プログラムSPの複数のラングLのうち上から順に実行する。実施の形態1において、PLC5は、制御プログラムSPを上のラングL(L1)から順に実行して最後のラングLを実行すると、最初のラングL(L1)に戻る。実施の形態1において、PLC5は、上のラングL(L1)から順に実行して最後のラングLを実行した後に最初のラングL(L1)に戻ることを繰り返して、制御機器2X0,2X1,2X2,2X3・・・2XF,3Y0,3Y1,3Y2,3Y3・・・3YFの制御を行う。なお、本明細書は、PLC5は、制御プログラムSPを上のラングL(L1)から順に実行して最後のラングLを実行することを「1スキャン」と呼ぶ。
実施の形態1において、PLC5は、制御プログラムSPを実行した後、即ち毎スキャンの最後に、データDX0,DX1,DX2,DX3・・・DXFと制御信号DY0,DY1,DY2,DY3・・・DYFとを受信するが、データDX0,DX1,DX2,DX3・・・DXFと制御信号DY0,DY1,DY2,DY3・・・DYFとを受信するタイミングは、制御プログラムSPの実行後、即ち毎スキャンの最後に限定されない。PLC5は、データDX0,DX1,DX2,DX3・・・DXFと制御信号DY0,DY1,DY2,DY3・・・DYFとのうちの一以上を記憶する。なお、実施の形態1において、PLC5は、スイッチである制御機器2XのデータDX0,DX1,DX2,DX3・・・DXFを受信するが、スイッチの他にリンク特殊リレー、タイマ、ロングタイマ、リンク特殊レジスタ、リフレッシュデータレジスタ、特殊リレー、特殊レジスタ、ファンクション入力、ファンクション出力、及びファンクションデバイスのうち少なくとも一つのデータを受信しても良い。
PLC5は、図1に示すように、取得データADを設定する取得データ設定部11と、取得データADを記憶する記憶部12と、制御プログラムSPを格納するプログラム記憶部13と、入力データ受信部14と、制御部15と、内部データ再現部16と、入出力部17とを備える。取得データADは、データDX0,DX1,DX2,DX3・・・DXFと制御信号DY0,DY1,DY2,DY3・・・DYFとのうちの、PLC5が取得し記憶することが設定されたデータである。
取得データ設定部11は、複数のデータDX0,DX1,DX2,DX3・・・DXFと制御信号DY0,DY1,DY2,DY3・・・DYFとのうちの少なくとも一つを取得データADに設定する。取得データ設定部11は、プログラム記憶部13が格納した制御プログラムSPを参照して、データDX0,DX1,DX2,DX3・・・DXFと制御信号DY0,DY1,DY2,DY3・・・DYFとのうちの少なくとも一つを取得データADに設定する。
実施の形態1において、取得データ設定部11は、データDX0,DX1,DX2,DX3・・・DXFと、制御信号DY0,DY1,DY2,DY3・・・DYFとのうちの、制御プログラムSPを用いて生成することができる制御信号DY0,DY1,DY2,DY3・・・DYFを取得データADに設定しない。取得データ設定部11は、データDX0,DX1,DX2,DX3・・・DXFと、制御信号DY0,DY1,DY2,DY3・・・DYFとのうちの制御プログラムSPを用いて生成することができないデータDX0,DX1,DX2,DX3・・・DXFを取得データADに設定する。即ち、取得データ設定部11は、データX0,DX1,DX2,DX3・・・DXFと、制御信号DY0,DY1,DY2,DY3・・・DYFとのうちの制御プログラムSPを用いて生成することが規制されているデータDX0,DX1,DX2,DX3・・・DXFを取得データADに設定する。
プログラム記憶部13は、制御プログラムSPに加え、PLC5が制御プログラムSPを実行する回数を示す情報を格納する。実施の形態1において、PLC5が制御プログラムSPを実行する回数は、複数回である。プログラム記憶部13は、入出力部17を介して制御機器2X0,2X1,2X2,2X3・・・2XF,3Y0,3Y1,3Y2,3Y3・・・3YFに接続している。入出力部17は、制御プログラムSPにしたがって制御機器2X0,2X1,2X2,2X3・・・2XF,3Y0,3Y1,3Y2,3Y3・・・3YFを制御するものである。入出力部17は、制御プログラムSPを予め設定された周期毎に、予め設定された回数繰り返し実行して、制御信号DY0,DY1,DY2,DY3・・・DYFを生成する。入出力部17は、生成した制御信号DY0,DY1,DY2,DY3・・・DYFを制御機器3Y0,3Y1,3Y2,3Y3・・・3YFに送信する。
入力データ受信部14は、全ての制御機器2X0,2X1,2X2,2X3・・・2XFからのデータDX0,DX1,DX2,DX3・・・DXFと入出力部17が制御機器3Y0,3Y1,3Y2,3Y3・・・3YFに送信する制御信号DY0,DY1,DY2,DY3・・・DYFとを受信する。入力データ受信部14は、入出力部17が制御プログラムSPを実行する毎に、全てのデータDX0,DX1,DX2,DX3・・・DXFと制御信号DY0,DY1,DY2,DY3・・・DYFとを受信する。実施の形態1において、入出力部17が制御プログラムSPを繰り返し実行するので、入力データ受信部14は、全てのデータDX0,DX1,DX2,DX3・・・DXFと制御信号DY0,DY1,DY2,DY3・・・DYFとを複数回受信する。また、実施の形態1において、入力データ受信部14は、入出力部17が制御プログラムSPの実行を完了した後に、全てのデータDX0,DX1,DX2,DX3・・・DXFと制御信号DY0,DY1,DY2,DY3・・・DYFとを受信する。
制御部15は、入力データ受信部14が複数回全てのデータDX0,DX1,DX2,DX3・・・DXFと制御信号DY0,DY1,DY2,DY3・・・DYFとを受信するうちの少なくとも1回において、入力データ受信部14が受信したデータDX0,DX1,DX2,DX3・・・DXFと制御信号DY0,DY1,DY2,DY3・・・DYFとの全てを記憶部12に記憶させる。実施の形態1において、制御部15は、入出力部17が制御プログラムSPを予め設定された回数繰り返し実行する際の任意の1回、即ち、入力データ受信部14が複数回全てのデータDX0,DX1,DX2,DX3・・・DXFと制御信号DY0,DY1,DY2,DY3・・・DYFとを受信するうちの任意の1回において、データDX0,DX1,DX2,DX3・・・DXFと制御信号DY0,DY1,DY2,DY3・・・DYFとの全てを記憶部12に記憶させる。また、実施の形態1において、制御部15は、入出力部17が制御プログラムSPを繰り返し実行する複数回のうちの最初の制御プログラムSPの実行が完了した後に、データDX0,DX1,DX2,DX3・・・DXFと制御信号DY0,DY1,DY2,DY3・・・DYFとの全てを記憶部12に記憶させる。
制御部15は、入力データ受信部14が複数回全てのデータDX0,DX1,DX2,DX3・・・DXFと制御信号DY0,DY1,DY2,DY3・・・DYFとを受信するうちのデータDX0,DX1,DX2,DX3・・・DXFと制御信号DY0,DY1,DY2,DY3・・・DYFとの全てを記憶部12に記憶させる少なくとも1回以外の他の回において、取得データADを記憶部12に記憶させる。即ち、制御部15は、取得データADを記憶部12に少なくとも1回記憶させる。また、制御部15がデータDX0,DX1,DX2,DX3・・・DXFと制御信号DY0,DY1,DY2,DY3・・・DYFの全てを記憶部12に記憶させる少なくとも1回は、入力データ受信部14が複数回全てのデータDX0,DX1,DX2,DX3・・・DXFと制御信号DY0,DY1,DY2,DY3・・・DYFとを受信するうちの制御部15が取得データADを記憶部12に記憶させる回以外の回である。
制御部15は、取得データADを記憶部12に記憶させる際には、入力データ受信部14が受信したデータDX0,DX1,DX2,DX3・・・DXFが取得データADであり、入力データ受信部14が受信したデータDX0,DX1,DX2,DX3・・・DXFの値が記憶部12に最も最近記憶された値から変化した場合に、入力データ受信部14が受信したデータDX0,DX1,DX2,DX3・・・DXFを取得データADとして記憶部12に記憶する。
実施の形態1において、制御部15は、入出力部17の制御プログラムSPの最初の実行が完了した後に、受信したデータDX0,DX1,DX2,DX3・・・DXFと制御信号DY0,DY1,DY2,DY3・・・DYFとの全てを記憶部12に記憶させるので、入出力部17の制御プログラムSPの2回目以降の実行が完了した後に、記憶部12に最も最近記憶させた値からデータDX0,DX1,DX2,DX3・・・DXFの値が変化した場合に、値が変化したデータDX0,DX1,DX2,DX3・・・DXFを記憶する。なお、本明細書は、入出力部17が制御プログラムSPを実行した後に、制御部15が、値が変化したデータDX0,DX1,DX2,DX3・・・DXFを記憶することを「スキャンする」と記載する。
内部データ再現部16は、記憶部12に記憶された取得データADとプログラム記憶部13が格納した制御プログラムSPとに基づいて、各スキャンのデータDX0,DX1,DX2,DX3・・・DXFと制御信号DY0,DY1,DY2,DY3・・・DYFとの全てを再現するものである。各スキャンのデータDX0,DX1,DX2,DX3・・・DXFと制御信号DY0,DY1,DY2,DY3・・・DYFとの全ては、各スキャン時の全ての制御機器2X0,2X1,2X2,2X3・・・2XF,3Y0,3Y1,3Y2,3Y3・・・3YFの状態を示す内部データである。
次に、実施の形態1に係るPLCの構成を図面に基づいて説明する。図4は、図1に示された制御システムのプログラマブルロジックコントローラのハードウェアの構成を示す図である。PLC5は、図4に示すように、ネットワークNを介してコンピュータ6に通信可能に接続したCPUユニット21と、制御機器2Xに接続した入力ユニット22と、制御機器3Yに接続した出力ユニット23とを備える。
CPUユニット21は、図4に示すように、コンピュータ6と通信可能に接続する通信インタフェース211と、コンピュータプログラムを実行するMPU(Micro-Processing Unit)212と、制御プログラムSPを記憶するメモリ213とを備える。CPUユニット21は、ネットワークNと通信インタフェース211を介して接続した通信用回路214と、バスインタフェース215とを備える。MPU212とメモリ213と通信用回路214とバスインタフェース215とは、内部バスB5を介して接続している。
メモリ213は、制御プログラムSP及びデータを記憶可能な記憶領域を備える。メモリ213は、不揮発性の半導体メモリ、又は揮発性の半導体メモリにより構成される。不揮発性の半導体メモリ、又は揮発性の半導体メモリとして、RAM、ROM、フラッシュメモリ、EPROM(Erasable Programmable Read Only Memory)、又は、EEPROM(Electrically Erasable Programmable Read Only Memory)を用いることができる。また、メモリ213は、磁気ディスク、光ディスク、及び光磁気ディスクのうちの少なくとも一つにより構成されても良い。
通信用回路214は、単一回路、複合回路、プログラム化したプロセッサー、並列プログラム化したプロセッサー、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)又はこれらの二以上を組み合わせて実現される。バスインタフェース215は、内部バスB5と、拡張バスBとを連結するバスブリッジ回路である。
入力ユニット22及び出力ユニット23は、構成が等しい。なお、以下、本明細書は、入力ユニット22の構成部分に符号「I」を付して説明し、出力ユニット23の構成部分に符号「O」を付して説明する。入力ユニット22及び出力ユニット23は、それぞれ、図4に示すように、制御機器2X,3Yに接続した入出力インタフェース35I,35Oと、入出力インタフェース35I,35Oに接続したコンバータ36I,36Oとを備える。入力ユニット22及び出力ユニット23は、それぞれ、コンピュータプログラムを記憶するMPU37I,37Oと、共有メモリ31I,31Oと、通信用回路38I,38Oと、拡張バスBに接続したバスインタフェース39I,39Oとを備える。MPU37I,37Oと共有メモリ31I,31Oと通信用回路38I,38Oとは、内部バスB3I,B3Oを介して接続している。
コンバータ36I,36Oは、MPU37I,37Oにも接続している。コンバータ36I,36Oは、デジタルI/O(Input/Output)により実現される。通信用回路38I,38Oは、バスインタフェース39I,39Oと接続している。
共有メモリ31I,31Oは、データを記憶可能な記憶領域を備える。共有メモリ31I,31Oは、不揮発性の半導体メモリ、又は揮発性の半導体メモリにより構成される。不揮発性の半導体メモリ、又は揮発性の半導体メモリとして、RAM、ROM、フラッシュメモリ、EPROM、又は、EEPROMを用いることができる。また、共有メモリ31I,31Oは、磁気ディスク、光ディスク、及び光磁気ディスクのうちの少なくとも一つにより構成されても良い。
通信用回路38I,38Oは、単一回路、複合回路、プログラム化したプロセッサー、並列プログラム化したプロセッサー、ASIC、FPGA又はこれらの二以上を組み合わせて実現される。
入力ユニット22のMPU37Iは、制御機器2Xから受信したデータDXを共有メモリ31Iに記憶するとともに、内部バスB3I、通信用回路38I、バスインタフェース39I及び拡張バスBを介して、CPUユニット21に送信する。出力ユニット23のMPU37Oは、CPUユニット21から制御信号DYを受信し、受信した制御信号DYを共有メモリ31Oに記憶するとともに、コンバータ36O及び入出力インタフェース35Oを介して制御機器3Yに送信する。入力ユニット22及び出力ユニット23の機能は、MPU37I,37Oがコンピュータプログラムを実行することにより実現される。コンピュータプログラムは、ソフトウェア、ファームウェア、又はソフトウェアとファームウェアとの組み合わせにより実現される。
PLC5の取得データ設定部11、制御部15及び内部データ再現部16の機能は、MPU212がメモリ213に記憶されたコンピュータプログラムを実行することにより実現される。PLC5の入出力部17の機能は、MPU212が制御プログラムSPを実行することにより実現される。コンピュータプログラムは、ソフトウェア、ファームウェア、又はソフトウェアとファームウェアとの組み合わせにより実現される。プログラム記憶部13及び記憶部12の機能は、メモリ213により実現される。入力データ受信部14の機能は、バスインタフェース215により実現される。
次に、実施の形態1に係る制御システム1のPLC5の取得データADを取得する動作を図面に基づいて説明する。図5は、図1に示された制御システムのプログラマブルロジックコントローラの取得データを取得する動作を示すフローチャートである。図6は、図5のステップS1において記憶部に記憶された全取得データを説明する図である。図7は、図5のステップS8において記憶部に記憶された変化履歴データを説明する図である。
取得データADを取得する際には、PLC5の入出力部17は、制御システム1が起動された後に、プログラム記憶部13から制御プログラムSPを読み出して、制御プログラムSPを1回実行する。PLC5の制御部15は、入出力部17が制御プログラムSPを1回実行した後、即ち1回スキャンした後、制御機器2X0,2X1,2X2,2X3・・・2XFから受信したデータDX0,DX1,DX2,DX3・・・DXFと、制御機器3Y0,3Y1,3Y2,3Y3・・・3YFに送信する制御信号DY0,DY1,DY2,DY3・・・DYFとの全てを記憶部12に記憶させる(ステップS1)。なお、実施の形態1において、データDX0,DX1,DX2,DX3・・・DXFと制御信号DY0,DY1,DY2,DY3・・・DYFとの全てを記憶部12に記憶させるスキャンを「0スキャン目」と記す。ステップS1において、PLC5の制御部15は、図6に示す全取得データAADを記憶部12に記憶させる。全取得データAADは、「0スキャン目」の取得データADを示すものである。全取得データAADは、「0スキャン目」のデータDX0,DX1,DX2,DX3・・・DXFと制御信号DY0,DY1,DY2,DY3・・・DYFとの全てを示すものである。
PLC5の制御部15は、制御システム1に異常がないか否かを判定する(ステップS2)。実施の形態1において、PLC5の制御部15は、データDX0,DX1,DX2,DX3・・・DXFのうち少なくとも一つが正常時の値と異なっていると、制御システム1に異常があると判定するが、異常がないか否かを判定する根拠は、データDX0,DX1,DX2,DX3・・・DXFのうち少なくとも一つに限定されない。
PLC5の制御部15は、制御システム1に異常があると判定する(ステップS2:No)と、記憶部12に記憶したデータDX0,DX1,DX2,DX3・・・DXFと制御信号DY0,DY1,DY2,DY3・・・DYFとの全てをPLC5の外部の情報記憶装置である記憶装置64に送信し(ステップS3)、図5に示すフローチャートを終了し、取得データADを取得することを終了する。コンピュータ6の記憶装置64は、受信したデータDX0,DX1,DX2,DX3・・・DXFと制御信号DY0,DY1,DY2,DY3・・・DYFとの全てを記憶する。
PLC5の制御部15は、制御システム1に異常がないと判定する(ステップS2:Yes)と、制御システム1が設定条件に該当しているか否かを判定する(ステップS4)。設定条件は、ユーザがコンピュータ6を介してPLC5にデータDX0,DX1,DX2,DX3・・・DXFの取得を終了させるための条件である。設定条件は、ユーザがコンピュータ6を用いて生成し、PLC5に送信され、PLC5のプログラム記憶部13に記憶される。実施の形態1において、設定条件は、制御システム1の非常停止スイッチが操作されることで制御機器2X0,2X1,2X2,2X3・・・2XF,3Y0,3Y1,3Y2,3Y3・・・3YFのうち少なくとも一つが停止されたこと、及び制御プログラムSPを繰り返した回数がプログラム記憶部13に記憶された制御プログラムSPを実行する回数に達したこととのうち少なくとも一方であるが、これらの少なくとも一方に限定されない。
PLC5の制御部15は、設定条件に該当していると判定する(ステップS4:Yes)と、図5に示すフローチャートを終了し、取得データADを取得することを終了する。PLC5の制御部15は、設定条件に該当していないと判定する(ステップS4:No)と、入出力部17が次の回の制御プログラムSPを実行した後、PLC5の制御部15は、データDX0,DX1,DX2,DX3・・・DXFを受信し、制御信号DY0,DY1,DY2,DY3・・・DYFを取得する(ステップS5)。PLC5の制御部15は、受信したデータDX0,DX1,DX2,DX3・・・DXFと、取得した制御信号DY0,DY1,DY2,DY3・・・DYFとのうち取得データADに設定されているものを抽出する(ステップS6)。実施の形態1において、PLC5の制御部15は、データDX0,DX1,DX2,DX3・・・DXFを抽出する。
PLC5の制御部15は、取得データADに設定されているものとして抽出したデータDX0,DX1,DX2,DX3・・・DXFのうち前回のスキャン時の値から変化したものを抽出する(ステップS7)。PLC5の制御部15は、抽出したものを記憶部12に記憶(ステップS8)し、即ち「1スキャン目」を実行して、ステップS2に戻る。PLC5の制御部15は、ステップS8において取得データADに設定されているものとして抽出したデータDX0,DX1,DX2,DX3・・・DXFのうち前回のスキャン時の値から変化したものの値を記憶することで、入力データ受信部14が受信したデータDX0,DX1,DX2,DX3・・・DXFの値が記憶部12に最も最近記憶された値から変化した場合に、データDXを取得データADとして記憶することとなる。PLC5の制御部15は、制御プログラムSPを繰り返した回数がプログラム記憶部13に記憶された制御プログラムSPを実行する回数に達するまで、制御プログラムSPを実行する毎に、ステップS2からステップS8を繰り返して「スキャン」を実行する。PLC5の制御部15は、各スキャン時のステップS8において、記憶部12に図7に示す変化履歴データCHDを記憶させる。変化履歴データCHDは、記憶部12に記憶された取得データADを示すものであり、値が変化したデータDX名と、変化した後の値と、変化したスキャンとを対応付けている。即ち制御部15は、ステップS8において、値が変化したデータDX名と、変化した後の値と、変化したスキャンとを対応付けて記憶部12に記憶させる。
実施の形態1において、変化履歴データCHDは、2スキャン目に制御機器2X0のデータDX0の値が「1」に変化し、3スキャン目に制御機器2X1のデータDX1の値が「1」に変化したことを示している。変化履歴データCHDは、3スキャン目に制御機器2X2のデータDX2の値が「0」に変化し、5スキャン目に制御機器2X1のデータDX1の値が「0」に変化し、7スキャン目に制御機器2X0のデータDX0の値が「0」に変化したことを示している。
次に、実施の形態1に係る制御システム1のPLC5の取得データADから内部データIRDを再現する動作を図面に基づいて説明する。図8は、図1に示された制御システムのプログラマブルロジックコントローラが途中データを再現する動作を示すフローチャートである。図9は、図8のステップS13において作成された途中取得データを示す図である。図10は、図8に示すフローチャートにしたがって再現された途中データを説明する図である。図11は、図1に示された制御システムのプログラマブルロジックコントローラの内部データを再現する動作を示すフローチャートである。図12は、図1に示された制御システムのプログラマブルロジックコントローラの内部データ再現部により再現された内部データを説明する図である。
図12に示す内部データIRDは、全てのスキャン時のデータDX0,DX1,DX2,DX3・・・DXFと制御信号DY0,DY1,DY2,DY3・・・DYFとを示すものである。内部再現データIRDは、全てのスキャン時の全ての制御機器2X0,2X1,2X2,2X3・・・2XF,3Y0,3Y1,3Y2,3Y3・・・3YFの状態を示すものである。図12に示す内部データIRDは、内部データ再現部16により生成される。
内部データ再現部16は、まず、図8に示すフローチャートの処理を実行して、図10に示すスイッチである制御機器2Xの全てのスキャン時のデータDXを示す途中データWDを再現する。内部データ再現部16は、PLC5がコンピュータ6から内部データIRDを作成する指令を受信すると、途中データWDを再現するために、図6に示す全取得データAADを記憶部12から取得し、全取得データAADを保持しておく(ステップS10)。内部データ再現部16は、全取得データAADを図8のフローチャートを終了するまで保持しておく。
PLC5の内部データ再現部16は、n=1として、nスキャン目の全てのデータDXの再現を開始する(ステップS11)。PLC5の内部データ再現部16は、図7に示す変化履歴データCHDを参照して、nスキャン目に値が変化したデータDXがあるか否かを判定する(ステップS12)。PLC5の内部データ再現部16は、nスキャン目に値が変化したデータDXがあると判定する(ステップS12:Yes)と、変化履歴データCHDからnスキャン目に変化したデータDXの変化後の値を抜き出して、全取得データAADをnスキャン目に変化したデータDXの変化後の値で更新して、途中全取得データAAD−nを生成し、生成した途中全取得データAAD−nを保持しておく(ステップS13)。内部データ再現部16は、途中全取得データAAD−nを図8のフローチャートを終了するまで保持しておく。なお、図9は、各データDXの値がステップS11からステップS15を繰り返す毎に変化することがあるので、各データDXの値を空欄で示している。
PLC5の内部データ再現部16は、nスキャン目に値が変化したデータDXがないと判定した(ステップS12:No)後、及び、全取得データAADをnスキャン目に変化したデータDXの変化後の値で更新して、途中全取得データAAD−nを生成した(ステップS13)後、途中全取得データAAD−nのnスキャン目に値が変化していないデータDXの値を維持する(ステップS14)。PLC5の内部データ再現部16は、全てのスキャンのデータDXの更新が完了したか否かを判定する(ステップS15)。PLC5の内部データ再現部16は、全てのスキャンのデータDXの更新が完了していないと判定する(ステップS15:No)と、n=n+1として(ステップS16)、ステップS11に戻る。
PLC5の内部データ再現部16は、全てのスキャンのデータDXの値の更新が完了するまで、ステップS11からステップS16を繰り返す。PLC5の内部データ再現部16は、ステップS13において、ステップS13を前回実行した際に生成された途中全取得データAAD−nをnスキャン目に変化したデータDXの変化後の値で更新して、新たな途中全取得データAAD−nを生成し、保持する。PLC5の内部データ再現部16は、全てのスキャンのデータDXの更新が完了したと判定する(ステップS15:Yes)と、1つの全取得データAADと、n個の途中全取得データAAD−nとを保持している。途中全取得データAAD−nは、「nスキャン目」の再現したデータDXの値を示している。即ち、PLC5の内部データ再現部16は、「nスキャン目」のデータDXの値を再現する。PLC5の内部データ再現部16は、全てのスキャンのデータDXの更新が完了したと判定する(ステップS15:Yes)と、1つの全取得データAADとn個の途中全取得データAAD−nとに基づいて、図10に示す制御機器2Xの全てのスキャン時のデータDXを示す途中データWDを生成し、生成した途中データWDを保持して、図8に示すフローチャートを終了する。
その後、PLC5の内部データ再現部16は、プログラム記憶部13に記憶された制御プログラムSPを参照する(ステップS21)。PLC5の内部データ再現部16は、制御プログラムSPと、図10に示す途中データWDとに基づいて、制御機器3Yの全てのスキャン時の内部データIRDを再現する(ステップS22)。PLC5の内部データ再現部16は、ステップS22において、途中データWDと再現した制御機器3Yの全てのスキャン時の制御信号DYの値とを組み合わせて、図12に示す内部データIRDを生成する。PLC5の制御部15は、内部データ再現部16が再現した内部データIRDをコンピュータ6に送信する(ステップS23)。PLC5の制御部15は、内部データ再現部16が再現した内部データIRDを削除する(ステップS24)。コンピュータ6は、受信した内部データIRDを記憶部12に記憶するとともに、表示装置66に表示する。PLC5の内部データ再現部16は、ステップS24を実行した後、図11に示すフローチャートを終了する。
PLC5の内部データ再現部16は、ステップS10において全取得データAADを取得し、ステップS12において変化履歴データCHDを参照し、ステップS21において制御プログラムSPを参照することにより、記憶部12に記憶された取得データADとプログラム記憶部13が格納した制御プログラムSPとに基づいて内部データIRDを再現することとなる。
実施の形態1に係るPLC5は、取得データ設定部11により取得データADに設定されて、記憶部12に最も最近記憶された値から変化したデータDXの値を制御部15が記憶部12に記憶させるので、全てのデータDXの値を常に記憶する必要が生じない。その結果、実施の形態1に係るPLC5は、記憶部12に記憶するデータDXの合計容量を低減でき、取得するデータDXをさらに小容量化することができる。
また、実施の形態1に係るPLC5は、取得データ設定部11により取得データADに設定されて、記憶部12に最も最近記憶された値から変化したデータDXの値を制御部15が記憶部12に記憶させるので、値が変化すると、取得不足が発生することなく、取得データADに設定されたデータDXの値を取得することができる。その結果、実施の形態1に係るPLC5は、データDXの取得不足を抑制でき、正確なデータDX及び制御信号DYの時系列の変化を確認することができる。
また、実施の形態1に係るPLC5は、記憶部12に記憶されたデータDXとプログラム記憶部13に格納した制御プログラムSPとに基づいて各制御機器2X,3Yの状態を示す内部データIRDを再現する内部データ再現部16を備える。実施の形態1に係るPLC5は、内部データ再現部16が記憶した取得データADである全取得データAAD及び変化履歴データCHDと制御プログラムSPとに基づいてデータである制御信号DYを再現する。このため、実施の形態1に係るPLC5は、制御信号DYを取得しなくても、正確なデータDX及び制御信号DYの時系列の変化を確認することができる。その結果、実施の形態1に係るPLC5は、内部データIRDを再現する内部データ再現部16を備えて、制御信号DYを取得しなくても、正確なデータDX及び制御信号DYの時系列の変化を確認することができるので、長期間分のデータDX及び制御信号DYの時系列の変化を確認することができる。
また、実施の形態1に係るPLC5は、制御部15がデータDX及び制御信号DYの全てを記憶部12に記憶させることもあるので、値が変化したデータDXを取得しても、全取得データAADに基づいて、全てのデータDXを算出することができる。その結果、実施の形態1に係るPLC5は、取得するデータDXを抑制しても、正確なデータDX及び制御信号DYの時系列の変化を確認することができる。
また、実施の形態1に係るPLC5は、取得データ設定部11が制御プログラムSPを参照して、制御プログラムSPを用いても生成することができないデータDXを取得データADに設定する。その結果、PLC5は、制御信号DYを取得しなくても、制御プログラムSPを用いても生成することができないデータDXを取得するので、正確なデータDX及び制御信号DYの時系列の変化を確認することができる。
また、実施の形態1に係るPLC5は、異常が発生すると記憶部12に記憶したデータDX及び制御信号DYをコンピュータ6の記憶装置64に送信するので、取得したデータDX及び制御信号DYを確実に記憶装置64に記憶することができる。
また、実施の形態1に係るPLC5は、所謂プロマブルロジックコントローラであり、プロマブルロジックコントローラが一般的にデータを取り出し難い場所に設置されるものである。このため、実施の形態1に係るPLC5は、取得するデータDXの容量を抑制することができるので、取得したデータDXを取り出す頻度を抑制することができ、データDXを取り出すために係る手間を抑制することができる。
実施の形態2.
次に、本発明の実施の形態2に係るPLC5を図面に基づいて説明する。図13は、実施の形態2に係るプログラマブルロジックコントローラの内部データを再現する動作を示すフローチャートである。実施の形態2において、実施の形態1と同一部分には、同一符号を付して説明を省略する。
実施の形態2に係るPLC5は、実施の形態1に係るPLC5と構成が等しい。また、実施の形態2に係るPLC5は、内部データIRDを再現する動作以外は、実施の形態1に係るPLC5と同じ動作を実行する。
実施の形態2に係るPLC5の内部データ再現部16は、図13に示すように、実施の形態1と同様に、PLC5の内部データ再現部16は、プログラム記憶部13に記憶された制御プログラムSPを参照する(ステップS21)。PLC5の内部データ再現部16は、制御プログラムSPと、途中データWDとに基づいて、制御機器3Yの全てのスキャン時の内部データIRDを再現する(ステップS22)。PLC5の内部データ再現部16は、ステップS22において、途中データWDと再現した制御機器3Yの全てのスキャン時の制御信号DYの値とを組み合わせて、内部データIRDを生成する。PLC5の制御部15は、内部データ再現部16が再現した内部データIRDをコンピュータ6に送信する。
PLC5の制御部15は、内部データ再現部16が再現した内部データIRDをコンピュータ6に送信し(ステップS23)、内部データIRDを削除した(ステップS24)後、各制御機器3Yに内部データIRDに示された制御信号DYを送信して、制御機器3Yを制御信号DYに応じて動作させる(ステップS25)。実施の形態1において、PLC5の制御部15は、スキャン順に内部データIRDの制御信号DYを制御機器3Yに送信するが、コンピュータ6から指定されたスキャン時の制御信号DYを制御機器3Yに送信しても良い。コンピュータ6から指定されたスキャン時の制御信号DYを制御機器3Yに送信する場合、PLC5は、ユーザが指定する任意の動作を制御機器3Yに行わせることができる。
実施の形態2に係るPLC5は、実施の形態1と同様に、取得データ設定部11により取得データADに設定されて、記憶部12に最も最近記憶された値から変化したデータDXの値を制御部15が記憶部12に記憶させるので、記憶部12に記憶するデータDXの合計容量を低減でき、取得するデータDXをさらに小容量化することができる。
また、実施の形態2に係るPLC5は、内部データ再現部16が再現した内部データIRDを制御機器3Yに送信するので、内部データIRDに基づいて制御機器3Yを動作させることができる。
実施の形態3.
次に、本発明の実施の形態3に係るPLC5を図面に基づいて説明する。図14は、実施の形態3に係るプログラマブルロジックコントローラの取得データ設定部が取得データを設定する動作を示すフローチャートである。実施の形態3において、実施の形態1と同一部分には、同一符号を付して説明を省略する。
実施の形態3に係るPLC5は、取得データ設定部11が取得データADを設定する動作以外、実施の形態1に係るPLC5と同じ動作を実行する。
実施の形態3に係るPLC5の取得データ設定部11は、n=1として、プログラム記憶部13に記憶された制御プログラムSPのn行目のラングLの確認を行う(ステップS31)。PLC5の取得データ設定部11は、n行目のラングLの条件部LAにデータDXが示されているか否かを判定する(ステップS32)。PLC5の取得データ設定部11は、n行目のラングLの条件部LAにデータDXが示されていないと判定する(ステップS32:No)と、n=n+1として(ステップS33)、ステップS31に戻る。
PLC5の取得データ設定部11は、n行目のラングLの条件部LAにデータDXが示されていると判定する(ステップS32:Yes)と、示されているデータDXが既に取得データADに設定されているか否かを判定する(ステップS34)。PLC5の取得データ設定部11は、示されているデータDXが既に取得データADに設定されていると判定する(ステップS34:Yes)と、ステップS33に進む。PLC5の取得データ設定部11は、示されているデータDXが既に取得データADに設定されていないと判定する(ステップS34:No)と、示されているデータDXを取得データADに設定する(ステップS35)。PLC5の取得データ設定部11は、ステップS31で確認したラングLが最終行のラングLであるか否かを判定する(ステップS36)。PLC5の取得データ設定部11は、ステップS31で確認したラングLが最終行のラングLでないと判定する(ステップS36:No)と、ステップS33に進み、ステップS31で確認したラングLが最終行のラングLであると判定する(ステップS36:Yes)と、図14に示されたフローチャートを終了する。PLC5の取得データ設定部11は、全てのラングLの確認が完了するまで、ステップS31からステップS36を繰り返す。
実施の形態3に係るPLC5は、実施の形態1と同様に、取得データ設定部11により取得データADに設定されて、記憶部12に最も最近記憶された値から変化したデータDXの値を制御部15が記憶部12に記憶させるので、記憶部12に記憶するデータDXの合計容量を低減でき、取得するデータDXをさらに小容量化することができる。
また、実施の形態3に係るPLC5は、取得データ設定部11が制御プログラムSPの条件部LAに示されているデータDXを取得データADに設定するので、データDX0,DX1,DX2,DX3・・・DXFの全てを取得データADに設定する必要が無くなる。このために、実施の形態3に係るPLC5は、データDX0,DX1,DX2,DX3・・・DXFのうちの制御プログラムSPの条件部LAに示されていないデータDXを取得することを抑制することができる。その結果、実施の形態3に係るPLC5は、取得するデータDXの合計容量を更に抑制することができ、取得するデータDXを抑制しても、データDXの取得不足を抑制でき、正確なデータDX及び制御信号DYの時系列の変化を確認することができる。
実施の形態4.
次に、本発明の実施の形態4に係るPLC5−4を図面に基づいて説明する。図15は、実施の形態4に係るプログラマブルロジックコントローラが備えられる制御システムの構成を示す図である。図15において、実施の形態1と同一部分には、同一符号を付して説明を省略する。
実施の形態4に係るPLC5−4は、図15に示すように、内部データ再現部16を備えない以外は、実施の形態1に係るPLC5と構成が等しい。また、実施の形態4に係るPLC5−4は、内部データIRDを再現しない以外は、実施の形態1に係るPLC5と同じ動作を実行する。
実施の形態4に係るPLC5−4は、実施の形態1と同様に、取得データ設定部11により取得データADに設定されて、記憶部12に最も最近記憶された値から変化したデータDXの値を制御部15が記憶部12に記憶させるので、記憶部12に記憶するデータDXの合計容量を低減でき、取得するデータDXをさらに小容量化することができる。
また、実施の形態4に係るPLC5−4は、取得データ設定部11がプログラム記憶部13が格納した制御プログラムSPを参照して、制御プログラムSPを用いても生成することができないデータDXを取得データADに設定するので、制御信号DYを取得しなくても、データDXの取得不足を抑制でき、正確なデータDX及び制御信号DYの時系列の変化を確認することができる。
実施の形態5.
次に、本発明の実施の形態5に係るPLC5を図面に基づいて説明する。図16は、実施の形態5に係るプログラマブルロジックコントローラが途中データを再現する動作を示すフローチャートである。図17は、図16に示されたプログラマブルロジックコントローラに接続されたコンピュータの内部データを再現する動作を示すフローチャートである。実施の形態5において、実施の形態1と同一部分には、同一符号を付して説明を省略する。
実施の形態5に係るPLC5の内部データ再現部16は、途中全取得データAAD−nを生成し(ステップS13)、途中全取得データAAD−nのnスキャン目に値が変化していないデータDXの値を維持して(ステップS14)、「nスキャン目」のデータDXの値を再現した後、「nスキャン目」の再現したデータDX即ち途中全取得データAAD−nをコンピュータ6に送信する(ステップS14a)。実施の形態5に係るPLC5の内部データ再現部16は、「nスキャン目」の再現したデータDXをコンピュータ6に送信した(ステップS14a)後、「n−1スキャン目」の再現したデータDX即ち途中全取得データAAD−n−1を削除する(ステップS14b)。PLC5の内部データ再現部16は、全てのスキャンのデータDXの更新が完了したか否かを判定する(ステップS15)。実施の形態5に係るPLC5の内部データ再現部16は、「nスキャン目」のデータDXの値を再現した後、「nスキャン目」の再現したデータDXをコンピュータ6に送信する(ステップS14a)。実施の形態5に係るPLC5の内部データ再現部16は、「nスキャン目」の再現したデータDXをコンピュータ6に送信した(ステップS14a)後、「n−1スキャン目」の再現したデータDXを削除する以外、実施の形態1のPLC5と同様の処理を実行する。
「nスキャン目」の再現したデータDXを受信したコンピュータ6は、制御プログラムSPを参照する(ステップS21)。コンピュータ6は、制御プログラムSPと、図10に示す途中データWDとに基づいて、実施の形態1のPLC5と同様に、制御機器3Yの全てのスキャン時の内部データIRDを再現する(ステップS22)。コンピュータ6は、再現した内部データIRDを記憶部12に記憶するとともに、表示装置66に表示する。コンピュータ6は、ステップS22を実行した後、図17に示すフローチャートを終了する。
実施の形態5に係るPLC5は、実施の形態1と同様に、取得データ設定部11により取得データADに設定されて、記憶部12に最も最近記憶された値から変化したデータDXの値を制御部15が記憶部12に記憶させるので、記憶部12に記憶するデータDXの合計容量を低減でき、取得するデータDXをさらに小容量化することができる。
また、実施の形態5に係るPLC5は、「nスキャン目」の再現したデータDX即ち途中全取得データAAD−nをコンピュータ6に送信し、「n−1スキャン目」の再現したデータDX即ち途中全取得データAAD−n−1を削除するので、記憶部12に記憶するデータDXの合計容量を低減することができる。
なお、実施の形態1から実施の形態5において、PLC5,5−4は、制御機器2XのデータDX及び制御機器3Yの制御信号DYを再現したが、PLC5,5−4内部で使用するデータも取得せずに再現しても良い。即ち、PLC5,5−4は、内部で使用するデータも再現することができる。なお、PLC5,5−4内部で使用するデータは、命令が実行された値を格納するカウンタ、演算用の変数、及び内部のみで使用する1ビットのデータである。
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。