JP2003271210A - コントローラ - Google Patents

コントローラ

Info

Publication number
JP2003271210A
JP2003271210A JP2002073173A JP2002073173A JP2003271210A JP 2003271210 A JP2003271210 A JP 2003271210A JP 2002073173 A JP2002073173 A JP 2002073173A JP 2002073173 A JP2002073173 A JP 2002073173A JP 2003271210 A JP2003271210 A JP 2003271210A
Authority
JP
Japan
Prior art keywords
interrupt
program
created
user
execution task
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
JP2002073173A
Other languages
English (en)
Inventor
Takashi Inoue
貴史 井上
Goji Nakada
剛司 中田
Masazumi Kitamura
正純 北村
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.)
Omron Corp
Original Assignee
Omron Corp
Omron Tateisi Electronics Co
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 Omron Corp, Omron Tateisi Electronics Co filed Critical Omron Corp
Priority to JP2002073173A priority Critical patent/JP2003271210A/ja
Publication of JP2003271210A publication Critical patent/JP2003271210A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 ユーザが作成する汎用言語で作成されたプロ
グラムから、PLCプログラム言語で書かれたタスクを
実行できるコントローラを提供すること 【解決手段】 PLCプログラミング言語で作成された
PLCプログラムをサイクリックに実行するSLCラン
タイム11bと、汎用言語で作成されたユーザ作成プロ
グラム12aを実行する補助処理部12を備える。ユー
ザ作成プログラムを実行中に割り込み要因が発生する
と、割込実行タスク起動サブモジュール12bがSLC
ランタイムに対して割り込み命令を通知し、その通知を
イベント監視部11dが検出し、予め用意した割込実行
タスクを実行する。よって、ユーザ作成プログラムによ
り任意のタイミングにより割込実行タスクを起動させる
ことができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、PLCプログラ
ミング言語と汎用言語とのインタフェースを持つコント
ローラに関するものである。
【0002】
【発明の背景】近年、PLC(プログラマブルコントロ
ーラ)市場では、シーケンス制御技術が成熟し、標準化
が進んでいる。また、PLCと同じ機能をソフトウェア
で実現し、パソコンをベースとしたソフトウェアロジッ
クコントローラ(以降、SLC)も開発されている。こ
のSLCは、パソコンに対してはPLC実行部、つまり
ランタイムに相当する(以降、SLCランタイム)。な
お、SLCランタイムはパソコン上で動作するソフトウ
ェアプログラムでもある。もっと言うと、パソコンのハ
ードウェアエンジンにてPLCとしてのシーケンス制御
が行えるようなプログラムであり、汎用言語で作られた
ソフトウェアプログラムである。
【0003】一方、ユーザのニーズとしては、プログラ
ミング開発環境、プログラミング言語などのオープン化
や標準化、またはデータ管理するパソコンなどの上位装
置を含む情報系との接続ニーズが強まってきている。そ
して、カスタマイズエンジニアが顧客に密着してカスタ
ム商品を開発するといったカスタマイズに対応しつつ、
コスト削減や開発期間短縮を行うために、プラットフォ
ーム化されている。
【0004】そして、ユーザが作成するプログラムは、
ラダー言語に代表されるようないわゆる接点の論理演算
をプログラミングするのに適したPLCプログラミング
言語に加えて、部分的にC言語などの複雑な演算プログ
ラミングをするのに適した汎用言語を使用することがあ
る。
【0005】これは、本来PLCの制御内容は、スイッ
チやセンサなどからの入力信号を取り込んで、論理演算
し、演算結果にしたがってモータやアクチュエータ等を
駆動すべく出力信号を出すようなことであるので、いわ
ゆる接点に基づく演算プログラムを組むのにはラダープ
ログラムが適している。一方、ラダープログラムには不
向きな複雑な処理には、C言語等の汎用言語プログラム
が適している。そこで、係る2つの言語を使い分けてプ
ログラミングする訳である。
【0006】そして、その2種類のプログラムの実行
は、主にPLCプログラミング言語で書かれたユーザプ
ログラムの中にファンクションブロックを組み込み、こ
のファンクションブロックによりC言語プログラム部分
を呼び出して実行していた(このような呼び出しを以
降、インタフェースという)。呼び出しとしてのインタ
フェースは、IEC61131−3として例えばファン
クションブロックダイヤグラム(FBD)を用いればよ
い。具体的には、ラダープログラム中にFBDで書かれ
たファームウェアファンクション(FU)やファームウ
ェアファンクションブロック(FB)を組み込み、それ
らFUもしくはFBを介して、C言語プログラムを呼び
出すようにする。
【0007】一方、ラダー言語のようなPLCプログラ
ミング言語と、C言語などの汎用言語に対応するインタ
フェースの1つであるPLCプログラミング言語で書か
れたプログラムに対する割り込みを行うものとしては、
例えば、コントローラ(PLC)のハードウェア割り込
みを検知し、割り込み発生時にPLCプログラミング言
語で書かれたタスクを起動させる汎用言語のインタフェ
ースがある。
【0008】しかしながら、係るPLCプログラミング
言語と汎用言語のインタフェースでは、コントローラの
ハードウェア割り込み検知並びにPLCプログラム言語
を起動させるメカニズムはユーザに公開されていない。
従って、予め用意された割り込み要因に基づく決められ
たタスクによる割り込みができるにすぎず、割り込み要
因に関する拡張が困難であった。
【0009】さらに、ユーザが作成した汎用言語による
プログラムからPLCプログラム言語で書かれたタスク
を起動する機能はなかったため、汎用言語で記述した任
意の条件に基づいてPLCプログラム言語で書かれたタ
スクを起動させることはもちろんのこと、PLCプログ
ラム言語で書かれたタスクの起動対象となるハードウェ
ア割り込みの定義を独自に拡張することができなかっ
た。従って、汎用性・拡張性に限界があった。
【0010】この発明は、ユーザが作成する汎用言語で
作成されたプログラムから、PLCプログラム言語で書
かれたタスクを実行することができ、また、コントロー
ラのPLCプログラム言語で書かれた割込実行タスクを
実行する要因となるハードウェア割り込みに対して、ユ
ーザが容易に設定できるコントローラを提供することを
目的とする。
【0011】
【課題を解決するための手段】この発明によるコントロ
ーラでは、接点の論理演算をプログラミングするのに適
したPLCプログラミング言語と、複雑な演算でもプロ
グラミングしやすい汎用言語とのインタフェースを持つ
コントローラにおいて、PLCプログラミング言語で作
成されたPLCプログラムをサイクリックに実行する処
理手段と、汎用言語で作成されたユーザ作成プログラム
を実行する補助処理手段と、前記補助処理手段で前記ユ
ーザ作成プログラムを実行中に割り込み要因が発生した
際に、前記処理手段に対して割り込み命令を通知する通
知手段と、前記処理手段が、前記割り込み命令を受信し
た場合に、予め用意した割込実行タスクを実行する機能
を備えて構成した。
【0012】そして、例えば、前記PLCプログラム
と、前記ユーザ作成プログラムは別プロセスでそれぞれ
記憶されるとともに、実行され、前記通知は、プロセス
間通信を利用して行われるようにすることができる。
【0013】処理手段は、実施の形態ではSLCランタ
イム(処理部本体11b)に対応する。割り込み発生要
因は、実施の形態では、「TriggerEventT
ask(_)」で規定される命令を検知したことであ
る。そして、通知手段は、トリガ送信APIであった
り、トリガ受信プロキシであったりする。
【0014】この発明によれば、割り込み通知の起動要
因を、ユーザ作成プログラムにより記述できるので、任
意のタイミング・条件にしたがって割込実行タスクを起
動することができる。
【0015】また、前記ユーザ作成プログラムを複数有
し、各ユーザ作成プログラムは、それぞれ異なる要因に
基づいて前記割込実行タスクを起動するように構成でき
る。これにより、異なる割込実行タスクを適宜実行させ
ることができるので、より複雑な制御を簡単に行うこと
ができる。
【0016】そして、前記複数のユーザ作成プログラム
に対し、前記割込実行タスクを起動することを有効/無
効に設定する手段を備えるとよい。実施の形態では、割
込実行タスク起動設定ファイルにより有効/無効の記述
をする(有効のみ記述する)ことによりそれを受けた割
込実行タスク起動メインモジュールが設定するようにし
ている。予め複数のユーザ作成プログラムを用意してお
き、実際の設置現場の状況に応じてユーザが任意のユー
ザ作成プログラムのみを選択することにより、不必要な
ユーザ作成プログラムを実行させることによるCPU
(MPU)の負担を軽減できる。また、ユーザ作成プロ
グラムを一種の部品・ライブラリ化し、提供することに
よる開発コストの低減が図れる。
【0017】また、前記ユーザ作成プログラムの起動/
停止を、前記PLCプログラムの起動/停止に同期可能
としてもよい。もちろん、本発明では、必ずしも同期さ
せなくても良い。さらに、ハードウェア割り込みに基づ
いて、予め用意した割込実行タスクを実行する機能を備
えると、ソフトウェア割り込みとハードウェア割り込み
の両方に対応することができ、好ましい。
【0018】さらにまた、PLCプログラミング言語で
作成されたPLCプログラムをサイクリックに実行する
処理手段と、コントローラに接続されたハードウェアか
らの信号に基づいて、ハードウェア割り込み通知を前記
処理手段に通知する通知手段と、前記処理手段が、前記
割り込み命令を受信した場合に、予め用意した割込実行
タスクを実行する機能とを備え、前記コントローラが有
する全てのハードウェア割り込みに対して、前記割込実
行タスクを起動することを有効/無効に設定する手段を
備えることもできる。
【0019】なお、上記した各発明において、複数の割
り込み要因が同時に発生した場合でも、割り込みの発生
の事象を待ち行列で格納することにより、取りこぼすこ
と無く順次割込実行タスクを起動することができる。
【0020】*用語の定義 「プロセス」とは、コンピュータシステム上で実行する
一連の処理のことをいう。プログラムモジュールとも言
える。そして、「別プロセス」とは、その処理またはプ
ログラムモジュールが独立した別のものになっているこ
とを言う。ランタイムの実行処理部分とユーザが作成し
た汎用言語のプログラムの実行処理部分を分ける(別プ
ロセスとする)ことで、ユーザが作成した汎用言語のプ
ログラムに変更を加える必要がある場合、ランタイムの
実行処理部に手を加える必要が無くなる。つまり、ユー
ザ作成汎用言語のプログラムソースコードをコンパイル
しても、SLCランタイムのプログラムはコンパイルさ
れずに済む。
【0021】「プロセス間通信」は、2つ以上のプログ
ラムの間でデータ交換を行うことを言う。プログラム間
で送受信されるデータを「メッセージ」と呼ぶ。この発
明では、別プロセスである汎用言語プログラムモジュー
ルとSLCランタイムプログラムモジュールとの間で実
行結果またはデータを送受信することを指す。実施の形
態では、ステップ16の割り込み命令となるトリガ及び
ステップ19の終了シグナル(SLCランタイム終了通
知)が相当する。
【0022】
【発明の実施の形態】図1は、本発明に係るコントロー
ラが組み込まれたネットワークシステムの一例を示して
いる。同図に示すように、コントローラ1が、ネットワ
ーク2を介して上位のツール装置3に接続されている。
このツール装置3で作成されたラダーで作成されたPL
Cプログラムが、ネットワーク2を介してコントローラ
1にダウンロードされる。
【0023】コントローラ1には、各種のネットワーク
4を介して、各種センサ,モータ,バーコードリーダな
どの機器(入力機器,出力機器)5が接続され、それら
機器5との間でデータの送受信を行うことにより各種の
制御を実行する。
【0024】ツール装置3は、コントローラ1上で動作
するプログラム(IEC61131−3プログラム)を
作成・編集する機能,IEC61131−3プログラム
を中間コードにコンパイルする機能並びに係る中間コー
ドをコントローラ1に対してダウンロード/アップロー
ドする機能などを備えている。
【0025】コントローラ1は、いわゆるPLC(プロ
グラマブルコントローラ)に相当するもので、シーケン
ス制御を行う装置である。ここではパソコン上で動作す
るソフトウェアロジックコントローラを例に挙げて説明
する。このランタイムには、開発者が作成したI/Oド
ライバをコントローラ1上に実装するためのインタフェ
ース(I/Oインタフェース)と、開発者が作成した汎
用言語であるC言語で書かれたPOUをコントローラ1
上に実装するためのインタフェース(ファームウェアフ
ァンクション/ファームウェアファンクションブロック
インタフェース)が用意されている。このインタフェー
スにより、ユーザプログラムを汎用言語であるC言語で
作成することができる。
【0026】コントローラ1は、ツール装置3からダウ
ンロードされた中間コードをコントローラで実行できる
形式にコンパイルする機能,IEC61131−3プロ
グラムを実行する機能並びにツール装置3から送信され
るコントローラのコマンドを解釈し、コントローラの状
態を制御する機能などを備えている。
【0027】そして、コントローラ1並びにツール装置
3の具体的な構成は、図2,図3に示すようになってい
る。つまり、コントローラ1のハードウェア構成として
は、図2に示すように、入力部6は、ネットワーク4を
介して送られてくる外部の入力機器(例えばセンサ,バ
ーコードリーダなど)5のON/OFF状況を読み取っ
て演算制御部7に結果を渡す。
【0028】演算制御部7は、SLCランタイムが実行
される部分であり、入力部6から与えられる入力情報に
基づきPLCプログラムの手順に従って、演算を実行
し、その結果を出力部8に渡す機能を持っている。ま
た、汎用言語プログラムの実行も、この演算制御部7で
行われる。本発明との関係で言うと、詳細は後述するよ
うに、ハードウェア割り込みの設定処理と、ソフトウェ
ア割り込みの設定処理と、割り込み発生監視処理の実行
並びにユーザ作成割り込み実行タスク起動プログラムの
実行を行う。
【0029】さらに、出力部8は、演算制御部7の指示
を受けて外部の出力機器(例えばモータ)5のON/O
FFをネットワークを介して制御する。さらにまた、演
算制御部7で実行されるPLCプログラムは記憶部9に
格納されている。また、記憶部9は、演算実行時のデー
タメモリ領域として使用される。また、割り込み実行タ
スクに対応する内部制御プロセスのID(詳細な内容は
後述)もこの記憶部9に保持される。
【0030】また、操作部・表示部10は、パーソナル
コンピュータとのインタフェースおよび入出力の状態表
示などを行うもので、コントローラ1に実装されている
場合もあれば、外部機器として接続されている場合もあ
るし、さらには上記したツール装置3がこの機能を持つ
こともある。なお、この図2に示したハードウェア構成
としては、従来一般のコントローラと同様であるので、
その詳細な説明を省略する。
【0031】ソフトウェア構成としては、図3に示すよ
うに、ツール装置3は、開発環境3aが、割り込み実行
タスク設定機能3bにより設定された割り込み実行タス
ク,割込実行起動設定ファイルを適宜組み込みながらプ
ログラムや各種の設定データを作成し、通信インタフェ
ース3cを介してコントローラ1にダウンロードする。
【0032】また、コントローラ(SLCランタイム)
1は、SLCランタイムを実行する処理部11と、ユー
ザが作成したC言語のプログラムからなるユーザプロセ
スを実行する補助処理部12を有している。これらの処
理部11並びに補助処理部12は、いずれも演算制御部
7に組み込まれている。
【0033】処理部11は、ツール装置3と通信し、プ
ログラムのダウンロード等をする通信インタフェース1
1aと、IEC61131−3プログラムを実行する処
理部本体(SLCランタイム)11bと、I/Oドライ
バ11gと、機能拡張のためのインタフェースとしての
割り込み実行を行うための割込実行タスク起動メインモ
ジュール11cとイベント監視部11dとハードウェア
割り込み設定部11eを備えている。上記インタフェー
スにより、処理部本体11bにてプログラムを実行中
に、割り込み命令を受けた際に所定のタスクが実行され
る。
【0034】補助処理部12であるユーザ作成プロセス
には、ユーザが汎用言語で作成したユーザ作成プログラ
ム12aを備えると共に、割り込み実行するための割込
実行タスク起動サブモジュール12bを備えている。そ
して、この割込実行タスク起動サブモジュール12bか
らの命令に従い、処理部本体11b側でPLCプログラ
ム言語によるサイクリックな演算処理中に割り込みタス
クが実行される。つまり、本実施の形態によれば、ユー
ザが作成したイベント起動プログラムを1つのプロセス
として実装し、プロセス間通信によりSLCランタイム
を起動する。
【0035】上記した構成のSLCランタイム11bの
動作は、図4に示すようにフローチャートのようにな
る。すなわち、まず、電源投入に伴い、初期処理を実行
する(ST1)。具体的には、まず、メモリの初期化を
実施する。図2の記憶部9にはPLCのI/Oメモリと
同じ作用をするエリアが予め与えられており、そのI/
Oメモリエリアなどを初期化する。そして、I/Oドラ
イバの登録を実施する。さらに、本発明との関係で言う
と、ユーザ作成プログラム12aを起動したり、イベン
ト監視スレッドを起動したり、割込実行タスクID管理
テーブルを作成したり、割り込みトリガ受信プロキシの
起動を行う(詳細は後述する)。
【0036】次に、INリフレッシュ処理を実行する
(ST2)。すなわち、メモリのI/Oエリアから、入
力データを読み込む。次いで、受け取った入力データに
基づき、演算処理を実行する(ST3からST5)。つ
まり、ツール装置3で作成され、ダウンロード後コンパ
イルされたIEC61131−3プログラムで書かれた
ユーザプログラムを実行する。
【0037】なお、サイクル実行タスクは、1サイクル
タイム中に1回、タスクの状態が「実行可能状態」で有
れば実行されるタスクであり、SLC開発環境で定義さ
れた順番で実行される。そして、フローチャートでは説
明の便宜上3つ(0,1,n)のタスクを示したが、こ
れは、本実施の形態で用意される割込処理が、ユーザ作
成プログラム(ソフトウェア)に基づく起動とハードウ
ェアに基づく起動の2種類あることの説明のためであ
り、実行タスクとしては多数存在し、割り込み命令がな
いと適宜の順番で実行される。
【0038】そして、ユーザプログラム(図4の場合に
はサイクル実行タスク0)実行中にユーザ作成プログラ
ム12aに基づく割り込み命令(TriggerEve
ntTask(_))を受けると、その(_)で特定さ
れる番号の割込実行タスクAを実行する(ST7)。こ
のタスクの実行後に通常のサイクリックな演算実行(サ
イクル実行タスク1)に戻る。また、ハードウェア割り
込みを受け取ると、それに対応する割込実行タスクBを
実行する(ST8)。このタスクの実行後に通常のサイ
クリックな演算実行(サイクル実行タスク1)に戻る。
【0039】そして、演算処理終了後、OUTリフレッ
シュ処理を実行する(ST6)。つまり、メモリのI/
Oエリアへ、出力データを書き込む。そして、上記した
ステップ2〜6をサイクリックに繰り返し実行する。ま
た、係るサイクリックな演算処理の実行中に割り込み命
令があると、その割り込み実行タスクを適宜実行する。
しかも、割り込み処理をする条件(要因)は、ユーザ作
成プログラムにより任意のものを設定できるとともに、
ハードウェアに基づく割り込みも、その起動条件をユー
ザ側で任意に設定でき、汎用性・拡張性の高いものとな
っている。
【0040】次に、上記した処理を実行するためのより
具体的な構成を説明する。本発明の要部である割込実行
タスク起動プロセスを実施するためのソフトウェア構成
としては、図5に示すようになる。図3に示す構成と対
応する部材には同一符号を付している。そして、各部の
詳細な説明は、以下に示すSLCランタイムの機能を示
すフローチャートを用いながら適宜行う。
【0041】まず、図4に示したSLCランタイムの概
略フローを実施するためのシステム全体の処理フロー
は、図6に示すようになる。すなわち、SLCランタイ
ム(処理部11が実行)と、イベント監視スレッド(イ
ベント監視部)11dと、ユーザ作成割込実行タスク起
動プログラム12aが、それぞれ独立に実行しながら、
一定の条件に合致すると相互に通信を行い、演算実行を
する。
【0042】SLCランタイムでは、まず初期化処理を
する(ST10)。そして、INリフレッシュ処理(S
T11)→演算処理(ST12)→OUTリフレッシュ
処理(ST13)をサイクリックに繰り返す(ループ
1)。そして、終了命令を受けると、終了処理をする
(ST14)。また、上記した演算処理を実行中に、ハ
ードウェア割り込みが発生したり、ソフトウェアによる
トリガを受けると、所定の割り込み処理を実行する。
【0043】また、親プロセスであるSLCランタイム
の全体処理におけるステップ10の初期化処理に基づき
発生するスレッド起動命令により起動されたイベント監
視スレッドは、まず、プロキシ生成処理を実行し(ST
15)、必要なトリガ受信プロキシを生成する。次い
で、ユーザ作成割込実行タスク起動プログラムからトリ
ガを受信するのを待ち、受信したならばトリガ受信処理
を行い、SLCランタイム側に対して、割込命令となる
トリガを送る(ST16)。
【0044】さらに、ユーザ作成割込実行タスク起動プ
ログラムは、親プロセスであるSLCランタイム11b
側からの起動命令に従って処理を開始するもので、ま
ず、初期化処理を実行する(ST17)。この初期化処
理は、割込実行タスク起動サブモジュール12b内の初
期化APIが担当し、割込実行タスクID管理テーブル
13のうち、ソフトウェア割り込み用に使用されるプロ
キシIDが保持される共有メモリ15のオープン処理を
実行する。このようにメモリをオープンすることによ
り、以後、メモリに対する読み書きが可能となる。
【0045】次いで、ユーザ作成プログラムを実行し、
一定の条件(割り込み命令(TriggerEvent
Task(_)の検出等))のもとでイベント監視スレ
ッド11dに向けてトリガを送信する(ST18)。こ
のトリガ送信は、割込実行タスク起動サブモジュール1
2b内のトリガ送信APIが実行する。そして、係る処
理は、割込実行タスク起動サブモジュール12b内の終
了状態検知APIが、親プロセスから終了シグナル(S
LCランタイム終了通知)を受信するなどによってコン
トローラの終了状態を検知する(ST19)までの間、
繰り返し実行する(ループ2)。そして、係る終了シグ
ナルを受信したならば、終了処理を実行する(ST2
0)。つまり、割込実行タスク起動サブモジュール12
b内の終了APIが、共有メモリ15に対してメモリク
ローズを行う。
【0046】また、上記したSLCランタイム11bの
初期化処理(ST10)は、実際には、割込実行タスク
起動メインモジュール11cが実行するもので、具体的
には図7に示すフローチャートを実施する。すなわち、
割込実行タスク起動メインモジュール11cは、コント
ローラ1の割込実行タスクの起動に必要な各種の設定を
実施するモジュールであり、その機能としては、まず割
込実行タスクID管理テーブル初期化処理(ST3
0),割込実行タスク種別登録処理(ST40),イベ
ント監視スレッド起動処理(ST50),ハードウェア
割り込みの登録処理(ST60)並びにソフトウェア割
り込みの登録処理(ST70)を実施するようになって
いる。そして、上記した各処理ステップの具体的な処理
アルゴリズムは、図8から図12に示すフローチャート
のようになっている。
【0047】すなわち、ステップ30における割込実行
タスクID管理テーブル初期化処理は、具体的には、図
8に示すフローチャートを実施する。ここで割込実行タ
スクID管理テーブル13について説明すると、係るテ
ーブルは、設定する割込実行タスクの番号ごとに、生成
されたプロキシID(イベント起動トリガを受信するプ
ロキシのID)を登録するテーブルである。
【0048】さらに、ハードウェア割り込み用の割込実
行タスクIDは、親プロセス(処理部本体11b)側に
格納され、ソフトウェア割り込み用の割込実行タスクI
Dは、共有メモリ15に格納される。また、割込実行タ
スク起動メインモジュール11cとイベント監視スレッ
ド11dが値を参照できる様に同一メモリ空間上に配置
している。
【0049】そして、ハードウェア割り込み用の割込実
行タスクIDは、図13(a)に示すように、IRQ
(Interrupt ReQuest)番号と、割り
込みハンドラIDが関連付けて登録される。割り込みハ
ンドラIDには、プロキシが受け取るトリガの送信元と
なる割り込みハンドラのIDを格納する。また、各デー
タは、ハードウェア割り込みに対応付けられたイベント
番号の項に対してのみ設定され、ハードウェア割り込み
に対応付けられていないイベント番号の項に対応するデ
ータは、値「0」が設定される。なお、IRQ番号は、
例えば、IRQ1がキーボード,IRQ3,IRQ4が
シリアルポート等、予め定義付けされているものを用い
る。
【0050】また、ソフトウェア割り込みによる設定の
場合は、図13(b)に示すように、ユーザ作成プログ
ラムのプロセスIDが、併せて登録される。そして、こ
のプロキシIDは、ソフトウェア割り込みに対応付けら
れたイベント番号の項に対してのみ設定され、ソフトウ
ェア割り込みに対応付けられていないイベント番号の項
に対応するデータは、値「0」が設定される。
【0051】そして、テーブルの各値は、割込実行タス
ク起動に関する設定実施時に代入される。そこで、ま
ず、割込実行タスクID管理テーブル初期化処理として
は、図8に示すように、共有メモリ15をメモリオープ
ンし(ST31)、共有メモリをマップする(ST3
2)。つまり、図13に示すようなデータ構造からなる
割込実行タスクID管理テーブルの格納領域を設定す
る。そして、共有メモリをゼロクリアして処理を終了す
る(ST33)。これにより、具体的な値が登録されて
いない管理テーブルが生成される。
【0052】また、ステップ40における割込実行タス
ク種別登録処理は、具体的には、図9に示すフローチャ
ートを実施する。すなわち、まず、iを0に設定し、i
が割込実行タスク数以上になるまで、ループ3を繰り返
し実行する。つまり、登録する割込実行タスクiの起動
種別を読込み、種別がハードウェア割り込み可否かを判
断する(ST42,ST43)。
【0053】そして、ソフトウェア割り込みの場合(ス
テップ43の分岐判断はNo)には、そのままiを1イ
ンクリメントし(ST45)、次のタスク番号の割込実
行タスクについての処理を行う。また、ハードウェア割
り込みの場合(ステップ43の分岐判断はYes)に
は、その割り込みの要因となるハードウェアに付された
IRQ番号を読み込む(ST44)。そして、読み込ん
だIRQ番号とタスク番号を関連付けて割込実行タスク
ID管理テーブルに登録する。係るIRQ番号の読み込
み後、iを1インクリメントし(ST45)、次のタス
ク番号の割込実行タスクについての処理を行う。この様
に、ループ3を実行することにより、用意された(ユー
ザが作成した)イベント起動プログラムについて、全て
処理される。
【0054】また、ステップ50におけるイベント監視
スレッド起動処理は、具体的には、図10に示すフロー
チャートを実施する。すなわち、まず、イベント監視ス
レッド11dに対し、スレッド起動命令を発する(ST
51)。これに伴い、イベント監視スレッド11dが起
動する。次いで、スレッドのスケジュールを設定する。
これにより、設定されたスケジュールの内容に従って、
イベント監視スレッド11dが動作する。
【0055】また、ステップ60におけるハードウェア
割り込みの登録処理は、具体的には、図11に示すフロ
ーチャートを実施する。すなわち、まず、iを0に設定
し(ST41)、iが割込実行タスク数以上になるま
で、ループ4を繰り返し実行する。つまり、登録する割
込実行タスクiについてのハードウェア割り込みハンド
ラ11eを選択し、選択したハンドラを割込実行タスク
IDのテーブルに登録する(ST62,ST63)。そ
して、iを1インクリメントし(ST64)、次のタス
ク番号の割込実行タスクについての処理を行う。
【0056】さらに、ステップ70におけるソフトウェ
ア割り込みの登録処理は、具体的には、図12に示すフ
ローチャートを実施する。すなわち、まず、iを0に設
定し(ST71)、iが割込実行タスク数以上になるま
で、ループ4を繰り返し実行する。つまり、ユーザが作
成したプログラムのパスを読み込み(ST72)、ユー
ザ作成プログラムの優先度を読み込む(ST75)。次
いで、ユーザ作成プログラム12aを起動する(ST7
4)。そして、iを1インクリメントし(ST76)、
次のタスク番号の割込実行タスクについての処理を行
う。
【0057】そして、上記した初期設定(割込実行タス
クID管理テーブルの生成処理)は、割込実行タスク起
動設定ファイル11fを読み込んだ割込実行タスク起動
メインモジュール11cが実行する。すなわち、例えば
図14に示すような割込実行起動設定ファイル11fが
与えられると、図9に示す割込実行タスク種別登録処理
を実行することにより、図15に示すようなデータが作
成され、そのデータと図11,図12に示すフローチャ
ートを実行することにより、図16に示すようなハード
ウェア割り込み用とソフトウェア割り込み用の割込実行
タスクID管理テーブルが作成され、所定のメモリ領域
に格納される。
【0058】なお、割込実行タスク起動設定ファイル
は、[EventTask]で割込実行タスク起動に関
する項目を定義し、Type?(?はイベント番号)に
て、割込実行タスク起動の割り込み方法を定義する。具
体的には、ハードウェア割り込みの場合には、「Har
dware」とし、ソフトウェア割り込みの場合は、
「Software」とし、それ以外の文字列の場合は
割込実行タスクを起動しないものとする。IRQ?(?
はイベント番号)は、ハードウェア割り込みの際に使用
するIRQ番号を定義する。[TriggerProg
ram]はユーザ作成割込実行タスク起動プログラムに
関する項目を定義する。そして、「Path?」は、イ
ベント起動プログラム名を文字列で定義する。つまり、
起動プログラムをフルパスで指定する。さらに、「Pr
iority?」は、イベント起動プログラムのプロセ
ス優先度を数値で定義する。
【0059】そして、このように割込実行タスク起動フ
ァイルにより、割込実行タスクとして起動するか否かを
定義することができるので、コントローラが有する全て
のハードウェア割り込みを必ずしも有効にすることな
く、必要なもののみ有効にすることができる。
【0060】また、図6に示すSLCランタイムの全体
処理におけるステップ14の終了処理は、具体的には図
17に示すフローチャートのようになっている。すなわ
ち、まず、ユーザ作成割込実行タスク起動プログラム1
2aに対してSLCランタイム終了通知を発行する(S
T81)。この通知を受けたユーザ作成割込実行タスク
起動プログラム12aは、所定の終了処理(ST19)
を実行する。
【0061】次に、ハードウェア割り込み登録並びにソ
フトウェア割り込み登録を順次解除する(ST82,S
T83)。これにより、ハードウェア割り込みとソフト
ウェア割り込みのトリガ受信機能を終了する。次いで、
イベント監視スレッドを終了する(ST84)。これに
より、割込実行タスクの起動処理を終了する。
【0062】そして、割込実行タスクID管理テーブル
13を終了する(ST85)。これにより、割込実行タ
スクID管理テーブルの内容も消去される(参照が解除
される)。
【0063】一方、図6に示すイベント監視スレッドの
処理におけるステップ15のプロキシ生成処理は、SL
Cランタイムの稼働時に、割り込み条件となった(トリ
ガ発生した)ことを受信し、処理部本体11b(SLC
ランタイム)に対して割り込み命令を送るための処理を
行うトリガ受信プロキシを生成するものである。このト
リガ受信プロキシは、言い換えるとコントローラの割り
込み実行タスクを実行するためのトリガを、ユーザ作成
割り込み実行タスク起動プログラムか、ハードウェア割
り込みハンドラ(ハードウェア割り込み設定部)11e
から受信するためのモジュールである。なお、このハー
ドウェア割り込みハンドラ11eは、対応する外部機器
(ハードウェア)からの信号を監視し、割り込み条件に
合致した場合にトリガ受信プロキシに対してトリガを出
力するものである。
【0064】そして、係るトリガ受信プロキシの生成処
理は、図18に示すように、まず、iを0に設定し(S
T91)、iが割込実行タスク数以上になるまで、ルー
プ6を繰り返し実行する。つまり、割込実行タスクiに
ついてのトリガ受信プロキシを生成する(ST92)。
そして、iを1インクリメントし(ST93)、次のタ
スク番号の割込実行タスクについての処理を行う。これ
により、初期化処理により割込実行タスクID管理テー
ブル13に登録されたプロキシIDに対応するプロキシ
が生成される。
【0065】そして、この生成されるプロキシは、ハー
ドウェア割り込み用と、ソフトウェア割り込み用のそれ
ぞれについて生成され、ハードウェア割り込み用のプロ
キシは、対応する割り込みハンドラと関連付けられてお
り、その割り込みハンドラから割り込み条件に合致した
場合に出力されるトリガを受けると、SLCランタイム
に対してハードウェア割り込み命令を送る。また、ソフ
トウェア割り込み用のトリガ受信プロキシは、図19に
示すフローチャートのように、SLCランタイムが終了
するまでループ7を繰り返し実行する。つまり、ユーザ
作成プログラム(トリガ送信API)からのトリガの受
信を待ち、係るトリガを受信すると(ST94)、割り
込み番号をSLCランタイムに通知する(ST95)。
【0066】このように、SLCランタイムに対する割
り込み命令は、トリガ受信プロキシにより任意のタイミ
ングで通知され、しかもこのトリガ受信プロキシは、ユ
ーザ作成プログラムの実行に基づいて出力されるトリガ
や、所定のハードウェアからの入力に基づいて割り込み
ハンドラから出力されるトリガに基づいて行われるの
で、トリガの発生要因(要件)をユーザが任意に設定で
きる。
【0067】
【発明の効果】以上のように、この発明では、ユーザが
作成する汎用言語で作成されたプログラムから、PLC
プログラム言語で書かれたタスクを実行することができ
る。これにより、汎用性・拡張性が向上する。
【図面の簡単な説明】
【図1】本発明に係るコントローラが組み込まれたネッ
トワークシステムの一例を示す図である。
【図2】コントローラの一例を示すハードウェア構成図
である。
【図3】ツール装置並びにコントローラの一例を示すソ
フトウェア構成図である。
【図4】SLCランタイムの機能の概略を説明するフロ
ーチャートである。
【図5】本発明に係るコントローラの好適な一実施の形
態の要部を示す機能ブロック図である。
【図6】SLCランタイム並びにそれに基づく各処理部
の全体の機能を示すフローチャートである。
【図7】SLCランタイムの初期化処理機能を示すフロ
ーチャートである。
【図8】図7のステップ30の詳細なアルゴリズムを示
すフローチャートである。
【図9】図7のステップ40の詳細なアルゴリズムを示
すフローチャートである。
【図10】図7のステップ50の詳細なアルゴリズムを
示すフローチャートである。
【図11】図7のステップ60の詳細なアルゴリズムを
示すフローチャートである。
【図12】図7のステップ70の詳細なアルゴリズムを
示すフローチャートである。
【図13】(a)はハードウェア割り込み用の割込実行
タスクID管理テーブルのデータ構造の一例を示す図で
ある。(b)はソフトウェア割り込み用の割込実行タス
クID管理テーブルのデータ構造の一例を示す図であ
る。
【図14】割込実行起動設定ファイルの一例を示す図で
ある。
【図15】初期化処理時に生成されるファイル読込バッ
ファのデータ構造の一例を示す図である。
【図16】図14の割込実行起動設定ファイルに基づい
て生成された割込実行タスクID管理テーブルの一例を
示す図である。
【図17】SLCランタイムの終了処理機能を示すフロ
ーチャートである。
【図18】図6のステップ15の詳細なアルゴリズムを
示すフローチャートである。
【図19】図6のステップ16の詳細なアルゴリズムを
示すフローチャートである。
【符号の説明】
1 コントローラ 2 ネットワーク 3 ツール装置 4 ネットワーク 5 機器 6 入力部 7 演算制御部 8 出力部 9 記憶部 10 操作部・表示部 11 処理部 11a 通信インタフェース 11b 処理部本体(SLCランタイム) 11c 割込実行タスク起動メインモジュール 11d イベント監視スレッド(イベント監視部) 11e 割り込みハンドラ 11f 割込実行タスク起動設定ファイル 11g I/Oドライバ 12 補助処理部 12a ユーザ作成プログラム(ユーザ作成割込実行タ
スク起動プログラム) 12b 割込実行タスク起動サブモジュール 13 割込実行タスクID管理テーブル 15 共有メモリ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 北村 正純 京都府京都市下京区塩小路通堀川東入南不 動堂町801番地 オムロン株式会社内 Fターム(参考) 5B076 DF09 5B098 AA05 BB05 BB06 BB11 GA04 GC16 5H220 BB05 BB07 BB12 BB15 CC06 CX03 JJ12 JJ16 KK01

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 PLCプログラミング言語と汎用言語と
    のインタフェースを持つコントローラにおいて、 PLCプログラミング言語で作成されたPLCプログラ
    ムをサイクリックに実行する処理手段と、 汎用言語で作成されたユーザ作成プログラムを実行する
    補助処理手段と、 前記補助処理手段で前記ユーザ作成プログラムを実行中
    に割り込み要因が発生した際に、前記処理手段に対して
    割り込み命令を通知する通知手段と、 前記処理手段が、前記割り込み命令を受信した場合に、
    予め用意した割込実行タスクを実行する機能を備えたこ
    とを特徴とするコントローラ。
  2. 【請求項2】 前記PLCプログラムと、前記ユーザ作
    成プログラムは別プロセスでそれぞれ記憶されるととも
    に、実行され、 前記通知は、プロセス間通信を利用して行われることを
    特徴とする請求項1に記載のコントローラ。
  3. 【請求項3】 前記ユーザ作成プログラムを複数有し、 各ユーザ作成プログラムは、それぞれ異なる要因に基づ
    いて前記割込実行タスクを起動するものであることを特
    徴とする請求項1または2に記載のコントローラ。
  4. 【請求項4】 前記複数のユーザ作成プログラムに対
    し、前記割込実行タスクを起動することを有効/無効に
    設定する手段を備えたことを特徴とする請求項1から3
    の何れか1項に記載のコントローラ。
  5. 【請求項5】 前記ユーザ作成プログラムの起動/停止
    を、前記PLCプログラムの起動/停止に同期可能とし
    たことを特徴とする請求項1から4の何れか1項に記載
    のコントローラ。
  6. 【請求項6】 ハードウェア割り込みに基づいて、予め
    用意した割込実行タスクを実行する機能を備えたことを
    特徴とする請求項1から5の何れか1項に記載のコント
    ローラ。
  7. 【請求項7】 PLCプログラミング言語で作成された
    PLCプログラムをサイクリックに実行する処理手段
    と、 コントローラに接続されたハードウェアからの信号に基
    づいて、ハードウェア割り込み通知を前記処理手段に通
    知する通知手段と、 前記処理手段が、前記割り込み命令を受信した場合に、
    予め用意した割込実行タスクを実行する機能とを備え、 前記コントローラが有する全てのハードウェア割り込み
    に対して、前記割込実行タスクを起動することを有効/
    無効に設定する手段を備えたことを特徴とするコントロ
    ーラ。
