(57)【特許請求の範囲】
【請求項１】
アナログデータをデジタルデータに変換するＡ／Ｄ変換部と、
前記Ａ／Ｄ変換部による変換後のデジタルデータを格納する一時記憶領域を備える記憶部と、
前記Ａ／Ｄ変換部による変換後のデジタルデータを前記一時記憶領域に格納させ、前記一時記憶領域のうち前記Ａ／Ｄ変換部による変換後のデジタルデータを最後に格納したアドレスの次のアドレスに前記Ａ／Ｄ変換部により新たに変換されたデジタルデータを格納させるとともに、前記一時記憶領域に格納されかつ転送されていないデジタルデータのうち最初に格納されたデジタルデータを転送させる制御部と
を備え、
前記一時記憶領域は、第一及び第二の領域に分割され、
前記制御部は、前記Ａ／Ｄ変換部によるＡ／Ｄ変換後のデジタルデータを前記第一の領域に格納させ、当該格納したデジタルデータのデータ量が前記第一の領域に割り当てられたデータ量と一致した場合に、前記第一の領域に格納されているデジタルデータを出力可能にするとともに前記Ａ／Ｄ変換部により新たに変換されたデジタルデータを前記第二の領域に格納させるＡ／Ｄ変換装置。
【請求項２】
前記一時記憶領域は、第一、第二及び第三の領域に分割され、
前記制御部は、前記第二の領域に格納したデジタルデータのデータ量が前記第二の領域に割り当てられたデータ量と一致したときに前記第一の領域に格納されているデジタルデータを出力している場合に、前記第二の領域に格納されているデジタルデータを出力可能にするとともに前記第一の領域に格納されているデジタルデータの出力を継続し前記Ａ／Ｄ変換部により新たに変換されたデジタルデータを前記第三の領域に格納させる請求項１に記載のＡ／Ｄ変換装置。
【請求項３】
前記制御部は、前記記憶部に、前記一時記憶領域を構成する各領域に割り当てられたデータ量及び前記Ａ／Ｄ変換部による変換後のデジタルデータが最後に格納されたアドレスを格納させ、前記一時記憶領域のいずれかの領域に格納されたデジタルデータのデータ量が当該領域に割り当てられたデータ量と一致した場合に、当該領域に格納されているデジタルデータの取出要求と当該領域に割り当てられたデータ量と前記Ａ／Ｄ変換部による変換後のデジタルデータが最後に格納されたアドレスとを出力する請求項１または請求項２のいずれかに記載のＡ／Ｄ変換装置。
【請求項４】
デジタルデータをアナログデータに変換するＤ／Ａ変換部と、
前記Ｄ／Ａ変換部に変換されるデジタルデータを格納する一時記憶領域を備える記憶部と、
前記一時記憶領域に前記Ｄ／Ａ変換部に変換されるデジタルデータが格納されている場合に、当該デジタルデータを前記Ｄ／Ａ変換部への出力を継続させながら前記Ｄ／Ａ変換部へすでに出力されているデジタルデータが格納されているアドレスに新たに読み出したデジタルデータを書き込む制御部と
を備え、
前記一時記憶領域は、第一及び第二の領域に分割され、
前記制御部は、前記第一及び前記第二の領域それぞれに前記Ｄ／Ａ変換部に変換されるデジタルデータが格納されている場合に前記一時記憶領域の前記第一の領域に格納されているデジタルデータを前記Ｄ／Ａ変換部へ出力させ、当該出力したデジタルデータのデータ量が前記第一の領域に割り当てられたデータ量と一致した場合に、前記第一の領域に前記Ｄ／Ａ変換部により新たに変換されるデジタルデータを書き込み可能にするとともに前記第二の領域に格納されているデジタルデータを前記Ｄ／Ａ変換部へ出力させるＤ／Ａ変換装置。
【請求項５】
前記一時記憶領域は、第一、第二及び第三の領域に分割され、前記第一、第二及び第三の領域それぞれに前記Ｄ／Ａ変換部に変換されるデジタルデータを格納し、
前記制御部は、前記第二の領域に格納されているデジタルデータを前記Ｄ／Ａ変換部へ出力し終えたときに前記第一の領域へ前記Ｄ／Ａ変換部により新たに変換されるデジタルデータの格納を行っている場合に、
前記第二の領域に前記Ｄ／Ａ変換部により新たに変換されるデジタルデータを書き込み可能にするとともに前記第一の領域への前記Ｄ／Ａ変換部により新たに変換されるデジタルデータの格納を継続し前記第三の領域に格納されているデジタルデータを前記Ｄ／Ａ変換部へ出力させる請求項４に記載のＤ／Ａ変換装置。
【請求項６】
前記制御部は、前記記憶部に、前記一時記憶領域を構成する各領域に割り当てられたデータ量及び前記Ｄ／Ａ変換部に変換されるデジタルデータが最後に出力されたアドレスを格納させ、前記一時記憶領域のいずれかの領域に格納されたデジタルデータを出力し終えた場合に、当該領域へのデジタルデータの取得要求と当該領域に割り当てられたデータ量と前記Ｄ／Ａ変換部に変換されるデジタルデータが最後に出力されたアドレスとを出力する請求項４または請求項５のいずれかに記載のＤ／Ａ変換装置。
【請求項７】
請求項１から請求項３のいずれか１項に記載のＡ／Ｄ変換装置と、
請求項４から請求項６のいずれか１項に記載のＤ／Ａ変換装置と、
デジタルデータを格納する内部メモリを備え、前記Ａ／Ｄ変換装置が前記Ａ／Ｄ変換装置の一時記憶領域に格納されているデジタルデータを出力すると当該デジタルデータを前記内部メモリに格納し、前記Ｄ／Ａ変換装置の一時記憶領域に格納するデジタルデータを前記内部メモリから出力するＣＰＵ装置と
を備えるＰＬＣ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、Ａ／Ｄ変換装置、Ｄ／Ａ変換装置、前記Ａ／Ｄ変換装置及び前記Ｄ／Ａ変換装置を備えたプログラマブルコントローラ（ＰＬＣ）に関する。
【背景技術】
【０００２】
ＰＬＣにアナログデータを入力する場合、入力されるアナログデータをデジタルデータに変換するＡ／Ｄ変換装置が用いられる。一般的に、入力されるアナログデータをデジタルデータに変換するＡ／Ｄ変換装置のＡ／Ｄ変換のサンプリング周期と、ＰＬＣ全体を制御するＣＰＵの制御周期とは非同期であり、かつサンプリング周期の方が短い場合が多い。そこで、Ａ／Ｄ変換装置にＣＰＵから常時アクセス可能な共用メモリを設け、Ａ／Ｄ変換したデータを共用メモリに一時的に格納することにより、Ａ／Ｄ変換のサンプリング速度を落とさずにアナログデータを入力する技術が知られている（例えば、特許文献１）。【０００３】
また、ＰＬＣからアナログデータを出力する場合、ＰＬＣ内で処理されるデジタルデータをアナログデータに変換するＤ／Ａ変換装置が用いられる。一般的に、Ｄ／Ａ変換装置においても、Ｄ／Ａ変換のサンプリング周期と、ＣＰＵの制御周期とは非同期であり、かつサンプリング周期の方が短い場合が多い。そこで、Ｄ／Ａ変換装置にＣＰＵから常時アクセス可能な共用メモリを設け、Ｄ／Ａ変換するデータを共用メモリに一時的に格納することにより、Ｄ／Ａ変換のサンプリング速度を落とさずにアナログデータを出力する技術が知られている（例えば、特許文献２）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５１２２０００号公報（第６頁、第１図）
【特許文献２】特許第５３２７３９５号公報（第６頁、第１図）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載のＡ／Ｄ変換装置にあっては、高速に大容量のアナログデータをデジタルデータに変換する場合、Ａ／Ｄ変換装置の共用メモリの記憶容量すべてにデジタルデータが格納される毎に、当該デジタルデータをＣＰＵへ出力する必要がある。この場合、デジタルデータをＣＰＵへ出力している間、Ａ／Ｄ変換を一時停止しなければならず、Ａ／Ｄ変換の高速化の妨げとなっていた。【０００６】
また、特許文献２に記載のＤ／Ａ変換装置にあっては、高速に大容量のデジタルデータをアナログデータに変換する場合、Ｄ／Ａ変換装置の共用メモリに格納されるデジタルデータをすべてＤ／Ａ変換した後、ＣＰＵから新たなデジタルデータを取得する必要がある。この場合、デジタルデータをＣＰＵから取得している間、Ｄ／Ａ変換を一時停止しなければならず、Ｄ／Ａ変換の高速化の妨げとなっていた。【０００７】
これらの問題は、いずれも、Ａ／Ｄ変換装置またはＤ／Ａ変換装置が備える共用メモリの容量を増やすことにより、一時的に解決できるが、共用メモリの容量を増やすことでコストの増大を招いてしまう。【０００８】
この発明は、上記の問題点を解決するためになされたものであり、Ａ／Ｄ変換装置の共用メモリの容量に依存することなく、高速のＡ／Ｄ変換を継続して実行できるＡ／Ｄ変換装置を得る。【０００９】
また、Ｄ／Ａ変換装置の共用メモリの容量に依存することなく、高速Ｄ／Ａ変換を継続して実行できるＤ／Ａ変換装置を得る。【００１０】
また、Ａ／Ｄ変換装置の記憶部の容量に依存することなく、高速かつ大容量のロギングが可能であり、さらに、Ｄ／Ａ変換装置の共用メモリの容量に依存することなく高速かつ大容量の波形出力が可能であるＰＬＣを得る。
【課題を解決するための手段】
【００１１】
この発明の第一の発明に係るＡ／Ｄ変換装置は、アナログデータをデジタルデータに変換するＡ／Ｄ変換部と、前記Ａ／Ｄ変換部による変換後のデジタルデータを格納する一時記憶領域を備える記憶部と、前記Ａ／Ｄ変換部による変換後のデジタルデータを前記一時記憶領域に格納させ、前記一時記憶領域に格納されているデジタルデータを転送させる制御部とを備え、前記制御部は、前記一時記憶領域のうち前記Ａ／Ｄ変換部による変換後のデジタルデータを最後に格納したアドレスの次のアドレスに前記Ａ／Ｄ変換部により新たに変換されたデジタルデータを格納させるとともに、前記一時記憶領域に格納されかつ転送されていないデジタルデータのうち最初に格納されたデジタルデータを転送させる。
【００１２】
また、第二の発明に係るＤ／Ａ変換装置は、デジタルデータをアナログデータに変換するＤ／Ａ変換部と、前記Ｄ／Ａ変換部に変換されるデジタルデータを格納する一時記憶領域を備える記憶部と、前記一時記憶領域に前記Ｄ／Ａ変換部に変換されるデジタルデータが格納されている場合に、当該デジタルデータを前記Ｄ／Ａ変換部への出力を継続させながら前記Ｄ／Ａ変換部へすでに出力されているデジタルデータが格納されているアドレスに新たに読み出したデジタルデータを書き込む制御部とを備える。
【００１３】
また、第三の発明に係るＰＬＣは、第一の発明に係るＡ／Ｄ変換装置と、第二の発明に係るＤ／Ａ変換装置と、デジタルデータを格納する内部メモリを備え、前記Ａ／Ｄ変換装置が前記Ａ／Ｄ変換装置の一時記憶領域に格納されているデジタルデータを出力すると当該デジタルデータを前記内部メモリに格納し、前記Ｄ／Ａ変換装置の一時記憶領域に格納するデジタルデータを前記内部メモリから出力するＣＰＵ装置とを備える。
【発明の効果】
【００１４】
この発明の第一の発明によれば、Ａ／Ｄ変換したデジタルデータを記憶部に格納しながら、記憶部に格納されているデジタルデータをＣＰＵ装置へ転送できるので、高速Ａ／Ｄ変換を継続して実行できる。【００１５】
また、第二の発明によれば、ＣＰＵ装置からＤ／Ａ変換するデジタルデータを記憶部へ転送しながら、記憶部に格納されているデジタルデータをＤ／Ａ変換できるので、高速Ｄ／Ａ変換を継続して実行できる。【００１６】
また、第三の発明によれば、Ａ／Ｄ変換装置の記憶部の容量に依存することなく、高速かつ大容量のロギングが可能であり、さらに、Ｄ／Ａ変換装置の記憶部の容量に依存することなく高速かつ大容量の波形出力が可能であるＰＬＣを得られる。
【図面の簡単な説明】
【００１７】
【図１】この発明に係るＰＬＣシステムの構成図である。
【図２】この発明の実施の形態１を示すＡ／Ｄ変換装置の構成図である。
【図３】この発明の実施の形態１を示すＡ／Ｄ変換装置のログデータ一時記憶領域及びログデータ一時記憶領域に格納されるデータの構造を示す図である。
【図４】この発明の実施の形態１を示すＡ／Ｄ変換装置の制御部の動作を示すフローチャートである。
【図５】この発明の実施の形態１を示すログデータ一時記憶領域の状態遷移を説明する図である。
【図６】この発明の実施の形態１を示す割込みプログラム実行部の動作を示すフローチャートである。
【図７】この発明の実施の形態２を示すＤ／Ａ変換装置の構成図である。
【図８】この発明の実施の形態２を示すＤ／Ａ変換装置の波形データ列一時記憶領域及び波形データ列一時記憶領域に格納されるデータの構造を示す図である。
【図９】この発明の実施の形態２を示すＤ／Ａ変換装置の制御部の動作を示すフローチャートである。
【図１０】この発明の実施の形態２を示す波形データ列一時記憶領域の状態遷移を説明する図である。
【図１１】この発明の実施の形態２を示す割込みプログラム実行部の動作を示すフローチャートである。
【発明を実施するための形態】
【００１８】
実施の形態１．
図１は、この発明に係るＰＬＣシステムの構成図である。ＰＬＣシステムは、ＰＬＣ１０００及び周辺装置２０００を備える。ＰＬＣ１０００は、少なくともＡ／Ｄ変換装置１００、Ｄ／Ａ変換装置２００及びＣＰＵ装置３００とを備える。ＰＬＣ１０００は、例えば、外部メモリ４００、外部機器の入出力制御を実現するＩ／Ｏ制御装置、ＰＬＣネットワークを実現するためのネットワーク通信装置等を備えていても良い。ＰＬＣ１０００が備える各装置は、互いにユニット間バス５００を介して接続される。周辺装置２０００は、例えばパーソナルコンピュータであり、ユーザプログラムの設定または内部メモリ３３０のデータの状態の表示等を行う。
【００１９】
Ｄ／Ａ変換装置２００は、ＰＬＣ１０００が制御対象とする産業用機器などに対し、電流値や電圧値などのアナログデータの出力を行う。
【００２０】
ＣＰＵ装置３００は、ユーザプログラム、ユーザプログラムの実行に必要となるデータ、及びユーザプログラムの実行結果であるデータを格納する外部メモリ４００にアクセスするためのインタフェースである外部メモリＩ／Ｆ３１０と、ユーザプログラムの実行やＣＰＵ装置３００全体の制御を実行する演算部３２０と、ユーザプログラムの実行に必要となるデータ、ユーザプログラムの実行結果、ログデータを格納するためのメモリである内部メモリ３３０と、周辺装置２０００を接続するためのインタフェースである周辺装置Ｉ／Ｆ３４０と、ユニット間バス５００を介して接続した装置と通信を行うための通信インタフェースであるバスＩ／Ｆ３５０と、を備える。演算部３２０は、割込みプログラムを実行する割込みプログラム実行部３２１を備える。
【００２１】
ＣＰＵ装置３００は、ＰＬＣ１０００が備える各装置を動作させて産業用機器を制御するためのプログラムであるユーザプログラムの実行と、実行結果の出力と、ユーザプログラムが使用する値などの入力値の取得と、を所定の周期で繰り返す。この繰り返しの動作はサイクリック処理と呼ばれる。
【００２２】
図２は、この実施の形態におけるＡ／Ｄ変換装置１００の構成図である。Ａ／Ｄ変換装置１００は、Ａ／Ｄ変換装置１００全体を制御する演算部１１０、Ａ／Ｄ変換した値を演算するための入力演算器１２０、アナログデータをＡ／Ｄ変換するＡ／Ｄ変換部１３０、Ａ／Ｄ変換装置１００がデータを高速に書き込むことができ、かつＣＰＵ装置３００が煩雑な通信処理を実行することなく格納されるＡ／Ｄ変換値を読み出すことができる共用メモリ１４０、ユニット間バス５００を介して接続した装置と通信を行うための通信インタフェースであるバスＩ／Ｆ１５０とを備える。入力演算器１２０は、カウンタ１２１、制御部１２２、パラメータ格納領域１２３、デジタル値入力部１２４を備える。共用メモリ１４０は、記憶部である。Ａ／Ｄ変換装置１００は、ＰＬＣ１０００が制御対象とする産業用機器などに関する種々の観測値、例えば流量、圧力、温度などを観測して電流値や電圧値として出力するセンサからのアナログデータの入力を受け付け、当該アナログデータをデジタルデータに変換し、内部に備える共用メモリ１４０に前記デジタルデータ（Ａ／Ｄ変換値）を格納する。共用メモリ１４０に格納されているＡ／Ｄ変換値は、前述のサイクリック処理に含まれる入力値の取得として、ＣＰＵ装置３００に読み取られる。
【００２３】
次に、Ａ／Ｄ変換装置１００内の共用メモリ１４０について説明する。図３は、この実施の形態におけるＡ／Ｄ変換装置１００のログデータ一時記憶領域１４１及びログデータ一時記憶領域１４１に格納されるデータの構造を示す図である。共用メモリ１４０には、ＣＰＵ装置３００によるサイクリック処理により読み出されるＡ／Ｄ変換値が格納される。通常、アナログデータをサンプリングしてデジタルデータに変換する周期（サンプリング周期）は、サイクリック処理の周期より短いため、ＣＰＵ装置３００が共用メモリ１４０に格納されたＡ／Ｄ変換値を取りこぼすことなく読み出してロギングすることは難しい。そこで、Ａ／Ｄ変換装置１００がデータを高速に格納することができ、かつＣＰＵ装置３００が煩雑な通信処理を実行することなくＡ／Ｄ変換値を読み出すことができる共用メモリ１４０に、Ａ／Ｄ変換値をログデータとして格納するための一時記録領域であるログデータ一時記憶領域１４１を確保している。なお、ログデータ一時記憶領域１４１に格納されているログデータは、ユニット間バス５００、ＣＰＵ装置３００、周辺装置Ｉ／Ｆ３４０を介して周辺装置２０００に読み出すことができる。
【００２４】
ログデータ一時記憶領域１４１は、リングバッファ構造となっている。すなわち、ログデータ一時記憶領域１４１には、ログデータが先頭アドレスから順番に時系列順に書き込まれる。そして、ログデータの格納アドレスが最後尾に到達すると、ラップアラウンドして再び先頭アドレスからログデータが上書きされる。
【００２５】
Ａ／Ｄ変換装置１００から高速にログデータを取得する場合、ＣＰＵ装置３００の演算部３２０は、制御部１２２によりログデータ一時記憶領域１４１に格納されているログデータが上書きされる前に、内部メモリ３３０に読み出す必要がある。そこで、ログデータ一時記憶領域１４１を３以上の領域に分割し、それぞれ、転送領域、実行領域、マージン領域のいずれかに割り当てる。図３において、ログデータ一時記憶領域１４１は、４つの領域に分割され、領域（ａ）は、実行領域、領域（ｂ）、領域（ｃ）、領域（ｄ）は、マージン領域である。制御部１２２は、Ａ／Ｄ変換部１３０を起動し、ロギングを開始すると、デジタル値入力部１２４に対し、ログデータをログデータ一時記憶領域１４１の実行領域に格納させるよう制御する。制御部１２２は、当該実行領域へのログデータの格納が完了すると、当該実行領域を転送領域とし、次の領域に新たなログデータを格納させるよう制御する。図３において、制御部１２２は、領域（ａ）へのログデータの格納を終えると、領域（ａ）を転送領域とし、領域（ｂ）を実行領域として、領域（ｂ）へログデータを格納させる。入力演算器１２０の制御部１２２は、ログデータ一時記憶領域１４１の前記実行領域分のロギングが完了したことを、バスＩ／Ｆ１５０、ユニット間バス５００及びバスＩ／Ｆ３５０を介して、ＣＰＵ装置３００の演算部３２０へ通知する。また、制御部１２２は、領域（ａ）に割り当てられたデータ量、及びログデータ一時記憶領域１４１において最後にログデータを格納したアドレスも、ＣＰＵ装置３００の演算部３２０へ通知する。演算部３２０は、当該通知を受けると、割込みプログラム実行部３２１により、割込みプログラムを実行させる。演算部３２０は、当該割込みプログラムにより、ログデータ一時記憶領域１４１の転送領域に格納されているログデータを内部メモリ３３０に読み出す。
【００２６】
前記手順を繰り返し実行することにより、サンプリング周期とサイクリック処理の周期との差の影響を受けることなく高速かつ大容量のログデータを内部メモリ３３０に読み出すことができる。内部メモリ３３０は、一般的にＡ／Ｄ変換装置１００の共用メモリ１４０より大きな領域を有する。しかしながら、更にロギング容量を拡大するため、内部メモリ３３０に一定量のログデータが格納された時点で、外部メモリＩ／Ｆ３１０を通して外部メモリ４００に保存しても良い。ここで、外部メモリ４００は専用メモリでも、ＳＤメモリカード及びＣＦカード等の汎用記憶媒体でも良い。
【００２７】
Ａ／Ｄ変換装置１００は、ロギングを継続して実行する。このため、ＣＰＵ装置３００が転送領域に格納されるログデータの読み出しを終える前に、制御部１２２が実行領域へのログデータの格納を終えた場合、ログデータ一時記憶領域１４１に格納され、内部メモリ３３０に読み出されていないログデータは、新たにＡ／Ｄ変換されたログデータにより上書きされる可能性がある。これを防ぐため、ログデータ一時記憶領域１４１は、実行領域と転送領域の他にマージン領域を備える。ＣＰＵ装置３００のログデータ取得が遅れた場合、デジタル値入力部１２４は、新たにＡ／Ｄ変換されたログデータを、ログデータ一時記憶領域１４１のマージン領域に格納する。これにより、ログデータ一時記憶領域１４１に格納され、内部メモリ３３０に読み出されていないログデータが新たにＡ／Ｄ変換されたログデータにより上書きされる恐れがなくなる。なお、ログデータ一時記憶領域１４１を４以上の領域に分割した場合、一つの領域を実行領域、他の一つの領域を転送領域、残りの複数の領域をマージン領域とする。これにより、マージン領域を拡大できる。なお、ログデータ一時記憶領域１４１の分割数は、ユーザが適宜変更できる構成にしても良い。
【００２８】
次に、図３及び図４に基づいて、この実施の形態におけるＡ／Ｄ変換装置１００によるロギングの手順を説明する。図４は、この実施の形態におけるＡ／Ｄ変換装置１００の制御部１２２の動作を示すフローチャートである。図３において、ログデータ一時記憶領域１４１は、第一の領域、第二の領域、第三の領域、及び第四の領域の４つの領域に分割され、第一の領域へのログデータの格納が完了した状態を示している。
【００２９】
図４において、ステップ（以下、Ｓと称す。）１０１で、制御部１２２は、ログデータ一時記憶領域１４１における各領域のデータ量を決定する。具体的には、制御部１２２は、ログデータ一時記憶領域１４１の容量Ｎワードを分割する領域の数で割り、各領域のデータ量を決定する。図３において、Ｎワードを４つの領域に分割するので、各領域のデータ量はＮ／４ワードである。
【００３０】
Ｓ１０２で、制御部１２２は、Ｓ１０１で決定した各領域のデータ量を記憶部である共用メモリ１４０に格納する。
【００３１】
Ｓ１０３で、制御部１２２は、Ａ／Ｄ変換部１３０を起動し、ロギングを開始する。
【００３２】
Ｓ１０４で、制御部１２２は、デジタル値入力部１２４に対し、Ａ／Ｄ変換部１３０で変換されたログデータをログデータ一時記憶領域１４１の実行領域に格納するよう制御する。実行領域にログデータが格納されていない場合、デジタル値入力部１２４は、Ａ／Ｄ変換部１３０で変換されたログデータを実行領域の先頭アドレスに格納させる。実行領域にログデータが格納されている場合、デジタル値入力部１２４は、Ａ／Ｄ変換部１３０で変換されたログデータを、最後にログデータが格納されたアドレスの次のアドレスに格納させる。なお、１アドレスには、１ワードのログデータが格納される。
【００３３】
Ｓ１０５で、制御部１２２は、Ｓ１０４でログデータを格納したアドレスを記憶部である共用メモリ１４０に格納する。
【００３４】
Ｓ１０６で、制御部１２２は、Ｓ１０４で格納したデータ量の分、カウンタ１２１をカウントアップさせる。
【００３５】
Ｓ１０７で、制御部１２２は、カウンタ１２１のカウント値が共用メモリ１４０に格納されている領域のデータ量に達したかを判断する。制御部１２２は、カウンタ１２１のカウント値が共用メモリ１４０に格納されている領域のデータ量に達した場合、Ｓ１０８に進む。一方、制御部１２２は、カウンタ１２１のカウント値が共用メモリ１４０に格納されている領域のデータ量に達していない場合、Ｓ１０５に戻り、ロギングを継続する。
【００３６】
Ｓ１０８で、制御部１２２は、ＣＰＵ装置３００に対し、ログデータ取出要求、最後にログデータを格納したアドレス、Ｓ１０２で共用メモリ１４０に格納した領域のデータ量を通知する。制御部１２２は、ログデータ取出要求を通知すると、ログデータ一時記憶領域１４１の実行領域を転送領域とし、最後にログデータを格納したアドレスの次のアドレスを含む領域を実行領域とする。図３において、制御部１２２は、領域（ａ）を転送領域とし、領域（ｂ）を実行領域とする。
【００３７】
Ｓ１０９で、制御部１２２は、カウンタ１２１のカウント値をクリアして、Ｓ１０４に戻り、ロギングを継続する。
【００３８】
次に、図５及び図６に基づいて、この実施の形態におけるログデータ一時記憶領域１４１の転送領域に格納されるログデータをＣＰＵ装置３００の内部メモリ３３０へ転送する割込みプログラムの動作を説明する。図５は、この実施の形態におけるログデータ一時記憶領域１４１の領域の状態遷移を説明する図である。図６は、この実施の形態における割込みプログラム実行部３２１の動作を示すフローチャートである。図４において、Ｓ１０８で、制御部１２２がＣＰＵ装置３００に対し、ログデータ取出要求を通知すると、割込みプログラム実行部３２１は、転送領域のログデータを内部メモリ３３０に転送する割込みプログラムを実行する。
【００３９】
図５において、左図は、領域（ａ）を実行領域、領域（ｂ）、領域（ｃ）、領域（ｄ）をマージン領域とし、実行領域へのログデータの格納を終えた状態を示す。実行領域へのログデータの格納を終えると、制御部１２２は、ＣＰＵ装置３００に対し、領域（ａ）に格納されるログデータの取出要求、最後にログデータを格納したアドレス、領域（ａ）に割り当てられたデータ量を通知する。最後にログデータを格納したアドレスとは、図５の左図において、時刻（Ｎ／４）Ｔのログデータを格納しているアドレスである。中央図は、領域（ａ）を転送領域、領域（ｂ）を実行領域、領域（ｃ）、領域（ｄ）をマージン領域とし、領域（ｂ）にログデータを格納している状態を示す。ＣＰＵ装置３００が領域（ａ）に格納されるログデータを読み取っている間、制御部１２２は、領域（ｂ）にＡ／Ｄ変換部１３０から出力されるログデータを格納させる。右図は、領域（ｂ）を転送領域、領域（ｃ）を実行領域、領域（ｄ）及び領域（ａ）をマージン領域とし、領域（ｃ）にログデータを格納している状態を示す。ＣＰＵ装置３００が領域（ｂ）に格納されるログデータを読み取っている間、制御部１２２は、領域（ｃ）にＡ／Ｄ変換部１３０から出力されるログデータを格納させる。
【００４０】
図６において、Ｓ２０１で、割込みプログラム実行部３２１は、ログデータ一時記憶領域１４１の転送領域から、ログデータを読み取り、内部メモリ３３０に格納する。
【００４１】
Ｓ２０２で、割込みプログラム実行部３２１は、読み取ったデータ量が共用メモリ１４０に格納されている領域のデータ量に達したかを判断する。割込みプログラム実行部３２１は、読み取ったデータ量が共用メモリ１４０に格納されている領域のデータ量に達した場合、Ｓ２０３に進む。一方、割込みプログラム実行部３２１は、読み取ったデータ量が共用メモリ１４０に格納されている領域のデータ量に達していない場合、Ｓ２０１に戻り、ログデータの読み取りを継続する。
【００４２】
Ｓ２０３で、割込みプログラム実行部３２１は、内部メモリ３３０に格納したデータ量が予め決められたデータ量に達したかを判断する。割込みプログラム実行部３２１は、内部メモリ３３０に格納したデータ量が予め決められたデータ量に達した場合、Ｓ２０４に進む。一方、割込みプログラム実行部３２１は、内部メモリ３３０に格納したデータ量が予め決められたデータ量に達していない場合、割込みプログラムを終了する。
【００４３】
Ｓ２０４で、割込みプログラム実行部３２１は、内部メモリ３３０に格納されているログデータを外部メモリ４００へ転送し、割込みプログラムを終了する。なお、ＰＬＣシステムが外部メモリ４００を備えない場合、Ｓ２０３とＳ２０４を省略する。
【００４４】
なお、Ｓ２０１で、ログデータ一時記憶領域１４１の転送領域からログデータを読み取る方式は、ログデータを１点ずつ読み取っても良いし、複数点まとめて読み取っても良い。
【００４５】
以上述べたように、この実施の形態におけるＡ／Ｄ変換装置１００にあっては、サンプリング周期がサイクリック処理の周期よりも短い場合であっても、Ａ／Ｄ変換部１３０のサンプリング速度を落とさずにロギングが可能であり、ロギングしたデータを取りこぼすことなくＣＰＵ装置３００の内部メモリ３３０へ転送できる。また、ログデータ一時記憶領域１４１内に、実行領域及び転送領域の他に、マージン領域を設けることにより、ＣＰＵ装置３００の演算部３２０がログデータ取出要求通知に対する割込みプログラムよりも優先度の高いプログラムを実行している場合であっても、転送領域に格納されているログデータが上書きされてしまうことを防げる。さらに、ＰＬＣシステムが外部メモリ４００を備える場合、ＣＰＵ装置３００の内部メモリ３３０に格納されたログデータを外部メモリ４００へ転送するので、Ａ／Ｄ変換装置１００の共用メモリ１４０の容量に依存することなく、高速かつ大容量のロギングを実行できる。
【００４６】
また、この実施の形態におけるＡ／Ｄ変換装置１００にあっては、アナログデータをデジタルデータに変換するＡ／Ｄ変換部１３０と、第一及び第二の領域に分割されＡ／Ｄ変換部１３０による変換後のデジタルデータを格納するリングバッファ構造のログデータ一時記憶領域１４１を備える共用メモリ１４０と、Ａ／Ｄ変換部１３０による変換後のデジタルデータをログデータ一時記憶領域１４１の第一の領域に格納させ当該格納したデジタルデータのデータ量が第一の領域に割り当てられたデータ量と一致した場合に、第一の領域に格納されているデジタルデータを出力可能にするとともにＡ／Ｄ変換部１３０により新たに変換されたデジタルデータを第二の領域に格納させる制御部１２２とを備える。これにより、Ａ／Ｄ変換を継続しながら転送領域に格納されるログデータをＣＰＵ装置３００の内部メモリ３３０に転送できるので、高速Ａ／Ｄ変換を継続して実行することができる。
【００４７】
また、この実施の形態におけるＡ／Ｄ変換装置１００にあっては、ログデータ一時記憶領域１４１は、第一、第二及び第三の領域に分割され、制御部１２２は、第二の領域に格納したデジタルデータのデータ量が第二の領域に割り当てられたデータ量と一致したときに第一の領域に格納されているデジタルデータを出力している場合に、第二の領域に格納されているデジタルデータを出力可能にするとともに第一の領域に格納されているデジタルデータの出力を継続しＡ／Ｄ変換部１３０により新たに変換されたデジタルデータを第三の領域に格納させる。これにより、実行領域へのログデータの格納を完了したときに転送領域に格納されているログデータの転送が完了していない場合に、制御部１２２は、Ａ／Ｄ変換後のデジタルデータであるログデータをマージン領域に格納させるので、転送されていないログデータが新たにＡ／Ｄ変換されたログデータに上書き消去される恐れがなくなる。
【００４８】
また、この実施の形態におけるＡ／Ｄ変換装置１００にあっては、制御部１２２は、記憶部に、ログデータ一時記憶領域１４１を構成する各領域に割り当てられたデータ量及びＡ／Ｄ変換部１３０による変換後のデジタルデータが最後に格納されたアドレスを格納させ、ログデータ一時記憶領域１４１のいずれかの領域に格納されたデジタルデータのデータ量が当該領域に割り当てられたデータ量と一致した場合に、当該領域に格納されているデジタルデータの取出要求と当該領域に割り当てられたデータ量とＡ／Ｄ変換部１３０による変換後のデジタルデータが最後に格納されたアドレスとを出力する。これにより、ＣＰＵ装置３００は、制御部１２２から通知された情報に基づいて、ログデータを取得できる。
【００４９】
また、この実施の形態におけるＡ／Ｄ変換装置１００にあっては、ログデータ一時記憶領域１４１のいずれかの領域に格納されたデジタルデータのデータ量をカウントするカウンタ１２１を備え、制御部１２２は、カウンタ１２１のカウント値が当該領域に割り当てられたデータ量と一致した場合に、カウント値をリセットする。これにより、制御部１２２は、カウンタ１２１のカウント値が予め決められた値に達した場合に、ＣＰＵ装置３００に対しログデータの取出要求を通知することができる。
【００５０】
なお、ログデータ一時記憶領域１４１は、３つ以上の領域に分割されるとしたが、２つの領域に分割されても良い。この場合、制御部１２２は、ログデータ一時記憶領域１４１の一方の領域にログデータを格納させながら、他方の領域に格納されているログデータをＣＰＵ装置３００の内部メモリ３３０に転送できる。これにより、サンプリング周期とサイクリック処理の周期との差の影響を受けることなく高速かつ大容量のログデータを内部メモリ３３０に読み出すことができる。
【００５１】
なお、内部メモリ３３０は、ログデータ一時記憶領域１４１と同様のリングバッファ構造としても良い。この場合、演算部３２０は、ログデータ一時記憶領域１４１から内部メモリ３３０へ格納したログデータが最後尾に到達したとき、ラップアラウンドして再び先頭アドレスからログデータを上書きする。
【００５２】
なお、Ａ／Ｄ変換装置１００は、一つのリングバッファ構造のメモリをログデータ一時記憶領域１４１として備えるとしたが、これに限らない。Ａ／Ｄ変換装置１００は、一般的に、入力チャネルを複数備えるため、複数のリングバッファ構造のメモリを実装し、並列に処理を行っても良い。
【００５３】
なお、ＣＰＵ装置３００が、ログデータ一時記憶領域１４１に格納されるログデータを読み取るとしたが、これに限らない。例えば、ＰＬＣシステムに接続されるデータロガー等により、ログデータの読み取りが行われても良い。
【００５４】
なお、サンプリング周期がサイクリック処理の周期より長くてもシステムが満足する場合、割込みプログラムを使用せずに、ＣＰＵ装置３００のサイクリック処理の周期毎にデータの読み取りを行っても良い。この場合、図４における、Ｓ１０１及びＳ１０６からＳ１０９の処理を省略しても良い。
【００５５】
実施の形態２．
図１は、この発明に係るＰＬＣシステムの構成図である。この実施の形態におけるＰＬＣシステムは、実施の形態１と同態様である。
【００５６】
図７は、この実施の形態におけるＤ／Ａ変換装置２００の構成図である。Ｄ／Ａ変換装置２００は、Ｄ／Ａ変換装置全体を制御する演算部２１０、Ｄ／Ａ変換して出力する値を演算するための出力演算器２２０、デジタルデータをＤ／Ａ変換するＤ／Ａ変換部２３０、ＣＰＵ装置３００から書き込み可能な共用メモリ２４０、ユニット間バス５００を介して接続した装置と通信を行うための通信インタフェースであるバスＩ／Ｆ２５０とを備える。共用メモリ２４０は、記憶部である。Ｄ／Ａ変換装置２００は、ＣＰＵ装置３００内で処理されたデジタルデータをアナログデータに変換し、該アナログデータ（Ｄ／Ａ変換値）を、ＰＬＣ１０００が制御対象とする産業用機器等に出力する。共用メモリ２４０に格納されているデジタルデータは、前述のサイクリック処理に含まれる産業用機器を制御するためのプログラムであるユーザプログラムの実行結果の出力として、ＣＰＵ装置３００から転送される。
【００５７】
次に、Ｄ／Ａ変換装置２００内の共用メモリ２４０について説明する。図８は、この実施の形態におけるＤ／Ａ変換装置２００の波形データ列一時記憶領域２４１及び波形データ列一時記憶領域２４１に格納されるデータの構造を示す図である。共用メモリ２４０には、ＣＰＵ装置３００によるサイクリック処理により出力されるデジタルデータを波形データ列として記憶するための一時記憶領域である波形データ列一時記憶領域２４１を備える。波形データ列とは、複数のデジタル値からなるデジタルデータ列である。波形データ列は任意の点数から構成することができる。点数とは、データ量を意味する。１点は、例えば１６ビットまたは３２ビットに相当し、１つのデジタル値に対応する。通常、デジタルデータをサンプリングしてアナログデータに変換する周期（サンプリング周期）は、サイクリック処理の周期より短い。このため、Ｄ／Ａ変換装置２００が波形データ列一時記憶領域２４１に書き込まれた波形データ列を連続して出力するためには、Ｄ／Ａ変換装置２００は、波形を出力しながら、ＣＰＵ装置３００の内部メモリ３３０から波形データ列を読み取る必要がある。そこで、Ｄ／Ａ変換装置２００が高速にデータを読み出すことができ、かつＣＰＵ装置３００が煩雑な通信処理を実行することなく波形データ列の書き込むことができる共用メモリ２４０に、波形データ列一時記憶領域２４１を確保している。
【００５８】
波形データ列一時記憶領域２４１は、リングバッファ構造となっている。すなわち、波形データ列一時記憶領域２４１に格納された波形データ列は、先頭アドレスから順番に読み出される。そして、波形データ列の読み出しアドレスが最後尾に到達すると、ラップアラウンドして再び先頭アドレスから波形データ列が読み出される。
【００５９】
Ｄ／Ａ変換装置２００から高速かつ大容量の連続的な波形出力を行う場合、先ずＣＰＵ装置３００の演算部３２０は、内部メモリ３３０上に大容量の波形データ列を用意し、波形データ列一時記憶領域２４１の容量分の波形データ列を波形出力開始前に転送しておく。波形出力開始後は、Ｄ／Ａ変換装置２００の制御部２２２は、波形データ列一時記憶領域２４１に格納している波形データ列をすべて出力する前に、内部メモリ３３０から波形データ列を読み出す必要がある。そこで、波形データ列一時記憶領域２４１を３以上の領域に分割し、それぞれ、転送領域、実行領域、マージン領域のいずれかに割り当てる。図８において、波形データ列一時記憶領域２４１は、４つの領域に分割され、領域（ａ）は、実行領域、領域（ｂ）、領域（ｃ）、領域（ｄ）は、マージン領域である。制御部２２２は、Ｄ／Ａ変換部２３０を起動し、波形出力を開始すると、デジタル値出力部２２４に対し、波形データ列一時記憶領域２４１の実行領域から波形データ列を読み出すよう制御する。制御部２２２は、当該実行領域からの波形データ列の読み出しが完了すると、当該実行領域を転送領域とし、次の領域から波形データ列を読み出すよう制御する。図８において、制御部２２２は、領域（ａ）からの波形データ列の出力を終えると領域（ａ）を転送領域とし、領域（ｂ）を実行領域として、領域（ｂ）に格納される波形データ列を出力させる。出力演算器２２０の制御部２２２は、波形データ列一時記憶領域２４１の実行領域分の波形データ列の読み出しが完了したことを、バスＩ／Ｆ２５０、ユニット間バス５００及びバスＩ／Ｆ３５０を介して、ＣＰＵ装置３００の演算部３２０へ通知する。また、制御部２２２は、実行領域に割り当てられたデータ量、及び波形データ列一時記憶領域１４１において最後に波形データ列を出力したアドレスも、ＣＰＵ装置３００の演算部３２０へ通知する。演算部３２０は、当該通知を受けると、割込みプログラム実行部３２１により、割込みプログラムを実行させる。演算部３２０は、当該割込みプログラムにより、内部メモリ３３０から波形データ列一時記憶領域２４１の転送領域へ波形データ列を転送する。
【００６０】
前記手順を繰り返し実行することにより、サンプリング周期とサイクリック処理の周期との差の影響を受けることなく高速かつ大容量の波形データ列を出力することができる。内部メモリ３３０は、一般的にＤ／Ａ変換装置２００の共用メモリ２４０より大きな領域を有する。しかしながら、更に出力波形容量を拡大するため、外部メモリ４００に内部メモリ３３０の容量より大容量の波形データ列を用意しても良い。この場合、内部メモリ３３０から一定量の波形データ列を転送した時点で、外部メモリＩ／Ｆ３１０を通して外部メモリ４００から連続する波形データ列を内部メモリ３３０に転送する。ここで、外部メモリ４００は専用メモリでも、ＳＤメモリカード及びＣＦカード等の汎用記憶媒体でも良い。
【００６１】
Ｄ／Ａ変換装置２００は、波形出力を継続して実行する。このため、ＣＰＵ装置３００が転送領域へ波形データ列を転送し終える前に、制御部１２２が実行領域に格納される波形データ列を出力し終えた場合、波形データ列一時記憶領域２４１に格納され、すでに出力されている波形データ列を再出力してしまう可能性がある。これを防ぐため、波形データ列一時記憶領域２４１は、実行領域と転送領域の他にマージン領域を備える。ＣＰＵ装置３００の波形データ列転送が遅れた場合、デジタル値出力部２２４は、マージン領域に格納されている波形データ列を出力する。これにより、波形データ列一時記憶領域２４１に格納されている波形データ列を再出力してしまうのを防げる。なお、波形データ列一時記憶領域２４１を４以上の領域に分割した場合、一つの領域を実行領域、他の一つの領域を転送領域、残りの複数の領域をマージン領域とする。これにより、マージン領域を拡大できる。なお、波形データ列一時記憶領域２４１の分割数は、ユーザが適宜変更できる構成にしても良い。
【００６２】
次に、図８及び図９に基づいて、この実施の形態におけるＤ／Ａ変換装置２００による波形出力の手順を説明する。図９は、この実施の形態におけるＤ／Ａ変換装置２００の制御部２２２の動作を示すフローチャートである。図８は、波形データ列一時記憶領域２４１は、第一の領域、第二の領域、第三の領域、及び第四の領域の４つの領域に分割され、第一の領域に格納された波形データ列の出力が完了した状態を示している。
【００６３】
図９において、Ｓ３０１で、制御部２２２は、波形データ列一時記憶領域２４１における各領域のデータ量を決定する。具体的には、制御部２２２は、波形データ列一時記憶領域２４１の大きさＮワードを分割する領域の数で割り、各領域のデータ量を決定する。図８では、Ｎワードを４つの領域に分割するので、各領域のデータ量はＮ／４ワードである。
【００６４】
Ｓ３０２で、制御部２２２は、Ｓ３０１で決定した領域のデータ量を記憶部である共用メモリ２４０に格納する。
【００６５】
Ｓ３０３で、制御部２２２は、ＣＰＵ装置３００の内部メモリ３３０から、波形データ列一時記憶領域２４１の容量分の波形データ列を読み出し、波形データ列一時記憶領域２４１に格納する。
【００６６】
Ｓ３０４で、制御部２２２は、Ｄ／Ａ変換部２３０を起動し、波形出力を開始する。
【００６７】
Ｓ３０５で、制御部２２２は、デジタル値出力部２２４に対し、波形データ列一時記憶領域２４１の実行領域から波形データ列を読み出し、Ｄ／Ａ変換部２３０へ出力するよう制御する。実行領域に格納されている波形データ列がまだ読み出されていない場合、デジタル値出力部２２４は、実行領域の先頭アドレスに格納されている波形データ列を読み出してＤ／Ａ変換部２３０へ出力させる。実行領域に格納されている波形データ列の一部が読み出されている場合、デジタル値出力部２２４は、最後に読み出された波形データ列の次のアドレスに格納されている波形データ列を読み出してＤ／Ａ変換部２３０へ出力させる。なお、１アドレスには、１ワードの波形データ列が格納されている。
【００６８】
Ｓ３０６で、制御部２２２は、波形データ列を出力したアドレスを記憶部である共用メモリ２４０に格納する。
【００６９】
Ｓ３０７で、制御部２２２は、Ｓ３０５で出力したデータ量の分、カウンタ２２１をカウントアップさせる。
【００７０】
Ｓ３０８で、制御部２２２は、カウンタ２２１のカウント値が共用メモリ２４０に格納されている領域のデータ量に達したかを判断する。制御部２２２は、カウンタ２２１のカウント値が共用メモリ２４０に格納されている領域のデータ量に達した場合、Ｓ３０９に進む。一方、制御部２２２は、カウンタ２２１のカウント値が共用メモリ２４０に格納されている領域のデータ量に達していない場合、Ｓ３０６に戻り、波形出力を継続する。
【００７１】
Ｓ３０９で、制御部２２２は、ＣＰＵ装置３００に対し、波形データ列取得要求、最後に波形データ列を出力したアドレス、Ｓ３０２で共用メモリ２４０に格納した領域のデータ量を通知する。制御部２２２は、波形データ列取得要求を通知すると、波形データ列一時記憶領域２４１の実行領域を転送領域とし、最後にデータを格納したアドレスの次のアドレスを含む領域を実行領域とする。図８において、制御部１２２は、領域（ａ）を転送領域とし、領域（ｂ）を実行領域とする。
【００７２】
Ｓ３１０で、制御部２２２は、カウンタ２２１のカウント値をクリアして、Ｓ３０５に戻り、波形出力を継続する。
【００７３】
次に、図１０及び図１１に基づいて、この実施の形態におけるＣＰＵ装置３００の内部メモリ３３０に格納される波形データ列を波形データ列一時記憶領域２４１の転送領域へ転送する割込みプログラムの動作を説明する。図１０は、この実施の形態における波形データ列一時記憶領域２４１の領域の状態遷移を説明する図である。図１１は、この実施の形態における割込みプログラム実行部３２１の動作を示すフローチャートである。図９において、Ｓ３０９で、制御部２２２がＣＰＵ装置３００に対し、波形データ列取得要求を通知すると、割込みプログラム実行部３２１は、ＣＰＵ装置３００の内部メモリ３３０に格納される波形データ列を転送領域へ転送する割込みプログラムを実行する。
【００７４】
図１０において、左図は、領域（ａ）を実行領域、領域（ｂ）、領域（ｃ）、領域（ｄ）をマージン領域とし、実行領域に格納されている波形データ列の出力を終えた状態を示す。実行領域からの波形データ列の出力を終えると、制御部２２２は、ＣＰＵ装置３００に対し、領域（ａ）への波形データ列取得要求、最後に波形データ列を出力したアドレス、Ｓ３０２で共用メモリ２４０に格納した領域のデータ量を通知する。最後に波形データ列を出力したアドレスとは、図１０の左図において、波形データ列（Ｎ／４）を格納しているアドレスである。中央図は、領域（ａ）を転送領域、領域（ｂ）を実行領域、領域（ｃ）、領域（ｄ）をマージン領域とし、領域（ｂ）に格納されている波形データ列を出力している状態を示す。ＣＰＵ装置３００が領域（ａ）へ波形データ列を転送している間、制御部２２２は、領域（ｂ）に格納されている波形データ列を出力させる。右図は、領域（ｂ）を転送領域、領域（ｃ）を実行領域、領域（ｄ）及び領域（ａ）をマージン領域とし、領域（ｃ）に格納されている波形データ列を出力している状態を示す。ＣＰＵ装置３００が領域（ｂ）へ波形データ列を転送している間、制御部２２２は、領域（ｃ）に格納されている波形データ列を出力させる。
【００７５】
図１１において、Ｓ４０１で、割込みプログラム実行部３２１は、内部メモリ３３０から波形データ列を読み取り、波形データ列一時記憶領域２４１の転送領域に格納する。
【００７６】
Ｓ４０２で、割込みプログラム実行部３２１は、内部メモリ３３０から波形データ列一時記憶領域２４１へ転送したデータ量が共用メモリ２４０に格納されている領域のデータ量に達したかを判断する。割込みプログラム実行部３２１は、転送したデータ量が共用メモリ２４０に格納されている領域のデータ量に達した場合、Ｓ４０３に進む。一方、割込みプログラム実行部３２１は、転送したデータ量が共用メモリ２４０に格納されている領域のデータ量に達していない場合、Ｓ４０１に戻り、波形データ列の転送を継続する。
【００７７】
Ｓ４０３で、割込みプログラム実行部３２１は、内部メモリ３３０から転送したデータ量が予め決められたデータ量に達したかを判断する。割込みプログラム実行部３２１は、内部メモリ３３０から転送したデータ量が予め決められたデータ量に達した場合、Ｓ４０４に進む。一方、割込みプログラム実行部３２１は、内部メモリ３３０から転送したデータ量が予め決められたデータ量に達していない場合、割込みプログラムを終了する。
【００７８】
Ｓ４０４で、割込みプログラム実行部３２１は、外部メモリ４００から波形データ列を読み出して内部メモリ３３０に格納し、割込みプログラムを終了する。なお、ＰＬＣシステムが外部メモリ４００を備えない場合、Ｓ４０３とＳ４０４を省略する。
【００７９】
なお、Ｓ４０１で、波形データ列一時記憶領域２４１の転送領域へ波形データ列を転送する方式は、波形データ列を１点ずつ転送しても良いし、複数点まとめて転送しても良い。
【００８０】
以上述べたように、この実施の形態におけるＤ／Ａ変換装置２００にあっては、サンプリング周期がサイクリック処理の周期よりも短い場合であっても、Ｄ／Ａ変換部２３０のサンプリング速度を落とさずに波形出力が可能であり、大容量の波形データ列をＣＰＵ装置３００の内部メモリ３３０から読み出せる。また、波形データ列一時記憶領域２４１実行領域及び転送領域の他に、マージン領域を設けることにより、ＣＰＵ装置３００の演算部３２０が波形データ列取得要求通知に対する割込みプログラムよりも優先度の高いプログラムを実行している場合であっても、転送領域に格納されているデータを再出力してしまうことを防げる。さらに、ＰＬＣシステムが外部メモリ４００を備える場合、外部メモリ４００からＣＰＵ装置３００の内部メモリ３３０に波形データ列を転送するので、Ｄ／Ａ変換装置２００の共用メモリ２４０の容量に依存することなく、高速かつ大容量の波形出力を実行できる。
【００８１】
また、この実施の形態におけるＤ／Ａ変換装置２００にあっては、デジタルデータをアナログデータに変換するＤ／Ａ変換部２３０と、第一及び第二の領域に分割されＤ／Ａ変換部２３０に変換されるデジタルデータを格納するリングバッファ構造の波形データ列一時記憶領域２４１を備える共用メモリ２４０と、第一及び第二の領域それぞれにＤ／Ａ変換部２３０に変換されるデジタルデータが格納されている場合に波形データ列一時記憶領域２４１の第一の領域に格納されているデジタルデータをＤ／Ａ変換部２３０へ出力させ、当該出力したデジタルデータのデータ量が第一の領域に割り当てられたデータ量と一致した場合に、第一の領域にＤ／Ａ変換部２３０により新たに変換されるデジタルデータを書き込み可能にするとともに第二の領域に格納されているデジタルデータをＤ／Ａ変換部２３０へ出力させる制御部２２２とを備える。これにより、Ｄ／Ａ変換を継続しながらＣＰＵ装置３００の内部メモリ３３０から転送された波形データ列を転送領域に格納できるので、高速Ｄ／Ａ変換を継続して実行することができる。
【００８２】
また、この実施の形態におけるＤ／Ａ変換装置２００にあっては、波形データ列一時記憶領域２４１は、第一、第二及び第三の領域に分割され、第一、第二及び第三の領域それぞれにＤ／Ａ変換部２３０に変換されるデジタルデータを格納し、制御部２２２は、第二の領域に格納されているデジタルデータをＤ／Ａ変換部２３０へ出力し終えたときに第一の領域へＤ／Ａ変換部２３０により新たに変換されるデジタルデータの格納を行っている場合に、第二の領域にＤ／Ａ変換部２３０により新たに変換されるデジタルデータを書き込み可能にするとともに第一の領域へのＤ／Ａ変換部２３０により新たに変換されるデジタルデータの格納を継続し第三の領域に格納されているデジタルデータをＤ／Ａ変換部２３０へ出力させる。これにより、実行領域に格納されている波形データ列をＤ／Ａ変換部２３０へ出力し終えたときにＣＰＵ装置３００の内部メモリ３３０から転送領域への波形データ列の転送が完了していない場合に、制御部２２２は、マージン領域に格納されているデータをＤ／Ａ変換部２３０へ出力するので、Ｄ／Ａ変換済みの波形データ列を再出力する恐れがなくなる。
【００８３】
また、この実施の形態におけるＤ／Ａ変換装置２００にあっては、制御部２２２は、記憶部に、波形データ列一時記憶領域２４１を構成する各領域に割り当てられたデータ量及びＤ／Ａ変換部２３０に変換されるデジタルデータが最後に出力されたアドレスを格納させ、波形データ列一時記憶領域２４１のいずれかの領域に格納されたデジタルデータを出力し終えた場合に、当該領域へのデジタルデータの取得要求と当該領域に割り当てられたデータ量とＤ／Ａ変換部２３０に変換されるデジタルデータが最後に出力されたアドレスとを出力する。これにより、ＣＰＵ装置３００は、制御部２２２から通知された情報に基づいて、波形データ列を転送できる。
【００８４】
また、この実施の形態におけるＤ／Ａ変換装置２００にあっては、波形データ列一時記憶領域２４１のいずれかの領域から出力されたデジタルデータのデータ量をカウントするカウンタ２２１を備え、制御部２２２は、カウンタ２２１のカウント値が当該領域に割り当てられたデータ量と一致した場合に、カウント値をリセットする。これにより、制御部２２２は、カウンタ２２１のカウント値が予め決められた値に達した場合に、ＣＰＵ装置３００に対し波形データ列の取得要求を通知することができる。
【００８５】
また、この発明に係るＰＬＣ１０００にあっては、実施の形態１に記載のＡ／Ｄ変換装置１００と、実施の形態２に記載のＤ／Ａ変換装置２００と、デジタルデータを格納する内部メモリ３３０を備え、Ａ／Ｄ変換装置１００がＡ／Ｄ変換装置１００のログデータ一時記憶領域１４１に格納されているデジタルデータを出力すると当該デジタルデータを内部メモリ３３０に格納し、Ｄ／Ａ変換装置２００の波形データ列一時記憶領域２４１に格納するデジタルデータを内部メモリ３３０から出力するＣＰＵ装置３００とを備える。これにより、ＰＬＣ１０００は、高速Ａ／Ｄ変換を継続して実行しながらログデータを取得でき、かつ、高速Ｄ／Ａ変換を継続して実行しながら波形データ列を出力できる。
【００８６】
なお、波形データ列一時記憶領域２４１は、３つ以上の領域に分割されるとしたが、２つの領域に分割されても良い。この場合、制御部２２２は、波形データ列一時記憶領域２４１の一方の領域に格納される波形データ列を出力させながら、他方の領域にＣＰＵ装置３００の内部メモリ３３０から取得した波形データ列を格納させられる。これにより、サンプリング周期とサイクリック処理の周期との差の影響を受けることなく高速かつ大容量の波形出力が可能になる。
【００８７】
なお、内部メモリ３３０は、波形データ列一時記憶領域２４１と同様のリングバッファ構造としても良い。この場合、演算部３２０は、外部メモリ４００から内部メモリ３３０へ格納した波形データ列が最後尾に到達したとき、ラップアラウンドして再び先頭アドレスから波形データ列を上書きする。
【００８８】
なお、Ｄ／Ａ変換装置２００は、一つのリングバッファ構造のメモリを波形データ列一時記憶領域２４１として備えるとしたが、これに限らない。Ｄ／Ａ変換装置２００は、一般的に、出力チャネルを複数備えるため、複数のリングバッファ構造のメモリを実装し、並列に処理を行っても良い。
【００８９】
なお、サンプリング周期がサイクリック処理の周期より長くてもシステムが満足する場合、割込みプログラムを使用せずに、ＣＰＵ装置３００のサイクリック処理の周期毎にデータの転送を行っても良い。この場合、図９における、Ｓ３０１及びＳ３０７からＳ３１０及びＳ１０８の処理を省略しても良い。
【符号の説明】
【００９０】
１００  Ａ／Ｄ変換装置、１１０  演算部、１２０  入力演算器、１２１  カウンタ、１２２  制御部、１２４  デジタル値入力部、１３０  Ａ／Ｄ変換部、１４０  共用メモリ、１４１  ログデータ一時記憶領域、１５０  バスＩ／Ｆ、２００  Ｄ／Ａ変換装置、２１０  演算部、２２０  出力演算器、２２１  カウンタ、２２２  制御部、２２４  デジタル値出力部２３０  Ｄ／Ａ変換部、２４０  共用メモリ、２４１  波形データ列一時記憶領域、３００  ＣＰＵ装置、３１０  外部メモリＩ／Ｆ、３２０  演算部、３２１  割込みプログラム実行部、３３０  内部メモリ、３４０  周辺装置Ｉ／Ｆ、３５０  バスＩ／Ｆ、４００  外部メモリ、５００  ユニット間バス、１０００  ＰＬＣ、２０００  周辺装置
【要約】
高速のＡ／Ｄ変換を継続して実行できるＡ／Ｄ変換装置、高速Ｄ／Ａ変換を継続して実行できるＤ／Ａ変換装置、及び前記Ａ／Ｄ変換装置と前記Ｄ／Ａ変換装置を備えるＰＬＣを得る。
データ変換部１３０、２３０と、第一及び第二の領域に分割される一時記憶領域１４１、２４１を備える共用メモリ１４０、２４０と、前記一時記憶領域１４１、２４１において、予め決められたデータ量のアクセスがあった場合に、当該アクセスのあったアドレスに格納されるデータを出力させる制御部１２２または当該アドレスに新たなデータを格納させる制御部２２２とを備える。【図１】
0005987203.tif 000002
【図２】
0005987203.tif 000003
【図３】
0005987203.tif 000004
【図４】
0005987203.tif 000005
【図５】
0005987203.tif 000006
【図６】
0005987203.tif 000007
【図７】
0005987203.tif 000008
【図８】
0005987203.tif 000009
【図９】
0005987203.tif 000010
【図１０】
0005987203.tif 000011
【図１１】
0005987203.tif 000012