1.実施形態の概要
先ず、本願において開示される発明の代表的な実施形態について概要を説明する。なお、以下の説明では、一例として、発明の構成要素に対応する図面上の参照符号を、括弧を付して記載している。
〔1〕本発明の代表的な実施形態に係る通信システム(100)は、通信バス(3)上に接続され、所定のスケジュールに基づいた通信であるスケジュール通信を管理するマスタ機器(2)と、前記マスタ機器(2)に対するスレイブとして動作可能な複数のスレイブ機器(1)とを備える通信システム(100)において、前記複数のスレイブ機器(1)は、前記マスタ機器(2)が前記通信バス(3)上に送信した制御信号に基づいて前記マスタ機器(2)との間で前記スケジュール通信を実行するスケジュール通信部(115、120)と、前記スケジュール通信の空き時間に他のスレイブ機器(1)との間で通信を実行する空き時間通信部(116、120)とを有し、前記複数のスレイブ機器(1)のうちの少なくとも1つのスレイブ機器(1)である第1のスレイブ機器(1_1)は、当該第1のスレイブ機器(1_1)を作動させる第1のプログラム(D1)と、当該第1のスレイブ機器(1_1)以外のスレイブ機器である第2のスレイブ機器(1_2)を作動させる第2のプログラム内のデータ(D2)とを格納した第1の記憶装置(25_1)を有し、前記第2のスレイブ機器(1_2)は、前記第2のプログラムの全ての格納に必要な記憶容量よりも小さい記憶容量を有する第2の記憶装置(25_2)を有し、前記複数のスレイブ機器(1)は、前記第1のスレイブ機器(1_1)の第1の記憶装置に格納(25_1)された第2のプログラム内のデータ(D2)を、前記空き時間通信部(116,120)により前記第2のスレイブ機器(1_2)に送信する。
〔2〕上記〔1〕に記載の通信システムであって、前記空き時間通信部は、前記スケジュール通信の通信速度よりも高速な通信方式である高速通信を実行してもよい。
〔3〕上記〔1〕または〔2〕に記載の通信システムであって、前記スケジュール通信は、前記制御信号として、前記スケジュール通信を開始することを示す開始信号と前記マスタ機器と前記スレイブ機器との同期のための同期信号とフレームの識別信号とを含むヘッダフレームと、データ信号とチェックサム信号とを含むレスポンスフレームとが通信バス上に順次送信されるLIN通信であってもよい。
〔4〕本発明の代表的な実施形態に係るアクチュエータ(1)は、上記〔1〕から〔3〕のいずれか1つに記載の通信システムの前記第1のスレイブ機器として用いられるアクチュエータであって、前記通信バス上に送信された制御信号が、前記第2のスレイブ機器を作動させる要求を含む場合に、前記第1の記憶装置に格納された第2のプログラム内のデータを、前記第2のスレイブ機器を宛先として、前記空き時間通信部を介して前記通信バス上に送る第1のメモリ補償部をさらに有する。
〔5〕本発明の代表的な実施形態に係るアクチュエータ(1)は、〔1〕から〔3〕のいずれか1つに記載の通信システムの前記第2のスレイブ機器として用いられるアクチュエータであって、前記通信バス上に送信された制御信号が、前記第2のスレイブ機器を作動させる要求を含む場合に、前記通信バス上に送られた第2のプログラム内のデータを、前記空き時間通信部を介して受信し、受信した第2のプログラム内のデータを演算用のメモリに格納する第2のメモリ補償部をさらに有する。
〔6〕本発明の代表的な実施形態に係る通信方法は、〔1〕から〔3〕のいずれか1つに記載の通信システムにおいて実行される通信方法であって、前記通信バス上に送信された制御信号が、前記第2のスレイブ機器を作動させる要求を含む場合に、前記第1の記憶装置に格納された第2のプログラム内のデータを、前記第1のスレイブ機器が、前記第2のスレイブ機器を宛先として、前記空き時間通信部を介して前記通信バス上に送る第1のステップと、前記第2のスレイブ機器が、前記通信バス上に送られた第2のプログラム内のデータを、前記空き時間通信部を介して受信し、受信した第2のプログラム内のデータを演算用のメモリに格納する第2のステップとを含む。
2.実施形態の具体例
以下、本実施形態の具体例について図を参照して説明する。なお、以下の説明において、各実施形態において共通する構成要素には同一の参照符号を付し、繰り返しの説明を省略する。
本実施形態の通信システムでは、通信バス上に接続された、マスタ機器と複数のスレイブ機器とが例えばLIN通信のような予めスケジュールされた通信であるスケジュール通信を実行する。スケジュール通信とは、事前に定義された送信タイミングによって送信が行われる通信方式のことをいう。LIN通信では、マスタ機器が、LINスケジュールを使用してLINフレームの送信タイミングを制御している。LINスケジュールとは、スケジュール通信の一具体例である。LINスケジュールは、LIN通信で用いられる。
LINスケジュールには各LINフレームを送信する時間間隔が定義されている。本実施形態の通信システムでは、LINスケジュールで定義されているLINフレームを送信する時間間隔のように、スケジュール通信によって送信されたフレームが通信バス上に存在しない時間間隔のことをスケジュール通信の空き時間という。本実施形態の通信システムでは、マスタ機器と複数のスレイブ機器との間のスケジュール通信の空き時間にスレイブ機器同士が通信を実行する。まず、本実施形態の通信システムで実現される通信について以下に説明する。
図1はLIN通信におけるフレーム構成を示す図である。
LIN通信では、LINフレームが1線式の通信バスを介して送受信される。LINフレームは、図1に示すようにヘッダフレームとレスポンスフレームとによって構成されている。LIN通信では、1線式の通信バスを介してLINフレームを送受信することにより、予めスケジュールされた通信であるスケジュール通信が実行される。ヘッダフレームは、BreakフィールドとSyncフィールドとPID(Protected ID)フィールドとによって構成されている。レスポンスフレームは、1つ以上のデータフィールドとチェックサムフィールドとによって構成されている。LIN通信では、通信バス上の信号レベルが低い状態を「Dominant(ドミナント)」という。Dominantは、論理値「0」に対応する。通信バス上の信号レベルが高い状態を「Recessive(リセッシブ)」という。Recessiveは、論理値「1」に対応する。
Breakフィールドは、すべてのスレイブ機器に対してLINフレームの開始を通知するための開始信号である。開始信号は、例えば「Dominant」状態の信号が所定ビット続く信号である。
Syncフィールドは、マスタ機器とスレイブ機器とのLIN通信の速度を同期させるための同期信号である。同期信号は、例えば「Recessive」状態の信号と「Dominant」状態の信号とを切り替える周期によってLIN通信の速度を示すことができる。Syncフィールドを受信したスレイブ機器は、同期信号によって示される周期に基づいて、マスタ機器とのLIN通信の速度に同期する。
PIDフィールドは、LINフレームの宛先を識別するための識別信号である。識別信号は、LINフレームの宛先となるスレイブ機器を示す。各スレイブ機器は、識別信号によってそのフレームの宛先を判断するとともに、応答の可否などを判断することができる。
LINフレームには、ヘッダフレームとレスポンスフレームとの間に、図1のレスポンス間隔として示されているような通信の空き時間(第1の空き時間)が存在する。また、各LINフレーム間(連続したLINフレームにおける先のLINフレームのレスポンスフレームと次のLINフレームのヘッダフレームとの間)にも通信の空き時間(第2の空き時間)が存在する。第1の空き時間も第2の空き時間も、マスタ機器が制御している。本実施形態の通信システムでは、これらの通信(スケジュール通信)の空き時間にスレイブ機器同士がデータ通信を実行する。
この通信システムを実現できる具体的なシステム構成について例を挙げて説明する。
図2は、本実施形態に係るアクチュエータを含む通信システムの構成を示す図である。
図2に示される通信システム100は、例えば、マスタとしての一つの上位装置(マスタ機器に相当)2と、スレイブとしての複数のアクチュエータ(スレイブ機器に相当)1_1~1_n(nは2以上の整数)と、上位装置2と各アクチュエータ1_1~1_nとを互いに接続するLINバス3とを備えている。
通信システム100は、例えば、上位装置2と複数のアクチュエータ1_1~1_nとが、LINバス3によって互いに接続されたLIN通信ネットワークを構成している。例えば、通信システム100は、車載用途の空調ユニットとしてのHVAC(Heating Ventilation and Air-Conditioning)システムである。
上位装置2は、スレイブとしての複数のアクチュエータ1_1~1_nの駆動動作を統括的に制御するマスタとして機能する装置である。上位装置2は、例えば、車載用途のHVACシステムにおけるECUである。上位装置2は、LINバス3を介して指定したアクチュエータ1_1~1_nに制御信号(リクエスト)を送信することにより、指定したアクチュエータ1_1~1_nの動作を制御する。
アクチュエータ1_1~1_nは、例えば、車載用途のHVACシステムにおける空調装置を駆動するための装置である。アクチュエータ1_1~1_nとしては、ダンパアクチュエータ、弁アクチュエータ、ファンアクチュエータ、ポンプアクチュエータ等のHVACシステムで使用可能な各種のアクチュエータを例示することができる。
以下の説明において、各アクチュエータ1_1~1_nを区別しない場合には、単に、「アクチュエータ1」と表記する場合がある。また、以下の説明では、1台のマスタ機器としての上位装置2と2台のスレイブ機器として用いられるアクチュエータ1とが1つのLINバス3に接続された構成を例に挙げて説明するが、接続されるアクチュエータ1の数は限定されない。まず、実施形態の通信システムのスレイブ機器として用いられるアクチュエータ1について説明する。
図3は、本実施形態に係るアクチュエータの構造の一例を示す分解斜視図である。
図3に示されるように、アクチュエータ1は、ケース51とカバー52とで覆われている。アクチュエータ1の内部には、モータ60と、モータ60の駆動を制御するモータ駆動制御装置10と、モータ60の回転力を駆動対象に伝達する動力伝達機構としての2次ギヤ31、3次ギヤ32、および出力ギヤ33とが収納されている。
モータ60は、アクチュエータ1の駆動力を発生させる。モータ60は、例えばステッピングモータである。以下、モータ60をステッピングモータ60とも表記する。ステッピングモータ60は、例えば、A相及びB相の2相励磁で駆動する。ステッピングモータ60は、A相のコイル(不図示)及びB相のコイル(不図示)を有する。ステッピングモータ60は、モータ駆動制御装置10から各相のコイルに駆動電力が供給されて動作する。
モータ60の出力軸65には、1次ギヤ66が取り付けられている。モータ60の1次ギヤ66は、2次ギヤ31と噛み合う。2次ギヤ31は、3次ギヤ32と噛み合う。3次ギヤ32は、出力ギヤ33と噛み合う。ケース51の底面には、出力ギヤ33に設けられている外部出力ギヤが露出し、この外部出力ギヤが駆動対象に連結されている。
モータ駆動制御装置10は、LINバス3を介して上位装置2との間で通信を行い、上位装置2から受信した制御フレーム(コマンド)に基づいてモータ60の駆動を制御することにより、アクチュエータ全体の動作を制御する。モータ駆動制御装置10が上位装置2からのコマンドに基づいてモータ60を駆動すると、モータ60の出力軸65に接続された1次ギヤ66が回転する。1次ギヤ66の回転による駆動力が2次ギヤ31、3次ギヤ32、出力ギヤ33、外部出力ギヤと順に伝達され、外部出力ギヤが駆動対象である空調装置の可動部を駆動する。
モータ駆動制御装置10は、ハードウェア資源として、プリント基板42や、プリント基板42とモータ60のモータ端子69とを接続するフレキシブルプリント基板43等を有している。プリント基板42には、後述するモータ制御回路11、モータ駆動回路13、スイッチ14、および複数の外部接続端子が設けられている。複数の外部接続端子としては、例えば、モータ駆動制御装置10に電源を供給するための電源端子17、グラウンド電位に接続されるグラウンド端子18、モータ駆動制御装置10が上位装置2とLIN通信を行うための通信用端子15,16等を例示することができる。図3に示すように、各外部接続端子は、ケース51及びカバー52の外側に露出している。
なお、ケース51及びカバー52の内部に収納される回路は、例えばモータ駆動回路13だけであってもよい。例えば、モータ制御回路11は、ケース51およびカバー52の内部に設けられたモータ駆動回路13と、ケース51およびカバー52の外部に設けられたモータ制御回路11とによって構成されるようにしてもよい。
図4は、本実施形態に係るアクチュエータの構成を示すブロック図である。
図4に示すように、アクチュエータ1は、ステッピングモータ60と、ステッピングモータ60を駆動するモータ駆動制御装置10とを備えて構成される。モータ駆動制御装置10は、モータ制御回路11、モータ駆動回路13とを有し、モータ制御回路11は、LINバス3に接続されている。
モータ制御回路11は、CPU及びメモリを備える。モータ制御回路11では、CPU及びメモリが協働して上位装置2からのリクエストのコマンドに基づいて各種制御信号を生成する。モータ制御回路11が、各種制御信号を生成することによってアクチュエータ1のモータ60を駆動制御したり、上位装置2へのレスポンスを行ったり、アクチュエータ1の各種機能を実現することができる。例えば、モータ制御回路11は、上位装置2からのコマンドに基づいて、ステッピングモータ60の回転を制御するための駆動制御信号Scを生成してモータ駆動回路13を制御することにより、ステッピングモータ60の回転を制御する。駆動制御信号Scは、例えばPWM信号である。モータ制御回路11の詳細については後述する。
モータ駆動回路13は、モータ制御回路11から出力された駆動制御信号Scに基づいて、ステッピングモータ60に通電する制御を行う。モータ駆動回路13は、モータ駆動部131と電流センサ132とを有する。
モータ駆動部131は、駆動制御信号Scに基づいて、ステッピングモータ60の各相のコイルに電圧を印加する。本実施形態では、モータ駆動回路13とステッピングモータ60とは、A相の正極(+)、A相の負極(-)、B相の正極(+)、B相の負極(-)の4つのラインで接続されている。モータ駆動部131は、例えば、複数のトランジスタを含むインバータ回路である。モータ駆動部131は、駆動制御信号Scに応じて、これらの各ラインを介してステッピングモータ60に駆動電力を供給する。ステッピングモータ60の駆動電力は、駆動制御信号ScとしてのPWM信号のデューティ比に応じて変化する。
電流センサ132は、ステッピングモータ60の各相のコイルに流れる電流(コイル電流)をセンシングする。電流センサ132は、例えばシャント抵抗である。電流センサ132は、コイル電流のセンシング結果を、電流測定部112に出力する。
図4に示すように、モータ制御回路11は、例えば、MCU110、温度測定部111、電流測定部112、入力電圧測定部113、逆起電圧測定部114、LINトランシーバ115、および高速通信トランシーバ116を含む。
温度測定部111は、例えば、モータ制御回路11の内部温度を測定する温度センサである。温度測定部111は、モータ制御回路11の温度を示す温度情報をMCU110に出力する。温度測定部111は、例えばA/D変換回路を含んで構成されている。
電流測定部112は、ステッピングモータ60のコイル電流を測定する。電流測定部112は、電流センサ132から出力されたコイル電流のセンシング結果を受け付ける。電流測定部112は、入力されたセンシング結果に基づいてコイル電流を測定する。電流測定部112は、コイル電流の測定結果を、MCU110に出力する。電流測定部112は、例えばA/D変換回路を含んで構成されている。
入力電圧測定部113は、モータ駆動制御装置10の電源端子17に入力される電源電圧としての入力電圧V_subを測定する。入力電圧V_subは、例えば、バッテリから供給される直流電圧である。入力電圧測定部113は、入力電圧の測定結果をMCU110に出力する。入力電圧測定部113は、例えばA/D変換回路を含んで構成されている。
逆起電圧測定部114は、ステッピングモータ60の複数相のコイルのうち、通電が停止しているコイルに誘起される逆起電圧を測定する。本実施形態において、逆起電圧測定部114は、モータ駆動回路13とステッピングモータ60とを接続する4つのラインの夫々に接続されている。逆起電圧測定部114は、逆起電圧の測定結果を、MCU110に出力する。逆起電圧測定部114は、例えばA/D変換回路を含んで構成されている。
LINトランシーバ115は、通信用端子15から信号を受信するとともに、通信用端子15に信号を送信する回路である。LINトランシーバ115としては、例えばISO9141に準拠したシングルワイヤのものを用いることができる。
高速通信トランシーバ116は、通信用端子15から信号を受信するとともに、通信用端子15に信号を送信する回路である。高速通信トランシーバ116としては、PCI規格に準拠した通信インタフェースを用いることができる。
MCU110は、モータ制御回路11の統括的な制御を行うための回路である。MCU110は、UART(Universal Asynchronous Receiver/Transmitter)21、PCI(Peripheral Component Interconnect)22、CPU23、RAM24およびEEPROM25を有する。MCU110は、タイマ(カウンタ)、A/D変換回路、およびクロック生成回路等のハードウェア要素を有する。各構成要素がバスや専用線を介して互いに接続されたプログラム処理装置によってMCU110は構成されている。
UART21は、入出力I/F回路である。UART21は、MCU110に入力されるシリアル信号をパラレル信号に変換し、MCU110から出力されるパラレル信号をシリアル信号に変換する。
PCI22は、入出力I/F回路である。PCI22は、MCU110から入出力される信号をPCI規格に沿った信号に変換する。
CPU23はプロセッサである。CPU23は、プログラムの演算処理を実行することにより、各種機能を実現する演算装置である。CPU23は、EEPROM25に格納されている機能プログラムをRAM24に格納する。EEPROM25に格納されている機能プログラムとは、アクチュエータ1の各種機能を実現するためのプログラムである。CPU23は、RAM24に格納された機能プログラムを実行することで、アクチュエータ1の各種機能を実現する。RAM24には、機能プログラムのうち、実現する機能に応じたプログラムが逐次格納され、CPU23によって逐次実行される。プログラムは、機能に応じた関数や固定値などによって構成されている。プログラムが実行される際には、関数のみならず固定値であるデータも必要となる。
RAM24は、揮発性メモリである。RAM24は、CPU23で演算処理されるプログラムが格納される演算用のメモリである。例えば、RAM24は、EEPROM25に格納されている機能プログラムを、機能プログラムの実行状態に応じて自装置に格納する。
EEPROM25は、不揮発性メモリである。EEPROM25は、各種機能を実現するためのプログラムが格納されているプログラム格納用の記憶装置である。例えば、EEPROM25は、機能プログラムを格納する。
なお、上述した温度測定部111、電流測定部112、入力電圧測定部113、および逆起電圧測定部114は、MCU110を構成するMCU内のA/D変換回路を用いて実現されていてもよいし、MCUとは別に設けられたA/D変換回路を含むIC(Integrated Circuit)によって実現されていてもよい。
MCU110は、UART21を介してLINトランシーバ115と接続されている。MCU110は、PCI22を介して高速通信トランシーバ116と接続されている。MCU110は、LINトランシーバ115を介して、LINバス3に接続された上位装置2とLIN通信を行う。MCU110は、高速通信トランシーバ116を介して、LINバス3に接続された他のアクチュエータ1のMCU110と高速通信を行う。
MCU110は、主に、LINバス3を介して上位装置2とLIN通信を行う通信機能と、LINバス3を介して他のアクチュエータ1と高速通信を行う通信機能と、駆動制御信号Scを生成する駆動制御機能と、メモリ補償機能とを有している。通信機能と駆動制御機能とメモリ補償機能とは、機能プログラムを実行することで実現される。
LIN通信を行う通信機能は、LIN通信プロトコルに従った通信を実行する機能である。
高速通信を行う通信機能は、LIN通信の空き時間(隙間時間)に高速に通信を実行する機能である。本実施形態では、PCI規格に準拠した通信を実行する機能である。なお、本実施形態では、高速通信はPCI規格に準拠した通信を例として説明するが、高速通信はPCI規格に準拠した通信に限定されない。高速通信は、例えばスケジュール通信の通信速度よりも高速である通信方式である。高速通信は、ISA(Industry Standard Architecuture)等のPCI規格よりも低速な通信であってもよい。なお、本実施形態では、空き時間に行われる通信は高速通信であるものとして説明するが、空き時間に行われる通信は、スケジュール通信の通信速度よりも低速である通信方式であってもよい。
駆動制御機能は、駆動制御信号Scを生成する機能である。駆動制御信号Scは、駆動制御機能に関するプログラムに従ってモータ駆動制御装置10を駆動制御するための信号である。駆動制御機能における機能プログラムは、上位装置2からのコマンドに応じて、アクチュエータ1の駆動機能を実現するように設計される。
メモリ補償機能は、同じLINバス3に接続された2つのアクチュエータ1のうち、一方のアクチュエータ1(第1アクチュエータ)が他方のアクチュエータ1(第2アクチュエータ)に、他方のアクチュエータ1の機能プログラム内のデータ(例えば、駆動制御機能に関するプログラム内のデータ)を送信することを含む機能である。プログラム内のデータは、該当するプログラムの実行に用いられる固定値である。データは、例えばアクチュエータ1を特定するための識別情報であってもよい。識別情報は、ハードウェア又はソフトウェア等を示すID(Identification)やNAD(Node Address)であってもよい。データは、アクチュエータ1の駆動に用いられる駆動パラメータ情報であってもよい。駆動パラメータ情報は、例えば位置情報、バックラッシ、駆動電流等のアクチュエータの駆動に関する情報であればどのような情報であってもよい。データは、アクチュエータ1のステータス情報であってもよい。ステータス情報は、駆動距離又はエラー等のアクチュエータ1の状態を示す情報であればどのような情報であってもよい。データは、そのままの値で使用されてもよいし、演算に使用されてもよい。データは、RAM24に格納される。プログラム内のデータは、プログラム全体の大きさに比べて十分小さく、データの大きさは、数バイトから数十バイトである。RAM24に格納されたデータは、上位装置2からの要求に応じて上位装置2に送信されてもよい。メモリ補償機能は、機能プログラム内のデータを受け取った他方のアクチュエータ1が、受け取ったデータをRAM24等の演算用のメモリに格納することも含む機能である。メモリ補償機能によって、一方のアクチュエータ1は、他方のアクチュエータ1の機能プログラム内のデータを予め格納することができる。すなわち、メモリ補償機能は、一方のアクチュエータ1のEEPROM25の記憶容量で、他方のアクチュエータ1のEEPROM25の記憶容量の不足分を補償することを可能にする機能である。
以下、メモリ補償機能の具体的な動作の一例について説明する。メモリ補償機能は、第1のメモリ補償機能と第2のメモリ補償機能とによって実現される。本具体例では、第1アクチュエータが、第1のメモリ補償機能を実行するものとして説明する。本具体例では、第2アクチュエータが、第2のメモリ補償機能を実行するものとして説明する。第1のメモリ補償機能では第1アクチュエータが第2アクチュエータの機能プログラム内のデータを第2アクチュエータに送信する。例えば、上位装置2から送信された第2アクチュエータに対するコマンドに応じて、第1アクチュエータが、自身のEEPROM25に格納された第2アクチュエータを作動させるプログラム内のデータ(第2のデータ)を、第2アクチュエータに送信する。
第2のメモリ補償機能は、第1アクチュエータから送信された第2アクチュエータを作動させるプログラム内のデータ(第2のデータ)を、RAM24に格納する機能である。第2のメモリ補償機能では、第2アクチュエータは、第2のデータを第1アクチュエータから受信すると、RAM24に格納する。
また、本実形態の通信システムでは、MCU110がメモリ補償機能を有していることにより、通信システムで用いられる複数のアクチュエータ1_1、1_2、・・・1_nとして、通常の記憶容量をもつEEPROM25を搭載したアクチュエータと、通常の記憶容量よりも少ない記憶容量を持つEEPROM25を搭載した廉価なアクチュエータとを混在させることができる。通常の記憶容量とは、自身の機能プログラム以外にも他のアクチュエータ1の機能プログラム内のデータを格納できる十分な記憶容量である。通常の記憶容量よりも少ない記憶容量とは、自身の機能プログラムの全てを格納することができない程度の記憶容量である。すなわち、本実施形態の通信システムでは、自身の機能プログラムを格納できる十分な記憶容量のEEPROM25を有する通常のアクチュエータ(以下、「第1アクチュエータ」ともいう)1_1と、自身の機能プログラムの全てを格納するための記憶容量に不足する少ない容量のEEPROM25を有する廉価なアクチュエータ(以下、「第2アクチュエータ」ともいう)1_2とを混在させた場合でも、第1アクチュエータ1_1のEEPROM25に、少ない記憶容量のEEPROM25を有する第2アクチュエータ1_2の機能プログラム内のデータを格納しておくことができる。
通常の記憶容量の不揮発性メモリを搭載した第1アクチュエータ1_1と少ない記憶容量の不揮発性メモリを搭載した第2アクチュエータ1_2とは、MCU110の構成のみが異なる。それぞれのアクチュエータにおいて、上述した各機能を実現するために、MCU110が有する機能ブロックを以下に説明する。
図5は、通常の記憶容量の不揮発性メモリを搭載した第1アクチュエータ1_1におけるMCU110の機能ブロック構成を示す図である。
図5に示すように、MCU110は、LIN通信を行う通信機能、高速通信を行う通信機能、駆動制御機能、およびメモリ補償機能を実現するための機能ブロックとして、通信部120、駆動制御信号生成部121、第1のメモリ補償部122を有している。これらの機能ブロックは、上述したMCU内のCPU23が、所定の処理を行うことで実現される。所定の処理とは、例えば、CPU23が、EEPROM25に格納された機能プログラムを、必要に応じてRAM24に格納して、各種演算を実行する処理である。所定の処理とは、例えば、タイマ(カウンタ)、A/D変換回路および入出力I/F回路を制御する処理である。
通常の記憶容量の不揮発性メモリを搭載した第1アクチュエータ1_1のEEPROM25には、第1アクチュエータ1_1自身の機能プログラムの他に、少ない記憶容量の不揮発性メモリを搭載した第2アクチュエータ1_2を作動させるプログラム内のデータがあらかじめ格納されている。
通信部120は、LINトランシーバ115を制御して、上位装置2とLIN通信を行うとともに、高速通信トランシーバ116を制御して、第2アクチュエータと高速通信を行うための機能部である。
通信部120は、LIN通信においては、マスタとしての上位装置2から送信されたリクエスト(ヘッダ)を受信するとともに、リクエストに対するレスポンス(データ)を送信することができる。通信部120は、高速通信においては、第2アクチュエータ1_2に機能プログラム内のデータを送信することができる。
駆動制御信号生成部121は、駆動制御信号Scを生成するための機能部である。駆動制御信号生成部121は、温度測定部111、電流測定部112、入力電圧測定部113、および逆起電圧測定部114による夫々の測定結果と、通信部120によって受信した上位装置2からのコマンドとに基づいて、駆動制御信号Scを生成する。
第1のメモリ補償部122は、第1のメモリ補償機能を実行する。具体的には、まず、LINバス3に送信されたLINフレームに第2アクチュエータ1_2を宛先としたコマンドが含まれることを確認する。確認がされたら、自身の不揮発性メモリに格納された第2のアクチュエータ1_2を作動させるプログラム内のデータを高速通信で第2アクチュエータ1_2に送信する。
図6は、少ない記憶容量の不揮発性メモリを搭載した第2アクチュエータ1_2におけるMCU110の機能ブロック構成を示す図である。
図6に示すように、MCU110は、LIN通信を行う通信機能、高速通信を行う通信機能、駆動制御機能、およびメモリ補償機能を実現するための機能ブロックとして、通信部120、駆動制御信号生成部121、第2のメモリ補償部123を有している。これらの機能ブロックは、上述したMCU内のCPU23が、所定の処理を行うことで実現される。しかしながら、少ない記憶容量の不揮発性メモリを搭載した第2アクチュエータ1_2のEEPROM25には、アクチュエータ1_2の機能プログラム内のデータ(アクチュエータ1_2を作動させるプログラム内のデータ)が格納されていない。
通信部120が、高速通信において第2アクチュエータ1_2に機能プログラム内のデータを送信することに代えて、高速通信において第1アクチュエータ1_1から機能プログラム内のデータを受信することができること以外は、通信部120と駆動制御信号生成部121とは、第1アクチュエータ1_1におけるMCU110と同一の機能を有するので、その説明は省略する。
第2のメモリ補償部123は、第2のメモリ補償機能を実行する。具体的には、まず、LINバス3に送信されたLINフレームが第2アクチュエータ1_2を宛先としたものであることを確認する。確認がされたら、第1アクチュエータ1_1から受信した第2アクチュエータ1_2を作動させるプログラム内のデータを、演算用のメモリであるRAM24に格納する。
ここで第1のメモリ補償部122と第2のメモリ補償部123とで実行されるメモリ補償機能についてさらに詳細に説明する。
メモリ補償機能を実行する前提として、本実施形態の通信システムを構成する複数のアクチュエータは、通常の記憶容量をもつ不揮発性メモリを搭載したアクチュエータと通常の記憶容量よりも少ない記憶容量を搭載した不揮発性メモリを搭載した廉価なアクチュエータとが混在している。通常の記憶容量をもつ不揮発性メモリを搭載したアクチュエータには、自身の機能プログラムだけでなく、廉価なアクチュエータを作動させるプログラム内のデータも格納されている。
図7は、本実施形態の通信システムを構成する各アクチュエータのEEPROMにおけるデータの格納状態を示す図である。図7に示すデータは、各アクチュエータを作動させるプログラムの全てを表したものではなく、各アクチュエータを作動させるプログラム内のデータのみを表したものである。
図7には、マスタとして機能する上位装置2とスレイブとして機能する3つのアクチュエータとが示されている。3つのアクチュエータとして、具体的には、第1アクチュエータ(「スレイブ1」ともいう)1_1と第2アクチュエータ(「スレイブ2」ともいう)1_2と第3アクチュエータ(「スレイブ3」ともいう)1_3とが示されている。
ここで、第3アクチュエータ1_3は、第2アクチュエータ1_2のEEPROM25_2と同様の構成を有し、EEPROM25_3の記憶容量が小さく、自身を作動させるプログラム内のデータ(第3のデータD3)を格納することができないアクチュエータである。第1アクチュエータ1_1のEEPROM25_1には、第1アクチュエータ1_1を作動させるプログラム内のデータ(第1のデータD1)以外にも、第2アクチュエータ1_2を作動させるプログラム内のデータ(第2のデータD2)および第3アクチュエータ1_3を作動させるプログラム内のデータ(第3のデータD3)が格納されている。
図7に示すような格納状態にある第1アクチュエータ1_1と第2アクチュエータ1_2とに対して、上位装置2が順次コマンドを発行する際に実行されるメモリ補償処理を例に挙げて説明する。
図8は、本実施形態の通信システムにおけるスケジュール通信の一例を説明するための図である。図9は、スケジュール通信の途中に実行されるメモリ補償処理の一例を示すフローチャートである。図9のメモリ補償処理は、図8のスケジュール通信の空き時間(隙間)に実行される。
図8に示すように、上位装置2と第1アクチュエータ1_1および第2アクチュエータ1_2との各ノードが、予めスケジュールされたLINフレームによるLIN通信を行なう。LIN通信では、上位装置2で「Token」を生成するタスクが実行されると、LINバスにLIN通信の「Header」が送信される。また、上位装置2、第1アクチュエータ1_1、第2アクチュエータ1_2の各ノードにおいて「Data」を生成するタスクが実行されると、LINバスに「Response」が送信される。LINバスに送信される「Header」は、図1に示されるヘッダフレームの構成を有する。LINバスに送信される「Response」は、図1に示されるレスポンスフレームの構成を有する。
まず図8に示すように、まず上位装置2が、第1アクチュエータ1_1の機能の実行を要求するために、「Token1」と「Data1」とを生成する。「Token1」は、第1アクチュエータ1_1を宛先としたレスポンスフレームが発行されることを示す信号を含む。「Data1」は、第1アクチュエータ1_1に対するコマンドの内容を示す信号を含む。上位装置2は、生成した「Token1」を、「Header1」としてLINバスに送信している。上位装置2は、生成した「Data1」を、「Response1」としてLINバスに送信している。
第1アクチュエータ1_1は、LINバス3上の「Header1」および「Response1」を受け取ると、信号種類を識別し、コマンドの内容を実行する。本実施形態の通信システムでは、LINバス3上に送信される信号種類には、LIN通信による信号と高速通信による信号とがある。信号種類の識別は、具体的には、LINフレームのヘッダフレーム内に存在するBreakフィールドの有無によって行われる。Breakフィールドは、LIN通信の開始を通知するための開始信号であり、所定期間の「Dominant」状態の信号が所定ビット続く信号である。
次いで、上位装置2が、第1アクチュエータ1_1に対してコマンドに対する応答を要求するために、「Token2」を生成する。「Token2」は、第1アクチュエータ1_1がレスポンスフレームを送信することを許可する信号である。上位装置2は、生成した「Token2」を、「Header2」としてLINバスに送信している。
第1アクチュエータ1_1は、LINバス上の「Header2」を受け取ると、信号種類を識別し、コマンドに対するレスポンスを示す信号を含む「Data2」を生成する。第1アクチュエータ1_1は、は、生成した「Data2」を、「Response2」としてLINバスに送信している。
さらに上位装置2が、第2アクチュエータ1_2の機能の実行を要求するために、「Token3」と「Data3」とを生成する。「Token3」は、第2アクチュエータ1_2を宛先としたレスポンスフレームが発行されることを示す信号を含む。「Data3」は、第2アクチュエータ1_2に対するコマンドの内容を示す信号を含む。上位装置2は、生成した「Token3」を、「Header3」としてLINバスに送信している。上位装置2は、生成した「Data3」を、「Response3」としてLINバスに送信している。
ここで、本実施形態の通信システムでは、図7に示すように、第2アクチュエータ1_2を駆動するためのプログラム内のデータ(第2のデータD2)は、第1アクチュエータ1_1のEEPROM25_1に格納されている。第2アクチュエータ1_2を駆動するためのプログラム内のデータ(第2のデータD2)は、第2アクチュエータ1_2のEEPROM25_1には格納されていない。したがって、第2アクチュエータ1_2は、LINバス上の「Header3」および「Response3」を受け取って、信号種類を識別しても、コマンドの内容を実行できない。そこで、第1アクチュエータ1_1および第2アクチュエータ1_2が、図9に示すメモリ補償処理を実行する。
まず、第1アクチュエータ1_1の第1のメモリ補償部が実行する第1のメモリ補償処理を説明する。第1アクチュエータ1_1は、LINバス上の「Header3」および「Response3」を受信する。第1アクチュエータ1_1は、受信した信号が指示内容を伴ったLINフレームであることを識別する(S101)。第1アクチュエータ1_1は、LINフレームの宛先が第2アクチュエータ1_2であることと、指示内容が第2アクチュエータ1_2に対する駆動に関するコマンドであることを確認する(S102)。第1アクチュエータ1_1は、自身のEEPROM25_1に格納した第2アクチュエータ1_2の第2のデータD2を第2アクチュエータ1_2に送信済みであるか否かを判定する(S103)。
送信済みでないと判定した場合(S103:NO)は、第1アクチュエータ1_1は、自身のEEPROM25_1に格納された第2のデータD2を取得する(S104)。第1アクチュエータ1_1は、取得された第2のデータD2を第2アクチュエータ1_2に高速通信で送信する。送信済みであると判定した場合(S103:YES)は、第1アクチュエータ1_1は、何もしない。
ステップS104で実行される高速通信は、図8に示すように、「Response3」フレームがLINバス上に送信される時間と「Header4」フレームがLINバス上に送信される時間との隙間の時間に、第1アクチュエータ1_1によって第2のデータD2が同じLINバス上に送信されることで実行される。
ここで図8に戻って、上位装置2が、第2アクチュエータ1_2に対してコマンドに対する応答を要求するために、「Token4」を生成すると、生成された「Token4」を、「Header4」としてLINバスに送信している。「Token4」は、第2アクチュエータ1_2がレスポンスフレームを送信することを許可する信号である。第1アクチュエータ1_1は、「Header4」を受け取ると、第2アクチュエータ1_2に対するレスポンスフレームの送信許可であることを識別し(S105)、その結果、第1アクチュエータ1_1は何もしない。
次に、第2アクチュエータ1_2の第2のメモリ補償部が実行する第2のメモリ補償処理を説明する。第2アクチュエータ1_2は、LINバス上の「Header3」および「Response3」を受信する。第2アクチュエータ1_2は、受信した信号がLINフレームであることを識別する(S201)。第2アクチュエータ1_2は、LINフレームの宛先が第2アクチュエータ1_2であることと、指示内容が第2アクチュエータ1_2に対するコマンドであることを確認する(S202)。第2アクチュエータ1_2は、自身のEEPROM25_2に格納されていない第2のデータD2を第1アクチュエータ1_1から受信済みであるか否かを判定する(S203)。
受信済みでないと判定した場合(S203:NO)は、第2アクチュエータ1_2は、第1アクチュエータ1_1から第2のデータD2を受信するのを待つ(S204)。
第2アクチュエータ1_2は、データを受信すると、受信したデータの信号種類が、LINフレームでなく、第2のデータD2であることを識別する(S205)。第2アクチュエータ1_2は、RAM24_2に第2のデータD2を格納する(S206)。RAM24_2にデータが格納されると、第2アクチュエータ1_2は、上位装置2によるコマンドに応じた、作動内容を実行する(S207)。ステップS207では、具体的には、第2アクチュエータ1_2は、第1アクチュエータ1_1から受信した第2のデータD2をRAM24_2に格納する。
一方で受信済みであると判定した場合(S203:YES)は、第2アクチュエータ1_2は、上位装置2によるコマンドに応じた、作動内容を実行する(S207)。
ここで図8に戻って、上位装置2が、第2アクチュエータ1_2に対してコマンドに対する応答を要求するために、「Token4」を生成すると、生成した「Token4」を、「Header4」としてLINバスに送信している。「Token4」は、第2アクチュエータ1_2がレスポンスフレームを送信することを許可する信号である。第2アクチュエータ1_2は、「Header4」を受け取ると、第2アクチュエータ1_2に対するレスポンスフレームの送信許可であることを識別し(S208)、コマンドに対するレスポンスを示す信号を含む「Data4」を生成する。第2アクチュエータ1_2は、は、生成した「Data4」を、「Response4」としてLINバスに送信している。Data4は、例えば、第2のデータD2を含んで生成されてもよい。
以上説明した通信システムによれば、マスタ機器である上位装置2と複数のスレイブ機器であるアクチュエータ1とが一つの通信バスで接続された通信システムにおいて、第2アクチュエータ1_2の機能プログラム内のデータを第1アクチュエータ1_1の不揮発性メモリに格納しておき、必要に応じて第2アクチュエータ1_2に送ることができる。これにより、第2アクチュエータ1_2は、不揮発性メモリに機能プログラム内のデータが格納されていない場合でも同等の機能を実現することができる。このため、第2アクチュエータ1_2は、通常の記憶容量よりも少ない記憶容量を持つ不揮発性メモリを備えるスレイブICを搭載することができる。このため、第2アクチュエータ1_2をより廉価に構成することができる。したがって、LINバス上の複数のアクチュエータのうちの一部を廉価なスレイブICを搭載したアクチュエータに置き換えることができる。
(実施形態の変形例)
上記実施形態では、アクチュエータ1は、2つのトランシーバ(LINトランシーバ115および高速通信トランシーバ116)と2つの入出力I/F回路(UART21およびPCI22)とを備え、これらの機能部によってスケジュール通信と高速通信と別々に実行する構成を例に挙げて説明したが、これに限定されない。例えば、図10に示すように、1つのトランシーバと2つの入出力I/F回路によって構成したり、図11に示すように、1つのトランシーバと1つの入出力I/F回路によって構成してもよい。図10に示す例では、LINトランシーバ115および高速通信トランシーバ116の代わりに、LINトランシーバ115のみを用いて構成している。図11に示す例では、さらに、UART21およびPCI22の代わりに、UART21のみを用いて構成している。
図10では、LINバス3上の信号をLINトランシーバ115からMCU110のUART21とPCI22との両方のポートに入力することができる。この場合、信号の送信については、LIN通信では、UART21を介してLINトランシーバ115からLINバス3に送信し、高速通信では、PCI22を介してLINトランシーバ115からLINバス3に送信する。
図11では、LINバス3上の信号をLINトランシーバ115からMCU110のUART21のポートに入力し、入力された信号の種類によって、スケジュール通信か高速通信かを判断して、その結果に応じた処理をすることができる。この場合、信号の送信については、LIN通信と高速通信の両方で、UART21を介してLINトランシーバ115からLINバス3に送信する。
上記実施形態では、マスタとしての一つの上位装置2と、スレイブとしての複数のアクチュエータ1_1~1_nとを互いに接続する通信バス3として、1線式のものを用いた場合を例に挙げて説明した。しかしながら、通信バス3は1線式のものに限らず、2線式以上のものを用いてもよい。例えば、図10に示すように通信バス3として1線式のLINバスを用いた構成に代えて、2線式の通信バス3を用いた場合は、LINトランシーバ115によって2線式の通信バス3を介して送受信するデータを、相補信号で構成するようにすればよい。
また、上記実施形態において、駆動回路によって駆動されるモータがステッピングモータ60である場合を例示したが、これに限られず、駆動されるモータは、ブラシレスモータ等の他の種類のモータであってもよい。
また、上述のフローチャートは、動作を説明するための一例を示すものであって、これに限定されない。すなわち、フローチャートの各図に示したステップは具体例であって、このフローに限定されるものではない。例えば、一部の処理の順番が変更されてもよいし、各処理間に他の処理が挿入されてもよいし、一部の処理が並列に行われてもよい。