JP2002073173A 2002-03-15 2002-03-15 コントローラ Pending JP2003271210A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002073173A JP2003271210A (ja) 2002-03-15 2002-03-15 コントローラ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002073173A JP2003271210A (ja) 2002-03-15 2002-03-15 コントローラ

Publications (1)

Publication Number Publication Date
JP2003271210A true JP2003271210A (ja) 2003-09-26

Family

ID=29202971

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002073173A Pending JP2003271210A (ja) 2002-03-15 2002-03-15 コントローラ

Country Status (1)

Country Link
JP (1) JP2003271210A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007334469A (ja) * 2006-06-13 2007-12-27 Hitachi Industrial Equipment Systems Co Ltd プログラマブルコントローラ及びこれを用いた機器制御方法
US8370750B2 (en) 2007-04-06 2013-02-05 International Business Machines Corporation Technology for generating service program

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007334469A (ja) * 2006-06-13 2007-12-27 Hitachi Industrial Equipment Systems Co Ltd プログラマブルコントローラ及びこれを用いた機器制御方法
JP4528284B2 (ja) * 2006-06-13 2010-08-18 株式会社日立産機システム プログラマブルコントローラ
US8370750B2 (en) 2007-04-06 2013-02-05 International Business Machines Corporation Technology for generating service program

