JP5515374B2 - プログラマブルコントローラ、プログラム実行監視方法及びプログラム - Google Patents
プログラマブルコントローラ、プログラム実行監視方法及びプログラム Download PDFInfo
- Publication number
- JP5515374B2 JP5515374B2 JP2009090549A JP2009090549A JP5515374B2 JP 5515374 B2 JP5515374 B2 JP 5515374B2 JP 2009090549 A JP2009090549 A JP 2009090549A JP 2009090549 A JP2009090549 A JP 2009090549A JP 5515374 B2 JP5515374 B2 JP 5515374B2
- Authority
- JP
- Japan
- Prior art keywords
- execution
- verification code
- program
- verification
- programmable controller
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Hardware Redundancy (AREA)
- Debugging And Monitoring (AREA)
- Programmable Controllers (AREA)
- Testing And Monitoring For Control Systems (AREA)
Description
特許文献1等のウォッチドッグタイマーによるプログラム実行監視方法では、プログラムスタートを示す命令の実行からプログラムエンドを示す命令の実行までが、規定の時間内に終了できたかを確認できる。しかし、プログラマブルコントローラが多重化構成を有していた場合、途中経過を調べて複数の実行チャネルにおいて等しく同じプログラム実行をできたかを検証することはできない。
更に特許文献3の方法では、実行プログラムがシーケンシャルなものである場合はチェックが可能である。しかし実行プログラムが単純なシーケンスプログラムである場合の適用に制限され、実行プログラムが分岐やループを含みダイナミックに実行先が変化する場合には向かない。
また実行プログラムの実行通過ポイントをトレースメモリに蓄積し、そのデータを照合することによって実行監視を行う方法は、途中経過の照合が可能となるが、トレースメモリの全内容を他の実行チャネルに転送してから各実行チャネル内で比較照合されるため、処理時間がかかる。また、実行プログラムのサイズが大きくなるほど、その分トレースメモリの容量や、処理時間もそれだけ長くかかる。例えば、1ポイントあたり2バイトであるとき、1000ポイント格納可能なトレースメモリは約2キロバイトの容量を必要とする。
前記複数の実行チャネルそれぞれの前記検証コード格納領域内の検証コードを照合することによって実行順序の検証を行う、ことを特徴とする。
さらに検証コードはサブルーチン内で算出されるので、実行チャネルのハードウエア、ソフトウエア処理方式には依存性がない。
また、検証コードに必要なメモリサイズも小さく、照合に要する時間も短い。
図1は本実施形態におけるプログラマブルコントローラシステムの全体構成を示す図である。
コントローラ10は、実行プログラムを実行する2つの実行チャネル16−1、16−2を備えた演算部11、各実行チャネル16−1、16−2の起動/停止を操作者が指示するための起動/停止スイッチ12、プログラマブルコントローラシステム1に接続されている外部機器からの外部入力を受け付ける入力部13、プログラム生成装置20から起動/停止コマンドを受信し、受信コマンドに基づいて実行チャネル16−1及び16−2に対して起動/停止を通知する起動/停止コマンド受信部14、及び実行プログラムの実行結果等を外部に出力する出力部15を有している。
実行プログラム生成部25は、図2のようなラダー図24を実行プログラム26−1、26−2に変換する際には、接点・コイル等の要素に対応するポイント31−1〜31−6毎に検証コード生成ルーチンを呼び出す命令を挿入する。なお、ポイント31−1〜31−6は全てに検証コード生成ルーチンを呼び出す命令を挿入する必要は無く、プログラムの全体量やステップ数を鑑み、一定間隔ごとに挿入しても構わない。またポイント31の挿入は、予め定義したルールに従って機械的に行っても良いし、経験則や実行プログラムの処理時間に基いてユーザが挿入しても構わない。
図4の検証コード生成ルーチンを呼び出す命令41中の“CRCGEN”は、呼び出しを行う検証コード生成ルーチンの名前を示し、続く“X’0000”〜“X’0002”は、検証コード生成ルーチンを呼び出した実行プログラム内での一意な値で、“X’”は、例えば、16進数であることを示す。ここで値を4桁とすると、0000〜FFFFの範囲となる。
図5の実行プログラムでは、検証コード生成ルーチンを呼び出す命令42において、呼び出しを行う検証コード生成ルーチンの名前“CRCGEN2”に続いて、位置を示す引数“X’0000”〜“X’0002”に続いて、検証コードの生成に用いる値の引数“X’0000”、“Y00”、“Y01”が与えられている。この第2パラメータである検証コードの生成に用いる値は、実行プログラムの実行によって得られる演算結果である。なお、“Y00”、“Y01”は実行プログラム内の任意の変数の値を指す。
また、照合部23は、検証コード格納領域22−1、22−2内の値の取得・照合及びその照合結果の出力制御機能を有しておればよく、ハードウエア的な構造であってもソフトウエア的に実現するためのファームウエア(プログラム)であっても構わない。例えば、照合部23は実行制御部17からアクセス可能な照合ルーチンとしてメモリ18内に格納されていても構わない。
図6は、実行制御部17が実行プログラム26を実行した際の動作処理を示すフローチャートである。なお図6の例では検証コード生成ルーチンとして、後述する図7のCRCGENのルーチンを用いた場合を例として示している。
この初期化処理では、コントローラ10は実行プログラム26の実行環境を整え、初期化処理が終了するとスキャンサイクルに入る。
初期化が終了すると、実行制御部17は、ステップS4として、実行プログラム格納領域19から実行プログラム26を読み込む。そしてステップS5としてステップS4で読み込んだ実行プログラム26の実行処理を行う。この実行プログラム26の実行処理は、実行制御部17が実行プログラム26のプログラムコードに従い、命令実行を進める。
なおこの検証コード生成ルーチンの詳細については後述する。
プログラムコントローラ1は、プログラム生成装置20をユーザが操作することによって、起動/停止コマンド生成部27が起動/停止コマンドをコントローラ10に対して発行し、実行チャネル16による実行プログラム26の実行/停止を行うことが出来る。
なお上記例では、検証コード生成ルーチンとして図7のCRCGENのルーチンを用いているが、後述する図8のCRCGEN2のルーチンを用いても良い。このCRCGEN2のルーチンを用いた場合、パラメータ値として実行プログラム26での位置を示す値と実行プログラムによる演算結果も与えるので、実行プログラム26の実行順序だけでなく演算結果の一致性も診断できる。
図7は、図4の実行プログラム26で呼び出されるCRCGENの検証コード生成ルーチンの動作例を示す図である。同図のルーチンは、例えば、2バイト長の1つのパラメータを与えられて呼び出される。また検証コードの生成アルゴリズムとしては、デジタルデータ通信での使用実績が多いCRC16を使用した場合を例として示している。
そしてステップS23として、CRC16計算アルゴリズムによって更新された検証コードを生成する。このCRC16計算アルゴリズムでは、入力パラメータ2に入力パラメータ1の2バイト分の値を下位バイト、上位バイトの順に反映させて新しいCRCコードを生成する。
図8は、図5の実行プログラム26で呼び出されるCRCGEN2の検証コード生成ルーチンの動作例を示す図である。同図のルーチンは、2バイト長の入力パラメータを2つ与えられて呼び出される。
そしてステップS33として、CRC16計算アルゴリズムによって更新された検証コードを生成する。このCRC16計算アルゴリズムでは、入力パラメータ2に入力パラメータ1の2バイト分の値を下位バイト、上位バイトの順に反映させて新しいCRCコードを生成する。
そして次にステップS35としてステップS33で求めたCRCコードをCRC計算アルゴリズムの入力パラメータ2にセットする。
そして最後にステップS37としてステップS36で生成したCRCコードを検証コードとして検証コード格納領域22に格納後処理を実行プログラム26に戻す。
更には実行プログラムの複雑度には影響されずに適用が可能で、冗長化された実行チャネルでのプログラム実行順序、結果の同一性の検査を行うことが出来る。
10 (プログラマブル)コントローラ
11 演算部
12 起動停止スイッチ
13 入力部
14 起動コマンド受信部
15 出力部
16 実行チャネル
17 実行制御部
18 メモリ
19 実行プログラム格納領域
20 プログラム生成装置
21 検証コード生成ルーチン格納領域
22 検証コード格納領域
23 照合部
24 ラダー図
25 実行プログラム生成部
26 実行プログラム
27 起動/停止コマンド生成部
30 転送ケーブル
Claims (9)
- 実行プログラムを並列に実行する複数の実行チャネルを備えるプログラマブルコントローラにおいて、
前記各実行チャネルは、
前記実行プログラムを実行する実行制御部と、
当該実行チャネルにおいて前記実行プログラムが正常に実行されたかを検証するための検証コードを格納する検証コード格納部と、
前記実行プログラムの実行が完了すると、前記複数の実行チャネルの前記検証コード格納部内の検証コードを照合する照合部と、
前記実行制御部から呼び出され、前記検証コードを生成する検証コード生成部とを備え、
前記実行制御部は、前記検証コード生成部を呼び出す際、実行中の前記実行プログラム内において一意な値を取る第1のパラメータを、当該検証コード生成部に引き渡し、
前記検証コード生成部は、前記第1のパラメータを用いて前記検証コードを生成し、
前記照合部は、前記検証コードを照合することで実行順序の検証を行うことを特徴とするプログラマブルコントローラ。 - 前記照合部による照合の結果、前記複数の実行チャネルの前記検証コード格納部内の検証コードが全て一致したとき、前記実行プログラムは正常に実行されたと判定することを特徴とする請求項1に記載のプログラマブルコントローラ。
- 前記照合部は、前記複数の実行チャネルの前記検証コード格納部内の検証コードが一致しないものがあるとき、エラー処理を行うことを特徴とする請求項2に記載のプログラマブルコントローラ。
- 前記実行制御部は、前記検証コード生成部を呼び出す際、当該実行制御部が実行する前記実行プログラムによる実行結果である第2のパラメータをも当該検証コード生成部に引き渡すことを特徴とする請求項1〜3の何れかに記載のプログラマブルコントローラ。
- 前記検証コード生成部は、前記第2のパラメータを用いて前記検証コードを生成することを特徴とする請求項4に記載のプログラマブルコントローラ。
- 前記検証コード生成部は、前記1つ以上のパラメータ値を用いて、チェックサムのアルゴリズム、CRCコードのアルゴリズム、またはハッシュコードのアルゴリズムの何れかを用いて前記検証コードを生成することを特徴とする請求項5に記載のプログラマブルコントローラ。
- ユーザが前記プログラマブルコントローラ用の言語で作成したプログラムから、複数の前記検証コード生成部を呼び出すコードを含む前記実行プログラムを生成するプログラム生成部を更に備えることを特徴とする請求項1乃至6の何れか1つに記載のプログラマブルコントローラ。
- 実行プログラムを並列に実行する複数の実行チャネルを備えるプログラマブルコントローラにおけるプログラム実行監視方法において、
前記実行プログラムを実行する実行制御部から、当該実行プログラムが正常に実行されたかを検証するための検証コードを生成する検証コード生成部を呼び出し、その際に該実行プログラム内において一意な値を取る第1のパラメータを、当該検証コード生成部に引き渡し、
前記検証コード生成部は、前記第1のパラメータを用いて前記検証コードを生成し、当該検証コードを前記実行チャネル毎に備える検証コード格納領域に格納し、
前記複数の実行チャネルそれぞれの前記検証コード格納領域内の検証コードを照合することによって実行順序の検証を行う
ことを特徴とするプログラム実行監視方法。 - 実行プログラムを並列に実行する複数の実行チャネルを備えるプログラマブルコントローラにおいて実行されるプログラムであって、
前記実行プログラムを実行する実行制御部から呼び出され、当該実行制御部から引き渡された該実行制御部が実行中の実行プログラム内において一意な値を取る第1のパラメータを用いて、検証コードを生成し、該検証コードを前記実行チャネル毎に設けられた検証コード格納領域内に格納し、
前記複数の実行チャネルそれぞれの前記検証コード格納領域内の検証コードを照合することによって実行順序の検証を行う
ことを前記プログラマブルコントローラに実行させることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009090549A JP5515374B2 (ja) | 2009-04-02 | 2009-04-02 | プログラマブルコントローラ、プログラム実行監視方法及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009090549A JP5515374B2 (ja) | 2009-04-02 | 2009-04-02 | プログラマブルコントローラ、プログラム実行監視方法及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010244213A JP2010244213A (ja) | 2010-10-28 |
JP5515374B2 true JP5515374B2 (ja) | 2014-06-11 |
Family
ID=43097185
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009090549A Expired - Fee Related JP5515374B2 (ja) | 2009-04-02 | 2009-04-02 | プログラマブルコントローラ、プログラム実行監視方法及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5515374B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5549665B2 (ja) | 2011-12-28 | 2014-07-16 | 株式会社デンソー | 車両制御装置及びソフトウェア部品 |
JP6340886B2 (ja) * | 2014-04-10 | 2018-06-13 | 株式会社ジェイテクト | プログラマブルロジックコントローラ用プログラムの作成支援装置及びプログラマブルロジックコントローラ用プログラムの作成支援方法 |
KR101641769B1 (ko) * | 2014-06-20 | 2016-07-29 | 주식회사 큐브피아 | 바이너리 파일의 보호방법 및 보호된 바이너리 파일의 실행방법 |
WO2021005691A1 (ja) * | 2019-07-08 | 2021-01-14 | 三菱電機株式会社 | 制御装置、プログラム監視方法及びプログラム |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3148771B2 (ja) * | 1992-05-06 | 2001-03-26 | オムロン株式会社 | プログラマブルコントローラ |
JPH06250864A (ja) * | 1993-02-26 | 1994-09-09 | Fuji Electric Co Ltd | プログラマブルコントローラの誤出力防止方法 |
JPH06324914A (ja) * | 1993-05-13 | 1994-11-25 | Fuji Electric Co Ltd | コンピュータの暴走検出方法 |
JP2005084896A (ja) * | 2003-09-08 | 2005-03-31 | Mitsubishi Electric Corp | 車載電子制御装置 |
JP3897046B2 (ja) * | 2005-01-28 | 2007-03-22 | 横河電機株式会社 | 情報処理装置および情報処理方法 |
JP2006338425A (ja) * | 2005-06-03 | 2006-12-14 | Hitachi Ltd | 制御装置 |
-
2009
- 2009-04-02 JP JP2009090549A patent/JP5515374B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2010244213A (ja) | 2010-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107924443B (zh) | 用于过程控制的控制装置的固件升级方法及其系统 | |
JP5515374B2 (ja) | プログラマブルコントローラ、プログラム実行監視方法及びプログラム | |
JP5348499B2 (ja) | I/oユニット並びに産業用コントローラ | |
US20080163182A1 (en) | Systems and methods for building an executable program with a low probability of failure on demand | |
WO2018153026A1 (zh) | 一种升级pos机模块固件的方法和装置 | |
EP1956449A2 (en) | Numerical controller | |
JP2017167653A (ja) | 評価システム、評価プログラムおよび評価方法 | |
CN106873443A (zh) | 用于对安全控制器进行编程的方法 | |
CN107870609B (zh) | 工业控制设备及其操作方法 | |
JP5422448B2 (ja) | 制御装置 | |
US9921565B2 (en) | Programming assist device for programmable logic controller program and programming assist method for the program | |
WO2019121516A1 (en) | Seamless and safe upgrade of software intensive systems during operation | |
CN107193249B (zh) | 程序开发辅助装置以及程序开发辅助方法 | |
Ubayashi et al. | Context-dependent product line practice for constructing reliable embedded systems | |
CN107924356A (zh) | 零开销代码覆盖分析 | |
JP2017167652A (ja) | 評価システム、評価プログラムおよび評価方法 | |
CN116011026B (zh) | 数据库组态安全快速验证方法、系统、设备及存储介质 | |
US8776071B2 (en) | Microprocessor operation monitoring system | |
CN115309426A (zh) | 系统升级方法、装置、计算机设备及计算机可读存储介质 | |
CN111488558B (zh) | 脚本保护方法、装置、计算机可读存储介质和计算机设备 | |
JP4872357B2 (ja) | プログラムテスト支援システム、方法及びプログラム | |
JP2018010331A (ja) | 診断装置および診断方法 | |
CN111966523A (zh) | 一种管理电器参数的方法、系统、设备以及介质 | |
CN109683980A (zh) | 实现轨旁安全旁平台u盘配置文件可靠装载的方法 | |
JP3731423B2 (ja) | 故障診断用の基準パターンの作成方法および故障診断装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20110422 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120313 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20131212 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20131217 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140213 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140304 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140317 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5515374 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |