(57)【要約】      （修正有）【課題】  プロテクトがかけられたプログラムを含むユーザプログラムにおける非プロテクト部分のプログラムに対する修正を行うとともに、修正後のプログラムの検証を行うことができるプログラマブルコントローラシステムを提供する。【解決手段】  プログラム開発支援装置１０は、通信回線１を介してＰＬＣ２０にアクセスし、所定プログラムの読み出し要求を行ない、それを受けてＰＬＣはそのプログラムとそれに関連するプロテクト情報を返信する。プログラム開発支援装置は、記憶部に格納されたユーザプログラムを表示するに際し、プロテクト情報を参照し、プロテクトがされたプログラム部分は非表示にするとともに、プログラムチェック機能とメモリ使用状況の表示機能は、プロテクトの有無にかかわらず、記憶部に格納されたユーザプログラム全体を対象として実行する。これにより、コイル二重使用などを確実に検出することができる。【選択図】        図４
2005038261.tif 000002
【特許請求の範囲】
【請求項１】
プロテクトがかけられたプログラムを含むユーザプログラムを実行するプログラマブルコントローラと、前記ユーザプログラムに対し追加・修正等のメンテナンスを行なうプログラム開発支援装置からなるプログラマブルコントローラシステムにおいて、
前記プログラマブルコントローラは、前記ユーザプログラム中のプロテクトされた部分を特定するプロテクト情報を記憶するプロテクト情報記憶手段を備え、
前記プログラム開発支援装置は、
前記プログラマブルコントローラから読み出した前記ユーザプログラムと、前記プロテクト情報を記憶する記憶手段と、
前記記憶手段に格納されたユーザプログラムを表示するに際し、前記プロテクト情報を参照し、プロテクトがされたプログラム部分は非表示にする機能を有し、
所定のプログラムチェック機能とメモリ使用状況の表示機能の少なくとも一方は、プロテクトの有無にかかわらず、前記記憶手段に格納された前記ユーザプログラムを対象として実行するようにしたことを特徴とするプログラマブルコントローラシステム。
【請求項２】
前記プログラムチェック機能は、コイル二重使用のチェック，ＴＩＭ命令／ＣＮＴ命令におけるＴＩＭ番号／ＣＮＴ番号の二重使用のチェック，呼び出し命令中のサブルーチン番号と呼び出されるサブルーチンの整合性のチェックの少なくとも１つを含むものであることを特徴とする請求項１に記載のプログラマブルコントローラシステム。
【請求項３】
プロテクトがかけられたプログラムを含むプログラマブルコントローラ用のユーザプログラムを開発するためのプログラム開発支援装置であって、
前記ユーザプログラムと、前記プロテクト情報を記憶する記憶手段と、
前記記憶手段に格納されたユーザプログラムを表示するに際し、前記プロテクト情報を参照し、プロテクトがされたプログラム部分は非表示にする機能を備え、
所定のプログラムチェック機能とメモリ使用状況の表示機能の少なくとも一方は、プロテクトの有無にかかわらず、前記記憶手段に格納された前記ユーザプログラムを対象として実行するようにしたことを特徴とするプログラム開発支援装置。
【請求項４】
前記プログラムチェック機能は、コイル二重使用のチェック，ＴＩＭ命令／ＣＮＴ命令におけるＴＩＭ番号／ＣＮＴ番号の二重使用のチェック，呼び出し命令中のサブルーチン番号と呼び出されるサブルーチンの整合性のチェックの少なくとも１つを含むものであることを特徴とする請求項３に記載のプログラム開発支援装置。
【請求項５】
前記プログラム並びに前記プロテクト情報は、プログラマブルコントローラから読み出したものであることを特徴とする請求項３または４に記載のプログラム開発支援装置。
【請求項６】
前記プロテクト情報並びに前記プロテクト情報を、別のプログラム開発支援装置に提供するためのファイルデータとして保存・出力する機能を備えたことを特徴とする請求項３から５のいずれか１項に記載のプログラム開発支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、少なくとも一部にプロテクトが設定されたプログラムを含むユーザプログラムに対して所定の処理を行なうプログラマブルコントローラシステムおよびプログラム開発支援装置に関するものである。
【背景技術】
【０００２】
生産工場（製造現場）に設置されるＦＡ（ファクトリーオートメーション）システムの制御をつかさどるＰＬＣ（プログラマブルロジックコントローラ）は、入力ユニットで入力した信号をＣＰＵユニットのＩ／Ｏメモリに取り込み（ＩＮリフレッシュ）、予め登録されたラダー言語で組まれたユーザプログラム（ユーザプログラム）に基づき論理演算をし（演算実行）、その演算実行結果をＩ／Ｏメモリに書き込んで出力ユニットに送り出し（ＯＵＴリフレッシュ）、その後、いわゆる周辺サービス処理を行うことをサイクリックに繰り返し処理するようになる。
【０００３】
そして、係るユーザプログラムは、ＰＬＣに接続されたプログラム開発支援装置を介してダウンロードされ、ＰＬＣ（ＣＰＵユニット）のユーザメモリに格納される。また、ＰＬＣに格納されているユーザプログラムを修正等する場合には、プログラム開発支援装置をＰＬＣに接続するとともに、ＰＬＣに格納されているユーザプログラムをアップロードし、必要な修正をした後、修正後の新ユーザプログラムをＰＬＣに再度ダウンロードすることが行われる。
【０００４】
ところで、上記したユーザプログラムの作成，ダウンロードの際に、ユーザはユーザプログラムのノウハウが流出することを防止するため、ユーザプログラムの全部或いは一部に対して読み出しプロテクトを掛けることができるようになっている。このようにすると、読み出しプロテクトをかけたプログラムをプログラム開発支援装置にて読み出すことができなくなる。
【０００５】
一方、上記のように一旦プロテクトをかけたユーザプログラムをＰＬＣにダウンロードすると、その後当該ＰＬＣにプログラム開発支援装置を接続し、ユーザプログラムの読み出し要求を発行しても、プロテクトされたプログラムはＰＬＣから返送されることがないので、ノウハウ保護に適しているものの、プロテクトしたプログラムの修正を行うことができない。
【０００６】
そこで、プロテクトをかけたユーザプログラムの開発者のためのプログラム開発支援装置として、たとえば特許文献１に示すように、プログラム命令中の任意の部分におかれた保護命令と保護終了命令により保護範囲を指定し、プログラムの意図された部分のみの変更を禁止するとともに、正しいパスワードの入力により制限を解除し、当該部分のプログラムに対する編集を行えるようにしたものもある。このようにすると、プログラム中の任意の部分のみの編集を制限し、メーカのトレードシークレットと保護と、実際の運用にあたってのユーザ側でのプログラムの調整とを両立することができる。
【特許文献１】特開平１０−１２４３０８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記した従来のプログラム開発支援装置では、以下に示す問題があった。すなわち、例えばプログラムの一部にプロテクトをかけた場合、プロテクトをかけていないプログラム部分については、本来追加・修正することが許可されている。そして、プロテクトされていないプログラムは、プログラム開発支援装置を用いてＰＬＣが読み出すことはできる。しかし、そのようにプロテクトがかかっていないプログラムを読み出したとしても、プロテクトされた部分を読み出すことができないので、コイル二重使用のチェックや、メモリアドレスの重複使用のチェック等を行うことができない。そのため、プロテクトがかかっていないプログラムに対して修正などしても、それが正常に動作するかについて事前に検証することができないという問題を有する。また、このことは、後者の特許文献１においても、パスワードを知らない一般のユーザにとっては、同様の問題を生じる。
【０００８】
また、同様の理由から、ＰＬＣからプロテクトされたユーザプログラムを読み出すのではなく、一部に読み出しプロテクトをかけたユーザプログラムを、外部ベンダーなどに対してプログラム開発支援装置用のファイルデータとして提供し、提供された側で、プログラムの追加やプロテクトされていないプログラム部分の変更をした後にＰＬＣに転送することができない。
【０００９】
この発明は、少なくとも一部にプロテクトがかけられたプログラムに対し、プログラムを追加したり、プロテクトされていない部分のプログラムに対する修正を行うことができ、しかも、ＰＬＣで実際に動作させる前に、正常に動作するか否かの検証を行うことができるプログラマブルコントローラシステムおよびプログラム開発支援装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明に係るプログラマブルコントローラシステムは、プロテクトがかけられたプログラムを含むユーザプログラムを実行するプログラマブルコントローラと、前記ユーザプログラムに対し追加・修正等のメンテナンスを行なうプログラム開発支援装置からなるプログラマブルコントローラシステムにおいて、前記プログラマブルコントローラは、前記ユーザプログラム中のプロテクトされた部分を特定するプロテクト情報を記憶するプロテクト情報記憶手段を備えた。そして、前記プログラム開発支援装置は、前記プログラマブルコントローラから読み出した前記ユーザプログラムと、前記プロテクト情報を記憶する記憶手段と、前記記憶手段に格納されたユーザプログラムを表示するに際し、前記プロテクト情報を参照し、プロテクトがされたプログラム部分は非表示にする機能を有し、さらに、所定のプログラムチェック機能とメモリ使用状況の表示機能の少なくとも一方は、プロテクトの有無にかかわらず、前記記憶手段に格納された前記ユーザプログラムを対象として実行するようにした。
【００１１】
そして、前記プログラムチェック機能は、各種のものがあるが、例えば、コイル二重使用のチェック，ＴＩＭ命令／ＣＮＴ命令におけるＴＩＭ番号／ＣＮＴ番号の二重使用のチェック，呼び出し命令中のサブルーチン番号と呼び出されるサブルーチンの整合性のチェックの少なくとも１つを含むようにするとよい。
【００１２】
一方、本発明に係るプログラム開発支援装置は、プロテクトがかけられたプログラムを含むプログラマブルコントローラ用のユーザプログラムを開発するためのプログラム開発支援装置であって、前記ユーザプログラムと、前記プロテクト情報を記憶する記憶手段と、前記記憶手段に格納されたユーザプログラムを表示するに際し、前記プロテクト情報を参照し、プロテクトがされたプログラム部分は非表示にする機能を備え、所定のプログラムチェック機能とメモリ使用状況の表示機能の少なくとも一方は、プロテクトの有無にかかわらず、前記記憶手段に格納された前記ユーザプログラムを対象として実行するように構成した。
【００１３】
そして、前記プログラムチェック機能としては、各種のものがあるが、例えば、コイル二重使用のチェック，ＴＩＭ命令／ＣＮＴ命令におけるＴＩＭ番号／ＣＮＴ番号の二重使用のチェック，呼び出し命令中のサブルーチン番号と呼び出されるサブルーチンの整合性のチェックの少なくとも１つを含むようにするとよい。
【００１４】
そして、前記プログラム並びに前記プロテクト情報は、プログラマブルコントローラから読み出したものでもよいし、他のプログラム開発支援装置等で生成されたファイルデータを取得し、そのファイルデータに基づくものでも良い。
【００１５】
さらにまた、プログラム開発支援装置は、前記プロテクト情報並びに前記プロテクト情報を、別のプログラム開発支援装置に提供するためのファイルデータとして保存・出力する機能を備えるとよい。
【００１６】
この発明によれば、プロテクトが設定されているか否かにかかわらず、要求されたプログラムをプログラム開発支援装置に提供することができる。そして、そのプログラムと共にプロテクト情報も合わせてプログラム開発支援装置に提供するようにしたため、そのプログラム開発支援装置でプログラムを表示する場合には、プロテクト情報を参照し、プロテクトが設定されているプログラム部分は非表示にする。これにより、ノウハウの流出等を防止できる。
【００１７】
そして、プロテクトが設定されていないプログラム部分に対して追加・編集などのメンテナンスを実行後、そのプログラムに対してプログラムチェック等を行なった場合、そのチェック対象についてはプロテクトの如何に関わらず記憶手段に格納されたユーザプログラムとすることにより、コイル二重使用などのチェックを確実に行える。
【００１８】
なお、本発明におけるメモリ使用状況の表示機能としては、プログラムの命令のオペランドとして使用可能なＰＬＣのメモリアドレスがユーザプログラム内で使用されているか未使用かがわかるものであれば良い。
【発明の効果】
【００１９】
本発明では、プロテクトがかけられた部分のプログラムも、プロテクト情報とともにプログラム開発支援装置に提供するようにしたため、プログラム開発支援装置では、プロテクトがかかったプログラム部分については非表示にすることでセキュリティの向上を図り、さらに、プロテクトがかかったプログラムをプログラムチェック等の対象にすることにより、少なくとも一部にプロテクトがかけられたプログラムに対し、プログラムを追加したり、プロテクトされていない部分のプログラムに対する追加，修正を行うことができ、しかも、ＰＬＣで実際に動作させる前に、正常に動作するか否かの検証を行うことができる。
【発明を実施するための最良の形態】
【００２０】
図１は、本発明の好適な一実施の形態を実現するシステム全体を示している。図１に示すように、専用装置或いはパソコンからなるプログラム開発支援装置１０とＰＬＣ（ＣＰＵユニット）２０が、所定の通信回線１を介して接続されている。この通信回線１は、例えば、ＲＳ２３２Ｃなどのシリアル回線を用いて直接ケーブル接続することにより実現される。もちろん、このように直接接続するものに限ることはなく、他の通信回線を用いネットワーク経由でＰＬＣ２０とプログラム開発支援装置１０とを接続する構成を採っても良い。
【００２１】
ＰＬＣ２０は、複数のユニットから構成される。すなわち、電源供給源の電源ユニット２１，ＰＬＣ全体の制御を統率するＣＰＵユニット２２，ＦＡの生産装置や設備装置の適所に取り付けたスイッチやセンサの信号を入力する入力ユニット２３，アクチュエータなどに制御出力を出す出力ユニット２４，通信ネットワークに接続するための通信ユニット２５などの各種のユニットを適宜組み合わせて構成される。そして、本システムにおいてプログラム開発支援装置１０からダウンロードされるユーザプログラムは、ＣＰＵユニット２２に記憶保持され、そこにおいて実行される。そして、通信回線３０を通信ユニット２５に接続され、プログラム開発支援装置１０とＣＰＵユニット２２は、通信ユニット２５を介して通信したり、ＣＰＵユニット２１にシリアル回線のインタフェースを内蔵させることによりプログラム開発支援装置１０を直接ＣＰＵユニット２２に連結し、ユーザプログラムのダウンロード等を行うようにしたりできる。
【００２２】
プログラム開発支援装置１０は、パソコンから構成され、図２に示すように、ハードウエア構成としてキーボード，ポインティングデバイス等の入力装置１１と、ディスプレイ等の表示装置１２と、ＣＰＵ１３と、記憶部１４を備えている。更に、接続されたＰＬＣ２０（ＣＰＵユニット２２）に実装されるユーザプログラムも記憶部１４に格納される。
【００２３】
一方、ＰＬＣ２０（ＣＰＵユニット２２）の内部構造は、図３に示すように構成されている。すなわち、システムプログラムは、システムＲＯＭ２２ａに格納されており、そのシステムプロクラムは、ＭＰＵ２２ｂに呼び出され、そのＭＰＵ２２ｂにおいて、ワークメモリとしてのシステムＲＡＭ２２ｃを適宜使用しながら、プログラムに従った所定の処理を実行する。また、運転時において、ユーザデータの１つであるユーザプログラムは、ユーザメモリ２２ｄに格納されている。さらに、Ｉ／Ｏデータやパラメータは、ＩＯメモリ２２ｅに格納されている。
【００２４】
そして、本発明との関係で言うと、ユーザプログラムの一部又は全部に対してプロテクトをかけることができるようになっており、プロテクトをかけた部分を特定するプロテクト情報と、そのプロテクトを解除するパスワード情報がＩＯメモリ２２ｅ内に格納されている。なお、本実施の形態では、ユーザプログラムは、機能ごとに分割して形成した複数の部分プロクラム（タスクプログラム）から構成され、上記のプロテクトは、タスクプログラム単位でかけることができるようにしている。よって、プロテクト対象のプログラムの特定は、タスク番号などで行なう。もちろんタスク単位ではなく、ある一連のプログラムの内の一部をプロテクトするようにしても良い。その場合には、例えばプログラムのステップ番号などで特定することになる。
【００２５】
ここで本発明では、プログラム開発支援装置１０のＣＰＵ１３と、ＰＬＣ２０のＣＰＵユニット２２のＭＰＵ２２ｂ間で、以下に示すデータの送受を行なうようにした。すなわち、図４に示すように、プログラム開発支援装置１０からＰＬＣ２０（ＣＰＵユニット２２）に向けて、「プログラムとプロテクト情報の読み出し要求」を発行する。
【００２６】
この発行要求を受けたＰＬＣ２０（ＣＰＵユニット２２）は、読み出し要求を受けたプログラムをユーザメモリ２２ｄから抽出するとともに、ＩＯメモリ２２ｅをサーチし抽出したプログラムのプロテクト情報の有無を判断し、プロテクト情報があればそれも抽出する。そして、上記要求に対するレスポンスとして、指定されたプログラムとプロテクト情報をプログラム開発支援装置に送る。
【００２７】
そして、プログラム開発支援装置１０は、取得したプログラム，プロテクト情報を記憶部１４内に格納する。このようにプロテクトがかかっているか否かにかかわらず、要求したプログラムの全てを読み出すことができる。
【００２８】
一方、プログラム開発支援装置１０が、ＣＰＵ１３の動作により実現される表示機能を用いてデバッグ，修正等のために、記憶部１４に格納したプログラムを読み出して、表示装置１２に出力表示する場合、プロテクト情報を参照し、表示しようとするプログラムにプロテクトがかかっているか否かを判断し、かかっていない場合にはそのままプログラム（回路：ラダー図）を表示装置１２の所定ウインドウに表示する。また、プロテクトがかかっている場合には、プログラム自体は表示しない。なお、「プロテクトがかかっているので表示できません」などのメッセージを出力すると、故障ではないことがわかるので好ましい。
【００２９】
そして、タスクプログラム単位で別ウインドウに表示する表示形態を取る場合には、プロテクトがかかったタスクプログラムのウインドウは、上記のメッセージ等を当該ウインドウに表示することにより対応する。また、１つのウインドウに複数のタスクプログラムを表示したり、或いは、プログラムの一部にプロテクトをかけるようにした場合には、例えば該当するプログラムを表示すべき領域に、四角いマスクを表示し、そのマスク内に上記のようなメッセージを出力するなど、各種の対応ができる。
【００３０】
また、プロテクトがかかっていないで、表示装置に表示されたプログラムについては、修正等通常のメンテナンスを行なうことができる。そして、その実行後、ＣＰＵ１３の動作により実現されるプログラムチェック機能を実行すると、表示されたプロテクトがかかっていないプログラムはもちろんのこと、記憶部１４に格納されたプロテクトがかかっているプログラムに対しても所定のチェックを行なうことになる。これにより、ユーザプログラム全体にわたってプログラムの整合性のチェックを行なうことができ、例えばコイルの二重使用などのチェックをプログラム開発支援装置１０側で事前に行なうことができる。また、プログラム編集時等において、Ｉ／Ｏメモリの使用状況の表示の対象とすることができ、プロテクトがかかっているプログラムも含めてユーザプログラム全体で未使用のメモリアドレスを知ることができるため、プロテクトがかかっているプログラムの命令のオペランドとして使用されているメモリアドレスを誤って使用することを未然に防止できる。
【００３１】
ここで、誤って使用するとは、例えば、プロテクトがかかっているプログラム内でのみ使用されるべきメモリアドレスを、プロテクトがかかっていないプログラム部分で使用することにより不用意に該当メモリドレスの内容を変更してしまうプログラムを作成してしまうことである。他の例としては、プロテクトがかかっているプログラム内でのみ使用されるべきメモリアドレスの内容を、ＰＬＣ２０が動作中に通信ユニット２５を介してプログラム開発支援装置１０等の周辺装置から不用意に変更してしまうこともある。
【００３２】
すなわち、本実施の形態では、プロテクトされたプログラムであっても、そのプロテクト情報とともにプログラム開発支援装置１０に読み出し可能としたため、表示などはプロテクト情報に基づいて適宜禁止することにより、ノウハウの流出を防止することができるばかりでなく、プログラム自体はプログラム開発支援装置１０側に存在しているので、プログラムチェックについてはユーザプログラム全体に対して行なうことができ、ＰＬＣにて実際に実行した際にエラーを生じる可能性を可及的に抑制できる。
【００３３】
さらにまた、プロテクトされているプログラム部分も含めてプログラムチェックの対象にしたことにより、上記したコイルの二重使用や、Ｉ／Ｏメモリの使用状況の表示以外にも、以下に示すサブルーチン番号のチェックや、ＴＩＭ／ＣＮＴ番号の二重使用チェックもできる。
【００３４】
すなわち、例えばライブラリとしてサブルーチン化された部分を非公開として第三者に利用させる場合、存在しないサブルーチン番号を指定した場合のエラーチェックができる。すなわち、図５に示すように、サブルーチン番号ｍ，ｎの２つのサブルーチンが用意されており、サブルーチン番号ｍのプログラムは読み出しプロテクトの対象となり、プロテクトがかかっているとする。
【００３５】
係る場合、サブルーチン番号ｍを呼び出す命令が含まれている通常のプログラムに対してプログラムチェックを行なうと、従来のサブルーチン番号ｍのサブルーチンが読み出せない方式では、サブルーチン番号ｍのプログラムが存在していないので呼び出しエラーとなるが、プロテクトがかかっていて呼び出しエラーとなったのか、プログラム中に存在しないプログラム番号を呼び出そうとして生じたエラーなのかを特定できない。これに対し、本発明では、サブルーチン番号ｍのプログラムもプログラム開発支援装置１０が保有しているので、そのサブルーチン番号ｍのプログラムもチェック対象にすることにより、上記の場合呼び出しエラーにならない。よって、全プログラム中に存在しないサブルーチン番号を呼び出すようになっている場合のみ呼び出しエラーとなる。
【００３６】
また、ＴＩＭ命令（タイマ），ＣＮＴ命令（カウンタ）を使用する場合、タイマ番号やカウンタ番号を付記するようになっている。このとき、例えば、図６に示すようにプロテクトがかかっていないプログラム部分にタイマ番号ｎのＴＩＭ命令やカウンタ番号ｘのＣＮＴ命令が存在している場合に、プロテクト対象となっていてプロテクトがかかっているプログラム部分（この例では、タイマ番号ｍのＴＩＭ命令，カウンタ番号ｙのＣＮＴ命令が存在している）を表示してみることはできないが、プログラムチェックにより同じ番号が重複していないかのチェックをすることができる。図示の例では、重複使用されていないので、エラーと成らないが、仮にプロテクト対象部分ＴＩＭ命令のタイマ番号がｎになっているとすると、重複使用のエラーメッセージが出力される。これにより、変更可能な通常のプログラム部分の番号を変更するといった対策がとれる。
【００３７】
また、上記したようにプロテクト情報とともにプログラムを提供するようにしたため、例えば、ＰＬＣから当該プログラム，プロテクト情報を読み出すのではなく、プログラム開発支援装置１０用のファイルとして、プロテクト情報とプログラムを対にしたデータを提供することができる。これにより、ノウハウを保護しつつ外部ベンダー等の第三者を利用してプロテクトがかっていない部分のプログラムの追加・修正を依頼することができる。
【００３８】
なお、上記した各例において、プログラム開発支援装置１０が正しいパスワードを入力することにより、ＰＬＣ２０側かプロテクトを解除した状態でプログラムの提供を受けることができる。これにより、それまでプロテクトが掛けられていた部分に対する編集処理も行えるようになる。
【図面の簡単な説明】
【００３９】
【図１】本発明のシステムの一実施の形態を示す図である。
【図２】プログラム開発支援装置の内部構成を示す図である。
【図３】ＰＬＣの内部構造を示す図である。
【図４】本実施の形態の要部を説明する図である。
【図５】本実施の形態の作用・効果を説明する図である。
【図６】本実施の形態の作用・効果を説明する図である。
【符号の説明】
【００４０】
１  通信回線
１０  プログラム開発支援装置
１１  入力装置
１２  表示装置
１３  ＣＰＵ
１４  記憶部
２０  ＰＬＣ
２１  電源ユニット
２２  ＣＰＵユニット
２２ａ  システムＲＯＭ
２２ｂ  ＭＰＵ
２２ｃ  システムＲＡＭ
２２ｄ  ユーザメモリ
２２ｅ  ＩＯメモリ
２３  入力ユニット
２４  出力ユニット
２５  通信ユニット
【図１】
2005038261.tif 000003
【図２】
2005038261.tif 000004
【図３】
2005038261.tif 000005
【図４】
2005038261.tif 000006
【図５】
2005038261.tif 000007
【図６】
2005038261.tif 000008