Similar Documents

Publication Publication Date Title
KR101295447B1 (ko) 운영 시스템 초기화 동안 코드를 실행하기 위한 시스템
JPH0895821A (ja) マルチタスクのプログラムデバッグ方法とその装置
WO2002048878A2 (en) System and methods for providing compatibility across multiple versions of a software system
JP2012048617A (ja) リアルタイム制御システム
US20040098722A1 (en) System, method, and computer program product for operating-system task management
JPH11154087A (ja) データ処理装置の使用者プログラマブル回路
US20010027387A1 (en) Debugging supporting apparatus, debugging supporting method and recording medium readable by computer with its programs recorded thereon
Bruzzone et al. Standard Linux for embedded real-time robotics and manufacturing control systems
JP2003271210A (ja) コントローラ
CN112639636B (zh) 开发支援装置、开发支援方法以及存储介质
JP4665760B2 (ja) 電子計算機、半導体集積回路、制御方法、プログラムの生成方法、及びプログラム
JP7172864B2 (ja) サポート装置およびサポートプログラム
JPH1078887A (ja) デバッグシステム及びデバッグ方法
JP2002318780A (ja) リアルタイム制御システム
CN115145228A (zh) 过程控制系统、过程控制装置以及程序更新方法
US6941175B2 (en) Method of operating an industrial controller
EP3832411B1 (en) Support device and support program
CN114690702B (zh) 一种软plc和运动控制相结合的机器人控制系统
JP2004280305A (ja) プログラマブルコントローラ用機器及びプログラマブルコントローラ並びにデータの受渡方法
JPH0527954A (ja) コンピユータシステム
JPH113236A (ja) 仮想計算機エミュレート装置
JP7091986B2 (ja) 制御システム、制御方法、および開発支援プログラム
JP2001100812A (ja) 分散処理方式
JP4123150B2 (ja) 設計支援システムおよび設計支援方法
JP2004318658A (ja) デバッグ制御装置及びその制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041125

A977 Report on retrieval

Effective date: 20061221

Free format text: JAPANESE INTERMEDIATE CODE: A971007

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070109

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070605