JP5549455B2 - プログラマブルコントローラシステムおよびそのプログラム更新方法 - Google Patents

プログラマブルコントローラシステムおよびそのプログラム更新方法 Download PDF

Info

Publication number
JP5549455B2
JP5549455B2 JP2010164365A JP2010164365A JP5549455B2 JP 5549455 B2 JP5549455 B2 JP 5549455B2 JP 2010164365 A JP2010164365 A JP 2010164365A JP 2010164365 A JP2010164365 A JP 2010164365A JP 5549455 B2 JP5549455 B2 JP 5549455B2
Authority
JP
Japan
Prior art keywords
controller
synchronous
processing means
program
management table
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.)
Active
Application number
JP2010164365A
Other languages
English (en)
Other versions
JP2012027621A (ja
Inventor
大助 吉原
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.)
Fuji Electric Co Ltd
Original Assignee
Fuji Electric Co Ltd
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 Fuji Electric Co Ltd filed Critical Fuji Electric Co Ltd
Priority to JP2010164365A priority Critical patent/JP5549455B2/ja
Publication of JP2012027621A publication Critical patent/JP2012027621A/ja
Application granted granted Critical
Publication of JP5549455B2 publication Critical patent/JP5549455B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Programmable Controllers (AREA)

Description

本発明は、基本コントローラおよび少なくとも1つの拡張コントローラを備え、これらの複数のコントローラの各々で用意された実行管理テーブルに従って各々のアプリケーションプログラムを実行する構成とされたプログラマブルコントローラシステムおよびそのプログラム更新方法に係り、実行中のアプリケーションプログラムを更新する場合に利用できる。
従来、プログラマブルコントローラは、シーケンス命令を高速に実行させるために専用ハードウェアで実装するのが主流であったが、汎用CPU(中央演算処理装置)の高速化に伴い、汎用CPUを用いたプログラマブルコントローラが開発されるようになってきている。また、演算処理の高速化のために、複数のプロセッサを用いたプログラマブルコントローラシステムの開発も行われている。
一方、プログラマブルコントローラには、運転中のシステムを停止しないで、プログラムを更新する機能があるが、従来の更新方式では、複数のプロセッサを備えたプログラマブルコントローラシステムの場合には、プロセッサ毎に個別にプログラムの更新を実施していた。
なお、複数のプロセッサを同期させるシステムとして、プログラム制御モードを示す情報を保持するプログラム同期フラグを備え、このプログラム同期フラグの情報を更新したときに、その更新情報を、プログラムの各命令を記憶する命令記憶部に通知するマルチプロセッサシステムが知られている(特許文献1参照)。
特開2003−76667号公報(要約、請求項1)
しかしながら、複数のプロセッサを備えたプログラマブルコントローラシステムにおいて、従来のようにプロセッサ毎に個別にプログラムの更新を行うと、つまり、同期をとらずに個々のタイミングで更新を行うと、各々のプロセッサの出力結果や動作が異なる結果、システムの動作に悪影響を及ぼすことがある。
例えば、アプリケーションプログラムは、複数のプログラムを組み合わせてなる階層構造を有しているので、複数のプロセッサで独立して実行される各々のアプリケーションプログラムには、同じ機能を備えたプログラム(例えばサブルーチンやファンクション等)が含まれることがある。すなわち、複数のプロセッサで共通に実行されるプログラム(例えばサブルーチンやファンクション等)がある。そして、このような共通のプログラムを変更した場合に、複数のプロセッサで個別にプログラムの更新を行うと、複数のプロセッサ間でプログラムの切替タイミングがずれるので、その間、変更前のプログラムを実行しているプロセッサと、変更後のプログラムを実行しているプロセッサとが混在する状態となり、各々のプロセッサの出力結果や動作が異なるという事態が発生し、制御対象の動作に不具合が生じるおそれがある。より具体的には、例えば、制御対象内に、別々のサーボモータで駆動される2本の軸がある場合に、一方のサーボモータの回転数が変わらずに、他方のサーボモータの回転数だけが上がった結果、2本の軸の回転数が異なってしまう等の不具合である。従って、このようなプログラムの切替タイミングのずれにより生じる不都合を未然に防止するために、プログラムを同期して更新することが必要となる。
また、プログラムの同期更新と併せ、周期的に繰り返されるアプリケーションプログラムの起動について同期を図ることも必要である。精緻な制御が要求される制御対象の場合には、周期的に繰り返されるアプリケーションプログラムの起動について同期が図られていなければ、やはり不都合が生じるおそれがあるからである。例えば、カラー印刷機に設けられた送り用のサーボモータの制御等では、僅かなズレで印刷物の品質が落ちてしまうため、高精度な同期制御が要求される。
本発明の目的は、プログラムの更新の同期化および起動の同期化を図ることができるプログラマブルコントローラシステムおよびそのプログラム更新方法を提供するところにある。
本発明は、基本コントローラおよび少なくとも1つの拡張コントローラを備え、これらの複数のコントローラの各々で用意された実行管理テーブルに従って各々のアプリケーションプログラムを実行する構成とされたプログラマブルコントローラシステムであって、基本コントローラおよび拡張コントローラで共有される共有メモリ領域に設けられた同期フリーランカウンタと、共有メモリ領域に設けられてアプリケーションプログラムの切替タイミングを示す同期フリーランカウンタ値を記憶するプログラム切替カウンタ値記憶手段とを備え、基本コントローラは、拡張コントローラへ同期割込み信号を送信する処理を実行する同期割込み送信処理手段と、同期フリーランカウンタに、同期割込み信号の1回の送信につき、1カウント若しくは一定数のカウントを加算または減算する処理を実行するカウント更新処理手段とを備え、拡張コントローラは、基本コントローラからの同期割込み信号を受信する処理を実行する同期割込み受信処理手段を備え、基本コントローラおよび拡張コントローラの各々は、ローダから送信されてくる変更後の機械語オブジェクトを、各々のコントローラのプロセッサ用の主メモリに格納して配置するとともに、変更後の機械語オブジェクトの格納先アドレスを現在使用中の実行管理テーブルとは別の実行管理テーブルに記録する処理を実行する機械語オブジェクト配置処理手段と、同期フリーランカウンタの現在値とプログラム切替カウンタ値記憶手段に記憶された同期フリーランカウンタ値とが一致したか否かを判断する処理を繰り返し実行するプログラム切替タイミング判断処理手段と、このプログラム切替タイミング判断処理手段により一致したと判断した場合に、各々のコントローラ用の実行管理テーブルを別の実行管理テーブルへ切り替える処理を実行する実行管理テーブル切替処理手段と、同期割込み信号の送受信のタイミングで、各々のコントローラ用の実行管理テーブルに従って実行される各々のアプリケーションプログラムの起動要求処理を実行するアプリケーション起動要求処理手段とを備えたことを特徴とするものである。
ここで、「カウント更新処理手段」における「同期割込み信号の1回の送信につき、1カウント若しくは一定数のカウントを加算または減算する処理」とは、同期割込み信号の送信を繰り返すと、同期フリーランカウンタが、0,1,2,3,4,…と1カウントずつ増加してもよく、あるいは、例えば、0,2,4,6,8,…等のように毎回カウントが同数ずつ増加してもよく、さらには、…,8,7,6,5,4,…と1カウントずつ減少してもよく、あるいは、例えば、…,16,14,12,10,8,…等のように毎回カウントが同数ずつ減少してもよい趣旨である。但し、設計の容易化、構成の簡易化等の観点からは、1カウントずつ増加していくことが好ましい。
このような本発明のプログラマブルコントローラシステムにおいては、基本コントローラのカウント更新処理手段により、同期フリーランカウンタの値を更新していき、基本コントローラおよび拡張コントローラの各々のプログラム切替タイミング判断処理手段により、同期フリーランカウンタの現在値と、プログラム切替カウンタ値記憶手段に記憶された同期フリーランカウンタ値とが一致したと判断した場合に、各々の実行管理テーブル切替処理手段により、各々のコントローラ用の実行管理テーブルを、変更後の機械語オブジェクトの格納先アドレスが記録された別の実行管理テーブルへ切り替える。このため、切替後には、各々のコントローラで、別の実行管理テーブルに従って、変更後の機械語オブジェクトを含んで構成される更新されたアプリケーションプログラムが実行されることになり、プログラムの同期更新が実現される。
また、基本コントローラの同期割込み送信処理手段および拡張コントローラの同期割込み受信処理手段により、同期割込み信号の送受信を行い、基本コントローラおよび拡張コントローラの各々のアプリケーション起動要求処理手段により、同期割込み信号の送受信のタイミングで、各々のアプリケーションプログラムの起動要求処理を実行するので、各々のアプリケーションプログラムの周期的に繰り返される起動を毎回同期させることが可能となる。
そして、このように周期的に繰り返されるアプリケーションプログラムの起動の同期化を図ることが可能となることで、同期割込み信号の送受信のタイミングで、変更後の機械語オブジェクトを含んで構成される各々のアプリケーションプログラムを同期させて起動することが可能となることから、プログラムの同期更新および同期起動の双方を実現することができるようになり、これらにより前記目的が達成される。
なお、前述した特許文献1に記載されたマルチプロセッサシステムの技術は、プログラムの同期更新を行うものではなく、また、同期フリーランカウンタによるタイミング制御を行うものでもないので、本発明とは異なる技術である。
また、前述したプログラマブルコントローラシステムにおいて、複数のコントローラのプロセッサとは別のプロセッサを有する管理部、または基本コントローラは、ローダからのプログラム切替指示を受け付けた場合に、同期フリーランカウンタの現在値に、予め定められたカウント数を加算または減算することにより、アプリケーションプログラムの切替タイミングを示す同期フリーランカウンタ値を算出し、算出した同期フリーランカウンタ値をプログラム切替カウンタ値記憶手段に記憶させる処理を実行するプログラム切替カウンタ値算出・設定処理手段を備えた構成とすることが望ましい。
ここで、「予め定められたカウント数を加算または減算する」とは、同期フリーランカウンタが、0,1,2,3,4,…と1カウントずつ増加していくか、あるいは、例えば、0,2,4,6,8,…等のように同数カウントずつ増加していく場合には、「予め定められたカウント数」を「加算」し、一方、…,8,7,6,5,4,…と1カウントずつ減少していくか、あるいは、例えば、…,16,14,12,10,8,…等のように同数カウントずつ減少していく場合には、「予め定められたカウント数」を「減算」するという意味である。
このように同期フリーランカウンタの現在値に予め定められたカウント数を加算または減算するプログラム切替カウンタ値算出・設定処理手段を備えた構成とした場合には、ローダからのプログラム切替指示を受け付けたときに、そのときの同期フリーランカウンタの値を基準として、相対的にアプリケーションプログラムの切替タイミングを定めることができるので、適切でかつ早期の切替タイミングを設定することが可能となる。
さらに、本発明は、基本コントローラおよび少なくとも1つの拡張コントローラを備え、これらの複数のコントローラの各々で用意された実行管理テーブルに従って各々のアプリケーションプログラムを実行する構成とされたプログラマブルコントローラシステムのプログラム更新方法であって、基本コントローラおよび拡張コントローラで共有される共有メモリ領域に、同期フリーランカウンタと、アプリケーションプログラムの切替タイミングを示す同期フリーランカウンタ値を記憶するプログラム切替カウンタ値記憶手段とを設けておき、基本コントローラの同期割込み送信処理手段が、拡張コントローラへ同期割込み信号を送信する処理を実行し、基本コントローラのカウント更新処理手段が、同期フリーランカウンタに、同期割込み信号の1回の送信につき、1カウント若しくは一定数のカウントを加算または減算する処理を実行し、拡張コントローラの同期割込み受信処理手段が、基本コントローラからの同期割込み信号を受信する処理を実行し、基本コントローラおよび拡張コントローラの各々の機械語オブジェクト配置処理手段が、ローダから送信されてくる変更後の機械語オブジェクトを、各々のコントローラのプロセッサ用の主メモリに格納して配置するとともに、変更後の機械語オブジェクトの格納先アドレスを現在使用中の実行管理テーブルとは別の実行管理テーブルに記録する処理を実行し、基本コントローラおよび拡張コントローラの各々のプログラム切替タイミング判断処理手段が、同期フリーランカウンタの現在値とプログラム切替カウンタ値記憶手段に記憶された同期フリーランカウンタ値とが一致したか否かを判断する処理を繰り返し実行し、基本コントローラおよび拡張コントローラの各々の実行管理テーブル切替処理手段が、プログラム切替タイミング判断処理手段により一致したと判断した場合に、各々のコントローラ用の実行管理テーブルを別の実行管理テーブルへ切り替える処理を実行し、基本コントローラおよび拡張コントローラの各々のアプリケーション起動要求処理手段が、同期割込み信号の送受信のタイミングで、各々のコントローラ用の実行管理テーブルに従って実行される各々のアプリケーションプログラムの起動要求処理を実行することを特徴とするものである。
このような本発明のプログラマブルコントローラシステムのプログラム更新方法においては、前述した本発明のプログラマブルコントローラシステムで得られる作用・効果がそのまま得られ、これにより前記目的が達成される。
以上に述べたように本発明によれば、基本コントローラと拡張コントローラとの間での同期割込み信号および同期フリーランカウンタによるタイミング制御により、プログラムの更新の同期化、および周期的に繰り返されるアプリケーションプログラムの起動の同期化を図ることができるので、制御対象の動作の不具合を未然に防止するとともに、高精度な同期制御を実現することができるという効果がある。
本発明の一実施形態のプログラマブルコントローラシステムの全体構成図。 前記実施形態のシステム処理手段の詳細構成図。 前記実施形態のソースコードの管理状況および実行プログラムの格納状況の一例を示す説明図。 前記実施形態のシステム処理のうちの同期割込みを行う処理Aの流れを示すフローチャートの図。 前記実施形態のシステム処理のうちのアプリケーション運転状態への移行を行う処理Bの流れを示すフローチャートの図。 前記実施形態のシステム処理のうちのプログラム切替を行う処理Cの流れを示すフローチャートの図。 前記実施形態のシステム処理の全体的な流れを示すタイムチャートの図。 前記実施形態のプログラム配置の一例を示す図。 前記実施形態の変更後の機械語オブジェクトの送信後の状態の一例を示す図。 前記実施形態の変更後の機械語オブジェクトの送信後に行う補完処理の説明図。 前記実施形態の実行管理テーブルの切替処理の説明図。
以下に本発明の一実施形態について図面を参照して説明する。図1には、本実施形態のプログラマブルコントローラシステム10の全体構成が示されている。図2には、プログラマブルコントローラシステム10のシステム処理手段24,34,44の詳細構成が示され、図3には、ソースコードの管理状況および実行プログラムの格納状況の一例が示されている。また、図4には、システム処理のうちの同期割込みを行う処理Aの流れがフローチャートで示され、図5には、システム処理のうちのアプリケーション運転状態への移行を行う処理Bの流れがフローチャートで示され、図6には、システム処理のうちのプログラム切替を行う処理Cの流れがフローチャートで示されている。さらに、図7には、システム処理の全体的な流れがタイムチャートで示されている。また、図8には、主メモリ23,33へのプログラム配置の一例が示され、図9には、変更後の機械語オブジェクトP2’の送信後の状態の一例が示され、図10には、変更後の機械語オブジェクトP2’の送信後に行う補完処理の説明図が示され、図11には、実行管理テーブルT1,T2の切替処理の説明図が示されている。
図1において、プログラマブルコントローラシステム10は、基本コントローラ20と、拡張コントローラ30と、管理部40とを備えて構成されている。本実施形態では、これらの基本コントローラ20、拡張コントローラ30、および管理部40は、それぞれ別々のプリント基板上に形成され、これらの3つの基板が1つの筐体(不図示)に収納される構成となっているが、これに限定されるものではなく、例えば、基本コントローラ20、拡張コントローラ30、および管理部40が、それぞれ別の筐体に収納されていてもよい。
基本コントローラ20は、バスLSI21と、マイクロプロセッサ22と、主メモリ23と、共有メモリ領域25と、フラッシュメモリ26と、データメモリ27とを備えている。そして、マイクロプロセッサ22およびその動作手順を規定するシステムプログラムγ、並びに作業領域である主メモリ23等により、システム処理手段24が構成されている。
拡張コントローラ30も同様な構成であり、バスLSI31と、マイクロプロセッサ32と、主メモリ33と、共有メモリ領域35と、フラッシュメモリ36と、データメモリ37とを備えている。そして、マイクロプロセッサ32およびその動作手順を規定するシステムプログラムδ、並びに作業領域である主メモリ33等により、システム処理手段34が構成されている。
管理部40は、基本コントローラ20や拡張コントローラ30とは異なった構成であり、バスLSI41と、マイクロプロセッサ42と、主メモリ43と、共有メモリ領域45と、フラッシュメモリ46と、USB接続部47Aと、イーサネット接続部47B(イーサネットは登録商標)と、シリアル接続部47Cと、スイッチ操作信号入力部48とを備えている。そして、マイクロプロセッサ42およびその動作手順を規定するシステムプログラムε、並びに作業領域である主メモリ43等により、システム処理手段44が構成されている。
基本コントローラ20、拡張コントローラ30、および管理部40のバスLSI21,31,41は、内部バス11に接続され、これらのバスLSI21,31,41による共有化のための内部バス11を介した通信機能により、基本コントローラ20、拡張コントローラ30、および管理部40の共有メモリ領域25,35,45に記憶された各種のデータは共有化され、各共有メモリ領域25,35,45のそれぞれに同じデータが保持されるようになっている。
マイクロプロセッサ22,32,42は、主メモリ23,33,43に記憶されたアプリケーションプログラムα,βやシステムプログラムγ,δ,εを読み込んで実行する中央演算処理装置である。なお、管理部40のマイクロプロセッサ42では、アプリケーションプログラムの実行処理は行わない。
主メモリ23,33,43は、本実施形態では、一例としてシンクロナスDRAM(SDRAM)とされているが、これに限定されるものではない。
共有メモリ領域25,35,45は、本実施形態では、一例としてSRAMとされているが、これに限定されるものではない。これらの共有メモリ領域25,35,45には、同期フリーランカウンタ25A,35A,45Aと、アプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値を記憶するアプリ運転状態開始カウンタ値記憶手段25B,35B,45Bと、アプリケーションプログラムの切替タイミングを示す同期フリーランカウンタ値を記憶するプログラム切替カウンタ値記憶手段25C,35C,45Cと、基本コントローラ20に対してアプリケーション運転開始要求が行われたか否かを示すフラグを記憶する基本コントローラ20用のアプリ運転開始要求フラグ記憶手段25D,35D,45Dと、拡張コントローラ30に対してアプリケーション運転開始要求が行われたか否かを示すフラグを記憶する拡張コントローラ30用のアプリ運転開始要求フラグ記憶手段25E,35E,45Eと、基本コントローラ20用のアプリケーションαについての運転状態および停止状態を含むステータスを記憶する基本コントローラ20用のステータス記憶手段25F,35F,45Fと、拡張コントローラ30用のアプリケーションβについての運転状態および停止状態を含むステータスを記憶する拡張コントローラ30用のステータス記憶手段25G,35G,45Gとが設けられている。
なお、共有メモリ領域25,35,45には、その他に、基本コントローラ20に対してアプリケーション停止要求が行われたか否かを示すフラグを記憶する基本コントローラ20用のアプリ停止要求フラグ記憶手段(不図示)や、拡張コントローラ30に対してアプリケーション停止要求が行われたか否かを示すフラグを記憶する拡張コントローラ30用のアプリ停止要求フラグ記憶手段(不図示)等が設けられているが、本発明の処理に直接関係しないため、説明を省略する。
フラッシュメモリ26,36、46は、ローダ50でユーザにより作成されてコンパイルされたアプリケーションプログラムα,βや、システムプログラムγ,δ,εを格納するものである。
データメモリ27,37は、例えばSRAM等であり、アプリケーションプログラムα,βの実行時に使用される各種変数等を記憶するユーザデータ領域27A,37Aを有している。なお、管理部40では、アプリケーションプログラムを実行することはないので、データメモリ27,37に相当するメモリは設置されていない。
管理部40のUSB接続部47A、イーサネット接続部47B(イーサネットは登録商標)、およびシリアル接続部47Cは、外部端末との通信のために設けられ、ローダ50を接続することができる。なお、外部端末との通信のための接続部は、これらの種類に限定されるものではなく、有線、無線の別も問わない。また、管理部40のスイッチ操作信号入力部48は、スイッチ操作による外部からの起動要求等の信号を入力するものである。
ローダ50は、プログラマブルコントローラシステム10の管理部40に接続され、ユーザによるアプリケーションプログラムの開発を支援し、作成されたアプリケーションプログラム(機械語オブジェクト)を通信によりプログラマブルコントローラシステム10の管理部40へ送信する開発支援装置であり、ユーザによるアプリケーションのソースコードの編集(作成、変更等)を支援する処理を実行するソース編集処理手段51と、このソース編集処理手段51による編集支援で作成されたアプリケーションのソースコードを記憶するソースコード記憶手段52と、このソースコード記憶手段52に記憶されたソースコードをコンパイルして機械語オブジェクトに変換する処理を実行するコンパイラ53と、このコンパイラ53による変換処理で得られた機械語オブジェクトを記憶する機械語オブジェクト記憶手段54と、ソースコード名とその変換後の機械語オブジェクト名との対応関係を定めるソースコード管理表を記憶するソースコード管理表記憶手段55と、機械語オブジェクト記憶手段54に記憶された機械語オブジェクトをプログラマブルコントローラシステム10の管理部40へ送信する処理を実行する機械語オブジェクト送信処理手段56とを備えて構成されている。このローダ50は、例えば、ノート型等の汎用のコンピュータにより構成されていてもよく、あるいは専用のハンディローダ等であってもよい。
図2において、基本コントローラ20のシステム処理手段24は、システムイニシャル処理手段24Aと、アプリケーション起動周期待機処理手段24Bと、カウント更新処理手段24Cと、同期割込み送信処理手段24Dと、アプリケーション起動要求処理手段24Eと、外部要求待機処理手段24Fと、設定用カウンタ値算出・設定処理手段24Gと、アプリ運転開始要求フラグ設定処理手段24Hと、アプリ起動準備処理手段24Jと、アプリ運転状態開始タイミング判断処理手段24Kと、アプリ運転状態移行処理手段24Lと、機械語オブジェクト配置処理手段24Mと、実行管理テーブル補完処理手段24Nと、プログラム切替タイミング判断処理手段24Pと、実行管理テーブル切替処理手段24Qとを含んで構成されている。
また、拡張コントローラ30のシステム処理手段34は、システムイニシャル処理手段34Aと、同期割込み受信処理手段34Bと、アプリケーション起動要求処理手段34Cと、アプリ運転開始要求フラグ監視処理手段34Dと、アプリ起動準備処理手段34Eと、アプリ運転状態開始タイミング判断処理手段34Fと、アプリ運転状態移行処理手段34Gと、機械語オブジェクト配置処理手段34Hと、実行管理テーブル補完処理手段34Jと、プログラム切替タイミング判断処理手段34Kと、実行管理テーブル切替処理手段34Lとを含んで構成されている。
さらに、管理部40のシステム処理手段44は、プログラム切替カウンタ値算出・設定処理手段44Aを含んで構成されている。
このうち、基本コントローラ20の各処理手段24B,24C,24D,24Fおよび拡張コントローラ30の各処理手段34B,34Cは、図4の処理Aを実行する手段である。また、基本コントローラ20の各処理手段24F,24G,24H,24J,24K,24Lおよび拡張コントローラ30の各処理手段34D,34E,34F,34Gは、図5の処理Bを実行する手段である。さらに、基本コントローラ20の各処理手段24M,24N,24P,24Q、拡張コントローラ30の各処理手段34H,34J,34K,34L、および管理部40のプログラム切替カウンタ値算出・設定処理手段44Aは、図6の処理Cを実行する手段である。なお、後述するように、プログラム切替カウンタ値算出・設定処理手段は、基本コントローラ20に設けてもよい。
システムイニシャル処理手段24A,34Aは、リセット状態解除で立ち上がり、ハンドシェイク(通信用パラメータの取り決め等の通信規律の確立処理)により、基本コントローラ20と拡張コントローラ30との間のイニシャル完了待ち合わせを行うものである。また、基本コントローラ20のシステムイニシャル処理手段24Aは、同期フリーランカウンタ25Aを起動する処理を行い、これにより同期フリーランカウンタ25Aは、本実施形態では、ゼロからのカウントを開始する。
(処理Aを実行する手段)
基本コントローラ20のアプリケーション起動周期待機処理手段24Bは、タイマ時間計測により、所定の時間間隔(例えば1ミリ秒の間隔等)のアプリケーション起動周期が到来したか否かを判断する処理を繰り返し実行するものである。
基本コントローラ20のカウント更新処理手段24Cは、アプリケーション起動周期が到来したときに、同期割込み信号の送信直前に、同期フリーランカウンタ25A(図1参照)に、1カウントを加算する処理を実行するものである。従って、本実施形態では、同期フリーランカウンタ25Aの値は、同期割込み信号の1回の送信につき、1カウント増加することになる。
基本コントローラ20の同期割込み送信処理手段24Dは、アプリケーション起動周期が到来したときに、拡張コントローラ30へ同期割込み信号を送信する処理を実行するものである。従って、同期割込み信号は、アプリケーション起動周期の到来タイミングに合わせて送信されることになる。
拡張コントローラ30の同期割込み受信処理手段34Bは、基本コントローラ20からの同期割込み信号を受信する処理を実行するものである。
アプリケーション起動要求処理手段24E,34Cは、同期割込み信号の送受信の直後に、各々のステータス記憶手段25F,35G(図1参照)に記憶されたステータスを取得し、取得したステータスがアプリケーション運転状態(RUN)である場合に、各々のアプリケーションプログラムα,βの起動要求処理を実行するものである。従って、アプリケーションプログラムの起動要求処理は、アプリケーション起動周期の到来タイミングに合わせて行われることになる。このアプリケーションプログラムの起動要求処理が行われるときには、アプリケーションプログラムα,βは、既に主メモリ23,33上に配置されており、主メモリ23,33に記憶されている各コントローラ20,30のプログラム実行管理表ポインタにより指示された実行管理テーブル(図3、図8〜図11参照)に従って、複数の機械語オブジェクトを組み合わせてなるアプリケーションプログラムα,βの実行が開始される。つまり、マイクロプロセッサ22,32は、アプリケーションプログラムα,βを実行する場合、実行管理テーブルから、起動するプログラム(アプリケーションプログラムα,βを構成する機械語オブジェクト)が格納されている領域の先頭アドレス(格納先アドレス)を取得し、その取得したアドレスからプログラムを実行していくようになっている。なお、実行管理テーブルに記録されている格納先アドレスは、上から順に取得していく。
(処理Bを実行する手段)
基本コントローラ20の外部要求待機処理手段24Fは、管理部40のスイッチ操作信号入力部48(図1参照)に、スイッチ操作による外部からの起動要求信号の入力があったときに、この起動要求信号を管理部40から受信する処理を実行するものである。
基本コントローラ20の設定用カウンタ値算出・設定処理手段24Gは、外部からの起動要求信号を受信した場合に、同期フリーランカウンタ25A(図1参照)の現在値に、予め定められたアプリ運転状態開始タイミング設定用のカウント数C1を加算することにより、アプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値を算出し、算出した同期フリーランカウンタ値を、アプリ運転状態開始カウンタ値記憶手段25B(図1参照)に記憶させる処理を実行するものである。
具体的には、同期フリーランカウンタ25Aの現在値をLとすると、アプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値Nは、N=L+C1で算出される(図7参照)。
例えば、アプリ運転状態開始タイミング設定用のカウント数C1は、基本コントローラ20および拡張コントローラ30のメモリ処理化処理(データメモリ27,37のユーザデータ領域27A,37Aに記憶された各種変数の初期化処理)を含む各々のコントローラ20,30のアプリケーション起動準備処理に要する時間(例えば、数百ミリ秒)のうち最長のものの所要時間を考慮し、例えば1000カウント(仮に1カウントを1ミリ秒とすれば、1秒に相当する。)等と定められている。そして、このカウント数C1は、上記のように見込みの数値であるが、設定用カウンタ値算出・設定処理手段24G(システム処理手段24)を構成するシステムプログラムγ内に記述しておいてもよく、あるいはメモリ(例えばフラッシュメモリ26等)に記憶させておいてもよい。
基本コントローラ20のアプリ運転開始要求フラグ設定処理手段24Hは、外部からの起動要求信号を受信した場合に、基本コントローラ20に設けられた基本コントローラ20用のアプリ運転開始要求フラグ記憶手段25D(図1参照)に記憶されたフラグ、および基本コントローラ20に設けられた拡張コントローラ30用のアプリ運転開始要求フラグ記憶手段25E(図1参照)に記憶されたフラグを立てる処理(運転開始要求があったことを示す状態に変更する処理)を実行するものである。なお、このアプリ運転開始要求フラグ設定処理手段24Hにより、基本コントローラ20に設けられた拡張コントローラ30用のアプリ運転開始要求フラグ記憶手段25E(図1参照)に記憶されたフラグが立てられると、この状態が内部バス11を介して、共有メモリ機能により、拡張コントローラ30に設けられた拡張コントローラ30用のアプリ運転開始要求フラグ記憶手段35E(図1参照)に記憶されたフラグに反映される。
拡張コントローラ30のアプリ運転開始要求フラグ監視処理手段34Dは、拡張コントローラ30に設けられた拡張コントローラ30用のアプリ運転開始要求フラグ記憶手段35E(図1参照)に記憶されたフラグの状態を監視し、このフラグが立った状態に変更されたか否かを判断する処理を繰り返し実行するものである。
アプリ起動準備処理手段24J,34Eは、基本コントローラ20および拡張コントローラ30のメモリ初期化処理(データメモリ27,37のユーザデータ領域27A,37Aに記憶された各種変数の初期化処理)を含む各々のコントローラ20,30のアプリケーション起動準備処理を実行するものである。
アプリ運転状態開始タイミング判断処理手段24K,34Fは、同期フリーランカウンタ25A,35A(図1参照)の現在値と、アプリ運転状態開始カウンタ値記憶手段25B,35B(図1参照)に記憶された同期フリーランカウンタ値とが一致したか否かを判断することにより、アプリケーション運転状態の開始タイミングが到来したか否かを判断する処理を繰り返し実行するものである。
アプリ運転状態移行処理手段24L,34Gは、アプリ運転状態開始タイミング判断処理手段24K,34Fにより双方の値が一致した(つまり、アプリケーション運転状態の開始タイミングが到来した)と判断した場合に、各々のコントローラ20,30用のアプリ運転開始要求フラグ記憶手段25D,35E(図1参照)に記憶されたフラグを降ろす処理(運転開始要求が無いことを示す状態に変更する処理)を実行するとともに、各々のステータス記憶手段25F,35G(図1参照)に記憶されたステータスを、アプリケーション停止状態(STOP)からアプリケーション運転状態(RUN)へ移行させる処理を実行するものである。
(処理Cを実行する手段)
基本コントローラ20の機械語オブジェクト配置処理手段24Mは、ローダ50から送信されてくる変更後の機械語オブジェクトを、この変更後の機械語オブジェクトに対応する番号とともに受信し、受信した変更後の機械語オブジェクトのうち自コントローラ20用の変更後の機械語オブジェクトについては、主メモリ23に格納して配置する(つまり、自己の主メモリ23に残しておく)とともに、その配置した変更後の機械語オブジェクトの格納先アドレスを、主メモリ23に記憶されている現在使用中の実行管理テーブルT1とは別の実行管理テーブルT2(図3、図8〜図11参照)に記録し、拡張コントローラ30用の変更後の機械語オブジェクトについては、拡張コントローラ30のマイクロプロセッサ32に送信する処理を実行するものである。また、機械語オブジェクト配置処理手段24Mは、自コントローラ20用の変更後の機械語オブジェクトを、主メモリ23に展開することと併せ、自己のフラッシュメモリ26に記憶させる処理も行う。
この際、機械語オブジェクト配置処理手段24Mは、受信した番号を、実行管理テーブルのインデックスとして利用し、実行管理テーブル上における当該番号の示す位置に、当該番号に対応する機械語オブジェクトの格納先アドレスを記録する。例えば、図3に示す変更前のプログラムの格納状況を参照して説明すると、番号1に対応する機械語オブジェクトP1の格納先アドレスは、実行管理テーブルT1上の先頭の位置に記録し、番号2に対応する機械語オブジェクトP2の格納先アドレスは、実行管理テーブルT1上の2番目の位置に記録する。この格納先アドレス記録処理は、変更後のプログラムの格納時についても同様であり、実行管理テーブルT1が別の実行管理テーブルT2に変わるだけである。また、後述する拡張コントローラ30の機械語オブジェクト配置処理手段34Hの場合も同様である。
なお、機械語オブジェクト配置処理手段24Mは、受信した変更後の機械語オブジェクトが、拡張コントローラ30用の変更後の機械語オブジェクトであるか否かの判断を行わずに、ローダ50から受信した変更後の機械語オブジェクトの全てを、拡張コントローラ30のマイクロプロセッサ32に転送するようにしてもよい。
拡張コントローラ30の機械語オブジェクト配置処理手段34Hは、ローダ50から基本コントローラ20のマイクロプロセッサ22を介して送信されてくる変更後の機械語オブジェクトを、対応する番号とともに受信し、受信した変更後の機械語オブジェクトのうち自コントローラ30用の変更後の機械語オブジェクトのみ(なお、基本コントローラ20から拡張コントローラ30用の変更後の機械語オブジェクトのみが送信されてくる場合には、受信した変更後の機械語オブジェクトの全てとなる。)を、自己の主メモリ33に格納して配置するとともに、その配置した変更後の機械語オブジェクトの格納先アドレスを、主メモリ33に記憶されている現在使用中の実行管理テーブルT1とは別の実行管理テーブルT2(図3、図8〜図11参照)に記録する処理を実行するものである。また、機械語オブジェクト配置処理手段34Hは、自コントローラ30用の変更後の機械語オブジェクトを、主メモリ33に展開することと併せ、自己のフラッシュメモリ36に記憶させる処理も行う。
実行管理テーブル補完処理手段24N,34Jは、ローダ50から送信されてくる変更後の機械語オブジェクトの送信完了通知の信号を受信し、現在使用中の実行管理テーブルT1とは別の実行管理テーブルT2(図3、図8〜図11参照)を補完する処理を実行するものである。この補完処理は、現在使用中の実行管理テーブルT1に記録された機械語オブジェクトの格納先アドレスのうち、変更する必要のない機械語オブジェクトの格納先アドレスを、そのまま利用して別の実行管理テーブルT2に記録する処理である。
プログラム切替タイミング判断処理手段24P,34Kは、同期フリーランカウンタ25A,35A(図1参照)の現在値と、プログラム切替カウンタ値記憶手段25C,35C(図1参照)に記憶された同期フリーランカウンタ値とが一致したか否かを判断することにより、アプリケーションプログラムの切替タイミングが到来したか否かを判断する処理を繰り返し実行するものである。
実行管理テーブル切替処理手段24Q,34Lは、プログラム切替タイミング判断処理手段24P,34Kにより双方が一致した(つまり、アプリケーションプログラムの切替タイミングが到来した)と判断した場合に、主メモリ23,33に記憶されている各々のコントローラ20,30用の現在実行中の実行管理テーブルT1を、別の実行管理テーブルT2へ切り替える処理、すなわち主メモリ23,33に記憶されているプログラム実行管理表ポインタを、現在実行中の実行管理テーブルT1のアドレスから別の実行管理テーブルT2のアドレスへと切り替える処理(図11参照)を実行するものである。
管理部40のプログラム切替カウンタ値算出・設定処理手段44Aは、ローダ50から送信されてくるプログラムの切替指示の信号を受信し、同期フリーランカウンタ45Aの現在値に、予め定められたカウント数C2を加算することにより、アプリケーションプログラムの切替タイミングを示す同期フリーランカウンタ値を算出し、算出した同期フリーランカウンタ値を、プログラム切替カウンタ値記憶手段45C(図1参照)に記憶させる処理を実行するものである。
具体的には、同期フリーランカウンタ45Aの現在値をMとすると、アプリケーションプログラムの切替タイミングを示す同期フリーランカウンタ値Kは、K=M+C2で算出される(図7参照)。
例えば、プログラム切替タイミング設定用のカウント数C2は、数カウント(2カウント等)と定められている。このカウント数C2は、見込みの数値であるが、プログラム切替カウンタ値算出・設定処理手段44A(システム処理手段44)を構成するシステムプログラムε内に記述しておいてもよく、あるいはメモリ(例えばフラッシュメモリ46等)に記憶させておいてもよい。
(その他のシステム処理)
管理部40のシステム処理手段44は、プログラム切替カウンタ値算出・設定処理手段44Aによる処理の他に、スイッチ操作信号入力部48(図1参照)に、スイッチ操作による外部からの起動要求信号の入力があったときに、この起動要求信号を基本コントローラ20へ送信する処理等を実行するものである。
このような本実施形態においては、以下のようにしてプログラマブルコントローラシステム10におけるシステム処理が実行され、アプリケーションが起動される。
(処理Aの流れ)
図4において、基本コントローラ20および拡張コントローラ30において、システム処理のうちの処理Aを開始する(ステップS1,S2)。先ず、基本コントローラ20において、アプリケーション起動周期待機処理手段24Bにより、タイマ時間計測を行って所定の時間間隔(例えば1ミリ秒の間隔等)のアプリケーション起動周期が到来したか否かを繰り返し判断する(ステップS3)。
ステップS3でアプリケーション起動周期が到来したと判断された場合には、カウント更新処理手段24Cにより、同期フリーランカウンタ25Aに、1カウントを加算する(ステップS4)。なお、同期フリーランカウンタ25Aの値を変更した状態は、内部バス11を介して、共有メモリ機能により、他の同期フリーランカウンタ35A,45Aにも反映される。
続いて、同期割込み送信処理手段24Dにより、拡張コントローラ30へ同期割込み信号を送信する(ステップS5)。この同期割込み信号は、基本コントローラ20のバスLSI21、内部バス11、および拡張コントローラ30のバスLSI31を介して拡張コントローラ30のマイクロプロセッサ32に伝達される。そして、拡張コントローラ30において、同期割込み受信処理手段34Bにより、基本コントローラ20からの同期割込み信号を受信する(ステップS6)。
それから、同期割込み信号の送受信の後に、基本コントローラ20においては、アプリケーション起動要求処理手段24Eにより、基本コントローラ20用のステータス記憶手段25Fに記憶されたステータスを取得し、取得したステータスがアプリケーション運転状態(RUN)であるか否かを判断し(ステップS7)、アプリケーション運転状態(RUN)である場合には、基本コントローラ20のアプリケーションαの起動要求を行い(ステップS8)、処理Aを終了する(ステップS9)。一方、取得したステータスがアプリケーション停止状態(STOP)である場合には、アプリケーションαの起動要求は行わずに、処理Aを終了する(ステップS9)。
また、拡張コントローラ30においても同様にして、アプリケーション起動要求処理手段34Cにより、拡張コントローラ30用のステータス記憶手段35Gに記憶されたステータスを取得し、取得したステータスがアプリケーション運転状態(RUN)であるか否かを判断し(ステップS10)、アプリケーション運転状態(RUN)である場合には、拡張コントローラ30のアプリケーションβの起動要求を行い(ステップS11)、処理Aを終了する(ステップS12)。一方、取得したステータスがアプリケーション停止状態(STOP)である場合には、アプリケーションβの起動要求は行わずに、処理Aを終了する(ステップS12)。
なお、基本コントローラ20および拡張コントローラ30において、アプリケーションプログラムα,βの起動要求処理が行われると、図8〜図11に示すように、各々のコントローラ20,30のマイクロプロセッサ22,32により、主メモリ23,33に記憶されている各コントローラ20,30用のプログラム実行管理表ポインタを取得し、その取得時点のプログラム実行管理表ポインタにより指示されている主メモリ23,33上の実行管理テーブル(例えば、最初は、実行管理テーブルT1であり、切替後は、実行管理テーブルT2となる。)を取得し、取得した実行管理テーブルの1番目に記録されている機械語オブジェクトの先頭アドレスを取得し、取得したアドレスから、既に主メモリ23,33上に配置されているアプリケーションプログラムα,βを構成するプログラム(機械語オブジェクト)を実行していく。これらのアプリケーションプログラムα,βは、いずれも、図7中の縦の点線で示された一定周期(例えば1ミリ秒間隔等)内、すなわちアプリケーション起動周期内で実行が完了するように設定されている。
(処理Bの流れ)
図5において、基本コントローラ20および拡張コントローラ30において、システム処理のうちの処理Bを開始する(ステップS21,S22)。先ず、基本コントローラ20において、外部要求待機処理手段24Fにより、外部からの起動要求を待ち、管理部40のスイッチ操作信号入力部48(図1参照)に、スイッチ操作による外部からの起動要求信号の入力があったときに、この起動要求信号を管理部40から受信する(ステップS23)。
続いて、設定用カウンタ値算出・設定処理手段24Gにより、同期フリーランカウンタ25Aの現在値(図7の例では、L)に、予め定められたアプリ運転状態開始タイミング設定用のカウント数C1(例えば、C1=1000カウント等)を加算することにより、アプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値(図7の例では、N)を、N=L+C1として算出し、算出した同期フリーランカウンタ値(図7の例では、N)を、アプリ運転状態開始カウンタ値記憶手段25Bに記憶させる(ステップS24)。なお、アプリ運転状態開始カウンタ値記憶手段25Bに記憶された同期フリーランカウンタ値(図7の例では、N)は、内部バス11を介して、共有メモリ機能により、他のアプリ運転状態開始カウンタ値記憶手段35B,45Bにも反映される。
それから、アプリ運転開始要求フラグ設定処理手段24Hにより、基本コントローラ20用のアプリ運転開始要求フラグ記憶手段25Dに記憶されたフラグ、および拡張コントローラ30用のアプリ運転開始要求フラグ記憶手段25Eに記憶されたフラグを立てる処理(運転開始要求があったことを示す状態に変更する処理)を実行する(ステップS25)。なお、基本コントローラ20用のアプリ運転開始要求フラグ記憶手段25Dに記憶されたフラグが立てられると、この状態が内部バス11を介して、共有メモリ機能により、拡張コントローラ30や管理部40に設けられた基本コントローラ20用のアプリ運転開始要求フラグ記憶手段35D,45Dに記憶されたフラグに反映される。同様に、拡張コントローラ30用のアプリ運転開始要求フラグ記憶手段25Eに記憶されたフラグが立てられると、この状態が内部バス11を介して、共有メモリ機能により、拡張コントローラ30や管理部40に設けられた拡張コントローラ30用のアプリ運転開始要求フラグ記憶手段35E,45Eに記憶されたフラグに反映される。
そして、拡張コントローラ30において、アプリ運転開始要求フラグ監視処理手段34Dにより、拡張コントローラ30用のアプリ運転開始要求フラグ記憶手段35Eに記憶されたフラグの状態を監視し、このフラグが立った状態に変更されたか否かを判断する処理を繰り返し実行し(ステップS26)、フラグが立った場合には、次のステップに進む。
その後、基本コントローラ20および拡張コントローラ30において、アプリ起動準備処理手段24J,34Eにより、各コントローラ20,30のメモリ初期化処理(データメモリ27,37のユーザデータ領域27A,37Aに記憶されたアプリケーションα,β用の各種変数の初期化処理)を含む各コントローラ20,30のアプリケーション起動準備処理を実行する(ステップS27,S28)。
次に、基本コントローラ20においては、アプリ運転状態開始タイミング判断処理手段24Kにより、同期フリーランカウンタ25Aの現在値と、アプリ運転状態開始カウンタ値記憶手段25Bに記憶された同期フリーランカウンタ値(図7の例では、N)とが一致したか否かを判断することにより、アプリケーション運転状態の開始タイミングが到来したか否かを判断する処理を繰り返し実行する(ステップS29)。
ステップS29で双方の値が一致した(つまり、アプリケーション運転状態の開始タイミングが到来した)と判断された場合には、アプリ運転状態移行処理手段24Lにより、基本コントローラ20用のアプリ運転開始要求フラグ記憶手段25Dに記憶されたフラグを降ろす処理(運転開始要求が無いことを示す状態に変更する処理)を実行する(ステップS30)。なお、基本コントローラ20用のアプリ運転開始要求フラグ記憶手段25Dに記憶されたフラグが降ろされると、この状態が内部バス11を介して、共有メモリ機能により、拡張コントローラ30や管理部40に設けられた基本コントローラ20用のアプリ運転開始要求フラグ記憶手段35D,45Dに記憶されたフラグに反映される。
続いて、アプリ運転状態移行処理手段24Lにより、基本コントローラ20用のステータス記憶手段25Fに記憶されたステータスを、アプリケーション停止状態(STOP)からアプリケーション運転状態(RUN)へ移行させる処理を実行し(ステップS31)、処理Bを終了する(ステップS32)。なお、基本コントローラ20用のステータス記憶手段25Fに記憶されたステータスを変更すると、この変更後の状態が内部バス11を介して、共有メモリ機能により、拡張コントローラ30や管理部40に設けられた基本コントローラ20用のステータス記憶手段35F,45Fに記憶されたステータスに反映される。
また、拡張コントローラ30においては、アプリ運転状態開始タイミング判断処理手段34Fにより、同期フリーランカウンタ35Aの現在値と、アプリ運転状態開始カウンタ値記憶手段35Bに記憶された同期フリーランカウンタ値(図7の例では、N)とが一致したか否かを判断することにより、アプリケーション運転状態の開始タイミングが到来したか否かを判断する処理を繰り返し実行する(ステップS33)。
ステップS33で双方の値が一致した(つまり、アプリケーション運転状態の開始タイミングが到来した)と判断された場合には、アプリ運転状態移行処理手段34Gにより、拡張コントローラ30用のアプリ運転開始要求フラグ記憶手段35Eに記憶されたフラグを降ろす処理(運転開始要求が無いことを示す状態に変更する処理)を実行する(ステップS34)。なお、拡張コントローラ30用のアプリ運転開始要求フラグ記憶手段35Eに記憶されたフラグが降ろされると、この状態が内部バス11を介して、共有メモリ機能により、基本コントローラ20や管理部40に設けられた拡張コントローラ30用のアプリ運転開始要求フラグ記憶手段25E,45Eに記憶されたフラグに反映される。
続いて、アプリ運転状態移行処理手段34Gにより、拡張コントローラ30用のステータス記憶手段35Gに記憶されたステータスを、アプリケーション停止状態(STOP)からアプリケーション運転状態(RUN)へ移行させる処理を実行し(ステップS35)、処理Bを終了する(ステップS36)。なお、拡張コントローラ30用のステータス記憶手段35Gに記憶されたステータスを変更すると、この変更後の状態が内部バス11を介して、共有メモリ機能により、基本コントローラ20や管理部40に設けられた拡張コントローラ30用のステータス記憶手段25G,45Gに記憶されたステータスに反映される。
(処理Cの流れ)
図6において、ローダ50でのプログラムの開発支援処理を開始するとともに(ステップS41)、管理部40、基本コントローラ20、および拡張コントローラ30において、システム処理のうちの処理Cを開始する(ステップS42,S43,S44)。
先ず、ユーザは、ローダ50のソース編集処理手段51によるインターフェース機能により、変更対象のプログラムのソースコードの記述を変更する作業を行い、変更後のソースコードをソースコード記憶手段52に記憶させる(ステップS45)。
続いて、ローダ50のコンパイラ53により、ソースコード記憶手段52に記憶された変更後のソースコードをコンパイルすることにより、ターゲット上(各コントローラ20,30のマイクロプロセッサ22,32上)で動作する機械語オブジェクトに変換し、変換処理で得られた変更後の機械語オブジェクトを機械語オブジェクト記憶手段54に記憶させる(ステップS46)。また、図3に示すように、コンパイラ53により、ソースコード名と、その変換後の機械語オブジェクト名と、これらに付された番号との対応関係を定めるソースコード管理表を作成し、作成したソースコード管理表をソースコード管理表記憶手段55に記憶させる(ステップS46)。
それから、ローダ50の機械語オブジェクト送信処理手段56により、ソースコード管理表記憶手段55に記憶された機械語オブジェクト名と番号との対応関係を用いて、機械語オブジェクト記憶手段54からこの機械語オブジェクト名を付された変更後の機械語オブジェクトを取得し、取得した変更後の機械語オブジェクトを、対応する番号とともに、管理部40のUSB接続部47A、イーサネット接続部47B(イーサネットは登録商標)、またはシリアル接続部47Cのいずれかを用いた通信により、管理部40を介して(但し、図6では、管理部40の中継処理の図示は省略されている。)、基本コントローラ20へ送信する(ステップS47)。なお、複数の変更後の機械語オブジェクトがある場合には、全ての変更後の機械語オブジェクトを、管理部40を介して基本コントローラ20へ送信する。また、後述するように、管理部40の機能は、基本コントローラ20の1つの機能として実装されていてもよいので、この場合には、変更後の機械語オブジェクトを、対応する番号とともに、基本コントローラ20に直接に送信してもよい。
例えば、図8に示すように、プログラム更新前においては、基本コントローラ20のマイクロプロセッサ22用の主メモリ23には、機械語オブジェクトP1,P2が格納され、拡張コントローラ30のマイクロプロセッサ32用の主メモリ33には、機械語オブジェクトP2,P3が格納されているとする。そして、ユーザが、ローダ50で、機械語オブジェクトP2に対応するソースコードU2(図3参照)を変更し、その変更後のソースコードをコンパイルして機械語オブジェクトP2’が得られた場合には、この変更後の機械語オブジェクトP2’が、番号2とともに、管理部40を介して基本コントローラ20へ送信される。
基本コントローラ20では、機械語オブジェクト配置処理手段24Mにより、ローダ50から送信されてくる変更後の機械語オブジェクトを、対応する番号とともに受信する(ステップS48)。そして、機械語オブジェクト配置処理手段24Mにより、受信した変更後の機械語オブジェクトが、いずれのコントローラで実行される変更後の機械語オブジェクトであるかを判断し、受信した変更後の機械語オブジェクトのうち自コントローラ20用の変更後の機械語オブジェクトについては、主メモリ23に格納して配置するとともに、拡張コントローラ30用の変更後の機械語オブジェクトについては、拡張コントローラ30のマイクロプロセッサ32に送信する(ステップS49)。なお、拡張コントローラ30用の変更後の機械語オブジェクトであるか否かの判断を行うことなく、ローダ50から受信した変更後の機械語オブジェクトの全てを、拡張コントローラ30へ転送してもよい。
続いて、主メモリ23に配置した変更後の機械語オブジェクトを格納した領域の先頭アドレス(格納先アドレス)を、主メモリ23に記憶されている現在使用中の実行管理テーブルT1とは別の実行管理テーブルT2に記録する(ステップS50)。
例えば、図9に示すように、変更後の機械語オブジェクトP2’を、番号2とともに受信した場合には、受信した変更後の機械語オブジェクトP2’を主メモリ23に格納して配置するとともに、番号2であるから、実行管理テーブルT2の2番目の位置に、変更後の機械語オブジェクトP2’の格納先アドレスを記録する。
なお、機械語オブジェクト配置処理手段24Mにより、受信した変更後の機械語オブジェクトが、いずれのコントローラ用の変更後の機械語オブジェクトであるかの判断処理を行う際には、自コントローラ20用の変更後の機械語オブジェクトであるか否かを判断するだけであれば、現在使用中の実行管理テーブルT1を用いて、受信した番号の示す実行管理テーブルT1上の位置に、機械語オブジェクトの格納先アドレスが記録されているか否かにより判断することができる。また、受信した番号から、別途にメモリ(例えばフラッシュメモリ26等)に記憶されたデータ(番号とコントローラとの対応関係を示すデータ)を用いて判断してもよく、あるいは、ローダ50から機械語オブジェクトおよび番号とともに送信されてくるターゲット識別情報(いずれのコントローラで実行される機械語オブジェクトであるかを識別するための情報)を用いて判断してもよい。
その後、拡張コントローラ30では、機械語オブジェクト配置処理手段34Hにより、ローダ50から基本コントローラ20のマイクロプロセッサ22を介して送信されてくる変更後の機械語オブジェクトを、対応する番号とともに受信し(ステップS51)、受信した変更後の機械語オブジェクトのうち自コントローラ30用の変更後の機械語オブジェクトのみ(なお、基本コントローラ20から拡張コントローラ30用の変更後の機械語オブジェクトのみが送信されてくる場合には、受信した変更後の機械語オブジェクトの全てとなる。)を、自己の主メモリ33に格納して配置する(ステップS52)。
なお、基本コントローラ20から、拡張コントローラ30用の変更後の機械語オブジェクト以外の変更後の機械語オブジェクトも含めて送信されてきた場合には、現在使用中の実行管理テーブルT1を用いて、受信した番号の示す実行管理テーブルT1上の位置に、機械語オブジェクトの格納先アドレスが記録されているか否かにより、自コントローラ30用の変更後の機械語オブジェクトであるか否かを判断することができる。
続いて、機械語オブジェクト配置処理手段34Hにより、主メモリ33に配置した変更後の機械語オブジェクトの格納先アドレスを、主メモリ33に記憶されている現在使用中の実行管理テーブルT1とは別の実行管理テーブルT2に記録する(ステップS53)。
例えば、図9に示すように、変更後の機械語オブジェクトP2’を、番号2とともに受信した場合には、受信した変更後の機械語オブジェクトP2’を主メモリ33に格納して配置するとともに、番号2であるから、実行管理テーブルT2の2番目の位置に、変更後の機械語オブジェクトP2’の格納先アドレスを記録する。
そして、各コントローラ20,30で主メモリ23,33への変更後の機械語オブジェクトの格納が完了した後(複数の変更後の機械語オブジェクトがある場合には、全ての変更後の機械語オブジェクトの格納が完了した後)に、ローダ50では、機械語オブジェクト送信処理手段56により、機械語オブジェクトの送信完了通知の信号を、管理部40を介して(但し、図6では、管理部40の中継処理の図示は省略されている。)、各コントローラ20,30のマイクロプロセッサ22,32へ送信する(ステップS54)。
それから、基本コントローラ20では、実行管理テーブル補完処理手段24Nにより、ローダ50から送信されてくる変更後の機械語オブジェクトの送信完了通知の信号を受信し(ステップS55)、別の実行管理テーブルT2の補完処理、すなわち現在使用中の実行管理テーブルT1に記録された機械語オブジェクトの格納先アドレスのうち、変更する必要のない機械語オブジェクトの格納先アドレスを、そのまま利用して別の実行管理テーブルT2に記録する処理を実行する(ステップS56)。
また、拡張コントローラ30でも、実行管理テーブル補完処理手段34Jにより、ローダ50から送信されてくる変更後の機械語オブジェクトの送信完了通知の信号を受信し(ステップS57)、別の実行管理テーブルT2の補完処理、すなわち現在使用中の実行管理テーブルT1に記録された機械語オブジェクトの格納先アドレスのうち、変更する必要のない機械語オブジェクトの格納先アドレスを、そのまま利用して別の実行管理テーブルT2に記録する処理を実行する(ステップS58)。
例えば、図10に示すように、基本コントローラ20では、主メモリ23に記憶されている別の実行管理テーブルT2の補完処理として、機械語オブジェクトP1は変更されていないので、そのまま利用し、現在使用中の実行管理テーブルT1の1番目の位置に記録されている機械語オブジェクトP1の格納先アドレスを、別の実行管理テーブルT2の1番目の位置に記録する。また、図10に示すように、拡張コントローラ30では、主メモリ33に記憶されている別の実行管理テーブルT2の補完処理として、機械語オブジェクトP3は変更されていないので、そのまま利用し、現在使用中の実行管理テーブルT1の3番目の位置に記録されている機械語オブジェクトP3の格納先アドレスを、別の実行管理テーブルT2の3番目の位置に記録する。
次に、ローダ50から、管理部40に対してプログラムの切替指示の信号を送信し(ステップS59)、ローダ50でのプログラム変更に関する処理を終了する(ステップS60)。管理部40では、プログラム切替カウンタ値算出・設定処理手段44Aにより、ローダ50から送信されてくるプログラムの切替指示の信号を受信し(ステップS61)、同期フリーランカウンタ45Aの現在値(図7の例では、M)に、予め定められたカウント数C2(例えば、C2=2カウント等)を加算することにより、アプリケーションプログラムの切替タイミングを示す同期フリーランカウンタ値(図7の例では、K)を、K=M+C2として算出し、算出した同期フリーランカウンタ値(図7の例では、K)を、プログラム切替カウンタ値記憶手段45C(図1参照)に記憶させ(ステップS62)、管理部40での処理Cを終了する(ステップS63)。
その後、基本コントローラ20では、プログラム切替タイミング判断処理手段24Pにより、同期フリーランカウンタ25A(図1参照)の現在値と、プログラム切替カウンタ値記憶手段25C(図1参照)に記憶された同期フリーランカウンタ値(図7の例では、K)とが一致したか否かを判断することにより、アプリケーションプログラムの切替タイミングが到来したか否かを判断する処理を繰り返し実行する(ステップS64)。
そして、ステップS64で、プログラム切替タイミング判断処理手段24Pにより双方が一致した(つまり、アプリケーションプログラムの切替タイミングが到来した)と判断した場合には、実行管理テーブル切替処理手段24Qにより、主メモリ23に記憶されている基本コントローラ20用の現在実行中の実行管理テーブルT1を、別の実行管理テーブルT2へ切り替える処理、すなわち、図11に示すように、主メモリ23に記憶されているプログラム実行管理表ポインタを、現在実行中の実行管理テーブルT1のアドレスから別の実行管理テーブルT2のアドレスへと切り替える処理を実行し(ステップS65)、基本コントローラ20での処理Cを終了する(ステップS66)。
また、拡張コントローラ30では、プログラム切替タイミング判断処理手段34Kにより、同期フリーランカウンタ35A(図1参照)の現在値と、プログラム切替カウンタ値記憶手段35C(図1参照)に記憶された同期フリーランカウンタ値(図7の例では、K)とが一致したか否かを判断することにより、アプリケーションプログラムの切替タイミングが到来したか否かを判断する処理を繰り返し実行する(ステップS67)。
そして、ステップS67で、プログラム切替タイミング判断処理手段34Kにより双方が一致した(つまり、アプリケーションプログラムの切替タイミングが到来した)と判断した場合には、実行管理テーブル切替処理手段34Lにより、主メモリ33に記憶されている拡張コントローラ30用の現在実行中の実行管理テーブルT1を、別の実行管理テーブルT2へ切り替える処理、すなわち、図11に示すように、主メモリ33に記憶されているプログラム実行管理表ポインタを、現在実行中の実行管理テーブルT1のアドレスから別の実行管理テーブルT2のアドレスへと切り替える処理を実行し(ステップS68)、拡張コントローラ30での処理Cを終了する(ステップS69)。
(システム処理の全体の流れ)
図7において、先ず、図示は省略されているが、リセット状態解除により、基本コントローラ20および拡張コントローラ30において、システムイニシャル処理手段24A,34Aによる処理が開始される。この際、基本コントローラ20のシステムイニシャル処理手段24Aにより、同期フリーランカウンタ25Aが起動され、ゼロからのカウントが開始される。なお、同期フリーランカウンタ25Aの状態は、内部バス11を介して、共有メモリ機能により、拡張コントローラ30や管理部40に設けられた同期フリーランカウンタ35A,45Aに反映される。
また、基本コントローラ20のシステムイニシャル処理手段24Aにより、基本コントローラ20用のステータス記憶手段25Fに記憶されたステータスが、アプリケーション停止状態(STOP)に設定され、この状態が内部バス11を介して、共有メモリ機能により、拡張コントローラ30や管理部40に設けられた基本コントローラ20用のステータス記憶手段35F,45Fに記憶されたステータスに反映される。同様に、拡張コントローラ30のシステムイニシャル処理手段34Aにより、拡張コントローラ30用のステータス記憶手段35Gに記憶されたステータスが、アプリケーション停止状態(STOP)に設定され、この状態が内部バス11を介して、共有メモリ機能により、基本コントローラ20や管理部40に設けられた拡張コントローラ30用のステータス記憶手段25G,45Gに記憶されたステータスに反映される。なお、ステータスは、最初にイニシャル状態としておき、ハンドシェイクしてイニシャル処理を完了してから、アプリケーション停止状態(STOP)としてもよい。
続いて、基本コントローラ20のアプリケーション起動周期待機処理手段24Bによるアプリケーション起動周期の到来監視が開始され、以降、図7中の点線で示された縦線のように、一定周期(例えば1ミリ秒間隔等)で、すなわちアプリケーション起動周期のタイミングで、処理A(図4参照)の同期割込みが繰り返し実行されるとともに、同期フリーランカウンタ25Aのカウントアップが進んでいく。図7では、アプリケーション起動周期の到来(図4のステップS3)が点線の縦線で示され、同期フリーランカウンタ25Aのカウントアップ(図4のステップS4)で点線の直後からカウンタ値が1カウント増加し、さらにその直後の同期割込み信号の送受信(図4のステップS5,S6)が下方に向かう太い矢印で示されている。
その後、システムイニシャル処理手段24A,34Aにより、図示は省略されているが、ハンドシェイク(通信用パラメータの取り決め等の通信規律の確立処理)を行うことにより、基本コントローラ20と拡張コントローラ30との間のイニシャル完了待ち合わせを行う。
そして、イニシャル処理の完了後には、基本コントローラ20および拡張コントローラ30の双方とも、イニシャル状態(不図示)からアプリケーション停止状態となり、基本コントローラ20の外部要求待機処理手段24Fによる外部からの起動要求待ち(起動のスイッチ操作待ち)を行う処理B(図5参照)が開始される。
この際、処理B(図5参照)に対し、処理A(図4参照)は、一定周期での割込みとなるので、図7に示すように、処理Aと処理Bとが交互に実行されるタイムチャートとなる。但し、処理Aは、割込みの処理であるため、図7のタイムチャートにおいて、図4の処理Aの流れは何回も繰り返されるが、図5の処理Bの流れは1回である。なお、図7中において、点線で示されたアプリケーション起動周期の時間間隔(例えば1ミリ秒等)を示す長さと、処理Aの実行時間を示す長さと、処理Bの実行時間を示す長さとは、実際の時間の比率を示すものではなく、各処理の時間的関係をイメージし易くするための説明の便宜上の記載である。
図7に示すように、同期フリーランカウンタ25Aの値がLになった時点で、外部からの起動要求(図5のステップS23)があったとすると、この時点で、アプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値Nが、見込みで予め定められたカウント数C1を用いて、N=L+C1により算出され、算出された同期フリーランカウンタ値Nの設定が行われる(図5のステップS24)。
それから、基本コントローラ20では、アプリケーションαの起動準備処理が行われ(図5のステップS27)、拡張コントローラ30では、アプリケーションβの起動準備処理が行われる(図5のステップS28)。なお、図7の例では、アプリケーションαの起動準備処理がカウント値(N−1)まで続き、アプリケーションβの起動準備処理がカウント値(N−2)まで続くように記載されているが、これは、各コントローラ20,30によって起動準備処理に要する時間が異なることを示すための記載であり、実際のカウント値ではない。実際には、例えばC1=1000カウント等の大きさの数値を見込んでNを設定するので、Nよりも、もっと手前のカウント値でそれぞれの起動準備処理は終了する。
その後、アプリケーション起動周期の到来タイミングで、処理Aの同期フリーランカウンタ25Aのカウンタアップ(図4のステップS4)を行って、同期フリーランカウンタ25Aの値がNになったとする。そして、処理Aの同期割込み信号の送受信(図4のステップS5,S6)の後に、ステータスの確認(図4のステップS7,S10)を行っても、このときには、ステータスは、未だアプリケーション停止状態(STOP)であるから、アプリケーション起動要求(図4のステップS8,S11)は行われない。
この直後に、処理Aの割込みを終了し、処理Bに戻ると、同期フリーランカウンタ25A,35Aの値はNになっているので、アプリケーション運転状態の開始タイミングが到来したと判断され(図5のステップS29,S33)、基本コントローラ20および拡張コントローラ30において、基本コントローラ20用のステータスおよび拡張コントローラ30用のステータスが、それぞれアプリケーション停止状態(STOP)からアプリケーション運転状態(RUN)へ移行される(図5のステップS31,S35)。
続いて、同期フリーランカウンタ25A,35Aの値が(N+1)になった時点で、処理Aの同期割込み信号の送受信(図4のステップS5,S6)の後に、ステータスの確認(図4のステップS7,S10)を行うと、この時点では、ステータスは、既にアプリケーション運転状態(RUN)へ移行されているので、基本コントローラ20および拡張コントローラ30において、アプリケーションα,βが起動される(図4のステップS8,S11)。以降、同期フリーランカウンタ25A,35Aの値が(N+2),(N+3),…になった時点でも同様であり、ステータスは、アプリケーション運転状態(RUN)となっているので、アプリケーションα,βが起動される(図4のステップS8,S11)。従って、アプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値がNであれば、その次のカウンタ値(N+1)の時点から、アプリケーション運転状態(アプリケーションα,βの一定周期での起動が繰り返される期間)が続くことになる。
また、上述したように、同期フリーランカウンタ25A,35Aの値が(N+1)になった時点から、アプリケーションα,βの一定周期での起動が繰り返されるが、アプリケーションα,βは、一定周期内で実行が終了するように作成されているので、各周期におけるアプリケーションα,βの実行の終了後に、運転中のプログラムの更新を受け付ける処理C(図6参照)が待機状態となる。
従って、処理C(図6参照)に対し、処理A(図4参照)は、一定周期での割込みとなり、また、その割込みのタイミングで繰り返し起動されるアプリケーションα,βの実行は、各周期内で終了するので、図7に示すように、処理Aと、アプリケーションによる処理APLと、処理Cとが入れ替わりながら実行されるタイムチャートとなる。但し、図7のタイムチャートにおいて、図4の処理Aの流れや、アプリケーションによる処理APLは、何回も繰り返されるが、図6の処理Cの流れは1回である。なお、図7中において、点線で示されたアプリケーション起動周期の時間間隔(例えば1ミリ秒等)を示す長さと、処理Aの実行時間を示す長さと、アプリケーションによる処理APLの実行時間を示す長さと、処理Cの実行時間を示す長さとは、実際の時間の比率を示すものではなく、各処理の時間的関係をイメージし易くするための説明の便宜上の記載である。
図7に示すように、同期フリーランカウンタ45Aの値がMになる時点までに、変更後の機械語オブジェクトの送信および主メモリ23,33への格納が行われ、同期フリーランカウンタ45Aの値がMになった時点で、ローダ50からのプログラムの切替指示(図6のステップS59,S61)があったとすると、この時点で、プログラムの切替タイミングを示す同期フリーランカウンタ値Kが、見込みで予め定められたカウント数C2を用いて、K=M+C2により算出され、算出された同期フリーランカウンタ値Kの設定が行われる(図6のステップS62)。
その後、アプリケーション起動周期の到来タイミングで、処理Aの同期フリーランカウンタ25Aのカウンタアップ(図4のステップS4)を行って、同期フリーランカウンタ25Aの値がKになったとする。このとき、処理A(図4参照)の割込みのタイミングで同期して起動されたアプリケーションα,βの実行後に、処理C(図6参照)に戻ると、同期フリーランカウンタ25A,35Aの値はKになっているので、プログラムの切替タイミングが到来したと判断され(図6のステップS64,S67)、基本コントローラ20および拡張コントローラ30において、主メモリ23,33に記憶されている各コントローラ20,30用の現在実行中の実行管理テーブルT1を、別の実行管理テーブルT2へ切り替える処理、すなわち、図11に示すように、主メモリ23,33に記憶されているプログラム実行管理表ポインタを、現在実行中の実行管理テーブルT1のアドレスから別の実行管理テーブルT2のアドレスへと切り替える処理が行われる。
続いて、同期フリーランカウンタ25A,35Aの値が(K+1)になった時点で、処理Aのアプリケーションα,βの起動要求(図4のステップS8,S11)が行われると、この時点では、各コントローラ20,30用のプログラム実行管理表ポインタが既に切り替えられているので、切替後のプログラム実行管理表ポインタが指している実行管理テーブルT2に従って、主メモリ23,33に格納されたプログラムが実行される。すなわち、この時点では、実行管理テーブルが既にT1からT2へ切り替えられているので、切替後の実行管理テーブルT2に従って、主メモリ23,33に格納されたプログラムが実行される。そして、切替後の実行管理テーブルT2には、変更後の機械語プログラムの格納先アドレスが含まれているので、変更後の機械語プログラムを含むアプリケーションプログラムα,βが実行されることになる。従って、プログラムの切替タイミングを示す同期フリーランカウンタ値がKであれば、その次のカウンタ値(K+1)の時点から、切替後のプログラムによる運転状態が続くことになる。
このような本実施形態によれば、次のような効果がある。すなわち、基本コントローラ20のカウント更新処理手段24Cにより、同期フリーランカウンタ25Aの値を更新していき、基本コントローラ20および拡張コントローラ30の各々のプログラム切替タイミング判断処理手段24P,34Kにより、同期フリーランカウンタ25A,35Aの現在値と、プログラム切替カウンタ値記憶手段25C,35Cに記憶された同期フリーランカウンタ値とが一致したと判断した場合に、各々の実行管理テーブル切替処理手段24Q,34Lにより、各々のコントローラ20,30用の実行管理テーブルT1を、変更後の機械語オブジェクトの格納先アドレスが記録された別の実行管理テーブルT2へ切り替えるので、切替後には、各々のコントローラ20,30で、切替後の実行管理テーブルT2に従って、変更後の機械語オブジェクトを含んで構成される更新されたアプリケーションプログラムα,βを実行することができる。このため、プログラムの同期更新を実現することができる。
また、基本コントローラ20の同期割込み送信処理手段24Dおよび拡張コントローラ30の同期割込み受信処理手段34Bにより、同期割込み信号の送受信を行い、基本コントローラ20および拡張コントローラ30の各々のアプリケーション起動要求処理手段24E,34Cにより、同期割込み信号の送受信のタイミングで、各々のアプリケーションα,βの起動要求処理を実行するので(図4参照)、各々のアプリケーションα,βの周期的に繰り返される起動を毎回同期させることができる。
そして、このように周期的に繰り返されるアプリケーションプログラムα,βの起動の同期化を図ることができるので、同期割込み信号の送受信のタイミングで、変更後の機械語オブジェクトを含んで構成される各々のアプリケーションプログラムα,βを同期させて起動することができるため、プログラムの同期更新および同期起動の双方を実現することができる。
また、以上のように、基本コントローラ20と拡張コントローラ30との間での同期割込み信号および同期フリーランカウンタ25A,35Aによるタイミング制御により、プログラムの更新の同期化、および周期的に繰り返されるアプリケーションプログラムの起動の同期化を図ることができるので、制御対象の動作の不具合を未然に防止するとともに、高精度な同期制御を実現することができる。
さらに、プログラム切替カウンタ値算出・設定処理手段44Aは、同期フリーランカウンタ45Aの現在値に、予め定められたカウント数C2を加算することにより、アプリケーションプログラムの切替タイミングを示す同期フリーランカウンタ値を算出し、設定する構成とされているので、ローダ50からのプログラム切替指示を受け付けたときに、そのときの同期フリーランカウンタ45Aの値を基準として、相対的にアプリケーションプログラムの切替タイミングを定めることができるため、適切でかつ早期の切替タイミングを設定することができる。
なお、本発明は前記実施形態に限定されるものではなく、本発明の目的を達成できる範囲内での変形等は本発明に含まれるものである。
例えば、前記実施形態では、拡張コントローラ30は1つであるものとして説明を行ったが、拡張コントローラ30は複数でもよい。
また、前記実施形態では、管理部40に、プログラム切替カウンタ値算出・設定処理手段44Aが設けられていたが、基本コントローラ20に、プログラム切替カウンタ値算出・設定処理手段を設けてもよい。この場合、プログラム切替カウンタ値算出・設定処理手段は、ローダ50からのプログラム切替指示の信号を受信し、このときの同期フリーランカウンタ25Aの現在値に、予め定められたカウント数C2を加算することにより、アプリケーションプログラムの切替タイミングを示す同期フリーランカウンタ値を算出し、算出した同期フリーランカウンタ値をプログラム切替カウンタ値記憶手段25Cに記憶させる構成とすればよい。
そして、上記のプログラム切替カウンタ値算出・設定処理手段44Aの機能だけではなく、より一般的には、管理部40の機能(システム処理手段44により実現される機能全般)は、基本コントローラ20の1つの機能として実装されていてもよい。従って、図6に示されている管理部40で実行されるステップS42〜S63の処理は、基本コントローラ20で実行してもよい。
さらに、前記実施形態では、変更後の機械語オブジェクトは、ローダ50から管理部40を介して(但し、図6では、管理部40の中継処理の図示は省略されている。)基本コントローラ20へ送信された後に、基本コントローラ20から拡張コントローラ30へ送信されるようになっていたが、ローダ50から、管理部40を介して、基本コントローラ20および拡張コントローラ30へ直接に送信するようにしてもよい。つまり、基本コントローラ20から拡張コントローラ30への送信を行わないようにしてもよい。この場合、拡張コントローラ30へ直接に送信される変更後の機械語オブジェクトの中には、自コントローラ30用の変更後の機械語オブジェクトではないものが含まれることになるので、拡張コントローラ30の機械語オブジェクト配置処理手段34Hにより、受信した変更後の機械語オブジェクトが、自コントローラ30用の変更後の機械語オブジェクトであるか否かの判断を行えばよい。なお、管理部40で単なる中継処理を行うのではなく、管理部40のシステム処理手段44により、ローダ50から受信した変更後の機械語オブジェクトが、いずれのコントローラで実行される変更後の機械語オブジェクトであるかを判断し、受信した変更後の機械語オブジェクトのうち基本コントローラ20用の変更後の機械語オブジェクトについては、基本コントローラ20のマイクロプロセッサ22に送信し、拡張コントローラ30用の変更後の機械語オブジェクトについては、拡張コントローラ30のマイクロプロセッサ32に送信するようにしてもよい。
また、前記実施形態では、設定用カウンタ値算出・設定処理手段24Gにより、外部からの起動要求を受け付けたときの同期フリーランカウンタ25Aの値を基準として、相対的にアプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値を算出し、設定する構成とされていたが(図5のステップS24)、これに限定されるものではなく、例えば、基本コントローラ20および拡張コントローラ30の双方(3つ以上のコントローラがある場合には、それらの全部)についてのアプリケーション起動準備処理が終了するのをフラグやステータス等を用いて確認してから(つまり、起動準備処理の終了を判断できるようなフラグやステータスを設けておく。)、確認後にアプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値を算出し、設定する構成としてもよい。例えば、全部のアプリケーション起動準備処理が終了するのを確認した時点の同期フリーランカウンタ25Aの値に、予め定められたカウント数C3(例えば、C3=2カウント等)を加算することにより、アプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値を算出し、設定してもよい。しかし、アプリケーション運転状態の開始タイミングの判断処理の容易化という観点からは、前記実施形態のような構成とすることが好ましい。
さらに、前記実施形態では、3つの共有メモリ領域25,35,45でデータを共有する構成とされていたが(図1、図2参照)、それぞれのマイクロプロセッサとバスで接続された1つの共有メモリ領域を設置してもよい。
また、実用上、同期フリーランカウンタ25Aの値のオーバーフローが問題になることはないが、万一、オーバーフローした場合(外部からの起動要求が著しく遅れた場合等)を考慮し、アプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値の算出処理を、次のようにしてもよい。すなわち、同期フリーランカウンタ25Aの最大値をMAXとし(0〜MAXの値をとるので、カウント総数は(MAX+1)となる。)、算出するアプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値をNとし、この算出処理の時点での同期フリーランカウンタ25Aの現在値をLとし、予め定められたカウント数をC1(このC1の値は、前記実施形態と同じでよい。)とすると、N=L+C1がMAXを超える場合には、N=L+C1−(MAX+1)とする処理を行ってもよい。つまり、カウント値がMAXとなった後に、0に戻ることを考慮し、カウント総数の(MAX+1)を減じている。なお、同期フリーランカウンタ25Aが1からカウントされるものとすれば(つまり、カウント値がMAXとなった後に、1に戻るとすれば)、1〜MAXの値をとるので、カウント総数はMAXとなり、N=L+C1−MAXでよい。要するに、カウント値がLの時点(外部からの起動要求があった時点)から、カウント数C1の時間分だけ経過した時点を定めることができればよい。
以上のように、本発明のプログラマブルコントローラシステムおよびそのプログラム更新方法は、実行中のアプリケーションプログラムを更新する場合に用いるのに適している。
10 プログラマブルコントローラシステム
20 基本コントローラ
24C カウント更新処理手段
24D 同期割込み送信処理手段
24E,34C アプリケーション起動要求処理手段
24M,34H 機械語オブジェクト配置処理手段
24P,34K プログラム切替タイミング判断処理手段
24Q,34L 実行管理テーブル切替処理手段
25,35,45 共有メモリ領域
25A,35A,45A 同期フリーランカウンタ
25C,35C,45C プログラム切替カウンタ値記憶手段
30 拡張コントローラ
34B 同期割込み受信処理手段
40 管理部
44A プログラム切替カウンタ値算出・設定処理手段
α,β アプリケーションプログラム
P1,P2,P3 機械語オブジェクト
P2’ 変更後の機械語オブジェクト
T1,T2 実行管理テーブル

