(57)【特許請求の範囲】
【請求項１】
プログラマブルロジックコントローラと、
前記プログラマブルロジックコントローラとネットワークを介して接続され、前記プログラマブルロジックコントローラの状態を取得する外部機器と、
前記外部機器が前記プログラマブルロジックコントローラの状態を取得できるように物理アドレスと論理名との関係を設定するエンジニアリングツールとを備える制御システムであって、
前記エンジニアリングツールは、
前記物理アドレスと前記論理名とに基づき、前記プログラマブルロジックコントローラに書き込む前記論理名を割り付けたテーブルである連想配列情報、及び前記外部機器に書き込む前記論理名と前記連想配列情報の線形リストにおける順番とのセット情報を生成する連想配列生成部を備え、
前記外部機器は、
所定の基準に基づき前記論理名を数値へ変換する連想配列の値計算部と、
前記連想配列の値計算部で数値に変換した前記論理名の前記線形リストにおける順番を、前記セット情報から取得する線形リスト順番取得部と、
前記連想配列の値計算部で変換した数値及び前記線形リスト順番取得部で取得した前記線形リストにおける順番を含む要求メッセージを生成する要求メッセージ生成部とを備え、
前記プログラマブルロジックコントローラは、
前記外部機器からの前記要求メッセージを解析し、前記要求メッセージに含まれる数値及び前記線形リストにおける順番を取り出す要求メッセージ解析部と、
前記要求メッセージ解析部で取り出した数値及び前記線形リストにおける順番に基づき、前記連想配列情報のポインタを移動させる連想配列ポインタ移動部と、
前記連想配列ポインタ移動部で移動させた前記ポインタに対応する前記物理アドレスを取得する物理アドレス値取得部と、
前記物理アドレス値取得部で取得した前記物理アドレスを含む応答メッセージを生成する応答メッセージ生成部とを備えることを特徴とする制御システム。
【請求項２】
請求項１に記載の制御システムであって、
前記プログラマブルロジックコントローラは、
前記外部機器に書き込まれた前記セット情報の識別情報と、保持している前記連想配列情報の識別情報との一致を判定するテーブルＩＤ一致判定部と、
両者の前記識別情報が一致しなかった場合に、前記論理名の文字列比較により前記連想配列情報の線形リストにおける順番を再取得する線形リスト順番再取得部とをさらに備えることを特徴とする制御システム。
【請求項３】
請求項２に記載の制御システムであって、
前記論理名毎にバージョン情報を付し、
前記プログラマブルロジックコントローラは、
前記外部機器からの前記要求メッセージに含まれる前記論理名のバージョン情報と、保持している前記連想配列情報のバージョン情報との一致を判定する論理名バージョン一致判定部をさらに備えることを特徴とする制御システム。
【請求項４】
請求項１に記載の制御システムであって、
前記エンジニアリングツールは、前記論理名が同じ場合、前記連想配列情報の線形リストにおける順番が変更されないように管理することを特徴とする制御システム。
【請求項５】
前記プログラマブルロジックコントローラとネットワークを介して接続され、前記プログラマブルロジックコントローラの状態を取得する外部機器であって、
前記外部機器が前記プログラマブルロジックコントローラの状態を取得できるように物理アドレスと論理名との関係を設定するために、前記物理アドレスと前記論理名とに基づき、前記プログラマブルロジックコントローラに書き込む前記論理名を割り付けたテーブルである連想配列情報、及び前記外部機器に書き込む前記論理名と前記連想配列情報の線形リストにおける順番とのセット情報を記憶する記憶手段と、
所定の基準に基づき前記論理名を数値へ変換する連想配列の値計算部と、
前記連想配列の値計算部で数値に変換した前記論理名の前記線形リストにおける順番を、前記セット情報から取得する線形リスト順番取得部と、
前記連想配列の値計算部で変換した数値及び前記線形リスト順番取得部で取得した前記線形リストにおける順番を含む要求メッセージを生成する要求メッセージ生成部と、
前記プログラマブルロジックコントローラが、前記外部機器からの要求メッセージを解析し、前記要求メッセージに含まれる数値及び前記線形リストにおける順番を取り出し、当該数値及び前記線形リストにおける順番に基づき、前記連想配列情報のポインタを移動させ生成した前記ポインタに対応する前記物理アドレスを含む応答メッセージを受信可能な通信手段とを備える外部機器。
【請求項６】
外部機器とネットワークを介して接続されたプログラマブルロジックコントローラであって、
前記外部機器が前記プログラマブルロジックコントローラの状態を取得できるように物理アドレスと論理名との関係を設定するために、前記物理アドレスと前記論理名とに基づき、前記プログラマブルロジックコントローラに書き込む前記論理名を割り付けたテーブルである連想配列情報、及び前記外部機器に書き込む前記論理名と前記連想配列情報の線形リストにおける順番とのセット情報を記憶する記憶手段と、
前記外部機器が、所定の基準に基づき前記論理名を数値へ変換し、当該数値に変換した前記論理名の前記線形リストにおける順番を前記セット情報から取得して生成した、前記数値及び取得した前記線形リストにおける順番を含む要求メッセージを受信可能な通信手段と、
前記外部機器からの前記要求メッセージを解析し、前記要求メッセージに含まれる数値及び前記線形リストにおける順番を取り出す要求メッセージ解析部と、
前記要求メッセージ解析部で取り出した数値及び前記線形リストにおける順番に基づき、前記連想配列情報のポインタを移動させる連想配列ポインタ移動部と、
前記連想配列ポインタ移動部で移動させた前記ポインタに対応する前記物理アドレスを取得する物理アドレス値取得部と、
前記物理アドレス値取得部で取得した前記物理アドレスを含む応答メッセージを生成する応答メッセージ生成部とを備えるプログラマブルロジックコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御システム、外部機器、プログラマブルロジックコントローラに関するものである。
【背景技術】
【０００２】
近年、さまざまな産業で使用されている制御システムには、プログラマブルロジックコントローラ（以下、ＰＬＣともいう）が用いられる。この制御システムにおいて、ＰＬＣを動作させる、あるいはＰＬＣの状態をモニタするためには、従来、ＰＬＣの物理アドレスなどの内部状態を詳細に知る必要があった。
【０００３】
具体的に、ＰＬＣの物理アドレスを用いて、制御システムにおけるＰＬＣを動作等させる構成が特許文献１に開示されている。特許文献１では、物理アドレスに対して人間が理解しやすい論理名をつけて、当該論理名を用いてＰＬＣを動作させる等の処理を行っている。
【０００４】
【特許文献１】特許第３２２２８２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、特許文献１の手法では、第１に、ＰＬＣを参照する外部機器からＰＬＣへの要求メッセージをネットワークを介して送信する際に、当該要求メッセージに文字列である論理名が含まれる。そのため、当該要求メッセージを通信する際、データのサイズが大きくなる問題があった。また、データのサイズが大きいということは、通信が完了するまでに時間が掛かる問題があった。
【０００６】
さらに、特許文献１の手法では、第２に、ＰＬＣにおいて、論理名に対応する物理アドレスを検索する必要が生じる。この論理名に対応する物理アドレスを検索する方法として、文字列比較を行うことになるが、当該比較処理は時間が掛かる問題があった。
【０００７】
そこで、本発明は、上記の課題を解決するためになされたもので、通信するデータのサイズを小さくし、且つ検索の処理を高速にできる制御システムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る解決手段は、プログラマブルロジックコントローラと、プログラマブルロジックコントローラとネットワークを介して接続され、プログラマブルロジックコントローラの状態を取得する外部機器と、外部機器がプログラマブルロジックコントローラの状態を取得できるように物理アドレスと論理名との関係を設定するエンジニアリングツールとを備える制御システムであって、エンジニアリングツールは、物理アドレスと論理名とに基づき、プログラマブルロジックコントローラに書き込む論理名を割り付けたテーブルである連想配列情報、及び外部機器に書き込む論理名と連想配列情報の線形リストにおける順番とのセット情報を生成する連想配列生成部を備え、外部機器は、所定の基準に基づき論理名を数値へ変換する連想配列の値計算部と、連想配列の値計算部で数値に変換した論理名の線形リストにおける順番を、セット情報から取得する線形リスト順番取得部と、連想配列の値計算部で変換した数値及び線形リスト順番取得部で取得した線形リストにおける順番を含む要求メッセージを生成する要求メッセージ生成部とを備え、プログラマブルロジックコントローラは、外部機器からの要求メッセージを解析し、要求メッセージに含まれる数値及び線形リストにおける順番を取り出す要求メッセージ解析部と、要求メッセージ解析部で取り出した数値及び線形リストにおける順番に基づき、連想配列情報のポインタを移動させる連想配列ポインタ移動部と、連想配列ポインタ移動部で移動させたポインタに対応する物理アドレスを取得する物理アドレス値取得部と、物理アドレス値取得部で取得した物理アドレスを含む応答メッセージを生成する応答メッセージ生成部とを備える。
【発明の効果】
【０００９】
本発明に記載の制御システムは、エンジニアリングツールが、連想配列生成部で物理アドレスと論理名とに基づき、プログラマブルロジックコントローラに書き込む論理名を割り付けたテーブルである連想配列情報、及び外部機器に書き込む論理名と連想配列情報の線形リストにおける順番とのセット情報を生成し、外部機器が、連想配列の値計算部で所定の基準に基づき論理名を数値へ変換し、線形リスト順番取得部で数値に変換した論理名の線形リストにおける順番を、セット情報から取得し、プログラマブルロジックコントローラが、要求メッセージ解析部で取り出した数値及び線形リストにおける順番に基づき、連想配列ポインタ移動部で連想配列情報のポインタを移動させ、物理アドレス値取得部でポインタに対応する物理アドレスを取得するので、通信するデータのサイズを小さくし、且つ検索の処理を高速にできる。
【発明を実施するための最良の形態】
【００１０】
（実施の形態１）
図１に、本実施の形態に係る制御システムのブロック図を示す。図１に示す制御システムでは、エンジニアリングツール１０と、プログラマブルロジックコントローラ（ＰＬＣ）２０と、ＰＬＣを参照する外部機器３０とを備える。
【００１１】
エンジニアリングツール１０は、ＰＬＣ２０や外部機器３０の通信条件等を設定するツールであり、設定時にＰＬＣ２０や外部機器３０に直接又はネットワーク配線を介して接続する。なお、図１に示すブロック図では、ネットワーク配線を介してエンジニアリングツール１０を接続している場合を図示しているが、設定処理終了後は、エンジニアリングツール１０を当該ネットワーク配線から切り離しても良い。
【００１２】
エンジニアリングツール１０は、連想配列生成部１９を備えている。当該連想配列生成部１９は、論理名と物理アドレスとの対応情報１４における論理名を、連想配列の値計算部１３で数値に変換する。連想配列生成部１９は、変換された数値と対応情報１４とに基づき、論理名をツリー状に割り付けたテーブルである連想配列情報（論理名割付テーブルの連想配列情報）１７、及び論理名と連想配列情報の線形リストにおける順番とのセット情報（論理名と線形リスト順番のセット情報）１８を生成する。生成した連想配列情報１７はＰＬＣ２０に、生成したセット情報１８は外部機器３０にそれぞれ書き込まれる。
【００１３】
ＰＬＣ２０は、通信部２０ｂと、制御部２０ａとを備える。通信部２０ｂは、ネットワーク配線に接続され、外部機器３０やエンジニアリングツール１０と通信する機能を有している。さらに通信部２０ｂには、所定の通信プロトコルによりデータの送受信を行う通信コントローラ２０ｂ２と、送受信するデータを記憶したり、プロトコル変換に利用したり、送受信先を特定する際の情報を記憶したりするＲＡＭ２０ｂ１とを有している。
【００１４】
制御部２０ａは、接続された機器を制御する制御プログラムや、ネットワークを介して接続された別の制御システムと協調動作する際の制御プログラムなどが格納されたＲＯＭ２０ａ１を備える。さらに、制御部２０ａは、ＲＯＭ２０ａ１に格納されたプログラムを実行するＭＰＵ２０ａ２、及びＭＰＵ２０ａ２にて各種処理を実行する際に必要となるデータを記憶するＲＡＭ２０ａ３を備えている。
【００１５】
さらに、ＭＰＵ２０ａ２は、要求メッセージ解析部２１と、テーブルＩＤ一致判定部２２と、連想配列ポインタ移動部２３と、物理アドレス値取得部２４と、線形リスト順番取得部２５と、応答メッセージ生成部２６とを備えている。ＲＡＭ２０ａ３には、エンジニアリングツール１０により書き込まれた論理名割付テーブルの連想配列情報１７が記憶されている。
【００１６】
図１に示す要求メッセージ解析部２１は、外部機器３０からの要求メッセージを解析する機能部である。テーブルＩＤ一致判定部２２は、要求メッセージに含まれるテーブルＩＤと、論理名割付テーブルの連想配列情報１７が持つテーブルＩＤが一致するかどうかを判定する機能部である。連想配列ポインタ移動部２３は、要求メッセージに含まれる情報から、論理名割付テーブルの連想配列情報１７のアドレスをポインタで移動する機能部である。物理アドレス値取得部２４は、連想配列ポインタ移動部２３で移動したポインタの位置にある物理アドレスの値を取得する機能部である。線形リスト順番再取得部２５は、要求メッセージに含まれる論理名が、論理名割付テーブルの連想配列情報１７における線形リストの何番目と一致するかを判定する機能部である。応答メッセージ生成部２６は、テーブルＩＤ一致判定部２２、物理アドレス値取得部２４、線形リスト順番取得部２５から渡された情報から応答メッセージを生成する機能部である。
【００１７】
外部機器３０は、ＰＬＣ２０を動作させたり、ＰＬＣ２０の状態をモニタしたりする機器であり、通信部３０ｂと制御部３０ａとを備えている。
【００１８】
通信部３０ｂは、通信部２０ｂと同様、通信コントローラ３０ｂ２と、ＲＡＭ３０ｂ１とを備えている。制御部３０ａは、制御部２０ａと同様、ＲＯＭ３０ａ１と、ＭＰＵ３０ａ２と、ＲＡＭ３０ａ３とを備えている。
【００１９】
ＭＰＵ３０ａ２は、応答メッセージ解析部３１と、連想配列の値計算部３３と、線形リスト順番取得部３５と、要求メッセージ生成部３６とを備えている。ＲＡＭ３０ａ３には、エンジニアリングツール１０により書き込まれた論理名と線形リスト順番のセット情報１８が記憶されている。
【００２０】
図１に示す応答メッセージ解析部３１は、ＰＬＣ２０からの応答メッセージを解析する機能部である。連想配列の値計算部３３は、論理名を数値へ変換する機能部である。線形リスト順番取得部３５は、論理名と線形リスト順番のセット情報１８から、論理名に対応する線形リスト順番を取得する機能部である。要求メッセージ生成部３６は、連想配列の値計算部３３、線形リスト順番取得部３５から渡された情報から要求メッセージを生成する機能部である。
【００２１】
なお、外部機器３０は、例えば表示器でも良いし、ＰＬＣ２０とは別のＰＬＣでも良いし、エンジニアリングツール１０でも良い。
【００２２】
次に、本実施の形態に係る制御システムの動作について説明する。まず、エンジニアリングツール１０によるＰＬＣ２０及び外部機器３０の初期設定について説明する。
【００２３】
エンジニアリングツールは、図２に示す論理名と物理アドレスとの対応情報１４を構成するが、検索の速度を早くするため、当該対応情報１４を論理名割付テーブルの連想配列情報１７及び論理名と線形リスト順番のセット情報１８に変換する。論理名割付テーブルの連想配列情報１７及び論理名と線形リスト順番のセット情報１８は、エンジニアリングツール１０の連想配列生成部１９によって生成される。
【００２４】
具体的に、論理名割付テーブルの連想配列情報１７及び論理名と線形リスト順番のセット情報１８の生成を説明する。まず、連想配列生成部１９に設けられた連想配列の値計算部１３が、図２に示す論理名を所定の基準に基づき数値に変換する。任意の論理名を数値化する基準は、同じ論理名から必ず同じ数値が計算される基準であれば良い。例えば、各論理名の一文字目の文字コードでも良いし、論理名の各文字の文字コードの足し合わせでも良いし、それより複雑な計算を行っても良い。本実施の形態では、論理名の最後の文字をＵＴＦ−１６でエンコードしたときの文字コードを５で割った余りを、論理名を変換した数値とする。
【００２５】
図２に示す論理名を具体的に数値に変換すると、論理名「異常信号」の最後の文字は「号」で、「号」をＵＴＦ−１６でエンコードしたときの文字コードは０ｘ５３ｆ７＝２１４９５であるので、２１４９５を５で割った余りは０となる。論理名「停止信号」も同様に０となる。
【００２６】
論理名「ランプＡ」の最後の文字は「Ａ」で、「Ａ」をＵＴＦ−１６でエンコードしたときの文字コードは０ｘ４１＝６５であるので、６５を５で割った余りは０となる。論理名「ランプＢ」の最後の文字は「Ｂ」で、「Ｂ」をＵＴＦ−１６でエンコードしたときの文字コードは０ｘ４２＝６６であるので、６６を５で割った余りは１となる。論理名「ランプＣ」の最後の文字は「Ｃ」で、「Ｃ」をＵＴＦ−１６でエンコードしたときの文字コードは０ｘ４３＝６７となるので、６７を５で割った余りは２となる。
【００２７】
論理名「生産台数」の最後の文字は「数」で、「数」をＵＴＦ−１６でエンコードしたときの文字コードは０ｘ６５７０＝２５９６８となるので、２５９６８を５で割った余りは３となる。論理名「出荷台数」も同様に３となる。
【００２８】
論理名「カウンタ値」の最後の文字は「値」で、「値」をＵＴＦ−１６でエンコードしたときの文字コードは０ｘ５０２４＝２０５１６となるので、２０５１６を５で割った余りは１となる。論理名「現在時刻」の最後の文字は「刻」で、「刻」をＵＴＦ−１６でエンコードしたときの文字コードは０ｘ５２３Ｂ＝２１０５１となるので、２１０５１を５で割った余りは１となる。
【００２９】
そのため、連想配列の値計算部１３は、「異常信号」は０に、「停止信号」は０に、「ランプＡ」は０に、「ランプＢ」は１に、「ランプＣ」は２に、「生産台数」は３に、「出荷台数」は３に、「カウンタ値」は１に、「現在時刻」は１にそれぞれ変換する。
【００３０】
次に、連想配列生成部１９は、連想配列の値計算部１３で変換した数値に基づき連想配列を生成する。図３に、本実施の形態に係る連想配列生成部１９が生成した連想配列（論理名割付テーブルの連想配列情報１７）を示す。図２に示す連想配列（論理名割付テーブルの連想配列情報１７）は、連想配列の値計算部１３で変換された数値に基づいて行を決め、図２に示す上からの順番に基づいて論理名を線形リストに繋いで形成されている。つまり、違う論理名であっても連想配列の値計算部１３により同じ数値となった場合は、図２に示す上からの順番（計算処理した順番）に基づき線形状となるように後ろ側（図中右側）に接続される。例えば、「ランプＢ」と「カウンタ値」と「現在時刻」を連想配列の値計算部１３で数値に変換するといずれも１になる。そのため、図３に示す連想配列では、これらの論理名は１の行に配列されることになり、且つ計算処理した順番に基づき「ランプＢ」を１番目、「カウンタ値」を２番目、「現在時刻」を３番目となるように線形にリストする。
【００３１】
また、図３に示すように、論理名割付テーブルの連想配列情報１７には、テーブルＩＤが付与されている。論理名割付テーブルの連想配列情報１７は、線形リスト中の論理名の順番がどれか１つでも変更になった場合、テーブルＩＤが更新される。
【００３２】
エンジニアリングツール１０は、図３のように作成した論理名割付テーブルの連想配列情報１７をＰＬＣ２０のＲＡＭ２０ａ３に書き込む。また、エンジニアリングツールは、論理名と、対応する論理名の線形リストにおける順番とのセット情報１８を外部機器３０のＲＡＭ３０ａ３に書き込む。図４に、外部機器３０に書き込まれた論理名と線形リスト順番のセット情報１８の例を示す。この論理名と線形リスト順番のセット情報１８にも、論理名及び線形リスト順番の他に、図３に示す論理名割付テーブルの連想配列情報１７のテーブルＩＤと同じテーブルＩＤが付与されている。なお、エンジニアリングツール１０が作成した段階では、テーブルＩＤが全て同じになっている。以上の動作が、エンジニアリングツール１０による初期設定である。
【００３３】
次に、外部機器３０が、論理名に対応するＰＬＣ２０の物理アドレスの値をモニタする方法を説明する。ここでは、論理名が「出荷台数」及び「現在時刻」の値をそれぞれモニタする例について説明する。
【００３４】
まず、外部機器３０の連想配列の値計算部３３が、取得したい論理名を数値に変換する。連想配列の値計算部３３の動作は、エンジニアリングツール１０の連想配列の値計算部１３と同じ基準に基づいて全く同じ動作をする。ここでは、「出荷台数」を数値に変換すると３、「現在時刻」を数値に変換すると１になる。連想配列の値計算部３３は、変換された数値を要求メッセージ生成部３６へ渡す。
【００３５】
また、線形リスト順番取得部３５は、論理名と線形リスト順番のセット情報１８から、テーブルＩＤと、論理名に対応する線形リストにおける順番を取得する。図４に示す例では、テーブルＩＤは０００１、「出荷台数」の線形リスト順番は２、「現在時刻」の線形リスト順番は３である。線形リスト順番取得部３５は、取得したテーブルＩＤと線形リスト順番とを要求メッセージ生成部３６へ渡す。
【００３６】
要求メッセージ生成部３６は、連想配列の値計算部３３から渡された情報と、線形リスト順番取得部３５から渡された情報とに基づいて、ＰＬＣ２０に送信する要求メッセージを生成する。要求メッセージは、論理名による物理アドレスの値取得であるというメッセージの種別と、テーブルＩＤ「０００１」、「出荷台数」の論理名を変換した数値「３」、「出荷台数」の線形リスト順番「２」、「現在時刻」の論理名が変換された数値「１」、「現在時刻」の線形リスト順番「３」を含んでいる。要求メッセージ生成部３６は、生成した要求メッセージを通信部３０ｂを介してネットワーク経由でＰＬＣ２０へ送信する。
【００３７】
次に、外部機器３０から要求メッセージを受け取るＰＬＣ２０の動作を説明する。まず、要求メッセージ解析部２１は、外部機器３０からの要求メッセージを受信する。要求メッセージの種別が論理名による物理アドレスの値取得である場合、要求メッセージに含まれるメッセージの種別以外の情報をテーブルＩＤ一致判定部２２へ渡す。
【００３８】
テーブルＩＤ一致判定部２２は、要求メッセージに含まれるテーブルＩＤと、ＲＡＭ２０ａ３に記憶されている論理名割付テーブルの連想配列情報１７が持つテーブルＩＤとを比較する。本実施の形態の例では、要求メッセージに含まれるテーブルＩＤが０００１、論理名割付テーブルの連想配列情報１７が持つテーブルＩＤが０００１であるので両者が一致する。この場合、テーブルＩＤ一致判定部２２は、要求メッセージに含まれるメッセージの種別とテーブルＩＤ以外の情報を連想配列ポインタ移動部２３へ渡す。
【００３９】
連想配列ポインタ移動部２３は、要求メッセージに含まれる、論理名を変換した数値と線形リスト順番の情報とから、論理名割付テーブルの連想配列情報１７におけるポインタを移動させる。図３に示す論理名割付テーブルの連想配列情報１７では行数や論理名の前にポインタの位置を示す空欄が模式的に図示されている。この欄を用いてポインタの移動を説明する。図５では、「出荷台数」に対応する物理アドレスを取得する方法を示している。まず、「出荷台数」が変換された数値は３であるから、連想配列ポインタ移動部２３は、論理名割付テーブルの連想配列情報１７の０行目から３行目の先頭にポインタを移動させ、図５に示すIの位置となる。次に、「出荷台数」の線形リスト順番が２であることから、連想配列ポインタ移動部２３は、論理名割付テーブルの連想配列情報１７の３行目の先頭から、右に２つポインタを移動させ、図５に示すIIの位置となる。
【００４０】
図５に示すIIの位置には、「出荷台数」の物理アドレスとしてＤ４という情報が格納されている。そして、連想配列ポインタ移動部２３で移動させたポインタに対応する物理アドレスを物理アドレス値取得部２４において取得する。これにより、本実施の形態に係る制御システムでは、文字列比較なしに「出荷台数」に対応する物理アドレスであるＤ４を取得できる。なお、「現在時刻」の物理アドレスについても同様に処理してＤ１２の物理アドレスを取得できる。
【００４１】
物理アドレス値取得部２４は、「出荷台数」に対応する物理アドレスＤ４、また「現在時刻」に対応するＤ１２の値を取得し、応答メッセージ生成部２６へ渡す。
【００４２】
応答メッセージ生成部２６は、物理アドレス値取得部２４から渡された情報から応答メッセージを生成する。応答メッセージは、論理名による物理アドレスの値取得であるというメッセージの種別と、「出荷台数」に対応する物理アドレスＤ４の値と、「現在時刻」に対応するＤ１２の値とを含む。応答メッセージ生成部２６は、生成した応答メッセージを通信部２０ｂを介してネットワーク経由で外部機器３０へ送信する。
【００４３】
外部機器３０では、送信された応答メッセージを受信し、応答メッセージ解析部３１で当該応答メッセージの解析を行う。応答メッセージ解析部３１は、応答メッセージの種別が論理名による物理アドレスの値取得であり、且つエラーコードが含まれていないと判断した場合、要求メッセージで送信した論理名に対応する物理アドレスの値が応答メッセージに含まれているとして当該物理アドレスの値を取得する。
【００４４】
次に、エンジニアリングツール１０において、論理名と物理アドレスとの対応情報１４が変更された場合の制御システムの動作について説明する。まず、論理名と物理アドレスとの対応情報１４において、論理名に対応する物理アドレスのみが変更された場合について説明する。
【００４５】
図６に示す論理名と物理アドレスとの対応情報１４は、初期設定である図２に示す論理名と物理アドレスとの対応情報１４から「現在時刻」に対応する物理アドレスがＤ１２からＤ１６に変更されている例を示している。しかし、この図６に示す論理名と物理アドレスとの対応情報１４を連想配列生成部１９で処理して論理名割付テーブルの連想配列情報１７を再生成した場合でも、「現在時刻」に対応する線形リスト順番に変更が生じないので、テーブルＩＤは変更されない。従って、論理名による物理アドレス値の取得手順は、図２に示す論理名と物理アドレスとの対応情報１４に対して行った上記の取得手順から全く変更はなく、「現在時刻」に対応する物理アドレスＤ１６を取得できる。
【００４６】
次に、論理名と物理アドレスとの対応情報１４において、新たに論理名が追加されたり、論理名を削除した場合について説明する。図７に示す論理名と物理アドレスとの対応情報１４は、初期設定である図２に示す論理名と物理アドレスとの対応情報１４から「カウンタ値」が削除され、「再開信号」が追加された例を示している。この図７に示す論理名と物理アドレスとの対応情報１４を連想配列生成部１９で処理すると、図８に示す論理名割付テーブルの連想配列情報１７が再生成される。図８に示す論理名割付テーブルの連想配列情報１７では、「現在時刻」に関しては線形リスト順番が２番目に変化しているので、テーブルＩＤを０００２に変化させている。
【００４７】
ＰＬＣ２０の論理名割付テーブルの連想配列情報１７のみテーブルＩＤを０００２に更新された場合における、論理名による物理アドレス値の取得手順を説明する。なお、論理名による物理アドレスの値取得手順は、ＰＬＣ２０の要求メッセージ解析部２１における処理までは上記と同じ取得手順である。
【００４８】
次に、テーブルＩＤ一致判定部２２は、要求メッセージに含まれるテーブルＩＤと、論理名割付テーブルの連想配列情報１７が持つテーブルＩＤとを比較する。図８に示す例では、要求メッセージに含まれるテーブルＩＤが０００１で、論理名割付テーブルの連想配列情報１７が持つテーブルＩＤが０００２となるので両者が一致しない。そのため、テーブルＩＤ一致判定部２２は、テーブルＩＤが一致しなかったという情報を直ちに応答メッセージ生成部２６へ渡す。
【００４９】
応答メッセージ生成部２６は、テーブルＩＤ一致判定部２２から渡された情報に基づき応答メッセージを生成する。応答メッセージは、論理名による物理アドレスの値取得であるというメッセージの種別と、テーブルＩＤが一致しなかったことを示すエラーコードとが含まれている。応答メッセージ生成部２６は、この応答メッセージを通信部２０ｂを介してネットワーク経由で外部機器３０へ送信する。
【００５０】
外部機器３０の応答メッセージ解析部３１は、ＰＬＣ２０からの応答メッセージを受信する。受信した応答メッセージに含まれるメッセージの種別が論理名による物理アドレスの値取得であり、且つテーブルＩＤが一致しなかったことを示すエラーコードを含む場合、テーブルＩＤが一致しなかったという情報が直ちに連想配列の値計算部３３に渡される。
【００５１】
連想配列の値計算部３３は、値を取得したい物理アドレスに対応する論理名を再び数値に変換する。ここで、過去に変換した論理名の数値を記憶しておいても良い。連想配列の値計算部３３は、論理名と論理名を変換した数値とを要求メッセージ生成部３６へ渡す。
【００５２】
要求メッセージ生成部３６は、連想配列の値計算部３３から渡された情報に基づき要求メッセージを作成する。生成する要求メッセージには、線形リスト順番の再取得であるというメッセージの種別と、論理名「出荷台数」と、「出荷台数」が変換された数値「３」と、論理名「現在時刻」と、「現在時刻」が変換された数値「１」とを含む。要求メッセージ生成部３６は、当該要求メッセージを通信部３０ｂを介してネットワーク経由でＰＬＣ２０へ送信する。
【００５３】
要求メッセージ解析部２１では、受信した外部機器３０からの要求メッセージを解析し、メッセージの種別が線形リストの再取得である場合、要求メッセージに含まれるメッセージの種別以外の情報を線形リスト順番再取得部２５へ渡す。
【００５４】
線形リスト順番再取得部２５は、値を取得したい物理アドレスに対応する論理名が最新の連想配列の線形リストにおいて何番目なのかを、論理名割付テーブルの連想配列情報１７を用いて取得する。図９に示す論理名割付テーブルの連想配列情報１７を用いて、具体的に論理名「現在時刻」の線形リスト順番を再取得する方法を説明する。まず、「現在時刻」が変換された数値は１であるから、線形リスト順番再取得部２５は、論理名割付テーブルの連想配列情報１７の０行目から１行目の先頭にポインタを移動させ、図９に示すIの位置となる。次に、要求メッセージに含まれる論理名と、同じ行の線形リストに含まれる論理名とを順番に文字列比較する。図９にIIの位置では、要求メッセージに含まれる論理名が「現在時刻」で、線形リストに含まれる論理名が「ランプＢ」であるので、線形リストの１番目は論理名が一致しないと判断される。図９に示すIIIの位置では、要求メッセージに含まれる論理名が「現在時刻」で、線形リストの含まれる論理名も「現在時刻」であるので、線形リストの２番目は論理名が一致する。すなわち、「現在時刻」の線形リスト順番が２であることが判る。線形リスト順番再取得部２５は、同様に「出荷台数」も処理する。
【００５５】
線形リスト順番再取得部２５は、論理名割付テーブルの連想配列情報１７が持つテーブルＩＤの０００２と、「出荷台数」の線形リスト順番である２と、「現在時刻」の線形リスト順番である２とを応答メッセージ生成部２６へ渡す。
【００５６】
応答メッセージ生成部２６は、線形リスト順番再取得部２５から渡された情報に基づき応答メッセージを作成する。生成した応答メッセージは、線形リストの再取得であるというメッセージの種別と、テーブルＩＤの０００２と、「出荷台数」の線形リスト順番「２」と、「現在時刻」の線形リスト順番「２」とを含む。応答メッセージ生成部２６は、当該応答メッセージを通信部２０ｂを介して外部機器３０へ送信する。
【００５７】
外部機器３０の応答メッセージ解析部３１は、受信した応答メッセージを解析する。受信した応答メッセージに含まれるメッセージの種別が線形リストの再取得である場合、応答メッセージ解析部３１は、受信した応答メッセージに含まれるメッセージの種別以外の情報を、論理名と線形リスト順番のセット情報１８へ反映させる。反映させる項目は、テーブルＩＤと、再取得した線形リスト順番である。図１０に、受信した応答メッセージの内容を反映させた後の論理名と線形リスト順番のセット情報１８を示す。ここで、図１０に示す論理名と線形リスト順番のセット情報１８では、線形リスト順番を再取得しなかった論理名に対しては、線形リスト順番の変更が未定のため、空欄にしている。以上の動作により、再び論理名による物理アドレスの値取得が可能となる。
【００５８】
また、外部機器３０が、何らかの理由でエンジニアリングツール１０と通信できず、論理名と線形リスト順番のセット情報１８においてテーブルＩＤや線形リスト順番が初期段階で空欄であっても、線形リスト順番の再取得を実行することにより、論理名による物理アドレスの値の取得も可能となる。
【００５９】
以上説明した、実施の形態に係る制御システムの動作を図１１のフローチャートに示す。図１１に示すフローチャートでは、まずステップＳ１で論理名と線形リスト順番のセット情報１８に、必要とする論理名の線形リスト順番が存在するかを判定する。ステップＳ１で線形リスト順番が存在すればステップＳ２に進み、存在しなければステップＳ３に進む。次に、ステップＳ２では、テーブルＩＤ一致判定部２２で要求メッセージに含まれるテーブルＩＤと、論理名割付テーブルの連想配列情報１７が持つテーブルＩＤとを比較する。
【００６０】
テーブルＩＤが一致すればステップＳ４に進み、存在しなければステップＳ３に進む。ステップＳ３では、上記で示した方法で線形リスト順番の再取得を行う。ステップＳ３で線形リスト順番の再取得した後は、ステップＳ５に進む。ステップＳ５では、論理名と線形リスト順番のセット情報１８に対して再取得した線形リスト順番及びテーブルＩＤを更新する。ステップＳ５での更新後、ステップＳ２に戻る。ステップＳ４では、上記で示した方法で物理アドレスを取得し、処理が終了する。
【００６１】
以上のように、本実施の形態に係る制御システムは、要求メッセージに、論理名ではなく論理名を変換した数値と、連想配列の線形リストの順番を含ませることにより、通信のサイズを削減することができる。
【００６２】
また、論理名割付テーブルの連想配列情報１７でのポインタ移動により、文字列比較なしに論理名に対応する物理アドレスを取得することができるので、論理名を数値に変換する時間を削減することができる。
【００６３】
また、テーブルＩＤ一致判定部２２、線形リスト順番再取得部２５を設けたことにより、ある論理名に対する連想配列の線形リストの順番に変化があった場合でも、それらを自動的に再取得できる。
【００６４】
（実施の形態２）
実施の形態１に係る制御システムでは、論理名割付テーブルの連想配列情報１７全体を１つのテーブルＩＤで管理していた。しかし、論理名割付テーブルの連想配列情報１７全体を１つとして管理するだけでなく、論理名と物理アドレスとの対応それぞれにバージョンをつけて管理しても良い。
【００６５】
図１２に、本実施の形態に係る制御システムの構成を示すブロック図である。図１２に示す制御システムの構成は、図１に示す構成に比べて、ＰＬＣ２０に論理名バージョン一致判定部２９を追加した構成である。この論理名バージョン一致判定部２９は、要求メッセージに含まれる論理名のバージョンと、対応する論理名割付テーブルの連想配列情報１７に含まれるこの論理名のバージョンが一致するかどうかを判定する機能部である。
【００６６】
次に、本実施の形態に係る制御システムの動作について説明する。まず、エンジニアリングツール１０によるＰＬＣ２０と外部機器３０への初期設定について説明する。論理名と物理アドレスとが対応する線形リストである連想配列（論理名割付テーブルの連想配列情報１７）は、エンジニアリングツール１０の連想配列生成部１９によって作成される。まず、連想配列生成部１９に含まれる連想配列の値計算部１３は、図２の順番に論理名を数値に変換し、連想配列生成部１９によって論理名割付テーブルの連想配列情報１７が生成される。図１３に、エンジニアリングツール１０で作成した論理名割付テーブルの連想配列情報１７の例を示す。
【００６７】
また、論理名割付テーブルの連想配列情報１７にはテーブルＩＤが付与（図１３の例では０００１）されており、さらに、論理名と物理アドレスとの対応のそれぞれにはバージョンが付与されている。そして、本実施の形態に係る制御システムでは、論理名に対応する線形リスト順番が変更になった場合、変更があった論理名のバージョンを更新し、テーブルＩＤも更新する。
【００６８】
エンジニアリングツール１０は、作成した論理名割付テーブルの連想配列情報１７をＰＬＣ２０に書き込む。書き込まれる論理名割付テーブルの連想配列情報１７は、図１３と同じである。
【００６９】
また、エンジニアリングツール１０は、論理名と、その論理名が連想配列の線形リストにおいて何番目なのかと、バージョンと、そのバージョンが最新か否かの情報とを含む論理名と線形リスト順番のセット情報１８として外部機器３０に書き込む。図１４に、外部機器３０に書き込まれた論理名と線形リスト順番のセット情報１８の例を示す。図１４に示す論理名と線形リスト順番のセット情報１８は、論理名、線形リスト順番、バージョン、バージョンが最新か否かのフラグ、及びテーブルＩＤで構成されている。初期設定の段階では、エンジニアリングツール１０、ＰＬＣ２０、外部機器３０がそれぞれ持つテーブルＩＤと、ＰＬＣ２０、外部機器３０がそれぞれ持つ各論理名のバージョンは全て同じである。
【００７０】
次に、本実施の形態に係る外部機器３０が、論理名に対応する物理アドレスの値を取得する方法を説明する。ここでは、「出荷台数」と「現在時刻」の値をそれぞれ取得する例を説明する。
【００７１】
外部装置３０の連想配列の値計算部３３までの動作は、実施の形態１と全く同様である。次に、線形リスト順番取得部３５は、図１４に示す論理名と線形リスト順番のセット情報１８から、テーブルＩＤと、論理名に対応する連想配列の線形リストでの順番と、バージョンを取得する。具体的にテーブルＩＤは０００１、「出荷台数」の線形リスト順番は２、「出荷台数」のバージョンは０１、「現在時刻」の線形リスト順番は３、「現在時刻」のバージョンは０１である。線形リスト順番取得部３５は、取得したテーブルＩＤと線形リスト順番とバージョンを要求メッセージ生成部３６へ渡す。
【００７２】
要求メッセージ生成部３６は、連想配列の値計算部３３から渡された情報と、線形リスト順番取得部３５から渡された情報とから、要求メッセージを生成する。要求メッセージは、論理名による物理アドレスの値取得であるというメッセージの種別、テーブルＩＤ「０００１」、「出荷台数」が変換された数値「３」、「出荷台数」の線形リスト順番「２」、「出荷台数」のバージョン「０１」、「現在時刻」が変換された数値「１」、「現在時刻」の線形リスト順番「３」、「現在時刻」のバージョン「０１」を含む。要求メッセージ生成部３６は、生成した要求メッセージを通信部３０ｂを介してネットワーク経由でＰＬＣ２０へ送信する。
【００７３】
ＰＬＣ２０の要求メッセージ解析部２１は、受信した外部機器３０からの要求メッセージを解析する。要求メッセージの種別が論理名による物理アドレスの値取得である場合、要求メッセージ解析部２１は、要求メッセージに含まれるメッセージの種別以外の情報をテーブルＩＤ一致判定部２２へ渡す。
【００７４】
テーブルＩＤ一致判定部２２は、要求メッセージに含まれるテーブルＩＤと、論理名割付テーブルの連想配列情報１７が持つテーブルＩＤとを比較する。図１３に示す例では、要求メッセージに含まれるテーブルＩＤが０００１で、論理名割付テーブルの連想配列情報１７が持つテーブルＩＤも０００１であるので両者が一致している。この場合、要求メッセージに含まれるメッセージの種別、テーブルＩＤ及びバージョン以外の情報を連想配列ポインタ移動部２３へ渡す。連想配列ポインタ移動部２３以降の動作は、実施の形態１と全く同じである。
【００７５】
次に、エンジニアリングツール１０によって論理名と物理アドレスとの対応情報１４が変更された場合の動作について説明する。まず、論理名に対応する物理アドレスのみが変更された場合は、実施の形態１と同じである。次に、論理名そのものが追加されたり削除されたりした場合を説明する。図７に示す論理名と物理アドレスとの対応情報１４は、初期設定の図２に示す論理名と物理アドレスとの対応情報１４から「カウンタ値」が削除され、「再開信号」が追加された例を示している。図７に示す論理名と物理アドレスとの対応情報１４に基づいて、連想配列生成部１９が再生成された論理名割付テーブルの連想配列情報１７を図１５に示す。図１５に示す論理名割付テーブルの連想配列情報１７では、「現在時刻」に関しては線形リスト順番が２番目に変化しているのでバージョンを０２にしている。そのため、テーブルＩＤも０００２に変化している。
【００７６】
この論理名割付テーブルの連想配列情報１７が、ＰＬＣ２０の論理名割付テーブルの連想配列情報１７のみに反映された場合の、論理名による物理アドレス値の取得の手順を説明する。
【００７７】
「出荷台数」と「停止信号」との物理アドレスの値をモニタする場合を説明する。なお、要求メッセージ解析部２１までの処理手順は、実施の形態１と同じ処理手順である。次に、テーブルＩＤ一致判定部２２は、要求メッセージに含まれるテーブルＩＤと、論理名割付テーブルの連想配列情報１７が持つテーブルＩＤとを比較する。図１５に示す例では、要求メッセージに含まれるテーブルＩＤが０００１、論理名割付テーブルの連想配列情報１７が持つテーブルＩＤが０００２となり、両者が一致しない。この場合、テーブルＩＤ一致判定部２２は、要求メッセージからメッセージの種別とテーブルＩＤ以外の情報を論理名バージョン一致判定部２９へ渡す。
【００７８】
論理名バージョン一致判定部２９は、要求メッセージに含まれる論理名のバージョンと、論理名割付テーブルの連想配列情報１７の論理名のバージョンとを順番に比較する。まず、要求メッセージに含まれる「出荷台数」のバージョンは０１で、論理名割付テーブルの連想配列情報１７の「出荷台数」のバージョンが０１であるので、両者は一致する。次に、要求メッセージに含まれる「停止信号」のバージョンは０１で、論理名割付テーブルの連想配列情報１７に含まれる「停止信号」のバージョンが０１であるので、両者は一致する。全ての論理名のバージョンが一致した場合、論理名バージョン一致判定部２９は、要求メッセージに含まれるメッセージの種別、テーブルＩＤ、バージョンの情報以外を連想配列ポインタ移動部２３へ渡す。
【００７９】
連想配列ポインタ移動部２３及び物理アドレス値取得部２４の動作は、実施の形態１と同じ処理手順である。
【００８０】
応答メッセージ生成部２６は、物理アドレス値取得部２４から渡された情報から応答メッセージを生成する。応答メッセージは、論理名による物理アドレスの値取得であるというメッセージの種別と、論理名のバージョンは全て一致したがテーブルＩＤは一致しなかったというエラーコードと、論理名割付テーブルの連想配列情報１７が持つテーブルＩＤ０００２、「出荷台数」に対応する物理アドレスＤ４の値と、「停止信号」に対応する物理アドレスＭ２０の値とを含む。応答メッセージ生成部２６は、生成した応答メッセージを通信部２０ｂを介してネットワーク経由で外部機器３０へ送信する。
【００８１】
外部機器３０では、送信された応答メッセージを受信し、応答メッセージ解析部３１で当該応答メッセージの解析を行う。応答メッセージ解析部３１は、応答メッセージの種別が論理名による物理アドレスの値取得であり、且つ論理名のバージョンは全て一致したがテーブルＩＤは一致しかなったというエラーコードが含まれていると判断した場合、要求メッセージで送信した論理名に対応する物理アドレスの値が応答メッセージに含まれているとして当該物理アドレスの値を取得する。
【００８２】
また応答メッセージ解析部３１は、応答メッセージに含まれるテーブルＩＤを論理名と線形リスト順番のセット情報１８へ反映する。図１６に、反映後の論理名と線形リスト順番のセット１８を示す。ここで、新しいテーブルＩＤは０００２となり、少なくとも「出荷台数」及び「停止信号」のバージョンが最新であることが保証されているため、バージョンが最新であるか否かのフラグが「出荷台数」及び「停止信号」に立てられている。他の論理名に対しては、バージョンそのものについてはそのまま残し、バージョンが最新であるというフラグを消している。以上の動作により、論理名による物理アドレスの値の再取得が実現できる。
【００８３】
次に、「出荷台数」と「現在時刻」との物理アドレスの値をモニタする場合を説明する。なお、連想配列ポインタ移動部２３までの処理手順は、上記で説明した本実施の形態での処理手順と同じである。
【００８４】
論理名バージョン一致判定部２９は、要求メッセージに含まれる論理名のバージョンと、図１５に示す論理名割付テーブルの連想配列情報１７の論理名のバージョンを順番に比較する。まず、要求メッセージに含まれる「出荷台数」のバージョンは０１で、論理名割付テーブルの連想配列情報１７の「出荷台数」のバージョンが０１であるため、両者は一致する。次に、要求メッセージに含まれる「現在時刻」のバージョンは０１で、論理名割付テーブルの連想配列情報１７に含まれる「現在時刻」のバージョンが０２であるので、両者は一致しない。バージョンの一致しない論理名があった場合、論理名バージョン一致判定部２９は、要求メッセージに含まれるメッセージの種別、テーブルＩＤ、バージョンの情報以外を応答メッセージ生成部へ渡す。
【００８５】
応答メッセージ生成部２６は、論理名バージョン一致判定部２９から渡された情報に基づき応答メッセージを生成する。生成した応答メッセージは、論理名による物理アドレスの値取得であるというメッセージの種別と、一部の論理名のバージョンが一致しなかったことを示すエラーコードと、どの論理名のバージョンが一致しなかったかを示す情報を含む。応答メッセージ生成部２６は、この応答メッセージを通信部２０ｂを介してネットワーク経由で外部機器３０へ送信する。
【００８６】
外部機器３０の応答メッセージ解析部３１は、受信した応答メッセージを解析する。応答メッセージ解析部３１は、応答メッセージに含まれるメッセージの種別が論理名による物理アドレスの値取得であり、且つ一部の論理名のバージョンが一致しなかったことを示すエラーコードを含む場合、一部の論理名のバージョンが一致しなかったという情報と、バージョンが一致しなかった論理名の情報とを連想配列の値計算部３３へ渡す。
【００８７】
連想配列の値計算部３３は、バージョンが一致しなかった論理名を再び数値に変換する。上記の例で、バージョンが一致しなかった論理名は「現在時刻」である。ここで、過去に変換した論理名の数値を記憶しておいても良い。連想配列の値計算部３３は、論理名そのものと論理名を変換した数値とを要求メッセージ生成部３６へ渡す。
【００８８】
要求メッセージ生成部３６は、連想配列の値計算部３３から渡された情報に基づき要求メッセージを作成する。生成した要求メッセージは、線形リスト順番の再取得であるというメッセージの種別、「現在時刻」、「現在時刻」が変換された数値「１」を含む。要求メッセージ生成部３６は、当該要求メッセージを通信部３０ｂを介してネットワーク経由でＰＬＣ２０へ送信する。
【００８９】
要求メッセージ解析部２１は、外部機器３０から受信した要求メッセージを解析する。要求メッセージに含まれるメッセージの種別が線形リストの再取得である場合、要求メッセージ解析部２１は、要求メッセージに含まれるメッセージの種別以外の情報を線形リスト順番再取得部２５へ渡す。
【００９０】
線形リスト順番再取得部２５は、値を取得したい物理アドレスに対応する論理名が、最新の連想配列の線形リストにおいて何番目なのかを、論理名割付テーブルの連想配列情報１７を用いて取得する。この処理手順は実施の形態１と同じであり、「現在時刻」の線形リスト順番が２と取得される。同時に、バージョンも０２と取得される。線形リスト順番再取得部２５は、論理名割付テーブルの連想配列情報１７が持つテーブルＩＤ、「現在時刻」の線形リスト順番、「現在時刻」のバージョンを、応答メッセージ生成部２６へ渡す。
【００９１】
応答メッセージ生成部２６は、線形リスト順番再取得部２５から渡された情報に基づき応答メッセージを作成する。生成した応答メッセージは、線形リストの再取得であるというメッセージの種別、テーブルＩＤである０００２、「現在時刻」の線形リスト順番「２」、「現在時刻」のバージョン０２を含む。応答メッセージ生成部２６は、当該応答メッセージを、通信部２０ｂを介してネットワーク経由で外部機器３０へ送信する。
【００９２】
応答メッセージ解析部３１は、受信した応答メッセージを解析する。応答メッセージに含まれるメッセージの種別が線形リストの再取得である場合、応答メッセージ解析部３１は応答メッセージに含まれるメッセージの種別以外の情報を論理名と線形リスト順番のセット情報１８へ反映する。論理名と線形リスト順番のセット情報１８において反映させる項目は、テーブルＩＤと、再取得した線形リスト順番と、再取得したバージョンとである。図１７に、反映後の論理名と線形リスト順番のセット１８を示す。ここで、新しいテーブルＩＤは０００２となり、少なくとも「出荷台数」及び「現在時刻」のバージョンが最新であることが保証されているため、バージョンが最新であるか否かのフラグが「出荷台数」及び「現在時刻」に立てられている。他の論理名に対しては、バージョンそのものについてはそのまま残し、バージョンが最新であるというフラグを消している。以上の動作により、論理名による物理アドレスの値の再取得が実現できる。
【００９３】
また、ここで「出荷台数」と「現在時刻」以外の論理名の物理アドレスをモニタしたい場合、テーブルＩＤが０００２の論理名と線形リスト順番のセット１８においては、バージョンが最新であるか否かについて保証されていない。例えば「ランプＢ」をモニタしたい場合、テーブルＩＤを０００２にセットして今まで通り論理名による物理アドレス値の取得のメッセージを要求した場合、仮に「ランプＢ」に対する線形リスト順番が一致していなくても、テーブルＩＤのチェックでは一致しているので、正しくない物理アドレスを取得してしまう可能性があった。
【００９４】
そのため、このような場合、要求メッセージ生成部３６は、バージョンが最新であることが保証されない論理名については、要求メッセージのテーブルＩＤを空欄にして、論理名による物理アドレス値取得の要求メッセージを生成すれば良い。これ以降の動作は、上記で説明した動作と同じになるが、要求メッセージのテーブルＩＤを空欄にしたことにより、テーブルＩＤ一致判定部２２では必ず不一致の判定になり、論理名バージョン一致確認部２９で必ずバージョンの確認が行われるからである。
【００９５】
つまり、論理名と線形リスト順番のセット情報１８にて、バージョンが最新であるフラグの立てられた論理名と、バージョンが最新であるフラグの立てられていない論理名が混在した論理名による物理アドレス値の取得を行いたい場合は、バージョンが最新であるフラグの立てられていない論理名についてのみ、要求メッセージのテーブルＩＤを空にして、論理名による物理アドレス値の取得を行う。その後、物理アドレスを取得したい論理名に対してバージョンが最新であるフラグが立ってから、要求メッセージのテーブルＩＤを空にしない、通常の論理名による物理アドレス値の取得を行う。
【００９６】
以上説明した、実施の形態に係る制御システムの動作を図１８のフローチャートに示す。図１８に示すフローチャートでは、まずステップＳ１０で論理名と線形リスト順番のセット情報１８に、必要とする論理名の線形リスト順番が存在するかを判定する。ステップＳ１０で線形リスト順番が存在すればステップＳ１１に進み、存在しなければステップＳ１２に進む。次に、ステップＳ１１では、論理名と線形リスト順番のセット情報１８において、必要とする論理名のバージョンが最新か否かを判断する。論理名のバージョンが最新であればステップＳ１３に進み、最新でなければステップＳ１４に進む。
【００９７】
ステップＳ１４では、要求メッセージのテーブルＩＤを空欄にして、論理名による物理アドレス値取得の要求メッセージを生成する。ステップＳ１３では、テーブルＩＤ一致判定部２２で要求メッセージに含まれるテーブルＩＤと、論理名割付テーブルの連想配列情報１７が持つテーブルＩＤとを比較する。テーブルＩＤが一致すればステップＳ１５に進み、存在しなければステップＳ１６に進む。ステップＳ１５では、上記で示した方法で物理アドレスを取得し、処理が終了する。
【００９８】
一方、ステップＳ１６では、論理名バージョン一致確認部２９で要求メッセージに含まれる論理名のバージョンと、論理名割付テーブルの連想配列情報１７の論理名のバージョンを順番に比較し、全てのバージョンが一致するか否かを確認する。確認できた場合は、ステップＳ１７に進み、確認できない場合はステップＳ１２に進む。ステップＳ１７では、上記で示した方法で物理アドレスを取得し、その後ステップＳ１８で論理名と線形リスト順番のセット情報１８のテーブルＩＤを更新し、処理が終了する。
【００９９】
一方、ステップＳ１２では、上記で示した方法で線形リスト順番の再取得を行う。ステップＳ１２で線形リスト順番の再取得した後は、ステップＳ１９に進む。ステップＳ１９では、論理名と線形リスト順番のセット情報１８に対して再取得した線形リスト順番、バージョン及びテーブルＩＤを更新する。ステップＳ１９での更新後、ステップＳ１３に戻る。
【０１００】
以上のように、本実施の形態に係る制御システムは、テーブルＩＤが一致しなくてもバージョンが一致すれば論理名による物理アドレス値取得を続行できるので、実施の形態１と同様の効果に加えて、線形リスト順番再取得の回数が減るという効果と、通信のサイズを削減できる効果がある。
【０１０１】
（実施の形態３）
実施の形態１では、論理名割付テーブルの連想配列情報１７にて論理名の削除があると、削除された論理名以降の配列された線形リスト順番を変更することになる。そのため、実施の形態１では、ＰＬＣ２０のテーブルＩＤを変更し、外部機器３０のテーブルＩＤとの不一致を検知することにより、線形リスト順番の再取得を行っていた。しかし、論理名割付テーブルの連想配列情報１７で論理名が削除されても、削除された論理名以降の配列された線形リスト順番を変更しない運用も可能であり、本実施の形態に係る制御システムでは、当該運用を採用している。
【０１０２】
図１９に、本実施の形態に係る制御システムの構成を示すブロック図である。図１９に示す制御システムは、図１に示す制御システムと比較して、テーブルＩＤ一致判定部２２、線形リスト順番再取得部２５が除かれている。これは、ＰＬＣ２０のテーブルＩＤを変更し、外部機器３０のテーブルＩＤとの不一致を検知することにより、線形リスト順番の再取得する処理が本実施の形態では必要がないためである。
【０１０３】
図２０に、本実施の形態に係るエンジニアリングツール１０が初期に作成する論理名割付テーブルの連想配列情報１７である。なお、エンジニアリングツール１０での論理名割付テーブルの連想配列情報１７の作成方法は、実施の形態１と同じである。次に、図２０に示す論理名割付テーブルの連想配列情報１７から「カウンタ値」が削除されている論理名割付テーブルの連想配列情報１７の例を図２１に示す。
【０１０４】
図２１に示す論理名割付テーブルの連想配列情報１７では、エンジニアリングツール１０では「カウンタ値」が削除されたという情報を残しておくために「カウンタ値」の論理名は残し、対応する物理アドレスだけを削除している。また、図２１に示す論理名割付テーブルの連想配列情報１７では、再度「カウンタ値」を追加する場合、残しておいた論理名に、対応する物理アドレスを追加するだけで良い。図２１に示す論理名割付テーブルの連想配列情報１７のように線形リストを処理した場合、線形リスト順番は変わらないため、テーブルＩＤが不要となる。
【０１０５】
さらに、本実施の形態に係る制御システムでは、線形リスト順番の再取得する処理が不要であるため、図１９に示すように線形リスト順番再取得部２５を設ける必要がない。つまり、本実施の形態に係る制御システムでは、線形リスト順番再取得部２５で論理名の文字列比較を行う必要がない。そのため、図２０に示すエンジニアリングツール１０の論理名割付テーブルの連想配列情報１７から、物理アドレスのみの構成にした図２２に示す論理名割付テーブルの連想配列情報２７をＰＬＣ２０のＲＡＭ２０ａ３に書き込む。なお、図２１に示す論理名割付テーブルの連想配列情報１７に対応する論理名割付テーブルの連想配列情報２７は図２３に示されており、「カウンタ値」に対応する部分の物理アドレスがなく空欄となっている線形リストとなる。
【０１０６】
さらに、本実施の形態に係る論理名と線形リスト順番のセット情報１８は、図２４に示す構成となり、テーブルＩＤが付与されない。なお、本実施の形態に係る制御システムによる論理名による物理アドレス取得の手順は、テーブルＩＤ一致判定部２２の動作を除く点以外実施の形態１の動作と同じである。
【０１０７】
以上のように、本実施の形態に係る制御システムは、実施の形態１と同様の効果に加えて、論理名割付テーブルの連想配列情報１７のサイズを小さくするという効果を有している。
【図面の簡単な説明】
【０１０８】
【図１】本発明の実施の形態１に係る制御システムのブロック図である。
【図２】本発明の実施の形態１に係る制御システムの論理名と物理アドレスとの対応情報を説明するための図である。
【図３】本発明の実施の形態１に係る制御システムの割付テーブルの連想配列情報を説明するための図である。
【図４】本発明の実施の形態１に係る制御システムの論理名と線形リスト順番のセット情報を説明するための図である。
【図５】本発明の実施の形態１に係る制御システムの割付テーブルの連想配列情報を説明するための図である。
【図６】本発明の実施の形態１に係る制御システムの論理名と物理アドレスとの対応情報を説明するための図である。
【図７】本発明の実施の形態１に係る制御システムの論理名と物理アドレスとの対応情報を説明するための図である。
【図８】本発明の実施の形態１に係る制御システムの割付テーブルの連想配列情報を説明するための図である。
【図９】本発明の実施の形態１に係る制御システムの割付テーブルの連想配列情報を説明するための図である。
【図１０】本発明の実施の形態１に係る制御システムの論理名と線形リスト順番のセット情報を説明するための図である。
【図１１】本発明の実施の形態１に係る制御システムの動作を説明するための図である。
【図１２】本発明の実施の形態２に係る制御システムのブロック図である。
【図１３】本発明の実施の形態２に係る制御システムの割付テーブルの連想配列情報を説明するための図である。
【図１４】本発明の実施の形態２に係る制御システムの論理名と線形リスト順番のセット情報を説明するための図である。
【図１５】本発明の実施の形態２に係る制御システムの割付テーブルの連想配列情報を説明するための図である。
【図１６】本発明の実施の形態２に係る制御システムの論理名と線形リスト順番のセット情報を説明するための図である。
【図１７】本発明の実施の形態２に係る制御システムの論理名と線形リスト順番のセット情報を説明するための図である。
【図１８】本発明の実施の形態２に係る制御システムの動作を説明するための図である。
【図１９】本発明の実施の形態３に係る制御システムのブロック図である。
【図２０】本発明の実施の形態３に係る制御システムの割付テーブルの連想配列情報を説明するための図である。
【図２１】本発明の実施の形態３に係る制御システムの割付テーブルの連想配列情報を説明するための図である。
【図２２】本発明の実施の形態３に係る制御システムの割付テーブルの連想配列情報を説明するための図である。
【図２３】本発明の実施の形態３に係る制御システムの割付テーブルの連想配列情報を説明するための図である。
【図２４】本発明の実施の形態３に係る制御システムの論理名と線形リスト順番のセット情報を説明するための図である。
【符号の説明】
【０１０９】
１０  エンジニアリングツール、１３  連想配列の値計算部、１４  論理名と物理アドレスとの対応情報、１７  論理名割付テーブルの連想配列情報、１８  論理名と線形リスト順番のセット情報、１９  連想配列生成部、２０  ＰＬＣ、２０ａ，３０ａ  制御部、２０ｂ，３０ｂ  通信部、２１  要求メッセージ解析部、２２  テーブルＩＤ一致判定部、２３  連想配列ポインタ移動部、２４  物理アドレス値取得部、２５  線形リスト順番取得部、２６  応答メッセージ生成部、３０  外部機器、３１  応答メッセージ解析部、３３  連想配列の値計算部、３５  線形リスト順番取得部、３６  要求メッセージ生成部。
【図１】
0004854700.tif 000002
【図２】
0004854700.tif 000003
【図３】
0004854700.tif 000004
【図４】
0004854700.tif 000005
【図５】
0004854700.tif 000006
【図６】
0004854700.tif 000007
【図７】
0004854700.tif 000008
【図８】
0004854700.tif 000009
【図９】
0004854700.tif 000010
【図１０】
0004854700.tif 000011
【図１１】
0004854700.tif 000012
【図１２】
0004854700.tif 000013
【図１３】
0004854700.tif 000014
【図１４】
0004854700.tif 000015
【図１５】
0004854700.tif 000016
【図１６】
0004854700.tif 000017
【図１７】
0004854700.tif 000018
【図１８】
0004854700.tif 000019
【図１９】
0004854700.tif 000020
【図２０】
0004854700.tif 000021
【図２１】
0004854700.tif 000022
【図２２】
0004854700.tif 000023
【図２３】
0004854700.tif 000024
【図２４】
0004854700.tif 000025