JP2002099312A - プログラマブルコントローラおよび制御プログラム開発支援装置 - Google Patents

プログラマブルコントローラおよび制御プログラム開発支援装置

Info

Publication number
JP2002099312A
JP2002099312A JP2000289373A JP2000289373A JP2002099312A JP 2002099312 A JP2002099312 A JP 2002099312A JP 2000289373 A JP2000289373 A JP 2000289373A JP 2000289373 A JP2000289373 A JP 2000289373A JP 2002099312 A JP2002099312 A JP 2002099312A
Authority
JP
Japan
Prior art keywords
control program
code
programmable controller
support device
development support
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2000289373A
Other languages
English (en)
Inventor
Hideaki Minamide
英明 南出
Teruaki Tanaka
輝明 田中
Yoshiko Shiomoto
佳子 塩本
Shigeki Namikado
茂樹 南角
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2000289373A priority Critical patent/JP2002099312A/ja
Priority to US09/777,954 priority patent/US7203931B2/en
Priority to DE10116809A priority patent/DE10116809A1/de
Publication of JP2002099312A publication Critical patent/JP2002099312A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Programmable Controllers (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】 より高速なシーケンス処理を実現するプログ
ラマブルコントローラと制御プログラム開発支援装置を
得ること。 【解決手段】 高速化実装技術により構築された汎用マ
イクロプロセッサ11を搭載したプログラマブルコント
ローラ10においてシーケンス処理を実行させるため
に、制御プログラム開発支援装置20がその汎用マイク
ロプロセッサ11において直接実行可能な実行コードを
生成する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、インストラクシ
ョンリストやラダーダイヤグラム等の制御プログラムを
コンパイルすることで生成された実行コードに基づいて
シーケンス処理をおこなうプログラマブルコントローラ
と上記制御プログラムのコンパイルやデバッグ等をおこ
なう制御プログラム開発支援装置に関するものである。
【0002】
【従来の技術】産業界の現場、特に生産現場においては
規模の大小に関わらず生産設備や生産方式が激変してき
ており、生産のための設備や装置における電気系制御機
器の範囲も年々増加してきている。そこで、そのような
環境の中で、如何に機械系と連携を取り、如何に合理的
にコストパフォーマンスを高め、高速にかつ取り扱いや
すいユーザインターフェースを実現させるかが重要とな
っている。
【0003】これを成功させる手法の一つとして、プロ
グラマブルコントローラ(PC)およびそれを制御する
ための開発環境が実用化されている。プログラマブルコ
ントローラは、プログラマブルロジックコントローラ
(PLC)やシーケンサとも呼ばれており、一般に、シ
ーケンス処理用の特別な制御プログラムの記述にしたが
って動作する。
【0004】シーケンス処理は、各種センサや各種スイ
ッチ等の入力デバイスから信号を入力し、入力した信号
の状態に応じて、または特定の順番によって、表示機器
や電磁リレー等の出力デバイスに対して制御信号を送出
することを基本的な流れとしている。すなわち、制御プ
ログラムは、このシーケンス処理の流れを記述したもの
である。
【0005】一般に、この制御プログラムは、パーソナ
ルコンピュータ等の汎用コンピュータやプログラムロー
ダ(以下、制御プログラム開発支援装置と称する。)で
開発され、プログラマブルコントローラへは、通信イン
ターフェースを介して転送される。
【0006】制御プログラムを記述する言語のうち代表
的なものとして、ラダーダイヤグラム方式、ファンクシ
ョンブロックダイアグラム方式、構造化言語(Stru
ctured Text)方式およびSFC(Sequ
ential Function Chart)方式が
知られている。特に、ラダーダイヤグラム方式は、回路
図がはしご状に描かれ、両端の垂直な二つの線が動力を
シンボリックに表わし、その間で水平に結ぶ平行な線上
にリレー接点回路の動力の流れが示される方式であり、
最も広く使用されている言語である。
【0007】このラダーダイヤグラム方式では、制御プ
ログラム開発支援装置を用いて、まず、上記したように
人間が直感的に理解しやすい図記号の配置によってシー
ケンス処理の流れを表現し、つづいて、制御プログラム
開発支援装置のコンバータ等により、この図記号の配置
を、プログラマブルコントローラが解釈できるニーモニ
ックコードで表したインストラクションリストに変換す
る。
【0008】よって、プログラマブルコントローラは、
このインストラクションリストを受信し、そのインスト
ラクションリストが示す命令にしたがったシーケンス処
理を実行する形態を採用している場合がある。この場
合、プログラマブルコントローラは、受信したインスト
ラクションリストを一行ずつインタプリーティングする
こと、すなわちプログラマブルコントローラに搭載され
たマイクロプロセッサにおいて直接実行可能なコードに
変換することで逐次的に制御プログラムを実行する。以
下において、このプログラマブルコントローラをインタ
プリタ型プログラマブルコントローラと称する。
【0009】また、他のプログラマブルコントローラと
して、プログラマブルコントローラに搭載されたマイク
ロプロセッサにおいて直接実行可能な実行コードを、制
御プログラム開発支援装置から受信して実行するコンパ
イル型プログラマブルコントローラも実用化されてい
る。このコンパイル型プログラマブルコントローラを利
用する形態では、制御プログラム開発支援装置にコンパ
イラを備えており、制御プログラム開発支援装置は、そ
のコンパイラによってラダーダイヤグラムを直接、また
は一旦インストラクションリストに変換した後、上記マ
イクロプロセッサにおいて直接実行可能な実行コードに
コンパイルし、その実行コードをプログラマブルコント
ローラに転送する。
【0010】ところが、上記した制御プログラムは、プ
ログラマブルコントローラのベンダーや機種に依存して
おり、同じシーケンス処理を、同一のソースコードの制
御プログラムを使用して、異なる機種のプログラマブル
コントローラ間で実行することはできなかった。そのた
め、制御プログラムの新たな開発や新機種または異機種
のプログラマブルコントローラへの移植作業が必要とな
り、過去の制御プログラムの資産を活用することが困難
であった。
【0011】そこで、制御プログラムを、ラダーダイヤ
グラムやインストラクションリスト等の従来のシーケン
ス処理用の言語ではなく、パーソナルコンピュータで用
いられる高級プログラミング言語で記述し、その高級プ
ログラミング言語をコンパイラによってコンパイルする
ことにより実行コードを得る方法が提案されている。
【0012】例えば、特開平7−295612号に開示
の「高級言語シーケンス命令プログラム生成装置および
汎用シーケンサ」によれば、高級言語シーケンス命令プ
ログラム生成装置が、翻訳プログラムによってシーケン
ス命令言語シーケンス命令プログラムを高級言語シーケ
ンス命令プログラムに翻訳し、高級言語シーケンス命令
プログラム生成装置が、その高級言語シーケンス命令プ
ログラムをコンパイルして実行形式シーケンス命令プロ
グラム生成する。または、汎用シーケンサが、上記高級
言語シーケンス命令プログラムを順にインタプリーティ
ングしながら実行する。これにより、シーケンサのベン
ダーや機種を問わず、同じ制御プログラムによって、シ
ーケンス制御を実行することができる。
【0013】また、プログラムコントローラに記憶され
た制御プログラムの内容を更新する方法として、二つの
方法が知られている。一つは、プログラマブルコントロ
ーラに新規に制御プログラムを転送する場合と同様の手
順で、制御プログラム開発支援装置が、停止状態にある
プログラマブルコントローラに対して制御プログラムを
転送し、プログラマブルコントローラはその制御プログ
ラムの受信が完了した後に、実行処理に移行するという
方法である。
【0014】もう一つは、プログラマブルコントローラ
は、実行中の制御プログラムの内容を、実行状態を継続
しつつ新しい制御プログラムの内容に置き換える方法
(以下、RUN中書き込み方法と称する。)である。通
常、プログラマブルコントローラは、実行すべき各命令
に一対一に対応したバイナリコード列のループを繰り返
しインタプリーティングして実行することで動作してい
るが、この方法は、まず、空いているメモリ空間に新し
い制御プログラムを読み込み、読み込み完了後、上記ル
ープの開始または終了タイミングにおいて、元の制御プ
ログラムの実行を停止するとともに新しい制御プログラ
ムの実行を開始することで実現される。
【0015】なお、上記した制御プログラム開発支援装
置によって実現される制御プログラムの開発やデバッギ
ングと、プログラマブルコントローラのシーケンス処理
とを一つの装置で実現した、いわゆるソフトウェアプロ
グラマブルコントローラも実用化されている。このソフ
トウェアプログラマブルコントローラの装置構成は、汎
用コンピュータの装置構成と同等であり、外部の入力デ
バイスおよび出力デバイスに対するシーケンス処理をソ
フトウェア的に実現している。
【0016】
【発明が解決しようとする課題】しかしながら、上述し
たような従来のプログラマブルコントローラおよび制御
プログラム開発支援装置には、以下の問題点がある。
【0017】第1に、近年においてパーソナルコンピュ
ータ等の汎用コンピュータに搭載されるマイクロプロセ
ッサ(以下、汎用マイクロプロセッサと称する。)が高
機能かつ高速に動作し、また安価に入手できることか
ら、従来のプログラマブルコントローラに搭載されたマ
イクロプロセッサをASIC(Application
Specific IC)によって開発する利点が薄れ
つつあるという問題がある。
【0018】特に、汎用マイクロプロセッサでは、1次
キャッシュおよび2次キャッシュを備えるとともに、パ
イプライン処理、スーパスケーラ処理およびアウトオブ
オーダ処理等の高速化実装技術によって構築されてお
り、その汎用マイクロプロセッサにおいて直接実行可能
な実行コードもまた、上記高速化実装技術を最大限に生
かして最適なコード体系となるような実行コードに変換
するコンパイラによって生成されている。
【0019】このような汎用コンピュータのコンパイラ
の多くは、ユーザが理解しやすい高級プログラミング言
語によって記述されたプログラムをコンパイルするの
で、そのようなコンパイラを含めて、プログラマブルコ
ントローラに汎用プロセッサを搭載してシーケンス処理
を実行させることは大きな利点がある。ところが、汎用
コンピュータでは、プログラム開発の出発点を高級プロ
グラミング言語の記述としているので、プログラマブル
コントローラにおいて使用されてきたラダーダイヤグラ
ムやインストラクションリスト等の制御プログラム、す
なわちシーケンス処理の過去の資産を活用することはで
きないという問題が生じてしまう。
【0020】第2に、入力デバイスと出力デバイスの多
様化およびシーケンス処理の複雑化にともない、制御プ
ログラムが長大化する傾向にあり、その開発、コンパイ
ル、インタプリーティングおよびデバッギングに多くの
時間を要しているという問題がある。
【0021】第3に、コンパイル型のプログラマブルコ
ントローラでは、実行コードを受け取って直接シーケン
ス処理に移行するため、元の制御プログラムの各命令単
位または処理ブロック単位に対応する実際の処理時間を
見積もることが困難であるという問題がある。
【0022】第4に、上記した特開平7−295612
号に開示の「高級言語シーケンス命令プログラム生成装
置および汎用シーケンサ」は、インストラクションリス
ト等の制御プログラムで記述されたソースファイルを例
えばC言語のような高級プログラミング言語のソースフ
ァイルに変換してオブジェクトファイルを生成するが、
その高級プログラミング言語のソースファイルのみを修
正した場合、元の制御プログラムのソースファイルは、
その修正によって変化しないため、二つの同じシーケン
ス処理を示すソースファイル間において整合がとれない
という問題がある。
【0023】特に、制御プログラムを高級プログラミン
グ言語で開発することのできる制御プログラム開発支援
装置において、例えばデバッギングツールを用いてステ
ップ実行をおこなおうとする場合、高級プログラミング
言語での1行としてはステップ実行可能ではあるが、高
級プログラミング言語に変換される前のインストラクシ
ョンリスト等の言語形態に対しては、1行ごとのステッ
プ実行をおこなうことができない。
【0024】また、一般的に、プログラマブルコントロ
ーラが稼動している現場では、高級プログラミング言語
を直接操作できる制御プログラム開発支援装置を設置し
ていないことが多く、シーケンス処理に不具合が生じた
場合や制御プログラムの簡単な修正が生じた場合には、
インストラクションリスト等のシーケンス処理用の言語
のみが利用可能な簡易な制御プログラム開発支援装置を
持ち込んで、デバッグ作業をおこなうことがある。すな
わち、この場合には、上記問題が顕著となる。これに対
応するためには、すべての現場において、高級プログラ
ミング言語を直接操作できる制御プログラム開発支援装
置を準備する必要があり、それにかかるコストが多大と
なってしまう。
【0025】第5に、上記したRUN中書き込み方法の
実現は、新たな制御プログラムを読み込むために、現在
実行中である制御プログラムが読み込まれているメモリ
と同等なサイズを有するメモリを別途用意しておかなけ
ればならないという問題がある。一般的にハードウェア
部品においてメモリは高価なため、このRUN中書き込
み方法を実現するためには、メーカまたはユーザが多く
の投資を支払わなければならない。
【0026】第6に、上記したコンパイル型の制御プロ
グラム開発支援装置においては、一般に、最終的に生成
した実行コードから元のインストラクションリスト等の
制御プログラムを復元することは不可能であるという問
題がある。そのため、例えば、プログラマブルコントロ
ーラと制御プログラム開発支援装置とが別筐体であり、
かつプログラマブルコントローラと制御プログラム開発
支援装置とがオフラインで隔離されている場合には、元
の制御プログラムと実際に実行されている実行コードと
は別場所に保管されることになる。
【0027】特に、コンパイル型の制御プログラム開発
支援装置においては、その制御プログラム開発支援装置
側で制御プログラムのソースファイルを消失した場合に
は、そのインストラクションリスト等の制御プログラム
を復元することはできずに、デバッグ作業が不可能とな
り、その場合、制御プログラムを一から書き直さなけれ
ばならなかった。
【0028】また、制御プログラムのソースファイルを
消失していない場合であっても、現場にて動作中のプロ
グラマブルコントローラの処理内容を変更する場合に
は、元の制御プログラムのソースファイルを保存してい
る制御プログラム開発支援装置にアクセスし、そのファ
イルを取り出さなければならないという煩雑さがあっ
た。
【0029】第7に、上記したプログラマブルコントロ
ーラまたは制御プログラム開発支援装置は、インタプリ
タ型であれ、コンパイル型であれ、ユーザが記述した制
御プログラムの処理内容を逐次解釈する部分が存在する
が、処理内容の解釈手順は必ずしも効率的とはいえない
という問題がある。その逐次解釈をおこなう部分(以
下、命令解釈手段と称する。)は、インタプリタ型のプ
ログラマブルコントローラでは、実行時に制御プログラ
ムを構成する各データを読み込み、それがどの命令の実
行を指定しているかを解釈する部分であり、コンパイル
型の制御プログラム開発支援装置では、制御プログラム
を逐次読み込んで解釈し、それを適当な出力フォーマッ
トに変換する部分である。
【0030】命令解釈手段は、一般的に、入力されたデ
ータに対し、解釈側で保有しているパターンとそのデー
タを比較し、それが適合(マッチ)した場合に、あらか
じめ埋め込まれた動作(アクション)を実行する構造で
記述されている。従って、この命令解釈手段のパターン
マッチングの時間は、インタプリタ型ではその実行時、
コンパイル型ではコンパイル時に多くの時間が必要とな
り、両者とも生産性を阻害する要因になっている。
【0031】この発明は上記問題点を解決するためにな
されたもので、第1に、より高速なシーケンス処理の実
現と安価に入手できるという利点を有する汎用マイクロ
プロセッサを搭載したプログラマブルコントローラと、
インストラクションリスト等の制御プログラムから、汎
用マイクロプロセッサにおいて直接実行可能な実行コー
ドを生成する制御プログラム開発支援装置とを得ること
を目的とする。
【0032】第2に、インストラクションリスト等の制
御プログラムを、所定の位置で分割し、分割したブロッ
クごとにファイルを生成することで、再コンパイル等を
おこなう部分を最小限に抑えることができる制御プログ
ラム開発支援装置またはプログラマブルコントローラを
得ることを目的とする。
【0033】第3に、処理時間が既知のサンプルプログ
ラムを用意することで、制御プログラムの実行処理を見
積もることができる制御プログラム開発支援装置または
プログラマブルコントローラを得ることを目的とする。
【0034】第4に、中間的に生成される高級プログラ
ミング言語のソースファイルと実際の制御プログラムの
ソースファイルとの整合性を図りつつ、両ソースファイ
ルに対するデバッギングが可能な制御プログラム開発支
援装置またはプログラマブルコントローラを得ることを
目的とする。
【0035】第5に、制御プログラムのうち変更箇所の
みが記述された差分データに基づいて実行中の実行コー
ドを新たな実行コードに自動置換するプログラマブルコ
ントローラを得ることを目的とする。
【0036】第6に、制御プログラムのソースファイル
を圧縮して実行コードに挿入することにより、制御プロ
グラムと実行コードの一元化を図ることができる制御プ
ログラム開発支援装置およびプログラマブルコントロー
ラを得ることを目的とする。
【0037】第7に、命令解釈部において、制御プログ
ラム中に多く使用されている命令を優先的にパターンマ
ッチング対象とすることにより、コンパイルやインタプ
リーティング等の逐次命令解釈に要する時間の短縮化を
図ることができる制御プログラム開発支援装置およびプ
ログラマブルコントローラを得ることを目的とする。
【0038】
【課題を解決するための手段】上述した課題を解決し、
目的を達成するため、この発明にかかるプログラマブル
コントローラにあっては、制御プログラムをコンパイル
することで生成された実行コードに基づいてシーケンス
処理をおこなうプログラマブルコントローラにおいて、
前記実行コードを記憶する記憶手段と、パイプラインロ
ジックやキャッシュ等の高速化実装手段を搭載するとと
もに前記実行コードによって直接実行される汎用マイク
ロプロセッサと、を備えたことを特徴とする。
【0039】この発明によれば、高速化実装手段を搭載
した汎用マイクロプロセッサを備えるとともに、受信し
た実行コードが、その汎用マイクロプロセッサの高速化
実装手段を用いて実行されるように最適化されているの
で、パーソナルコンピュータ等に使用される汎用マイク
ロプロセッサのパイプライン、スーパスカラ、アウトオ
ブオーダ等の高速処理によってシーケンス動作を実行す
ることができる。
【0040】つぎの発明にかかる制御プログラム開発支
援装置にあっては、ラダーダイヤグラムやインストラク
ションリスト等のシーケンス制御用の言語で記述された
制御プログラムを開発するための制御プログラム開発支
援装置において、前記制御プログラムを、パイプライン
ロジックやキャッシュ等の高速化実装手段を搭載した汎
用マイクロプロセッサにおいて直接実行可能な実行コー
ドにコンパイルするコンパイル手段を備えたことを特徴
とする。
【0041】この発明によれば、シーケンス制御用の言
語で記述された制御プログラムを、高速化実装手段を搭
載した汎用マイクロプロセッサで実行できる実行コード
にコンパイルするので、そのような汎用マイクロプロセ
ッサを具備したプログラマブルコントローラにその実行
コードを送信することで、パイプライン、スーパスカ
ラ、アウトオブオーダ等の高速処理によるシーケンス動
作を実行させることができるとともに、コンパイル手段
を変更することで、様々な汎用マイクロプロセッサに対
応した実行コードを得ることができる。
【0042】つぎの発明にかかる制御プログラム開発支
援装置にあっては、ラダーダイヤグラムやインストラク
ションリスト等のシーケンス制御用の言語で記述された
制御プログラムを開発するための制御プログラム開発支
援装置において、前記制御プログラムを複数のブロック
に分割する制御プログラム分割手段と、前記複数のブロ
ックのすべてまたは一部をプログラマブルコントローラ
において直接実行可能な実行コードにコンパイルするコ
ンパイル手段と、前記実行コードを前記プログラマブル
コントローラに送信する通信インターフェースと、を備
えたことを特徴とする。
【0043】この発明によれば、制御プログラムを複数
のブロックに分割して、分割したブロック毎にコンパイ
ルして最終的な実行コードを得ることができるので、長
大な一本の制御プログラムであっても、変更の生じた一
部分だけを再コンパイルすることで実行コードを生成す
ることができる。
【0044】つぎの発明にかかる制御プログラム開発支
援装置にあっては、ラダーダイヤグラムやインストラク
ションリスト等のシーケンス制御用の言語で記述された
制御プログラムを開発するための制御プログラム開発支
援装置において、前記制御プログラムを複数のブロック
に分割する制御プログラム分割手段と、前記複数のブロ
ックのすべてまたは一部を、当該ブロック毎に、汎用コ
ンピュータ用高級言語で記述された高級言語制御プログ
ラムに変換する制御プログラム変換手段と、前記ブロッ
ク毎に対応する汎用コンピュータ用高級言語のすべてま
たは一部をプログラマブルコントローラにおいて直接実
行可能な実行コードにコンパイルするコンパイル手段
と、を備えたことを特徴とする。
【0045】この発明によれば、制御プログラムを複数
のブロックに分割して、分割したブロックのそれぞれを
汎用コンピュータ用高級言語に変換する。そして、各ブ
ロックに対応する汎用コンピュータ用高級言語のプログ
ラムをコンパイルして最終的な実行コードを得ることが
できるので、長大な一本の制御プログラムであっても、
変更の生じた一部分だけを再コンパイルすることで実行
コードを生成することができるとともに、コンパイラと
して従来の汎用コンピュータ用高級言語用のコンパイラ
を使用することができる。
【0046】つぎの発明にかかる制御プログラム開発支
援装置にあっては、上記発明において、前記プログラマ
ブルコントローラが、パイプラインロジックやキャッシ
ュ等の高速化実装手段を搭載する汎用マイクロプロセッ
サを備えたことを特徴とする。
【0047】この発明によれば、パーソナルコンピュー
タ等に使用される汎用マイクロプロセッサを搭載したプ
ログラマブルコントローラに対して実行コードを生成す
るので、パイプライン、スーパスカラ、アウトオブオー
ダ等の高速処理によるシーケンス動作を実行させること
ができる。
【0048】つぎの発明にかかる制御プログラム開発支
援装置にあっては、上記発明において、前記制御プログ
ラムが、ラダーダイヤグラムまたはラダーダイヤグラム
から生成されたインストラクションリストであり、前記
制御プログラム分割手段が、前記ラダーダイヤグラム内
の所定のラングにおいて複数のブロックに分割して、当
該ブロック毎にプログラムファイルを生成することを特
徴とする。
【0049】この発明によれば、制御プログラム分割手
段が、ラダーダイヤグラム内の所定のラングの切れ目に
おいて複数のブロックに分割し、当該ブロック毎にプロ
グラムファイルを生成するので、入力から出力までの一
連の回路ブロックを単位としてプログラムファイルを管
理することができるとともに、コンパイル時における入
出力デバイス値を保有するレジスタ変数の最適割り当て
が分割によって阻害されるという事態を低減させること
ができる。特に、高速化実装手段を搭載したマイクロプ
ロセッサに対しては、複数のラングの集まりで一つのブ
ロックを構成することで、コンパイラのレジスタ利用効
率の向上や最小演算割り当ての最適化機能を活用するこ
とができる。
【0050】つぎの発明にかかる制御プログラム開発支
援装置にあっては、上記発明において、前記制御プログ
ラムが、ラダーダイヤグラムまたはラダーダイヤグラム
から生成されたインストラクションリストであり、前記
制御プログラム分割手段が、前記ラダーダイヤグラム内
のジャンプ命令に対するジャンプ先となる所定のラング
において複数のブロックに分割し、当該ブロック毎にプ
ログラムファイルを生成することを特徴とする。
【0051】この発明によれば、制御プログラム分割手
段が、ラダーダイヤグラム内の所定のラングの切れ目で
あってかつジャンプ命令に対するジャンプ先となる位置
において複数のブロックに分割し、当該ブロック毎にプ
ログラムファイルを生成するので、コンパイラの最適化
に影響を与えないとともに、分割後のプログラムファイ
ルをサブルーチンとして管理することができる。
【0052】つぎの発明にかかる制御プログラム開発支
援装置にあっては、上記発明において、前記制御プログ
ラムが、ラダーダイヤグラムまたはラダーダイヤグラム
から生成されたインストラクションリストであり、前記
制御プログラム分割手段が、前記ラダーダイヤグラムに
おいて共通の入力デバイスまたは出力デバイスに対する
命令を含んだラングのすべてまたは一部を抽出し、抽出
したラングのすべてまたは一部により一つのブロックを
構成するとともに当該ブロック毎にプログラムファイル
を生成することを特徴とする。
【0053】この発明によれば、制御プログラム分割手
段が、ラダーダイヤグラムにおいて共通の入力デバイス
または出力デバイスに対する命令を含んだラングのすべ
てまたは一部を抽出し、抽出したラングのすべてまたは
一部を一つのブロックとして複数のブロックに分割し、
当該ブロック毎にプログラムファイルを生成するので、
特定のデバイスに対する制御プログラムの変更が生じた
際に、その部分に該当するプログラムファイルのみを変
更して再コンパイルして実行コードを得ることができ
る。
【0054】つぎの発明にかかる制御プログラム開発支
援装置にあっては、上記発明において、前記制御プログ
ラムを、参照されない変数の排除、冗長コードの排除、
共通の入力デバイスや出力デバイスに対する命令を局所
的に配置するためのコードの並べ替え等をおこなうこと
によって最適なコード体系に再構築する最適化フィルタ
手段を備え、前記最適化フィルタ手段により最適化され
た制御プログラムをあらためて前記制御プログラムとす
ることを特徴とする。
【0055】この発明によれば、制御プログラムを、コ
ンパイルする前段において、一旦、参照されない変数の
排除、冗長コードの排除、並べ替え等をおこなうことに
よって最適なコード体系に再構築するので、最適化され
たコードにより構成された制御プログラムをコンパイル
手段に提供することができる。
【0056】つぎの発明にかかる制御プログラム開発支
援装置にあっては、上記発明において、処理時間が既知
であるサンプルプログラムと前記実行コードに対応する
制御プログラムとを対応付けた対応表を有し、当該対応
表に基づいてプログラマブルコントローラにおけるシー
ケンス処理実行時間を見積もる処理時間概算手段を備え
たことを特徴とする。
【0057】この発明によれば、処理時間が既知である
サンプルプログラムと実行コードに対応する制御プログ
ラムとを対応付けた対応表から、シーケンス処理実行時
間を見積もることができるので、従来困難であった制御
プログラム内の各インストラクションの処理時間を知得
することが可能となる。
【0058】つぎの発明にかかる制御プログラム開発支
援装置にあっては、ラダーダイヤグラムやインストラク
ションリスト等のシーケンス制御用の言語で記述された
制御プログラムを開発するための制御プログラム開発支
援装置において、前記制御プログラムを汎用コンピュー
タ用高級言語で記述された高級言語制御プログラムに変
換する制御プログラム変換手段と、前記高級言語制御プ
ログラムを構成するソースコード内において、前記イン
ストラクションリストを構成する各行に対応した部分に
当該行番号を示すコードを挿入してデバッグ用制御プロ
グラムを生成するデバッグコード生成手段と、前記デバ
ッグ用制御プログラムをステップ実行することにより前
記インストラクションリストの各行と前記高級言語制御
プログラムの実行部分とを対応付けて表示するデバッグ
実行手段と、を備えたことを特徴とする。
【0059】この発明によれば、インストラクションリ
ストとそのインストラクションリストを変換することで
得られた高級言語制御プログラムとの実行部分を対応付
けてステップ実行できるとともにその部分を表示するこ
とができるので、インストラクションリストをコンパイ
ルして得られた実行コードに基づいて動作するプログラ
マブルコントローラにおいても、ユーザが記述したイン
ストラクションリストのステップ実行レベルで動作確認
がおこなえるようになる。
【0060】つぎの発明にかかるプログラマブルコント
ローラにあっては、制御プログラムをコンパイルするこ
とで生成された実行コードに基づいてシーケンス処理を
おこなうプログラマブルコントローラにおいて、前記実
行コードを記憶する第1の記憶手段と、前記第1の記憶
手段に記憶されている実行コードと新たな実行コードと
の差分データを記憶する第2の記憶手段と、前記実行コ
ードにより直接実行されるマイクロプロセッサと、前記
差分データに基づいて、所定のタイミングで、現在実行
中の実行コードを新たな実行コードに変更するととも
に、変更後の実行コードを継続的に実行させるパッチ処
理手段と、を備えたことを特徴とする。
【0061】この発明によれば、現在実行されている実
行コードと新たな実行コードとの差分データに基づい
て、現在実行中の実行コードを、所定のタイミングで新
たな実行コードに変更し、変更後の実行コードを継続的
に実行させるので、実行コードに変更が生じた場合であ
っても、実行コードのうち、変更の生じたバイナリコー
ドのみを修正して新たな実行コードに変更することがで
きるとともに、プログラマブルコントローラの実行状態
を中断させることなく、新たなシーケンス動作を継続さ
せることができる。
【0062】つぎの発明にかかるプログラマブルコント
ローラにあっては、制御プログラムをコンパイルするこ
とで生成された実行コードに基づいてシーケンス処理を
おこなうプログラマブルコントローラにおいて、前記実
行コードを記憶する記憶手段と、前記実行コードにより
直接実行されるマイクロプロセッサと、を備え、前記実
行コードは、前記制御プログラムの圧縮により生成され
たバイナリデータを含むことを特徴とする。
【0063】この発明によれば、制御プログラムと実行
コードとを一元化してプログラマブルコントローラに保
持するので、開発やデバッグ時に必要となる制御プログ
ラムを消失した場合や現場のプログラマブルコントロー
ラから直接制御プログラムを操作したい場合において、
実行コードからその制御プログラムを取り出すことがで
きる。
【0064】つぎの発明にかかる制御プログラム開発支
援装置にあっては、ラダーダイヤグラムやインストラク
ションリスト等のシーケンス制御用の言語で記述された
制御プログラムを開発するための制御プログラム開発支
援装置において、前記制御プログラムを圧縮して圧縮フ
ァイルを生成する圧縮手段と、前記圧縮ファイルを前記
制御プログラムのコード体系に変換した圧縮データを生
成するコード変換手段と、前記制御プログラムと前記圧
縮データとを結合するとともに、当該結合結果を、プロ
グラマブルコントローラにおいて直接実行可能な実行コ
ードにコンパイルするコンパイル手段と、を備えたこと
を特徴とする。
【0065】この発明によれば、制御プログラムと実際
に実行される実行コードとを一元化してあらためて実行
コードとして生成するので、開発やデバッグ時に必要と
なる制御プログラムを消失した場合や現場のプログラマ
ブルコントローラから直接制御プログラムを操作したい
場合において、実行コードからその制御プログラムを取
り出すことができる。
【0066】つぎの発明にかかるプログラマブルコント
ローラにあっては、ラダーダイヤグラムやインストラク
ションリスト等のシーケンス制御用の言語で記述された
制御プログラムに基づいて、シーケンス処理をおこなう
プログラマブルコントローラにおいて、前記制御プログ
ラムを記憶する記憶手段と、前記制御プログラムに使用
されている各命令の出現頻度をカウントする命令カウン
ト手段と、前記命令カウント手段によってカウントされ
た結果から、出現頻度の高い順に命令を列挙したパター
ンマッチング表を作成するパターンマッチング表作成手
段と、前記制御プログラムを、前記パターンマッチング
表に列挙されている命令順にパターンマッチングしつ
つ、前記プログラマブルコントローラにおいて直接実行
可能な実行コードにインタプリーティングしつつ実行す
るインタプリーティング手段と、を備えたことを特徴と
する。
【0067】この発明によれば、制御プログラムを実行
コードにインタプリーティングする際に、制御プログラ
ムのうち出現頻度の高い命令順にパターンマッチングを
おこなうので、インタプリーティングの際に、制御プロ
グラムの各命令に適合する実行コードを迅速に発見する
ことができる。
【0068】つぎの発明にかかる制御プログラム開発支
援装置にあっては、ラダーダイヤグラムやインストラク
ションリスト等のシーケンス制御用の言語で記述された
制御プログラムを開発するための制御プログラム開発支
援装置において、前記制御プログラムに使用されている
各命令の出現頻度をカウントする命令カウント手段と、
前記命令カウント手段によってカウントされた結果か
ら、出現頻度の高い順に命令を列挙したパターンマッチ
ング表を作成するパターンマッチング表作成手段と、前
記制御プログラムを、前記パターンマッチング表に列挙
されている命令順にパターンマッチングしつつ、前記プ
ログラマブルコントローラにおいて直接実行可能な実行
コードにコンパイルするコンパイル手段と、を備えたこ
とを特徴とする。
【0069】この発明によれば、制御プログラムを実行
コードにコンパイルする際に、制御プログラムのうち出
現頻度の高い命令順にパターンマッチングをおこなうの
で、コンパイルの際に、制御プログラムの各命令に適合
する実行コードを迅速に発見することができる。
【0070】つぎの発明にかかるプログラマブルコント
ローラにあっては、上記制御プログラム開発支援装置を
備えたことを特徴とする。
【0071】この発明によれば、制御プログラムの開発
とともにシーケンス処理も可能とする、いわゆるソフト
ウェアプログラマブルコントローラにおいて、上記した
制御プログラム開発支援装置と上記したプログラマブル
コントローラの各機能を実現することができる。
【0072】
【発明の実施の形態】以下に、この発明にかかるプログ
ラマブルコントローラおよび制御プログラム開発支援装
置の実施の形態を図面に基づいて詳細に説明する。な
お、この実施の形態によりこの発明が限定されるもので
はない。
【0073】実施の形態1.まず、実施の形態1にかか
るプログラマブルコントローラおよび制御プログラム開
発支援装置について説明する。実施の形態1にかかるプ
ログラマブルコントローラは、高速化実装技術により構
築された汎用マイクロプロセッサを搭載したことを特徴
としており、実施の形態1にかかる制御プログラム開発
支援装置は、インストラクションリスト等のシーケンス
処理用の言語で記述された制御プログラムをコンパイル
して、上記汎用マイクロプロセッサにおいて直接実行可
能な実行コードを生成することを特徴としている。
【0074】図1は、実施の形態1にかかるプログラマ
ブルコントローラの概略構成を示すブロック図である。
図1において、プログラマブルコントローラ10は、実
行コードに従ったシーケンス処理を実行する汎用マイク
ロプロセッサ11と、実行コード等を記憶するメモリ1
4と、実行コードであるバイナリファイル等を制御プロ
グラム開発支援装置20から受信するとともに必要に応
じて上記メモリ14内のプログラム等を外部に送信する
通信インターフェース16と、汎用マイクロプロセッサ
11による指示に応じて、外部の入力デバイス21から
信号を入力するとともに外部の出力デバイスに制御信号
を出力する入出力制御部15と、を備えて構成される。
【0075】特に、汎用マイクロプロセッサ11は、図
1に示しているように、ストアードプログラム方式等の
基本的な演算処理をおこなうCPUコア12と、高速化
実装技術部13と、を備えており、高速化実装技術部1
3では、命令キャッシュおよびデータキャッシュを備え
て構築され、2次キャッシュ、パイプラインロジックお
よびスケーラロジックを備えている。すなわち、この汎
用マイクロプロセッサ11は、パイプライン処理やスー
パースケーラ処理の他、アウトオブオーダ、分岐予測、
投機実行等の高速化処理が可能なマイクロプロセッサで
ある。なお、図示した汎用マイクロプロセッサ11にお
いては、高速化実装技術部13を、CPUコア12と分
離して記載したが、CPUコア12中に、高速化実装技
術部13中の各機能ブロックが複数個保有した形態も存
在する。
【0076】また、メモリ14は、汎用マイクロプロセ
ッサ11が演算処理に使用するとともに、実行コードう
ちの実際の実行部分またはすべてをロードさせておくた
めのワークメモリや、BIOS(Basic Inpu
t Output System)が記録されたRO
M、実行コードのすべてを保持しておくフラッシュメモ
リ等の不揮発性メモリ等から構成される。なお、図示し
ないが、プログラマブルコントローラ10は、実行コー
ド、その他プログラムまたはデータを記憶しておくため
の磁気ディスク装置やメモリカード等の二次記憶手段を
備えることもできる。
【0077】すなわち、図1に示すプログラマブルコン
トローラ10は、従来のASICにより構成されたマイ
クロプロセッサを、高速化実装手段を備えた汎用マイク
ロプロセッサに置換した点以外は、従来のプログラマブ
ルコントローラの構成を適用することができる。
【0078】よって、このプログラマブルコントローラ
10にシーケンス処理を実行させるには、上記汎用マイ
クロプロセッサ11において直接実行可能な実行コード
が必要となるが、この実行コードは、制御プログラム開
発支援装置20によって生成される。
【0079】制御プログラム開発支援装置20は、プロ
グラマブルコントローラ10と通信可能なインターフェ
ースを備えていれば、パーソナルコンピュータ等の汎用
のコンピュータシステムと同構成により実現することが
できる。
【0080】特に、この制御プログラム開発支援装置2
0は、ラダーダイヤグラムやインストラクションリスト
によって記述された制御プログラムのファイルを読み込
み、読み込んだファイルのコード体系を、上記汎用マイ
クロプロセッサ11において直接実行可能な実行コード
にコンパイルするコンパイラを備えている。図2は、実
施の形態1にかかる制御プログラム開発支援装置におい
て、実行コードの生成を説明するための説明図である。
【0081】図2に示すように、制御プログラム開発支
援装置20は、既に開発済みまた新規に開発されたラダ
ーダイヤグラムやインストラクションリスト等のシーケ
ンス処理用の言語で記述された制御プログラム1を、コ
ンパイラ100に投入することで実行コード9を生成す
る。コンパイラ100は、ソフトウェアプログラムによ
り実現してもハードウェアロジックにより実現してもよ
いが、上記汎用マイクロプロセッサ最適化技術を利用す
ることで、汎用マイクロプロセッサ11の機能を最大限
に発揮する実行コードを生成する必要がある。
【0082】以上に説明したとおり、実施の形態1にか
かるプログラマブルコントローラによれば、ASICと
して専用のマイクロプロセッサの設計および開発をおこ
なうことなく、比較的安価で入手しやすい汎用マイクロ
プロセッサ11を用いてプログラマブルコントローラを
構成することができるとともに、汎用マイクロプロセッ
サ11の高速化実装技術によってシーケンス処理をより
高速に実行することが可能になる。
【0083】また、実施の形態1にかかる制御プログラ
ム開発支援装置によれば、シーケンス処理用の言語で記
述された制御プログラムをコンパイルすることにより、
上記した汎用マイクロプロセッサ11において直接実行
可能な実行コード9を得ることができるので、汎用マイ
クロプロセッサ11を搭載したプログラマブルコントロ
ーラに対して、実行コード9を転送してシーケンス処理
を実行させることができ、過去の制御プログラムの資産
を有効に活用することができる。さらに、搭載する汎用
マイクロプロセッサ11の種類が異なるプログラマブル
コントローラ間に対しても、使用するコンパイラ100
を入れ替えることで、実行コード9を得ることができる
ため、プログラマブルコントローラのメーカごとまたは
機種ごとに制御プログラムを開発する必要がなくなり、
同内容のシーケンス処理を記述した制御プログラムを一
元的に管理することができるとともに、開発時間やデバ
ッギング時間の低減を図ることができる。
【0084】実施の形態2.つぎに、実施の形態2にか
かる制御プログラム開発支援装置について説明する。実
施の形態2にかかる制御プログラム開発支援装置は、イ
ンストラクションリスト等のシーケンス処理用の言語で
記述された制御プログラムを、所定位置で複数のプログ
ラムファイルに分割し、分割したプログラムファイルの
個々のみを修正してコンパイルすることができることを
特徴としている。
【0085】図3は、実施の形態2にかかる制御プログ
ラム開発支援装置において、制御プログラムの分割をと
もなう実行コード生成処理を説明するための説明図であ
る。図3に示すように、制御プログラム開発支援装置
は、後述する分割アルゴリズムに基づいて、既に開発済
みまた新規に開発されたラダーダイヤグラムやインスト
ラクションリスト等のシーケンス処理用の言語で記述さ
れ、かつ従来において一つのプログラムファイルとして
取り扱われていた制御プログラム1を、複数の分割プロ
グラム3−1〜3−Nに分割する。
【0086】つぎに、分割アルゴリズムについて説明す
る。制御プログラムを分割する目的は、制御プログラム
に変更が生じた際の再コンパイルに要する時間を短縮す
ることであるが、コンパイラ100がおこなう最適化の
処理に対して、大きな妨げとなるような分割をおこなう
べきではない。制御プログラムを分割すると、全く分割
をおこなっていない制御プログラムをコンパイルする場
合と比べて、完全に最適な実行コードを得ることはでき
ないため、分割に際しては、完全に最適な実行コードに
近いコード、すなわち最適化のレベルをできるだけ落と
さないコードを出力するような工夫が必要である。
【0087】そこで、分割アルゴリズムとしては、
(1)指定ステップごとのラングの切れ目でおこなう方
法(以下、ラング分割方法と称する。)、(2)ジャン
プ先であるサブルーチンでおこなう方法(以下、ジャン
プ先分割方法と称する。)、(3)使用されている入力
デバイスまたは出力デバイスを機器ごとにひとまとめに
する方法(以下、機器分割方法と称する。)の3通りが
考えられる。
【0088】特に、これら3通りの分割アルゴリズム
は、いずれもラダーダイヤグラムの表現を基礎としてい
るので、ここではまず、ラダーダイヤグラムについて説
明する。図4は、ラダーダイヤグラムの例を示す図であ
る。図4において、インストラクションCM1〜CM6
は、シーケンス演算で使用するコマンドに対応する。特
に、図中、インストラクションCM1、CM2およびC
M5は入力を意味し、CM3およびCM6は出力を意味
し、CM4は演算処理を意味する。また、ラダーダイヤ
グラムでは、入力から出力までのひとまとまりを一つの
回路ブロックに分けて表現され、これはラングと呼ばれ
ている。
【0089】図4においては、ラングR1とR2の二つ
のラングが示されている。さらに、各ラングには、イン
ストラクションの処理時間を特定の単位で示したステッ
プ数が付記される。図4中のラングR1では、入力ポー
トに割り当てられたアドレスへのデータの読み込みに1
ステップ、出力ポートに割り当てられたアドレスへのデ
ータの書き出しに1ステップ、アドレス間においてデー
タを移動させるMOV命令に2ステップかかるため、つ
ぎのラングR2の先頭のステップ数は5となっている。
【0090】すなわち、ラングR1では、メモリX1お
よびX2を入力デバイスとしており、メモリY1を出力
デバイスとしている。また、ラングR2では、メモリX
1を入力デバイスとしており、メモリY10を出力デバ
イスとしている。
【0091】(1)ラング分割方法 まず、ラング分割方法について説明する。ラング分割方
法は、制御プログラムの分割を、上記したラダーダイヤ
グラムによって表されるラングの切れ目でおこなう方法
である。ラングの切れ目で分割することで、コンパイラ
によるデバイスのレジスタへの配置を有効に活用し、分
割による最適化の効果低減を抑えることができる。
【0092】シーケンス処理はラングの集まりであると
考えることができ、入力デバイスの情報に対して与えら
れたシーケンス演算をおこない、出力デバイスの値を求
めることが、ラングの処理である。よって、シーケンス
処理の高速化を図るには、各ラングでの処理を速くする
必要がある。また、一つのラングの途中で分割すると、
レジスタに配置されているラングの途中までの演算結果
を有効に活用することができないことからも、制御プロ
グラムの分割をラングの切れ目でおこなうことが好まし
い。
【0093】そこで、コンパイラ100を用いて入力デ
バイスおよび出力デバイスをできるだけレジスタへ配置
することで、高速な演算を実現する。すなわち、コンパ
イラの最適化機能を利用し、レジスタを積極的に活用す
る。
【0094】しかしながら、制御プログラム1をラング
の切れ目ごとに細切れにすると、実施の形態1において
説明したような汎用マイクロプロセッサの実行コードを
生成しようとする場合には、コンパイラ100におい
て、高速化実装技術の一つである最適命令スケジューリ
ングにより、アウトオブオーダ化されたコードを出力す
るための最適化機能を使用しないことになり、最適化の
度合いが減少する。
【0095】よって、分割後の制御プログラム、すなわ
ち分割プログラム3−1〜3−Nは、ある程度のサイズ
を持っていることが望ましい。そこで、分割する位置を
特定のステップ数単位で指定する。例えば、100ステ
ップの倍数毎にラングの切れ目で制御プログラムを分割
する。100ステップの倍数のステップの位置がラング
の切れ目ではない場合は、その位置の直後のラングの切
れ目で分割をおこなう。
【0096】このようにして生成された分割プログラム
3−1〜3−Nは、それら分割プログラムごとに独立し
てコンパイルすることができるように、それぞれ個別の
プログラムファイルとして管理される。図5は、ステッ
プ数と分割後ファイルの対応関係を示した表である。図
5に示すように、分割プログラムにはそれぞれ分割後フ
ァイル名が付され、さらに、各ファイルには、元の制御
プログラム1のどのラングに相当するかを示したステッ
プ数が割り当てられる。
【0097】制御プログラムに修正の必要が生じた場合
には、分割前の制御プログラム1に対して、例えばラダ
ーダイヤグラム上での修正作業をおこなうが、上記表
は、制御プログラム1において実際に修正された部分の
ステップ数を抽出し、その修正された部分を含む分割プ
ログラムのファイル名を特定する際に活用される。
【0098】つぎに、ラング分割方法の具体的な処理の
流れについて説明する。図6は、ラング分割方法の処理
を示したフローチャートである。図6において、まず、
ラング分割方法を実行するコンピュータプログラム等の
分割手段が、制御プログラム1であるインストラクショ
ンリスト(以下、ILと称する。)、特にラダーダイヤ
グラムを変換して得られたILファイルを、1行読み込
む(ステップS101)。読み込んだ1行が、ILファ
イルの終わりであれば処理を終了する(ステップS10
2肯定)。
【0099】一方、読み込んだ1行が、ILファイルの
終わりではなく(ステップS102否定)、指定したス
テップ数以上に相当し、かつラングの切れ目であれば
(ステップS103肯定)、新規にファイルを作成し
て、そのファイルをカレントファイルに設定する(ステ
ップS104)。なお、ラングの切れ目であるか否か
は、インストラクションの種類によって判断する。すな
わち、出力をおこなうインストラクションの直後に入力
をおこなうインストラクションが現れたところがラング
の切れ目となる。また、新規に作成するファイルは、フ
ァイル名を連番にするなど、一意の名前になるようにす
る。
【0100】そして、読み出した1行を、既に設定され
ているカレントファイルに書き込み(ステップS10
5)、再度ステップS101からの処理を繰り返す。す
なわち、読み込んだ1行がラングの切れ目でなければ
(ステップS103否定)、または、指定したステップ
数に達していなければ、つぎつぎとその1行をカレント
ファイルに書き込んでいく。これにより、ラングの切れ
目であってかつ所定ステップ数の範囲ごとに、ファイル
が作成される。このファイルが上記した分割プログラム
ごとに対応して生成される分割後ファイルである。
【0101】(2)ジャンプ先分割方法 つぎに、ジャンプ先分割方法について説明する。ジャン
プ先分割方法は、制御プログラムの分割を、上記したラ
ダーダイヤグラムによって表されるラングの切れ目であ
って、かつジャンプ命令のジャンプ先となるサブルーチ
ンでおこなう方法である。これにより、ジャンプ命令に
影響のある最適化に対して配慮することができる。
【0102】図7は、ジャンプ先ラベル名と分割後ファ
イルの対応関係を示した表である。図7に示すように、
分割プログラムにはそれぞれ分割後ファイル名が付さ
れ、さらに、各ファイルには、ジャンプ命令のジャンプ
先を示すラベル名が割り当てられる。
【0103】図7に示す表も、図5に示した表と同様
に、制御プログラム1において実際に修正された部分を
含むサブルーチンのラベル名を抽出し、そのサブルーチ
ンに相当する分割プログラムのファイル名を特定する際
に活用される。
【0104】つぎに、ジャンプ先分割方法の具体的な処
理の流れについて説明する。図8は、ジャンプ先分割方
法の処理を示したフローチャートである。図8におい
て、まず、ジャンプ先分割方法を実行するコンピュータ
プログラム等の分割手段が、制御プログラム1であるI
L、特にラダーダイヤグラムを変換して得られたILフ
ァイルを、1行読み込む(ステップS201)。読み込
んだ1行が、ILファイルの終わりであれば処理を終了
する(ステップS202肯定)。
【0105】一方、読み込んだ1行が、ILファイルの
終わりではなく(ステップS202否定)、ラングの切
れ目であり、かつジャンプ先ラベルであれば(ステップ
S203肯定)、新規にファイルを作成して、そのファ
イルをカレントファイルに設定する(ステップS20
4)。なお、ラングの切れ目であるか否かの判断および
ファイル名の決定方法は、上述したラング分割方法と同
様である。
【0106】そして、読み出した1行を、既に設定され
ているカレントファイルに書き込み(ステップS20
5)、再度ステップS201からの処理を繰り返す。す
なわち、読み込んだ1行がラングの切れ目でなくかつジ
ャンプ先のサブルーチンの先頭でなければ、つぎつぎと
その1行をカレントファイルに書き込んでいく。これに
より、ジャンプ先のラベル名が付されている間ごとに、
ファイルが作成される。このファイルが上記した分割プ
ログラムごとに対応して生成される分割後ファイルであ
る。
【0107】(3)機器分割方法 つぎに、機器分割方法について説明する。シーケンス処
理では、一般に、製造ライン等を構成する複数の機器ご
とに、使用している入力デバイスおよび出力デバイスは
異なる。製造現場において生じる制御プログラムの変更
は、複数の機器のうち、ある機器に接続された入力デバ
イスを変更するなど機器に依存することが多いという特
性を有している。そこで、機器分割方法では、機器ごと
に対応するラングをひとまとまりにしてファイルに出力
する。
【0108】つぎに、機器分割方法の具体的な処理の流
れについて説明する。図9は、機器分割方法の処理を示
したフローチャートである。図9において、まず、上述
したラング分割方法と同様に、ラングの切れ目であっ
て、かつ同一の機器におけるシーケンス処理を示すラン
グを抽出して分類する。そして、機器ごとに分類された
複数のラングをひとまとまりとして、それぞれ各機器に
対応するファイルを作成する(ステップS301)。
【0109】つづいて、これら複数のファイル内におい
てまたがって使用されている入力デバイスおよび出力デ
バイスの数を算出する(ステップS302)。算出され
たデバイス数が指定数以下であれば、ステップS301
において作成された複数のファイルを、制御プログラム
1を複数の分割プログラム3−1〜3−Nに分割した結
果とする(ステップS303肯定)。一方、算出された
デバイス数が指定数より大きければ、分割の基準となる
ラング数の範囲を小さくするなどして、再度、ステップ
S301に戻り、機器ごとの分類を繰り返す(ステップ
S303否定)。
【0110】センサ情報を扱うデバイスなど、デバイス
によっては、複数の機器で使用されていることが考えら
れるため、完全にデバイスが重ならないようなラングで
分割することは困難である。しかし、上述したフローチ
ャートに示す処理のように、分割後に分割したファイル
間にまたがるデバイスの数を抑制することで、ラング分
割方法において説明したような最適化の効果の低減を抑
えることができる。なお、上記した機器ごとのラングの
分類は、ユーザがおこなってもよい。
【0111】よって、実施の形態2にかかる制御プログ
ラム開発支援装置では、以上に説明した3通りの分割ア
ルゴリズムのいずれかを採用することができる。このよ
うな分割アルゴリズムによって生成された複数の分割プ
ログラムのファイルは、制御プログラム1に修正が生じ
た際に、効果的に活用される。
【0112】図10は、制御プログラム1に修正が生じ
た際の実行コード生成処理を説明するための説明図であ
る。図10に示すように、例えば、制御プログラム1の
修正により、変更箇所2が生じた場合には、その変更箇
所2を含む分割プログラム3−1に対応するファイルの
みが、コンパイラ100によって再コンパイルされて、
その部分のみのオブジェクトファイルを得る。なお、こ
のオブジェクトファイルは、修正前の分割プログラム3
−1に対応するオブジェクトファイルと置換される。
【0113】そして、リンカによって、この新たに生成
されたオブジェクトファイルと、他の既に生成済みのオ
ブジェクトファイル、すなわち変更の生じていない分割
プログラムに対応するオブジェクトファイルと、がリン
クされることで、新たな実行コード9が生成される。
【0114】以上に説明したとおり、実施の形態2にか
かる制御プログラム開発支援装置によれば、インストラ
クションリスト等のシーケンス処理用の言語で記述され
た制御プログラム1を、コンパイルに影響がないような
位置で複数のプログラムに分割し、それら分割プログラ
ムごとにコンパイルして実行コードを得ることができる
ので、制御プログラム1に修正が生じた場合であって
も、その修正により変更された部分に該当する分割プロ
グラムのみを再度コンパイルするため、そのような修正
が生じた場合のコンパイル時間を短縮することができ
る。特に、プログラマブルコントローラが設置された現
場においては、制御プログラム1の修正を要する箇所は
特定の部分に集中するため、現場に、ハンディプログラ
ムローダ等の制御プログラム開発支援装置を持ち込んで
保守作業をおこなう場合に、その作業時間を短縮させる
ことが可能になる。
【0115】なお、上記したコンパイラ100は、実施
の形態1において説明したように、高速化実装技術によ
り構築された汎用マイクロプロセッサの実行コードを生
成するものであってもよい。
【0116】実施の形態3.つぎに、実施の形態3にか
かる制御プログラム開発支援装置について説明する。実
施の形態3にかかる制御プログラム開発支援装置は、実
施の形態2において生成された複数の分割プログラム
を、コンバータによってそれぞれ高級プログラミング言
語で記述されたファイルに変換し、それら高級プログラ
ミング言語のファイルをコンパイルすることで実行コー
ドを得ることを特徴としている。
【0117】図11は、制御プログラムの分割と高級プ
ログラミング言語への変換とをともなう実行コード生成
処理を説明するための説明図である。図11に示すよう
に、制御プログラム1を複数の分割プログラム3−1〜
3−Nに分割するまでの処理は、実施の形態2と同様で
ある。
【0118】実施の形態3にかかる制御プログラム開発
支援装置では、それら複数の分割の分割プログラム3−
1〜3−Nを、コンバータ101に投入し、それぞれコ
ンバータ101によって、複数の高級プログラミング言
語のファイルに変換する点が実施の形態2と異なる。特
に、図11では、高級プログラミング言語としてC言語
を採用した場合を示しており、分割プログラム3−1〜
3−Nは、それぞれC言語表現のファイル4−1〜4−
Nに変換される。
【0119】コンバータ101によって生成された複数
のC言語表現のファイル4−1〜4−Nは、それぞれ独
立したプログラムファイルとして取り扱われ、Cコンパ
イラ102に投入される。Cコンパイラ102は、これ
ら複数のC言語表現のプログラムファイルを個々にコン
パイルしてオブジェクトファイルを生成し、これにより
実行コード9が得られる。なお、実行コード9は、実際
には、Cコンパイラ102によって生成された複数のオ
ブジェクトファイルを、図示しないリンカによってリン
クされることにより生成される。
【0120】図12は、高級プログラミング言語に一旦
変換する場合において、制御プログラム1に修正が生じ
た際の実行コード生成処理を説明するための説明図であ
る。図12に示すように、例えば、制御プログラム1の
変更箇所2に相当する部分の修正が必要な場合には、そ
の変更箇所2を含む分割プログラム3−1に対応するC
言語表現のプログラムファイル4−1を直接操作して変
更をおこなうことができる。なお、修正の範囲が大きい
場合には、制御プログラム1を直接変更して、再度分割
プログラムを生成してもよい。
【0121】修正作業が終わると、Cコンパイラ102
によって、その変更のあったC言語表現のプログラムフ
ァイル4−1のみを再コンパイルし、分割プログラム3
−1に対応するオブジェクトファイルを得る。なお、こ
のオブジェクトファイルは、修正前の分割プログラム3
−1に対応するオブジェクトファイルと置換される。
【0122】そして、リンカによって、この新たに生成
されたオブジェクトファイルと、他の既に生成済みのオ
ブジェクトファイル、すなわち変更の生じていない分割
プログラムに対応するオブジェクトファイルと、がリン
クされることで、新たな実行コード9が生成される。
【0123】図11および図12に示した例では、制御
プログラム1が、コンバータ101の前段において既に
複数の分割プログラム3−1〜3−Nに分割されるもの
としていたが、複数の分割プログラム3−1〜3−Nの
生成をおこなわずに、制御プログラム1をC言語等の高
級プログラミング言語に変換する際に分割をおこなって
もよい。
【0124】図13は、コンバータが制御プログラム1
の分割と高級プログラミング言語への変換をおこなう場
合の実行コード生成処理を説明するための説明図であ
る。図13に示すように、分割プログラムは生成されず
に、コンバータ103が、制御プログラム1を複数のC
言語表現のプログラムファイル4−1〜4−Nに分割す
る。これらプログラムファイル4−1〜4−Nは、図1
1に示したものと同様の内容である。すなわち、コンバ
ータ103の内部処理としては、上述した分割アルゴリ
ズムに従って、一旦、インストラクションリストのコー
ド体系で複数の分割プログラムに分割し、それぞれの分
割プログラムに対して高級プログラミング言語の変換を
おこなう。
【0125】図14は、コンバータが制御プログラム1
の分割と高級プログラミング言語への変換をおこなう場
合において、制御プログラム1に修正が生じた際の実行
コード生成処理を説明するための説明図である。図14
に示すように、制御プログラム1の変更箇所2に相当す
る部分の修正が必要な場合には、その変更箇所2を含む
分割プログラムに対応するC言語表現のプログラムファ
イル4−1を直接操作して変更をおこなうことができ
る。なお、修正の範囲が大きい場合には、制御プログラ
ム1を直接変更して、再度分割されたC言語表現のプロ
グラムファイルを生成してもよい。
【0126】修正作業が終わると、Cコンパイラ102
によって、その変更のあったC言語表現のプログラムフ
ァイル4−1のみを再コンパイルし、オブジェクトファ
イルを得る。新たな実行コード9の生成については、図
12の説明とおりである。
【0127】以上に説明したとおり、実施の形態3にか
かる制御プログラム開発支援装置によれば、インストラ
クションリスト等のシーケンス処理用の言語で記述され
た制御プログラム1を、コンパイルに影響がないような
位置で複数のプログラムに分割し、それら分割プログラ
ムを、さらにC言語等の高級プログラミング言語に変換
して実行コードを得るので、実施の形態2において得ら
れる効果を享受することができるとともに、修正が生じ
た場合、高級プログラミング言語で記述されたプログラ
ムファイルに変更を加えることで目的の実行コードを得
ることができ、制御プログラムの開発やデバッギングに
要する時間をさらに短縮することができる。
【0128】実施の形態4.つぎに、実施の形態4にか
かる制御プログラム開発支援装置について説明する。実
施の形態4にかかる制御プログラム開発支援装置は、イ
ンストラクションリスト等の制御プログラムを、実施の
形態1〜3において説明したコンパイラやコンバータに
入力する前に、一旦、最適化フィルタによってコードの
再構成をおこなうことで、コンパイラにおいて、よりコ
ンパクトで最適な実行コードが得られることを特徴とし
ている。
【0129】図15は、実施の形態4にかかる制御プロ
グラム開発支援装置の実行コード生成処理を説明するた
めの説明図である。図15に示すように、制御プログラ
ム1を、コンパイラ105に投入する前段において、最
適化フィルタ104により最適化処理を施す。最適化フ
ィルタ104では、参照されない変数の排除、冗長コー
ドの排除、ロジックの組替え、共通の入力デバイスや出
力デバイスに対する命令を局所的に配置するための順序
の入れ替え等により、元の制御プログラム1のシーケン
ス処理内容を変えることなく最適化をおこない、最適化
された制御プログラム5を出力する。特に、最適化処理
にあたって、制御プログラム1中でアクセスするデバイ
スや使用する命令を近くに集めることで、プログラムに
局所性を持たせることができ、コンパイル後の実行コー
ドの実行効率を向上させることができる。
【0130】最適化された制御プログラム5から実行コ
ード9を生成するまでの処理の流れについては、実施の
形態1〜3に示した実行コード生成処理を適用すること
ができるので、ここではその説明を省略する。
【0131】以上に説明したとおり、実施の形態4にか
かる制御プログラム開発支援装置によれば、インストラ
クションリスト等のシーケンス処理用の言語で記述され
た制御プログラム1に対して、コンパイラ105に投入
する前段において、コード体系の再構成をおこなうの
で、後段のコンパイラ105において、よりコンパクト
で最適な実行コード9を生成することができる。
【0132】実施の形態5.つぎに、実施の形態5にか
かる制御プログラム開発支援装置について説明する。実
施の形態5にかかる制御プログラム開発支援装置は、実
行処理時間が既知であるサンプルプログラムを用意し、
コンパイル前の制御プログラムの開発において、インス
トラクション等の実際の実行処理時間を見積もることを
特徴としている。
【0133】図16は、実施の形態5にかかる制御プロ
グラム開発支援装置において、インストラクションの
例、すなわちサンプルプログラムとそのサイズとその処
理時間とを表した対応表である。図16に示すように、
様々なインストラクションを持ち、様々なサイズの制御
プログラムのサンプルとそれらの実行処理時間を用意し
ておく。一般に、コンパイルされることにより生成され
た実行コードは、処理時間の見積もりが困難であるた
め、用意したサンプルプログラムの中から最も近いプロ
グラムを選択し、作成した制御プログラムの処理時間の
目安とする。なお、図16に示した対応表を用いた処理
時間の見積もりは、例えば、開発した制御プログラムに
おいて、図16に示すインストラクションが、所定の割
合だけ含む部分を、そのインストラクションに近似する
部分であると判断することで、コンピュータプログラム
等により自動的におこなうこともできる。
【0134】以上に説明したとおり、実施の形態5にか
かる制御プログラム開発支援装置によれば、インストラ
クションリスト等の制御プログラム1を開発またはデバ
ッギングする際に、実際の実行処理時間を見積もること
ができるので、シーケンス処理全体の処理速度やタイム
テーブルの取得が容易となる。
【0135】実施の形態6.つぎに、実施の形態6にか
かる制御プログラム開発支援装置について説明する。実
施の形態6にかかる制御プログラム開発支援装置は、上
述した実施の形態3において説明したように、インスト
ラクションリスト等のシーケンス処理用の言語で記述さ
れた制御プログラムを、一旦、C言語等の高級プログラ
ミング言語に変換する処理体系において、デバッギング
作業時に、高級プログラミング言語のデバッグ部分が元
の制御プログラムのどの部分に対応するかを知得するこ
とができることを特徴としている。
【0136】ここでは、まず、実行コードを得るための
制御プログラム開発環境について説明する。図17は、
制御プログラムの開発環境および実行環境を説明するた
めの説明図である。図17に示すように、開発環境30
は、エディタ106、コンバータ101、デバッガ11
0、コンパイラ108およびリンカ107を備えて構成
される。エディタ106は、ラダーダイヤグラムやイン
ストラクションリスト、それらを変換して得た高級プロ
グラミング言語のソースリスト等の制御プログラム1を
作成するツールである。
【0137】コンバータ101、コンパイラ108およ
びリンカ107は、実施の形態1〜5において説明した
ものと同様のツールであり、ここではそれらの説明を省
略する。デバッガ110は、作成した制御プログラムを
デバッグするツールである。また、実行環境40は、開
発環境30において生成された実行コード9を実際に実
行する部分であり、これは、コンパイル型のプログラマ
ブルコントローラであっても、制御プログラム開発支援
装置上で上記プログラマブルコントローラをシミュレー
トしたエミュレータであってもよい。
【0138】実施の形態6にかかる制御プログラム開発
支援装置は、特にデバッギング時に作用および効果を有
するため、ここでは、上記デバッガ110について詳細
に説明する。図18は、デバッギング作業を説明するた
めの説明図である。デバッガ110は、実行中の制御プ
ログラム1内において記述される各デバイスをモニタす
るモニタリング機能、制御プログラムをステップ実行す
るステップ実行機能、サンプリングトレース機能、ステ
ータスラッチ機能、変数(すなわち、デバイス)が指定
した値になるとブレークするブレーク機能、制御プログ
ラム中にブレークポイントを設定するブレークポイント
設定機能を有している。
【0139】なお、図中、メモリ41は、実施の形態1
において説明したプログラマブルコントローラのメモリ
14と等価であるが、一般に、制御プログラム開発支援
装置では、デバッグ時における実行環境40を上記した
エミュレータで実現する場合が多く、その場合には、メ
モリ41は、制御プログラム開発支援装置に搭載された
メモリとなる。
【0140】上記したモニタリング機能とは、制御プロ
グラム1の実行中にデバイスの値を参照し、数値または
グラフ等のグラフィカルな手段で表示する機能であり、
実行中にデバイスの値を書き換えることも可能である。
【0141】また、サンプリングトレース機能とは、ス
キャン毎に指定したデバイスの値を記録する機能であ
る。図19は、このサンプリングトレース機能を説明す
るための説明図である。図19に示すように、サンプリ
ングトレース機能では、指定デバイス(図中においては
出力デバイスY0およびY1が示されている。)のタイ
ミングチャートを作成することができる。なお、このサ
ンプリングトレースにおいて、デバイスの値を記録する
領域は、デバッガ110の中に確保することも可能であ
るし、実行環境中の使用していないメモリを使用するこ
ともできる。また、実行環境中にサンプリングトレース
用のメモリを確保していてもよい。
【0142】ステータスラッチ機能とは、実行中のある
瞬間の全デバイスの値を記録する機能である。図20
は、このステータスラッチ機能を説明するための説明図
である。これらデバイスの値を記録する機能について記
録を取るタイミング(すなわち、トリガ)は、指定デバ
イスが指定値になったとき、またはユーザがデバッガ1
10から手動により入力することができる。トリガがか
かると、メモリの内容をステータスラッチメモリ42へ
コピーする。このステータスラッチメモリ42に保存さ
れたメモリの内容は、デバッガ110によりモニタする
ことができる。
【0143】つぎに、本実施の形態の特徴となるデバッ
ギング手法について説明する。図21は、そのデバッギ
ング手法を説明するための説明図である。ここでは、イ
ンストラクションリストで記述された入力ソースファイ
ル、すなわち制御プログラム1を、コンバータ101に
よってC言語等の高級プログラミング言語で記述された
高級言語変換ファイル4に変換し、コンパイラ108が
その高級言語変換ファイル4をコンパイルすることによ
って実行コード9を生成するシステムを考える。
【0144】まず、コンバータ101は、制御プログラ
ム1を高級言語変換ファイル4に変換する際に、制御プ
ログラム1を構成する各インストラクションリストの行
番号の情報を、高級言語変換ファイル4内の対応する部
分に挿入する。この処理は、図示しているように、一般
的なC言語の処理系が保有しているソースファイルの行
番号を認識するコンパイラ命令“#line”によって
実現することができる。
【0145】このコンパイラ命令“#line”は、C
言語のソースファイルの各行が、別のソースファイルの
各行に対応するといった、コンパイラに対する特殊命令
である。一般的なCコンパイラ、例えば、Free S
oftware FoundationのGnu C
Compilerや、Microsoft社のVisu
al C/C++コンパイラ等も、この機能をサポート
しており、その構文は、#line 行番号“ソースフ
ァイル名”である。
【0146】このように、元のインストラクションリス
トソースの各行に対応したコンパイラ命令を埋め込み、
それを上記したGnu CやVisual Cのような
コンパイラ108でコンパイルすることにより、入力ソ
ースファイルの行番号情報が埋め込まれた実行可能形式
のオブジェクトファイル、すなわち実行コード9を得る
ことができる。
【0147】これを、各コンパイラに対応したデバッ
ガ、例えばGnu CならばGnuDebugger
(gdb)、Visual Cならば、Microso
ft社の統合開発環境VisualStudio付属の
デバッガ上において、ステップ実行させると、各デバッ
ガ上で元々の制御プログラム1が読み込まれ、その制御
プログラム1上の行単位でステップ実行させることが可
能になる。
【0148】以上に説明したとおり、実施の形態6にか
かる制御プログラム開発支援装置によれば、インストラ
クションリスト等のシーケンス処理用の言語で記述され
た制御プログラム1を変換して得られた高級プログラミ
ング言語の高級言語変換ファイル4に、元の制御プログ
ラム1の各インストラクションに対応する部分の記述が
挿入されているので、特に、制御プログラムの開発者
が、インストラクションリストの記述に不慣れではある
が、C言語等の高級プログラミング言語について熟知し
ている場合やその逆の場合に有効となり、制御プログラ
ムの開発時間やデバッギング時間の短縮化を図ることが
できる。
【0149】また、C言語等の高級プログラミング言語
で記述された状態のプログラムファイルに対して修正を
おこなった際に、元のインストラクションリスト等の制
御プログラムを同時に変更することができるので、これ
ら二者間の整合性を高めることも可能となる。
【0150】実施の形態7.つぎに、実施の形態7にか
かるプログラマブルコントローラについて説明する。実
施の形態7にかかるプログラマブルコントローラは、変
更前の制御プログラムと変更後の制御プログラムの間の
差分データに基づいて生成されたバイナリパッチを受信
して記憶し、そのバイナリパッチを実行させることで、
実行状態にあるシーケンス処理の所定のタイミングで、
実行中の実行コードを新規な実行コードに差し替えると
ともに、新規な実行コードによるシーケンス処理を継続
することを特徴としている。
【0151】図22は、実施の形態7にかかるプログラ
マブルコントローラにおいて、バイナリパッチを利用し
た実行コード置換処理を説明するための説明図である。
まず、プログラマブルコントローラが全く新規な実行コ
ードを受信して実行する処理について説明する。
【0152】図22(a)に示すように、まず、制御プ
ログラム開発支援装置20によって、実行コード8を生
成する。この制御プログラム開発支援装置20による実
行コード生成処理は、従来の制御プログラム開発支援装
置または実施の形態1〜6にかかる制御プログラム開発
支援装置と同様であるので、ここではその説明を省略す
る。
【0153】そして、プログラマブルコントローラ10
は、上記した実行コード8を図示しない通信インターフ
ェースを介して受け取り、プログラムローダ120によ
って、ワークメモリ等のメモリ14に読み込む。これに
より、プログラマブルコントローラ10は、実行コード
8に従ったシーケンス処理に移行することができる。
【0154】つぎに、実行コード8の元のソースファイ
ルとなる制御プログラム1に変更が生じ、その変更の結
果、制御プログラム1’が生成されたとする。特に、こ
の変更は、変更前の制御プログラム1に対して部分的な
変更であるとし、全く新たな内容を一から書き下ろした
訳ではないとする。この際、まず上述した実行コード生
成処理と同様に、制御プログラム1’に対応した実行コ
ード8’が生成される。そして、制御プログラム開発支
援装置20は、保持してあった変更前の実行コード8を
読み出し、その実行コード8と変更後の実行コード8’
との差分データを差分データ生成ツール130によって
生成する。
【0155】なお、実行コード8や実行コード8’は、
ASCIIコードで表されたテキストデータではなく、
バイナリコードで表されたオブジェクトファイルであ
る。よって、これら実行コード間のバイナリデータとし
ての差異は、元の制御プログラム1および1’間の差異
程度の局所的なものになっている。例えば、コンパイラ
100が、変更前の制御プログラム1の各行をオブジェ
クトファイル中の対応するブロック位置に変換している
だけのものならば、その差異は、何番目のブロック位置
に新たにブロックが追加されたのみや、また、何番目の
ブロック位置が新たにこのブロックに置き換わったのみ
程度しかない。
【0156】また、その差異は、各実行コード中のテキ
ストセグメント、データセグメント、bssセグメント
(初期化されていないセグメント)等の差異でしかな
い。そのような差異を抽出し、ファイルとして出力する
のが、差分データ生成ツール130であり、出力された
差分データがバイナリパッチ7と呼ばれるものである。
【0157】パッチとは、コンピュータの世界で一般に
使われている、ファイルの差分から元データを再現する
手法およびその差分データのことであり、一般的にはA
SCIIコードのいわゆるテキストファイル間の差分に
基づいて新規なテキストファイルを生成するものである
が、それらをバイナリデータに対しておこなうようにし
たものがバイナリパッチである。
【0158】しかしながら、これらは、コンピュータ上
のハードディスクのようないわゆる2次記憶装置上に置
かれたファイルに対しておこなうものであり、実行中の
メモリ上のプログラムに対しておこなうような手段では
ない。ところが、実施の形態7にかかるプログラマブル
コントローラでは、そのバイナリパッチ7を、実行中の
実行コードに対しておこなう。
【0159】よって、プログラマブルコントローラ10
は、新たに生成された実行コード8’ではなく、それよ
りもサイズの小さなバイナリパッチ7を、図示しない通
信インターフェースを介して受け取り、フラッシュメモ
リ等の不揮発性メモリに保持する。
【0160】ここで、プログラマブルコントローラ10
上のプログラムローダ120は、パッチをあてるパッチ
ャとしても機能し、実行状態にある実行コード8の繰り
返しループ中の適当なタイミングで、バイナリパッチデ
ータ7から情報を読み取り、実行中の実行コード8に対
してコードの置換処理を実行する。すなわち、上述した
ように、あるブロック位置へのブロックの挿入や、ブロ
ックの書き換え、または各セグメントに対する挿入・書
き換え処理をおこなう。そして、プログラマブルコント
ローラ10は、実行コードの書き換えが終了すると、直
ちにその新たな実行コードの実行をおこない、シーケン
ス処理を継続する。
【0161】以上に説明したとおり、実施の形態7にか
かるプログラマブルコントローラによれば、制御プログ
ラムのうち変更箇所のみが記述された差分データに基づ
いて実行中の実行コードを自動的に置換するとともに、
置換された新たな実行コードによるシーケンス処理を継
続するので、従来のように、変更後の実行コードをまる
ごとプログラマブルコントローラ10に保持せずとも、
その実行コードよりもサイズの小さいバイナリパッチ7
を保持すればよく、メモリ資源の縮小化を図ることがで
きる。
【0162】なお、上述した差分データによって制御プ
ログラムの変更に対応する概念は、インタプリタ型のプ
ログラマブルコントローラにおいて、ラダーダイヤグラ
ムやインストラクションリストに対しても適用すること
ができる。
【0163】実施の形態8.つぎに、実施の形態8にか
かる制御プログラム開発支援装置について説明する。実
施の形態8にかかる制御プログラム開発支援装置は、コ
ンパイルすることにより得られる実行コードに、コンパ
イル前の制御プログラムのファイルを圧縮した形で挿入
し、実行コードと制御プログラムの一元化を図ることを
特徴としている。
【0164】図23は、実施の形態8にかかる制御プロ
グラム開発支援装置における実行コード生成処理を説明
するための説明図である。まず、制御プログラム開発支
援装置は、インストラクションリスト等の制御プログラ
ム1に対し、コンバータ101aにより、C言語等の高
級プログラミング言語に変換し、その変換により得られ
たC言語表現のプログラムファイル4aをCコンパイラ
102に投入する。そして、Cコンパイラ102は、C
言語表現のプログラムファイル4aをコンパイルしてオ
ブジェクトファイル8aを出力する。
【0165】一方で、制御プログラム開発支援装置は、
ファイル圧縮ツール140によって、制御プログラム1
を圧縮して圧縮ファイル99を生成する。なお、上記し
たファイル圧縮ツール140としては、例えばgzi
p、bzip2、lha等を利用することができる。こ
のようなツールにより圧縮された圧縮ファイル99は、
ASCIIコードのテキスト形式ではなく、バイナリデ
ータとなっている。
【0166】つづいて、コンバータ101bによって、
圧縮ファイル99をC言語表現のプログラムファイル4
bに変換する。このように、圧縮ファイル99をコンバ
ータ101bによってC言語表現に変換する理由は、圧
縮された制御プログラムのソースコードを単なる添付フ
ァイルとしてでなく、最終的に生成される実行コードの
一部に含めるためである。
【0167】図24は、制御プログラム1の内容である
ソースファイルの例を示す図である。また、図25は、
圧縮ファイル99を変換して得られたC言語表現の例を
示す図である。図24に示すようなインストラクション
リストで表された制御プログラム1は、上述したよう
に、ファイル圧縮ツール140によって、バイナリデー
タとして表された圧縮ファイル99に変換される。
【0168】その圧縮ファイル99が、例えば先頭のデ
ータから“01h,02h,03h...”と並んでい
たならば、コンバータ101bによって、1バイトデー
タ単位の配列{0x01,0x02,0x0
3,....}のように変換される。なお、図25に示
す配列データは、図24に示したソースファイルに対す
る変換結果である。
【0169】このように、圧縮ファイルをCコンパイラ
102で解釈できる形に変換してC言語表現のプログラ
ムファイル4bを生成している。そして、Cコンパイラ
102は、C言語表現のプログラムファイル4aと同様
に、C言語表現のプログラムファイル4bをコンパイル
してオブジェクトファイル8bを出力する。
【0170】Cコンパイラ102により生成された二つ
のオブジェクトファイル8aおよび8bは、リンカ15
0によってリンクされ、最終的に、プログラマブルコン
トローラにおいて直接実行可能な一つの実行コード90
を得ることができる。すなわち、実行コード90には、
実際にシーケンス処理に寄与する部分と制御プログラム
1のソースコードの情報とによって構成されている。
【0171】このようにして得られた実行コード90
は、一般に、プログラマブルコントローラの不揮発性メ
モリ等に保持されるが、例えば図25に示しているよう
に、制御プログラム1を圧縮したデータは、_Inpu
tSourceという名前の配列であり、そのファイル
名がsample.il,gzであるとして実行コード
内に含有されているため、その名前を元に、圧縮ファイ
ル99を抽出することが可能である。そして、圧縮ファ
イル99を抽出した後は、ファイル圧縮ツール140に
おいて一般に備わっている展開機能やgunzip、b
unzip2等のような圧縮形式に対応する展開ツール
を用いることにより、元の制御プログラム1を復元する
ことが可能になる。
【0172】以上に説明したとおり、実施の形態8にか
かる制御プログラム開発支援装置によれば、実際のシー
ケンス処理に寄与する部分とインストラクションリスト
等の制御プログラム1のソースコード情報とが一体とな
った実行コードを生成するので、制御プログラムと実行
コードとを一元化してプログラマブルコントローラに保
持することができ、開発やデバッグ時に必要となる制御
プログラムを消失した場合や現場のプログラマブルコン
トローラから直接制御プログラムを操作したい場合にお
いて、実行コードからその制御プログラムを取り出すこ
とができるとともに、実行コードと制御プログラムの整
合性を図ることもできる。
【0173】実施の形態9.つぎに、実施の形態9にか
かるプログラマブルコントローラおよび制御プログラム
開発支援装置について説明する。実施の形態1にかかる
プログラマブルコントローラは、制御プログラムを実行
コードにインタプリーティングする際に、制御プログラ
ムのうち出現頻度の高い命令順にパターンマッチングを
おこなうことを特徴としており、実施の形態9にかかる
制御プログラム開発支援装置は、制御プログラムを実行
コードにコンパイルする際に、制御プログラムのうち出
現頻度の高い命令順にパターンマッチングをおこなうこ
とを特徴としている。
【0174】図26は、実施の形態9にかかる制御プロ
グラム開発支援装置におけるコンパイル処理を説明する
ための説明図である。図26は、特に、ユーザが記述し
たインストラクションリスト等の制御プログラムである
入力ソースファイル1を変換し、プログラマブルコント
ローラにおいて直接実行可能な実行コードとなる出力フ
ァイル70を生成するシステムを示している。
【0175】一般に、インストラクションリストは、L
D命令やOUT命令が基本的に多く使用されることや、
ユーザが同じ内容の処理をおこなう場合に、ある特定の
命令を多用する等の理由により、命令の出現回数に多く
の偏りを有している。また、多くのプログラムが、過去
のプログラムの実績に基づく信頼性から多く流用される
ため、それにより使用する命令の偏りも存在する。
【0176】そこで、コンパイラに相当するプログラム
変換ツール160では、パターン検出・並べ替え部17
0を備えている。パターン検出・並べ替え部170に
は、パターン出現カウント部171とパターン比較並べ
替え部172を備えている。パターン出現カウント部1
71は、各プログラム変換ツール160で変換する際
に、その命令の出現回数をカウントし、それをパターン
出現頻度保存ファイル60に保存する。
【0177】パターン比較並べ替え部172は、パター
ン出現頻度保存ファイル60から出現回数の多い命令の
順番に、パターンマッチ部180の第1〜4のパターン
比較181a〜181dをパターンマッチングの順番の
先の方に並び替える。もちろん、各パターン比較に対す
る第1〜4のアクション実行部182a〜182dは連
動する。これにより、出現頻度の多い命令ほど早くパタ
ーンマッチするため、処理を完了するまでの時間は短く
なる。パターン比較並べ替え部172が並べ替えるタイ
ミングは、命令一つ一つに対し、パターンマッチ部18
0から抜けて、行検出部161に戻るときでも良いし、
プログラム変換ツール160が起動される際のタイミン
グでもよい。
【0178】つぎに、この制御プログラム開発支援装置
のコンパイル動作について説明する。図27は、実施の
形態9にかかる制御プログラム開発支援装置におけるコ
ンパイル動作を示すフローチャートである。
【0179】まず、制御プログラム開発支援装置は、プ
ログラム変換ツール160に対して、入力ソースファイ
ル50を入力する。ここで、入力ソースファイル50
は、インストラクションリスト LD X0 AND X10 OUT Y0 等が記述されているものとする。
【0180】まず、制御プログラム開発支援装置は、後
述するパターン出現頻度保存ファイル60を読み込み
(ステップS401)、パターン比較並び替え部172
によって、出現頻度の多い命令順を認識する(ステップ
S402)。これにより、パターン比較並び替え部17
2は、パターンマッチ部180内の第1〜4のパターン
比較部181a〜181dおよびそれらに対応する第1
〜4のアクション実行部182a〜182dの並び替え
をおこなう(ステップS403)。
【0181】そして、プログラム変換ツール160中に
おいて、行検出部161が入力ソースファイル50のう
ちの1行を検出し(ステップS404)、検出した1行
が入力ソースファイル50の終了位置でないならば(ス
テップS405否定)、それを意味解釈部162に渡
す。
【0182】上記のインストラクションリスト例では、
まず、“LD X0”が最初に意味解釈部162に渡さ
れる。意味解釈部162では、これがLD命令であるこ
とを解釈し、LD命令の実行部を検索するためにパター
ンマッチ部180にLD命令の実行部の検索をさせる
(ステップS408)。
【0183】パターンマッチ部180では、内部的に実
装されている各種パターン、上記例では、命令“LD”
のアクションがどれかを、順番に第1のパターン比較1
81a、第2のパターン比較181b、第3のパターン
比較181c、第4のパターン比較181d、というよ
うにパターンマッチをおこない(ステップS409)、
例えば、第4のパターン比較181dがLD命令に関す
る内容ならば、その動作である第4のアクション実行部
182dを実行する(ステップS410)。第4のアク
ション実行部182dは、LD命令に対応した実行コー
ド記述を出力ファイル70に出力し、パターン出現カウ
ント部171により、その命令の出現頻度がカウントさ
れる(ステップS411)。
【0184】この処理が終わると、再度、ステップS4
04に戻り、上記例では、つぎの行である“AND X
10”に対して同じ処理を繰り返す。一方、検出した1
行が入力ソースファイル50の終了位置であるならば
(ステップS405肯定)、出力ファイル70への書き
込みを終了し(ステップS406)、パターン出現頻度
保存ファイル60に、パターン出現カウント部171に
よってカウントされた結果を更新データとして保存する
(ステップS407)。
【0185】以上に説明したとおり、実施の形態9にか
かる制御プログラム開発支援装置によれば、制御プログ
ラムを実行コードにコンパイルする際に、制御プログラ
ムのうち出現頻度の高い命令順にパターンマッチングを
おこなうので、コンパイルの際に、制御プログラムの各
命令に適合する実行コードを迅速に発見でき、制御プロ
グラムをコンパイルするための待ち時間を減少させるこ
とが可能になる
【0186】なお、上述したプログラム変換ツール16
0の動作は、インストラクションリスト等の制御プログ
ラムをC言語等の高級プログラミング言語で記述された
プログラムファイルに変換するコンバータに適用するこ
とも可能である。すなわち、上述した説明において、出
力ファイル70に書き込まれる内容は、実行コードでは
なく、高級プログラミング言語の命令表現となる。
【0187】さらに、上述したプログラム変換ツール1
60の動作は、インタプリタ型のプログラマブルコント
ローラにも適用することができる。この場合、入力ソー
スファイル50は、インストラクションリストでも、そ
れを変換した中間コードでもよく、第1〜4のアクショ
ン実行部182a〜182dで実行されるアクション
は、実際のプログラマブルロジック処理になる。
【0188】なお、以上に説明した実施の形態1〜6、
8および9にかかる制御プログラム開発支援装置によっ
て実現される機能と、実施の形態1、7および9にかか
るプログラマブルコントローラによって実現される機能
は、制御プログラムの開発とともにシーケンス処理も可
能とする、いわゆるソフトウェアプログラマブルコント
ローラに搭載することも可能である。
【0189】
【発明の効果】以上、説明したとおり、この発明によれ
ば、高速化実装手段を搭載した汎用マイクロプロセッサ
を備えるとともに、受信した実行コードが、その汎用マ
イクロプロセッサの高速化実装手段を用いて実行される
ように最適化されているので、マイクロプロセッサがA
SICとして提供される従来のプログラマブルコントロ
ーラと比較して、より高速にシーケンス処理を実行する
ことができるという効果を奏する。
【0190】つぎの発明によれば、シーケンス制御用の
言語で記述された制御プログラムを、高速化実装手段を
搭載した汎用マイクロプロセッサで実行できる実行コー
ドにコンパイルするので、パーソナルコンピュータ等に
使用される汎用マイクロプロセッサを搭載したプログラ
マブルコントローラにおいて、シーケンス処理を実行さ
せることができるとともに、コンパイル手段を変更する
ことにより、様々な汎用マイクロプロセッサに対応した
実行コードを得ることができるので、制御プログラムを
変更せずとも様々なプログラマブルコントローラに対応
することができ、過去の制御プログラムの資産の有効活
用、制御プログラムの管理の一元化および制御プログラ
ムの開発時間の効率化を図ることが可能になるという効
果を奏する。
【0191】つぎの発明によれば、制御プログラムを複
数のブロックに分割して、分割したブロック毎にコンパ
イルして最終的な実行コードを得ることができるので、
長大な一本の制御プログラムについて変更が生じた場合
であっても、従来のように制御プログラム全体を再コン
パイルすることなく、変更の生じた一部分だけを再コン
パイルすることで実行コードを生成することができ、制
御プログラムのデバッグや保守作業に要する時間を短縮
することができるという効果を奏する。
【0192】つぎの発明によれば、制御プログラムを複
数のブロックに分割して、分割したブロックのそれぞれ
を汎用コンピュータ用高級言語に変換し、各ブロックに
対応する汎用コンピュータ用高級言語のプログラムをコ
ンパイルして最終的な実行コードを得ることができるの
で、長大な一本の制御プログラムについて変更が生じた
場合であっても、従来のように制御プログラム全体を再
コンパイルすることなく、変更の生じた一部分だけを再
コンパイルすることで実行コードを生成することができ
るとともに、コンパイラとして従来の汎用コンピュータ
用高級言語用のコンパイラを使用することができ、制御
プログラムのデバッグや保守作業に要する時間を短縮す
ることができるという効果を奏する。
【0193】つぎの発明によれば、パーソナルコンピュ
ータ等に使用される汎用マイクロプロセッサを搭載した
プログラマブルコントローラに対して実行コードを生成
するので、マイクロプロセッサがASICとして提供さ
れる従来のプログラマブルコントローラと比較して、パ
イプライン、スーパスカラ、アウトオブオーダ等の高速
処理によって、高速にシーケンス処理を実行することが
できるという効果を奏する。
【0194】つぎの発明によれば、制御プログラム分割
手段が、ラダーダイヤグラム内の所定のラングの切れ目
において複数のブロックに分割し、当該ブロック毎にプ
ログラムファイルを生成するので、入力から出力までの
一連の回路ブロックを単位としてプログラムファイルを
管理することができるとともに、コンパイル時における
入出力デバイスのレジスタの最適化が分割によって阻害
されるという事態を低減させることができ、特に、高速
化実装手段を搭載したマイクロプロセッサに対しては、
複数のラングの集まりで一つのブロックを構成すること
で、アウトオブオーダのコードを出力するコンパイラの
最適化機能を活用することができるという効果を奏す
る。
【0195】つぎの発明によれば、制御プログラム分割
手段が、ラダーダイヤグラム内の所定のラングの切れ目
であってかつジャンプ命令に対するジャンプ先となる位
置において複数のブロックに分割し、当該ブロック毎に
プログラムファイルを生成するので、コンパイラの最適
化に影響を与えないとともに、分割後のプログラムファ
イルをサブルーチンとして管理することができ、制御プ
ログラムのデバッグや保守作業を容易にするという効果
を奏する。
【0196】つぎの発明によれば、制御プログラム分割
手段が、ラダーダイヤグラムにおいて共通の入力デバイ
スまたは出力デバイスに対する命令を含んだラングのす
べてまたは一部を抽出し、抽出したラングのすべてまた
は一部を一つのブロックとして複数のブロックに分割
し、当該ブロック毎にプログラムファイルを生成するの
で、特定のデバイスに対する制御プログラムの変更が生
じた際に、その部分に該当するプログラムファイルのみ
を変更して再コンパイルして実行コードを得ることがで
き、制御プログラムのデバッグや保守作業に要する時間
を短縮することができるという効果を奏する。
【0197】つぎの発明によれば、制御プログラムを、
コンパイルする前段において、一旦、参照されない変数
の排除、冗長コードの排除、並べ替え等をおこなうこと
によって最適なコード体系に再構築するので、最適化さ
れたコードにより構成された制御プログラムをコンパイ
ル手段に提供することができ、コンパイルに要する時間
の低減と実行時の速度の向上を図ることができるという
効果を奏する。
【0198】つぎの発明によれば、処理時間が既知であ
るサンプルプログラムと実行コードに対応する制御プロ
グラムとを対応付けた対応表から、シーケンス処理実行
時間を見積もることができるので、従来は、コンパイラ
の最適化によって生成された実行コードの実際の処理時
間とそれに対応する制御プログラム内の各インストラク
ションとを正確に対応付けて知得することが困難であっ
たが、それが可能となるという効果を奏する。
【0199】つぎの発明によれば、インストラクション
リストとそのインストラクションリストを変換すること
で得られた高級プログラミング言語の制御プログラムと
の実行部分を対応付けてステップ実行できるとともにそ
の部分を表示することができるので、インストラクショ
ンリストをコンパイルして得られた実行コードに基づい
て動作するプログラマブルコントローラにおいても、ユ
ーザが記述したインストラクションリストのステップ実
行レベルで動作確認がおこなえるようになり、制御プロ
グラムの開発およびデバッグ作業を容易にすることがで
きるという効果を奏する。
【0200】つぎの発明によれば、現在実行されている
実行コードと新たな実行コードとの差分データに基づい
て、現在実行中の実行コードを、所定のタイミングで新
たな実行コードに変更し、変更後の実行コードを継続的
に実行させるので、実行コードに変更が生じた場合であ
っても、プログラマブルコントローラには新たな実行コ
ードではなく、それよりもサイズの小さな差分データを
メモリにダウンロードすることで実行コードの変更と実
行状態の継続をさせることができ、プログラマブルコン
トローラのメモリ資源を多く要しないという効果を奏す
る。
【0201】つぎの発明によれば、制御プログラムと実
行コードとを一元化してプログラマブルコントローラに
保持するので、開発やデバッグ時に必要となる制御プロ
グラムを消失した場合や現場のプログラマブルコントロ
ーラから直接制御プログラムを操作したい場合におい
て、実行コードからその制御プログラムを取り出すこと
ができるとともに、実行コードと制御プログラムの整合
性を図ることもできるという効果を奏する。
【0202】つぎの発明によれば、制御プログラムと実
際に実行される実行コードとを一元化してあらためて実
行コードとして生成するので、開発やデバッグ時に必要
となる制御プログラムを消失した場合や現場のプログラ
マブルコントローラから直接制御プログラムを操作した
い場合において、実行コードからその制御プログラムを
取り出すことができるとともに、実行コードと制御プロ
グラムの整合性を図ることもできるという効果を奏す
る。
【0203】つぎの発明によれば、制御プログラムを実
行コードにインタプリーティングする際に、制御プログ
ラムのうち出現頻度の高い命令順にパターンマッチング
をおこなうので、インタプリーティングの際に、制御プ
ログラムの各命令に適合する実行コードを迅速に発見で
き、制御プログラムの実行時間を減少させることが可能
になるという効果を奏する。
【0204】つぎの発明によれば、制御プログラムを実
行コードにコンパイルする際に、制御プログラムのうち
出現頻度の高い命令順にパターンマッチングをおこなう
ので、コンパイルの際に、制御プログラムの各命令に適
合する実行コードを迅速に発見でき、制御プログラムを
コンパイルするための待ち時間を減少させることが可能
になるという効果を奏する。
【0205】つぎの発明によれば、制御プログラムの開
発とともにシーケンス処理も可能とする、いわゆるソフ
トウェアプログラマブルコントローラにおいて、上記し
た制御プログラム開発支援装置と上記したプログラマブ
ルコントローラの各機能を実現することができるという
効果を奏する。
【図面の簡単な説明】
【図1】 実施の形態1にかかるプログラマブルコント
ローラの概略構成を示すブロック図である。
【図2】 実施の形態1にかかる制御プログラム開発支
援装置において、実行コードの生成を説明するための説
明図である。
【図3】 実施の形態2にかかる制御プログラム開発支
援装置において、制御プログラムの分割をともなう実行
コード生成処理を説明するための説明図である。
【図4】 ラダーダイヤグラムの例を示す図である。
【図5】 実施の形態2にかかる制御プログラム開発支
援装置において、ステップ数と分割後ファイルの対応関
係を示した表である。
【図6】 実施の形態2にかかる制御プログラム開発支
援装置において、ラング分割方法の処理を示したフロー
チャートである。
【図7】 実施の形態2にかかる制御プログラム開発支
援装置において、ジャンプ先ラベル名と分割後ファイル
の対応関係を示した表である。
【図8】 実施の形態2にかかる制御プログラム開発支
援装置において、ジャンプ先分割方法の処理を示したフ
ローチャートである。
【図9】 実施の形態2にかかる制御プログラム開発支
援装置において、機器分割方法の処理を示したフローチ
ャートである。
【図10】 実施の形態2にかかる制御プログラム開発
支援装置において、制御プログラムに修正が生じた際の
実行コード生成処理を説明するための説明図である。
【図11】 実施の形態3にかかる制御プログラム開発
支援装置において、制御プログラムの分割と高級プログ
ラミング言語への変換とをともなう実行コード生成処理
を説明するための説明図である。
【図12】 実施の形態3にかかる制御プログラム開発
支援装置において、高級プログラミング言語に一旦変換
する場合の制御プログラムに修正が生じた際の実行コー
ド生成処理を説明するための説明図である。
【図13】 実施の形態3にかかる制御プログラム開発
支援装置において、コンバータが制御プログラムの分割
と高級プログラミング言語への変換をおこなう場合の実
行コード生成処理を説明するための説明図である。
【図14】 実施の形態3にかかる制御プログラム開発
支援装置において、コンバータが制御プログラムの分割
と高級プログラミング言語への変換をおこなう場合に制
御プログラムに修正が生じた際の実行コード生成処理を
説明するための説明図である。
【図15】 実施の形態4にかかる制御プログラム開発
支援装置の実行コード生成処理を説明するための説明図
である。
【図16】 実施の形態5にかかる制御プログラム開発
支援装置において、サンプルプログラムとそのサイズと
その処理時間とを表した表である。
【図17】 実施の形態6にかかる制御プログラム開発
支援装置において、制御プログラムの開発環境および実
行環境を説明するための説明図である。
【図18】 実施の形態6にかかる制御プログラム開発
支援装置におけるデバッギング作業を説明するための説
明図である。
【図19】 実施の形態6にかかる制御プログラム開発
支援装置において、サンプリングトレース機能を説明す
るための説明図である。
【図20】 実施の形態6にかかる制御プログラム開発
支援装置において、ステータスラッチ機能を説明するた
めの説明図である。
【図21】 実施の形態6にかかる制御プログラム開発
支援装置におけるデバッギング手法を説明するための説
明図である。
【図22】 実施の形態7にかかるプログラマブルコン
トローラにおいて、バイナリパッチを利用した実行コー
ド置換処理を説明するための説明図である。
【図23】 実施の形態8にかかる制御プログラム開発
支援装置における実行コード生成処理を説明するための
説明図である。
【図24】 実施の形態8にかかる制御プログラム開発
支援装置において、制御プログラムの内容であるソース
ファイルの例を示す図である。
【図25】 実施の形態8にかかる制御プログラム開発
支援装置において、圧縮ファイルを変換して得られたC
言語表現の例を示す図である。
【図26】 実施の形態9にかかる制御プログラム開発
支援装置におけるコンパイル処理を説明するための説明
図である。
【図27】 実施の形態9にかかる制御プログラム開発
支援装置におけるコンパイル動作を示すフローチャート
である。
【符号の説明】
1 制御プログラム、3−1〜3−N 分割プログラ
ム、4−1〜4−N C言語表現、8,8’,9 実行
コード、10 プログラマブルコントローラ、11 汎
用マイクロプロセッサ、12 CPUコア、13 高
速化実装技術部、14 メモリ、15 入出力制御部、
16 通信インターフェース、20 制御プログラム開
発支援装置、21 入力デバイス、22 出力デバイ
ス、30 開発環境、40 実行環境、100,108
コンパイラ、101,101a,101b,103
コンバータ、102 Cコンパイラ、106 エディ
タ、107,150 リンカ、110 デバッガ、14
0 ファイル圧縮ツール、160プログラム変換ツー
ル、161 行検出部、162 意味解釈部、170
パターン検出・並べ替え部。
フロントページの続き (72)発明者 塩本 佳子 東京都千代田区丸の内二丁目2番3号 三 菱電機株式会社内 (72)発明者 南角 茂樹 東京都千代田区丸の内二丁目2番3号 三 菱電機株式会社内 Fターム(参考) 5B081 AA10 CC41 5H220 BB03 BB12 CC03 CX02 DD01 DD04 EE01 EE13 FF05 JJ16 JJ19 JJ24 JJ26 JJ35 JJ42

Claims (17)

    【特許請求の範囲】
  1. 【請求項1】 制御プログラムをコンパイルすることで
    生成された実行コードに基づいてシーケンス処理をおこ
    なうプログラマブルコントローラにおいて、 前記実行コードを記憶する記憶手段と、 パイプラインロジックやキャッシュ等の高速化実装手段
    を搭載するとともに、前記実行コードによって直接実行
    される汎用マイクロプロセッサと、 を備えたことを特徴とするプログラマブルコントロー
    ラ。
  2. 【請求項2】 ラダーダイヤグラムやインストラクショ
    ンリスト等のシーケンス制御用の言語で記述された制御
    プログラムを開発するための制御プログラム開発支援装
    置において、 前記制御プログラムを、パイプラインロジックやキャッ
    シュ等の高速化実装手段を搭載した汎用マイクロプロセ
    ッサにおいて直接実行可能な実行コードにコンパイルす
    るコンパイル手段を備えたことを特徴とする制御プログ
    ラム開発支援装置。
  3. 【請求項3】 ラダーダイヤグラムやインストラクショ
    ンリスト等のシーケンス制御用の言語で記述された制御
    プログラムを開発するための制御プログラム開発支援装
    置において、 前記制御プログラムを複数のブロックに分割する制御プ
    ログラム分割手段と、 前記複数のブロックのすべてまたは一部をプログラマブ
    ルコントローラにおいて直接実行可能な実行コードにコ
    ンパイルするコンパイル手段と、 を備えたことを特徴とする制御プログラム開発支援装
    置。
  4. 【請求項4】 ラダーダイヤグラムやインストラクショ
    ンリスト等のシーケンス制御用の言語で記述された制御
    プログラムを開発するための制御プログラム開発支援装
    置において、 前記制御プログラムを複数のブロックに分割する制御プ
    ログラム分割手段と、 前記複数のブロックのすべてまたは一部を、当該ブロッ
    ク毎に、汎用コンピュータ用高級言語で記述された高級
    言語制御プログラムに変換する制御プログラム変換手段
    と、 前記ブロック毎に対応する汎用コンピュータ用高級プロ
    グラミング言語のすべてまたは一部をプログラマブルコ
    ントローラにおいて直接実行可能な実行コードにコンパ
    イルするコンパイル手段と、 を備えたことを特徴とする制御プログラム開発支援装
    置。
  5. 【請求項5】 前記プログラマブルコントローラは、パ
    イプラインロジックやキャッシュ等の高速化実装手段を
    搭載する汎用マイクロプロセッサを備えたことを特徴と
    する請求項3または4に記載の制御プログラム開発支援
    装置。
  6. 【請求項6】 前記制御プログラムは、ラダーダイヤグ
    ラムまたはラダーダイヤグラムから生成されたインスト
    ラクションリストであり、 前記制御プログラム分割手段は、前記ラダーダイヤグラ
    ム内の所定のラングにおいて複数のブロックに分割し
    て、当該ブロック毎にプログラムファイルを生成するこ
    とを特徴とする請求項3、4または5に記載の制御プロ
    グラム開発支援装置。
  7. 【請求項7】 前記制御プログラムは、ラダーダイヤグ
    ラムまたはラダーダイヤグラムから生成されたインスト
    ラクションリストであり、 前記制御プログラム分割手段は、前記ラダーダイヤグラ
    ム内のジャンプ命令に対するジャンプ先となる所定のラ
    ングにおいて複数のブロックに分割し、当該ブロック毎
    にプログラムファイルを生成することを特徴とする請求
    項3、4または5に記載の制御プログラム開発支援装
    置。
  8. 【請求項8】 前記制御プログラムは、ラダーダイヤグ
    ラムまたはラダーダイヤグラムから生成されたインスト
    ラクションリストであり、 前記制御プログラム分割手段は、前記ラダーダイヤグラ
    ムにおいて共通の入力デバイスまたは出力デバイスに対
    する命令を含んだラングのすべてまたは一部を抽出し、
    抽出したラングのすべてまたは一部により一つのブロッ
    クを構成するとともに当該ブロック毎にプログラムファ
    イルを生成することを特徴とする請求項3、4または5
    に記載の制御プログラム開発支援装置。
  9. 【請求項9】 前記制御プログラムを、参照されない変
    数の排除、冗長コードの排除、共通の入力デバイスや出
    力デバイスに対する命令を局所的に配置するためのコー
    ドの並べ替え等をおこなうことによって最適なコード体
    系に再構築する最適化フィルタ手段を備え、 前記最適化フィルタ手段により最適化された制御プログ
    ラムをあらためて前記制御プログラムとすることを特徴
    とする請求項2〜8のいずれか一つに記載の制御プログ
    ラム開発支援装置。
  10. 【請求項10】 処理時間が既知であるサンプルプログ
    ラムと前記実行コードに対応する制御プログラムとを対
    応付けた対応表を有し、当該対応表に基づいてプログラ
    マブルコントローラにおけるシーケンス処理実行時間を
    見積もる処理時間概算手段を備えたことを特徴とする請
    求項2〜9のいずれか一つに記載の制御プログラム開発
    支援装置。
  11. 【請求項11】 ラダーダイヤグラムやインストラクシ
    ョンリスト等のシーケンス制御用の言語で記述された制
    御プログラムを開発するための制御プログラム開発支援
    装置において、 前記制御プログラムを汎用コンピュータ用高級プログラ
    ミング言語で記述された高級プログラミング言語制御プ
    ログラムに変換する制御プログラム変換手段と、 前記高級プログラミング言語制御プログラムを構成する
    ソースコード内において、前記インストラクションリス
    トを構成する各行に対応した部分に当該行番号を示すコ
    ードを挿入してデバッグ用制御プログラムを生成するデ
    バッグコード生成手段と、 前記デバッグ用制御プログラムをステップ実行すること
    により前記インストラクションリストの各行と前記高級
    プログラミング言語制御プログラムの実行部分とを対応
    付けて表示するデバッグ実行手段と、 を備えたことを特徴とする制御プログラム開発支援装
    置。
  12. 【請求項12】 制御プログラムをコンパイルすること
    で生成された実行コードに基づいてシーケンス処理をお
    こなうプログラマブルコントローラにおいて、 前記実行コードを記憶する第1の記憶手段と、 前記第1の記憶手段に記憶されている実行コードと新た
    な実行コードとの差分データを記憶する第2の記憶手段
    と、 前記実行コードにより直接実行されるマイクロプロセッ
    サと、 前記差分データに基づいて、所定のタイミングで、現在
    実行中の実行コードを新たな実行コードに変更するとと
    もに、変更後の実行コードを継続的に実行させるパッチ
    処理手段と、 を備えたことを特徴とするプログラマブルコントロー
    ラ。
  13. 【請求項13】 制御プログラムをコンパイルすること
    で生成された実行コードに基づいてシーケンス処理をお
    こなうプログラマブルコントローラにおいて、 前記実行コードを記憶する記憶手段と、 前記実行コードにより直接実行されるマイクロプロセッ
    サと、 を備え、 前記実行コードは、前記制御プログラムの圧縮により生
    成されたバイナリデータを含むことを特徴とするプログ
    ラマブルコントローラ。
  14. 【請求項14】 ラダーダイヤグラムやインストラクシ
    ョンリスト等のシーケンス制御用の言語で記述された制
    御プログラムを開発するための制御プログラム開発支援
    装置において、 前記制御プログラムを圧縮して圧縮ファイルを生成する
    圧縮手段と、 前記圧縮ファイルを前記制御プログラムのコード体系に
    変換した圧縮データを生成するコード変換手段と、 前記制御プログラムと前記圧縮データとを結合するとと
    もに、当該結合結果を、プログラマブルコントローラに
    おいて直接実行可能な実行コードにコンパイルするコン
    パイル手段と、 を備えたことを特徴とする制御プログラム開発支援装
    置。
  15. 【請求項15】 ラダーダイヤグラムやインストラクシ
    ョンリスト等のシーケンス制御用の言語で記述された制
    御プログラムに基づいて、シーケンス処理をおこなうプ
    ログラマブルコントローラにおいて、 前記制御プログラムを記憶する記憶手段と、 前記制御プログラムに使用されている各命令の出現頻度
    をカウントする命令カウント手段と、 前記命令カウント手段によってカウントされた結果か
    ら、出現頻度の高い順に命令を列挙したパターンマッチ
    ング表を作成するパターンマッチング表作成手段と、 前記制御プログラムを、前記パターンマッチング表に列
    挙されている命令順にパターンマッチングしつつ、前記
    プログラマブルコントローラにおいて直接実行可能な実
    行コードにインタプリーティングしつつ実行するインタ
    プリーティング手段と、 を備えたことを特徴とするプログラマブルコントロー
    ラ。
  16. 【請求項16】 ラダーダイヤグラムやインストラクシ
    ョンリスト等のシーケンス制御用の言語で記述された制
    御プログラムを開発するための制御プログラム開発支援
    装置において、 前記制御プログラムに使用されている各命令の出現頻度
    をカウントする命令カウント手段と、 前記命令カウント手段によってカウントされた結果か
    ら、出現頻度の高い順に命令を列挙したパターンマッチ
    ング表を作成するパターンマッチング表作成手段と、 前記制御プログラムを、前記パターンマッチング表に列
    挙されている命令順にパターンマッチングしつつ、前記
    プログラマブルコントローラにおいて直接実行可能な実
    行コードにコンパイルするコンパイル手段と、 を備えたことを特徴とする制御プログラム開発支援装
    置。
  17. 【請求項17】 前記請求項2〜11、14および16
    のいずれか一つに記載の制御プログラム開発支援装置を
    備えたことを特徴とする請求項1、12、13または1
    5に記載のプログラマブルコントローラ。
JP2000289373A 2000-09-22 2000-09-22 プログラマブルコントローラおよび制御プログラム開発支援装置 Pending JP2002099312A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2000289373A JP2002099312A (ja) 2000-09-22 2000-09-22 プログラマブルコントローラおよび制御プログラム開発支援装置
US09/777,954 US7203931B2 (en) 2000-09-22 2001-02-07 Programmable controller, and control-program-development supporting apparatus
DE10116809A DE10116809A1 (de) 2000-09-22 2001-04-04 Programmierbare Steuereinrichtung und Vorrichtung zur Unterstützung einer Steuerprogrammentwicklung

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000289373A JP2002099312A (ja) 2000-09-22 2000-09-22 プログラマブルコントローラおよび制御プログラム開発支援装置

Publications (1)

Publication Number Publication Date
JP2002099312A true JP2002099312A (ja) 2002-04-05

Family

ID=18772792

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000289373A Pending JP2002099312A (ja) 2000-09-22 2000-09-22 プログラマブルコントローラおよび制御プログラム開発支援装置

Country Status (3)

Country Link
US (1) US7203931B2 (ja)
JP (1) JP2002099312A (ja)
DE (1) DE10116809A1 (ja)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003202993A (ja) * 2001-10-31 2003-07-18 Aplix Corp 中間コード実行システム、中間コード実行方法および中間コード実行プログラム
JP2008293176A (ja) * 2007-05-23 2008-12-04 Toshiba Mitsubishi-Electric Industrial System Corp プラントコントローラ
JP2009086898A (ja) * 2007-09-28 2009-04-23 Delta Electronics Inc プログラム可能な論理制御装置用マシーンコード・プログラムのコンパイル法
JP2010176377A (ja) * 2009-01-29 2010-08-12 Meidensha Corp Plcのプログラム変換ツール
US8060221B2 (en) 2006-06-13 2011-11-15 Mitsubishi Electric Corporation Peripheral device of programmable logic controller
JP2012053676A (ja) * 2010-09-01 2012-03-15 Tokyo Denki Gijutsu Kogyo Kk プログラム変換処理装置、方法及びプログラム、並びに記録媒体
KR101243437B1 (ko) * 2011-02-21 2013-03-13 성균관대학교산학협력단 Plc 기반 제어 코드를 xml 인터페이스를 이용하여 범용 프로그램 코드로 변환하는 방법 및 프레임워크 시스템
JP2016224557A (ja) * 2015-05-27 2016-12-28 株式会社キーエンス プログラム作成支援装置、プログラムおよび判別方法
KR20170122941A (ko) * 2016-04-28 2017-11-07 엘에스산전 주식회사 Plc 사용자 프로그램 분석 방법
WO2018042520A1 (ja) * 2016-08-30 2018-03-08 三菱電機株式会社 プログラム編集装置、プログラム編集方法及びプログラム編集プログラム
WO2018151277A1 (ja) * 2017-02-17 2018-08-23 三菱重工エンジニアリング株式会社 ソフトウェア試験装置、ソフトウェア試験システム、ソフトウェア試験方法およびプログラム
EP3647941A1 (en) 2018-11-02 2020-05-06 Yokogawa Electric Corporation Engineering apparatus, control method of engineering apparatus, and program
JP2020071834A (ja) * 2018-11-02 2020-05-07 横河電機株式会社 エンジニアリング装置、エンジニアリング装置の制御方法及びプログラム
CN112639636A (zh) * 2018-10-05 2021-04-09 欧姆龙株式会社 开发支援程序、开发支援装置以及开发支援方法

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10060206A1 (de) * 2000-12-04 2002-06-13 Siemens Ag Programmiergerät
US7257620B2 (en) * 2001-09-24 2007-08-14 Siemens Energy & Automation, Inc. Method for providing engineering tool services
EP1331643B1 (en) * 2002-01-29 2009-12-16 Agere Systems Inc. Differential flash memory programming technique
US7383443B2 (en) * 2002-06-27 2008-06-03 Microsoft Corporation System and method for obfuscating code using instruction replacement scheme
US7805716B2 (en) * 2002-12-10 2010-09-28 Siemens Aktiengesellschaft Method for executing a first software program, developed for a stored-program controller, on a computer
CN100456182C (zh) * 2004-04-15 2009-01-28 三菱电机株式会社 可编程逻辑控制器的外围装置及其程序生成方法
EP1621945B1 (de) * 2004-07-30 2017-03-29 Siemens Aktiengesellschaft Konsistenzsicherung in einem Automatisierungssystem
EP1621946B1 (de) 2004-07-30 2017-03-29 Siemens Aktiengesellschaft Ablage von Projektierungsdaten in einem Automatisierungssystem
JP3910196B2 (ja) * 2004-10-21 2007-04-25 ファナック株式会社 シーケンスプログラムの編集装置
ES2687433T3 (es) 2005-02-03 2018-10-25 Mitsubishi Denki Kabushiki Kaisha Dispositivo y método de soporte de la generación de código de programa, dispositivo y método de ejecución del programa, dispositivo y método de compresión del código de programa, programa para el mismo
US8448158B2 (en) * 2005-02-03 2013-05-21 Mitsubishi Electric Corporation Program code generation support device and method, program execution device and method, and program code compression processing device and method and program thereof
US20060200807A1 (en) * 2005-03-03 2006-09-07 International Business Machines Corporation Breakpoint timers
US20060206442A1 (en) * 2005-03-08 2006-09-14 Rockwell Automation Technologies, Inc. Systems and methods for managing control systems through java extensions
JP4038220B2 (ja) * 2005-09-27 2008-01-23 ソフトバンクモバイル株式会社 プログラム開発支援装置
US7424328B2 (en) * 2006-01-03 2008-09-09 De Silvio Louis F Apparatus and method for wireless process control
US7565654B2 (en) * 2006-01-10 2009-07-21 National Instruments Corporation Programmatic control of tasks in a programmable logic controller
US7568198B2 (en) * 2006-01-10 2009-07-28 National Instruments Corporation Control of tasks in a programmable logic controller
EP1865421B1 (de) * 2006-06-09 2019-02-20 Siemens Aktiengesellschaft System zur Erstellung dynamischer Webseiten
US8418128B2 (en) * 2006-06-29 2013-04-09 Honeywell International Inc. Graphical language compiler system
DE102007003580A1 (de) * 2007-01-24 2008-07-31 Giesecke & Devrient Gmbh Installieren eines Patch in einem Smartcard-Modul
US8689194B1 (en) * 2007-08-20 2014-04-01 The Mathworks, Inc. Optimization identification
US20090083719A1 (en) * 2007-09-20 2009-03-26 Delta Electronics, Inc. Method of compiling machine code program for programmable logic controller
US8341607B2 (en) * 2008-03-13 2012-12-25 International Business Machines Corporation Condensing pattern matcher generation for intermediate language patterns
US9135948B2 (en) 2009-07-03 2015-09-15 Microsoft Technology Licensing, Llc Optical medium with added descriptor to reduce counterfeiting
CA2675692C (en) * 2009-08-28 2012-03-13 Ibm Canada Limited - Ibm Canada Limitee Compiler-assisted program source code filter
US9195810B2 (en) * 2010-12-28 2015-11-24 Microsoft Technology Licensing, Llc Identifying factorable code
CN103339573B (zh) * 2011-01-31 2015-12-16 三菱电机株式会社 运动sfc程序部件生成装置
US8892951B2 (en) * 2011-09-28 2014-11-18 International Business Machines Corporation Fault localization for data-centric programs
DE102011117758A1 (de) * 2011-11-05 2013-05-08 Robert Bosch Gmbh Verfahren zur automatischen Erzeugung von Anwenderprogmmcode für eine speicherprogrammierbare Steuerung zur Steuerung einer Maschine
BR112014011323A8 (pt) * 2011-11-11 2018-12-18 Ecs Solutions Inc instalação de fabricação de processo de lote, e, métodos para controlar uma instalação de fabricação de processo de lote, para configurar um sistema de controle, e para fornecer interface gráfica de usuários
CN104204975B (zh) * 2012-03-26 2016-10-12 三菱电机株式会社 定序程序调试辅助装置
US9311434B1 (en) * 2012-03-26 2016-04-12 The Mathworks, Inc. Ladder logic modeling and simulation
DE102012010102A1 (de) * 2012-05-22 2013-11-28 Infineon Technologies Ag Verfahren und Vorrichtung zur Datenverarbeitung
US20140059518A1 (en) * 2012-08-24 2014-02-27 Velocio Networks, Inc. Method for Object Oriented Programming of Programmable Logic Controllers in Graphical Programming Languages
US10133557B1 (en) * 2013-01-11 2018-11-20 Mentor Graphics Corporation Modifying code to reduce redundant or unnecessary power usage
KR101889631B1 (ko) * 2013-11-20 2018-08-17 미쓰비시덴키 가부시키가이샤 시퀀스 프로그램 작성 지원 장치
US10282187B2 (en) 2014-07-03 2019-05-07 Oracle International Corporation Efficient application patching in heterogeneous computing environments
US9886263B2 (en) * 2015-03-24 2018-02-06 Oracle International Corporation Techniques for efficient application configuration patching
JP6356726B2 (ja) * 2016-05-19 2018-07-11 ファナック株式会社 ラダープログラム解析装置
US10922074B2 (en) * 2017-09-28 2021-02-16 Oracle International Corporation Deferred state mutation
JP6795568B2 (ja) * 2018-11-07 2020-12-02 ファナック株式会社 トレース装置及びプログラマブルコントローラ
EP3770703B1 (en) * 2019-07-22 2022-12-28 Siemens Aktiengesellschaft Method for configuring an industrial automation component, industrial automation component, computer program and computer-readable medium

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59212907A (ja) 1983-05-18 1984-12-01 Matsushita Electric Ind Co Ltd プログラマブルコントロ−ラ
US4716541A (en) * 1984-08-02 1987-12-29 Quatse Jesse T Boolean processor for a progammable controller
US4722071A (en) * 1985-04-19 1988-01-26 Pertron Controls, Corporation Compiler for evaluating Boolean expressions
JPH0511827A (ja) * 1990-04-23 1993-01-22 Canon Inc 工業用自動装置の実行時間出力方式
US5285376A (en) * 1991-10-24 1994-02-08 Allen-Bradley Company, Inc. Fuzzy logic ladder diagram program for a machine or process controller
AU3944293A (en) * 1992-04-01 1993-11-08 Pennsylvania Power & Light Company Control system and method for the parallel operation of voltage regulators
DE69322283T2 (de) * 1992-10-19 1999-05-20 Siemens Energy & Automat Hoch schnelligkeit speicher programmierbar steuerung
US5453933A (en) * 1993-09-08 1995-09-26 Hurco Companies, Inc. CNC control system
US5504902A (en) * 1993-12-01 1996-04-02 Patriot Sensors And Controls Corporation Multi-language generation of control program for an industrial controller
JPH07295612A (ja) 1994-04-21 1995-11-10 Japan Steel Works Ltd:The 高級言語シーケンス命令プログラム生成装置および汎用シーケンサ
US5508909A (en) * 1994-04-26 1996-04-16 Patriot Sensors And Controls Method and systems for use with an industrial controller
JPH08137521A (ja) 1994-11-15 1996-05-31 Toshiba Corp プログラム管理方法
JP3476104B2 (ja) 1995-03-14 2003-12-10 オムロン株式会社 デジタル制御装置
CN1109278C (zh) 1996-01-17 2003-05-21 西门子公司 自动化设备
EP0823094B1 (en) * 1996-02-16 2002-11-27 Koninklijke Philips Electronics N.V. A platform subsystem for executing a multimedia application title, and method and medium for storing multimedia application information
US5857093A (en) * 1996-09-20 1999-01-05 Allen-Bradley Company, Llc Cross-compiled simulation timing backannotation
US5884080A (en) * 1996-11-26 1999-03-16 International Business Machines Corporation System and method for instruction burst performance profiling for single-processor and multi-processor systems
JP3405106B2 (ja) 1997-01-28 2003-05-12 松下電工株式会社 プログラマブルコントローラ
JPH11306026A (ja) * 1998-04-22 1999-11-05 Toshiba Corp コード最適化装置、コード最適化方法、及び、コード最適化プログラムを記録したコンピュータ読み取り可能な記録媒体

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003202993A (ja) * 2001-10-31 2003-07-18 Aplix Corp 中間コード実行システム、中間コード実行方法および中間コード実行プログラム
US8060221B2 (en) 2006-06-13 2011-11-15 Mitsubishi Electric Corporation Peripheral device of programmable logic controller
JP2008293176A (ja) * 2007-05-23 2008-12-04 Toshiba Mitsubishi-Electric Industrial System Corp プラントコントローラ
JP2009086898A (ja) * 2007-09-28 2009-04-23 Delta Electronics Inc プログラム可能な論理制御装置用マシーンコード・プログラムのコンパイル法
JP2010176377A (ja) * 2009-01-29 2010-08-12 Meidensha Corp Plcのプログラム変換ツール
JP2012053676A (ja) * 2010-09-01 2012-03-15 Tokyo Denki Gijutsu Kogyo Kk プログラム変換処理装置、方法及びプログラム、並びに記録媒体
KR101243437B1 (ko) * 2011-02-21 2013-03-13 성균관대학교산학협력단 Plc 기반 제어 코드를 xml 인터페이스를 이용하여 범용 프로그램 코드로 변환하는 방법 및 프레임워크 시스템
JP2016224557A (ja) * 2015-05-27 2016-12-28 株式会社キーエンス プログラム作成支援装置、プログラムおよび判別方法
KR20170122941A (ko) * 2016-04-28 2017-11-07 엘에스산전 주식회사 Plc 사용자 프로그램 분석 방법
KR102478005B1 (ko) * 2016-04-28 2022-12-14 엘에스일렉트릭(주) Plc 사용자 프로그램 분석 방법
JPWO2018042520A1 (ja) * 2016-08-30 2018-12-06 三菱電機株式会社 プログラム編集装置、プログラム編集方法及びプログラム編集プログラム
WO2018042520A1 (ja) * 2016-08-30 2018-03-08 三菱電機株式会社 プログラム編集装置、プログラム編集方法及びプログラム編集プログラム
US10990073B2 (en) 2016-08-30 2021-04-27 Mitsubishi Electric Corporation Program editing device, program editing method, and computer readable medium
US10915438B2 (en) 2017-02-17 2021-02-09 Mitsubishi Heavy Industries Engineering, Ltd. Software-testing device, software-testing system, software-testing method, and program
WO2018151277A1 (ja) * 2017-02-17 2018-08-23 三菱重工エンジニアリング株式会社 ソフトウェア試験装置、ソフトウェア試験システム、ソフトウェア試験方法およびプログラム
JP2018133034A (ja) * 2017-02-17 2018-08-23 三菱重工エンジニアリング株式会社 ソフトウェア試験装置、ソフトウェア試験システム、ソフトウェア試験方法およびプログラム
CN112639636B (zh) * 2018-10-05 2023-06-30 欧姆龙株式会社 开发支援装置、开发支援方法以及存储介质
CN112639636A (zh) * 2018-10-05 2021-04-09 欧姆龙株式会社 开发支援程序、开发支援装置以及开发支援方法
JP2020071833A (ja) * 2018-11-02 2020-05-07 横河電機株式会社 エンジニアリング装置、エンジニアリング装置の制御方法及びプログラム
CN111142421A (zh) * 2018-11-02 2020-05-12 横河电机株式会社 工程装置、工程装置的控制方法以及存储介质
KR20200050885A (ko) 2018-11-02 2020-05-12 요코가와 덴키 가부시키가이샤 엔지니어링 장치, 엔지니어링 장치의 제어 방법 및 프로그램
US11132184B2 (en) 2018-11-02 2021-09-28 Yokogawa Electric Corporation Engineering apparatus, control method, and program for executing a control application
US11215960B2 (en) 2018-11-02 2022-01-04 Yokogawa Electric Corporation Engineering apparatus, control method of engineering apparatus, and program for generating executable code for controlling target hardware
JP2020071834A (ja) * 2018-11-02 2020-05-07 横河電機株式会社 エンジニアリング装置、エンジニアリング装置の制御方法及びプログラム
EP3647941A1 (en) 2018-11-02 2020-05-06 Yokogawa Electric Corporation Engineering apparatus, control method of engineering apparatus, and program

Also Published As

Publication number Publication date
DE10116809A1 (de) 2002-05-16
US7203931B2 (en) 2007-04-10
US20020059567A1 (en) 2002-05-16

Similar Documents

Publication Publication Date Title
JP2002099312A (ja) プログラマブルコントローラおよび制御プログラム開発支援装置
JP4822817B2 (ja) コンパイルシステム
CN110149800B (zh) 一种用于处理与源程序的源代码相关联的抽象语法树的装置
US9081586B2 (en) Systems and methods for customizing optimization/transformation/ processing strategies
JP3448106B2 (ja) 高スループット検査装置
CN112882718A (zh) 编译处理方法、装置、设备及存储介质
JP2008293138A (ja) ソフトウェア開発支援プログラム、ソフトウェア開発支援方法
WO2001018649A2 (en) Method and system for split-compiling a hybrid language program
Fauth Beyond tool-specific machine descriptions
JPH0816429A (ja) 並行プログラム作成支援装置及び並行プログラム作成方法並びに並行プログラム実行装置
US6792598B2 (en) Integrated source code file and method and apparatus for creating a computer program therefrom
JP5849592B2 (ja) プログラマブルコントローラシステム、そのプログラミング装置、プログラマブルコントローラ、プログラム、デバッグ方法
WO2017123367A1 (en) Program randomization for cyber-attack resilient control in programmable logic controllers
KR100417655B1 (ko) 최적화과정을참조하면서동작검증을행하도록디버그정보를생성하는디버그정보생성장치및프로그래머가최적화과정을의식하면서동작검증을할수있는디버그장치로이루어지는프로그램개발시스템
WO2004036420A1 (ja) プログラム開発支援装置、プログラム実行装置、コンパイル方法およびデバッグ方法
Wang et al. Formal modelling of PLC systems by BIP components
JP4152659B2 (ja) データ処理システムおよび設計システム
JP6812861B2 (ja) プログラム作成装置およびプログラム
JP3745968B2 (ja) 試験システム及び試験方法及び試験プログラム及び試験プログラムを記録した計算機で読み取り可能な記録媒体
Aiken et al. A development environment for horizontal microcode programs
KR100423742B1 (ko) 순차기능챠트에 의한 전용 제어 시스템
KR100276086B1 (ko) 로토스 명세로부터 씨 플러스 플러스 코드 생성방법
Uchihira et al. Scenario-based hypersequential programming: concept and example
JP4479738B2 (ja) プログラマブルコントローラ
CN114880212A (zh) 调试系统及调试方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041105

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060502

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060628

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070410

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070528

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080401