Claims (3)

  1. 基本コントローラおよび少なくとも1つの拡張コントローラを備え、これらの複数のコントローラの各々で用意された実行管理テーブルに従って各々のアプリケーションプログラムを実行する構成とされたプログラマブルコントローラシステムであって、
    前記基本コントローラおよび前記拡張コントローラで共有される共有メモリ領域に設けられた同期フリーランカウンタと、
    前記共有メモリ領域に設けられてアプリケーションプログラムの切替タイミングを示す同期フリーランカウンタ値を記憶するプログラム切替カウンタ値記憶手段とを備え、
    前記基本コントローラは、
    前記拡張コントローラへ同期割込み信号を送信する処理を実行する同期割込み送信処理手段と、
    前記同期フリーランカウンタに、前記同期割込み信号の1回の送信につき、1カウント若しくは一定数のカウントを加算または減算する処理を実行するカウント更新処理手段とを備え、
    前記拡張コントローラは、
    前記基本コントローラからの前記同期割込み信号を受信する処理を実行する同期割込み受信処理手段を備え、
    前記基本コントローラおよび前記拡張コントローラの各々は、
    ローダから送信されてくる変更後の機械語オブジェクトを、各々のコントローラのプロセッサ用の主メモリに格納して配置するとともに、前記変更後の機械語オブジェクトの格納先アドレスを現在使用中の実行管理テーブルとは別の実行管理テーブルに記録する処理を実行する機械語オブジェクト配置処理手段と、
    前記同期フリーランカウンタの現在値と前記プログラム切替カウンタ値記憶手段に記憶された前記同期フリーランカウンタ値とが一致したか否かを判断する処理を繰り返し実行するプログラム切替タイミング判断処理手段と、
    このプログラム切替タイミング判断処理手段により一致したと判断した場合に、各々のコントローラ用の実行管理テーブルを前記別の実行管理テーブルへ切り替える処理を実行する実行管理テーブル切替処理手段と、
    前記同期割込み信号の送受信のタイミングで、各々のコントローラ用の実行管理テーブルに従って実行される各々のアプリケーションプログラムの起動要求処理を実行するアプリケーション起動要求処理手段と
    を備えたことを特徴とするプログラマブルコントローラシステム。
  2. 前記複数のコントローラのプロセッサとは別のプロセッサを有する管理部、または前記基本コントローラは、
    前記ローダからのプログラム切替指示を受け付けた場合に、前記同期フリーランカウンタの現在値に、予め定められたカウント数を加算または減算することにより、前記アプリケーションプログラムの切替タイミングを示す同期フリーランカウンタ値を算出し、算出した前記同期フリーランカウンタ値を前記プログラム切替カウンタ値記憶手段に記憶させる処理を実行するプログラム切替カウンタ値算出・設定処理手段を備えた
    ことを特徴とする請求項1に記載のプログラマブルコントローラシステム。
  3. 基本コントローラおよび少なくとも1つの拡張コントローラを備え、これらの複数のコントローラの各々で用意された実行管理テーブルに従って各々のアプリケーションプログラムを実行する構成とされたプログラマブルコントローラシステムのプログラム更新方法であって、
    前記基本コントローラおよび前記拡張コントローラで共有される共有メモリ領域に、同期フリーランカウンタと、アプリケーションプログラムの切替タイミングを示す同期フリーランカウンタ値を記憶するプログラム切替カウンタ値記憶手段とを設けておき、
    前記基本コントローラの同期割込み送信処理手段が、前記拡張コントローラへ同期割込み信号を送信する処理を実行し、
    前記基本コントローラのカウント更新処理手段が、前記同期フリーランカウンタに、前記同期割込み信号の1回の送信につき、1カウント若しくは一定数のカウントを加算または減算する処理を実行し、
    前記拡張コントローラの同期割込み受信処理手段が、前記基本コントローラからの前記同期割込み信号を受信する処理を実行し、
    前記基本コントローラおよび前記拡張コントローラの各々の機械語オブジェクト配置処理手段が、ローダから送信されてくる変更後の機械語オブジェクトを、各々のコントローラのプロセッサ用の主メモリに格納して配置するとともに、前記変更後の機械語オブジェクトの格納先アドレスを現在使用中の実行管理テーブルとは別の実行管理テーブルに記録する処理を実行し、
    前記基本コントローラおよび前記拡張コントローラの各々のプログラム切替タイミング判断処理手段が、前記同期フリーランカウンタの現在値と前記プログラム切替カウンタ値記憶手段に記憶された前記同期フリーランカウンタ値とが一致したか否かを判断する処理を繰り返し実行し、
    前記基本コントローラおよび前記拡張コントローラの各々の実行管理テーブル切替処理手段が、前記プログラム切替タイミング判断処理手段により一致したと判断した場合に、各々のコントローラ用の実行管理テーブルを前記別の実行管理テーブルへ切り替える処理を実行し、
    前記基本コントローラおよび前記拡張コントローラの各々のアプリケーション起動要求処理手段が、前記同期割込み信号の送受信のタイミングで、各々のコントローラ用の実行管理テーブルに従って実行される各々のアプリケーションプログラムの起動要求処理を実行する
    ことを特徴とするプログラマブルコントローラシステムのプログラム更新方法。
JP2010164365A 2010-07-21 2010-07-21 プログラマブルコントローラシステムおよびそのプログラム更新方法 Active JP5549455B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010164365A JP5549455B2 (ja) 2010-07-21 2010-07-21 プログラマブルコントローラシステムおよびそのプログラム更新方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010164365A JP5549455B2 (ja) 2010-07-21 2010-07-21 プログラマブルコントローラシステムおよびそのプログラム更新方法

Publications (2)

Publication Number Publication Date
JP2012027621A JP2012027621A (ja) 2012-02-09
JP5549455B2 true JP5549455B2 (ja) 2014-07-16

Family

ID=45780492

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010164365A Active JP5549455B2 (ja) 2010-07-21 2010-07-21 プログラマブルコントローラシステムおよびそのプログラム更新方法

Country Status (1)

Country Link
JP (1) JP5549455B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6119452B2 (ja) * 2013-06-21 2017-04-26 富士電機株式会社 プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ、プログラム
JP5937637B2 (ja) * 2014-04-30 2016-06-22 ファナック株式会社 シーケンスプログラムの切り替え時に、切り替え予告信号を出力する制御装置
CN108541307B (zh) * 2016-01-07 2021-04-02 三菱电机株式会社 可编程控制器以及同步控制方法
CN107766128B (zh) * 2016-08-17 2021-01-29 华为技术有限公司 一种启动应用的方法及装置
CN112424713A (zh) * 2018-08-23 2021-02-26 西门子股份公司 人工智能计算设备、控制方法及装置、工程师站及工业自动化系统

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06124262A (ja) * 1991-09-18 1994-05-06 Nec Corp システム構成変更方式
JPH1131133A (ja) * 1997-07-11 1999-02-02 Yaskawa Electric Corp モジュール間の同期方法
JP3369470B2 (ja) * 1998-05-28 2003-01-20 三菱電機株式会社 サーボシステムコントローラ
JP2000357002A (ja) * 1999-06-15 2000-12-26 Canon Inc 負荷制御装置及び負荷制御方法
JP3708853B2 (ja) * 2001-09-03 2005-10-19 松下電器産業株式会社 マルチプロセッサシステムおよびプログラム制御方法
JP3852469B2 (ja) * 2004-03-11 2006-11-29 オムロン株式会社 同期コントローラおよびコントローラシステム
JP2006268476A (ja) * 2005-03-24 2006-10-05 Murata Mfg Co Ltd 熱処理設備システム
JP2007213474A (ja) * 2006-02-13 2007-08-23 Yaskawa Electric Corp モーション制御システム
JP2008077265A (ja) * 2006-09-20 2008-04-03 Fuji Electric Fa Components & Systems Co Ltd プログラマブルコントローラのプログラム更新方法
JP4901813B2 (ja) * 2008-05-30 2012-03-21 三菱電機株式会社 マルチコントローラシステム
JP5540928B2 (ja) * 2010-06-21 2014-07-02 富士電機株式会社 プログラマブルコントローラシステムおよびそのアプリケーション起動方法

Also Published As

Publication number Publication date
JP2012027621A (ja) 2012-02-09

Similar Documents

Publication Publication Date Title
JP5549455B2 (ja) プログラマブルコントローラシステムおよびそのプログラム更新方法
JP5099251B1 (ja) Plcのcpuユニット、plc用のシステムプログラム、plc用のシステムプログラムを格納した記録媒体、plcシステム、plcサポート装置、plcサポートプログラム、および、plcサポートプログラムを格納した記録媒体
US8190941B2 (en) Field control system
JP6540166B2 (ja) 制御装置
JP5528568B2 (ja) 並列プログラム制御
KR950012293B1 (ko) 정보처리장치 및 이를 이용한 정보처리방법
JP6535459B2 (ja) プログラマブル・ロジック・コントローラ、基本ユニット、制御方法およびプログラム
JP5218585B2 (ja) 制御装置およびシステムプログラム
US7168075B1 (en) Automation device and updating method
EP3196717B1 (en) Emulated industrial control
JP2019106225A (ja) 制御装置
JP6626313B2 (ja) プログラマブル・ロジック・コントローラ、拡張ユニット、制御方法、プログラム作成支援装置、プログラム作成支援方法およびプログラム
JP2009070137A (ja) マイクロプロセッサ制御装置並びにその方法およびプログラム
JP2021089715A (ja) 複数のプロセッサ間の通信を同期させるためのシステム及び方法
JP2011170476A (ja) データ処理システム及びデータ処理方法及びプログラム
CN114546932A (zh) 多处理单元的时间同步方法、装置、存储介质及电子设备
JP2009252113A (ja) 情報処理装置、その制御方法及びコンピュータプログラム
KR100459417B1 (ko) 다중 프로세서 시스템의 작업 함수 처리 방법
KR20010106407A (ko) 프로그램 머블 컨트롤러의 주변장치
JP5540928B2 (ja) プログラマブルコントローラシステムおよびそのアプリケーション起動方法
JP5870214B2 (ja) プログラマブルコントローラシステム、そのプログラマブル表示器、支援装置、プログラム
MacKinnon Advanced function extended with tightly-coupled multiprocessing
JP2014134989A (ja) 計算機システム及び計算機管理方法
CN111143141B (zh) 一种状态机设置方法及系统
JP7243575B2 (ja) 電子制御装置およびその動作方法ならびに制御プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130614

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140312

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: 20140422

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140505

R150 Certificate of patent or registration of utility model

Ref document number: 5549455

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250