JP2014123284A - 乱数発生装置 - Google Patents

乱数発生装置 Download PDF

Info

Publication number
JP2014123284A
JP2014123284A JP2012279601A JP2012279601A JP2014123284A JP 2014123284 A JP2014123284 A JP 2014123284A JP 2012279601 A JP2012279601 A JP 2012279601A JP 2012279601 A JP2012279601 A JP 2012279601A JP 2014123284 A JP2014123284 A JP 2014123284A
Authority
JP
Japan
Prior art keywords
random number
data
reception
predetermined
response
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
JP2012279601A
Other languages
English (en)
Inventor
Masashi Noda
将史 野田
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.)
Makita Corp
Original Assignee
Makita Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Makita Corp filed Critical Makita Corp
Priority to JP2012279601A priority Critical patent/JP2014123284A/ja
Priority to CN201310627939.6A priority patent/CN103885746A/zh
Priority to US14/099,464 priority patent/US9372666B2/en
Priority to DE102013021805.5A priority patent/DE102013021805A1/de
Publication of JP2014123284A publication Critical patent/JP2014123284A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02JCIRCUIT ARRANGEMENTS OR SYSTEMS FOR SUPPLYING OR DISTRIBUTING ELECTRIC POWER; SYSTEMS FOR STORING ELECTRIC ENERGY
    • H02J7/00Circuit arrangements for charging or depolarising batteries or for supplying loads from batteries
    • H02J7/00032Circuit arrangements for charging or depolarising batteries or for supplying loads from batteries characterised by data exchange
    • H02J7/00036Charger exchanging data with battery
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02JCIRCUIT ARRANGEMENTS OR SYSTEMS FOR SUPPLYING OR DISTRIBUTING ELECTRIC POWER; SYSTEMS FOR STORING ELECTRIC ENERGY
    • H02J7/00Circuit arrangements for charging or depolarising batteries or for supplying loads from batteries
    • H02J7/00032Circuit arrangements for charging or depolarising batteries or for supplying loads from batteries characterised by data exchange
    • H02J7/00045Authentication, i.e. circuits for checking compatibility between one component, e.g. a battery or a battery charger, and another component, e.g. a power source
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02JCIRCUIT ARRANGEMENTS OR SYSTEMS FOR SUPPLYING OR DISTRIBUTING ELECTRIC POWER; SYSTEMS FOR STORING ELECTRIC ENERGY
    • H02J7/00Circuit arrangements for charging or depolarising batteries or for supplying loads from batteries
    • H02J7/00047Circuit arrangements for charging or depolarising batteries or for supplying loads from batteries with provisions for charging different types of batteries

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Charge And Discharge Circuits For Batteries Or The Like (AREA)

Abstract

【課題】簡素な構成で乱数性の高い乱数を発生する。
【解決手段】 マスター(例えばモータ制御マイコン32)は、スレーブ(例えばバッテリ制御マイコン12)に対し、データ通信により所定の処理を要求する。マスターは、その処理要求に対するスレーブからの応答を受信するよりも前に、カウント部の動作を開始させて所定周期でカウント値を増加(又は減少)させる。マスターは、処理要求に対するスレーブからの応答の受信開始後、所定の少なくとも1つの取得タイミングでカウント部のカウント値を取得して、その取得した少なくとも1つのカウント値を用いて乱数を生成する。
【選択図】図1

Description

本発明は、乱数を発生する乱数発生装置に関する。
バッテリから電源供給を受けて動作する電動機器(電動工具、電動作業機等)や、バッテリへの充電を行う充電器では、正規のバッテリではない不正なバッテリが装着されると、機器が故障したりバッテリが異常発熱したりすることがある。
そこで、この種の機器では、バッテリが装着された際、乱数を用いて、装着されたバッテリが適正品であるか否かを判定(認証)することが知られている(例えば、特許文献1参照)。
特許文献1では、A/D変換器で得られるA/D変換値のノイズビット(下位ビット)を乱数として発生させ、その乱数を用いてバッテリの認証を行うことが提案されている。
米国特許第7941865号明細書
特許文献1に記載の乱数発生方法は、A/D変換器において電源電圧の変動によって生じる特性変化を利用するものである。そのため、安定化電源から安定した電源供給を受けて動作するマイクロコンピュータ単体では、乱数性の高い乱数を発生するのが難しいという問題がある。
これに対し、マイクロコンピュータにA/D変換器を外付けし、そのA/D変換器の電源をマイクロコンピュータの電源とは異なる不安定なものにすれば、マイクロコンピュータの演算処理にて乱数を発生させることはできる。
しかし、このようにすると、乱数発生装置としての構成が複雑になり、コストアップを招くという問題がある。
本発明は、こうした問題に鑑みなされたものであり、簡素な構成で乱数性の高い乱数を発生することができる乱数発生装置を提供することを目的とする。
上記課題を解決するためになされた本発明の乱数発生装置は、処理要求対象に対して所定の処理を要求する処理要求部と、その要求に対する処理要求対象からの応答を受信する受信部と、所定周期でカウント値を増加又は減少させるカウント動作を行うカウント部であって、少なくとも上記応答を受信する前からカウント動作を開始するカウント部と、上記応答の受信開始後、所定の少なくとも1つの取得タイミングでカウント部のカウント値を取得してその取得した少なくとも1つのカウント値を用いて乱数を生成する乱数生成部とを備えることを特徴とする。
このように構成された本発明の乱数発生装置では、カウント部によるカウント動作の開始後、処理要求部による処理要求に対して受信部が処理要求対象から応答を受信するまでの間に、時間的な不確定要素(乱数要素)が生じる。即ち、処理要求部からの処理要求に対して処理要求対象から応答を受信するまでの時間がたとえ設計上あるいは理論上予め規定されているとしても、実際には、処理要求部と処理要求対象との間における情報等の伝達経路の状態や、処理要求対象における処理時間の変動などによって、予め規定された時間からずれる可能性がある。そのずれは乱数要素となり、カウント部のカウント値のばらつき(乱数性の高いばらつき)として現れる。そこで、そのカウント値を乱数として用いることができる。
したがって、本発明の乱数発生装置によれば、簡素な構成で乱数性の高い乱数を発生することができる。
本発明の乱数発生装置において、上記少なくとも1つの取得タイミングのうちの1つは、処理要求対象からの応答の受信が完了したタイミングにしてもよい。応答受信の完了まで待つことで、受信完了よりも前のタイミングに比べてより乱数性を高めることができる。
本発明の乱数発生装置において、取得タイミングは複数設定してもよく、その場合、乱数生成部は、その複数の取得タイミング毎にその取得タイミングでのカウント部のカウント値を取得し、その取得した複数のカウント値を用いて乱数を生成するようにしてもよい。
このように、複数の取得タイミングで取得した複数のカウント値を用いて乱数を生成することで、乱数生成の自由度が増す。例えば、複数の乱数が必要な場合にはその必要数のカウント値を取得してそれぞれを乱数とすることができる。また例えば、複数取得したカウント値のうち任意の1又は複数のカウント値を乱数として生成することもできる。
複数の取得タイミングでカウント値を取得する構成の場合、乱数生成部は、複数のカウント値のうち少なくとも2つ以上を用いた所定の乱数生成規則に従って1つの乱数を生成するようにしてもよい。このように、2つ以上のカウント値を用いて1つの乱数を生成することで、生成可能な乱数の幅(例えば桁数や乱数性など)を広げることができる。
複数の取得タイミングでカウント値を取得する構成の場合、その複数の取得タイミングは、処理要求対象からの応答の受信が開始されてから完了するまでの受信期間中にそれぞれ設定されたものであるとよい。応答受信中に必要な数のカウント値を取得することで、複数のカウント値を迅速に取得でき、短時間で多数の乱数を生成することができる。
本発明の乱数発生装置において、処理要求部は、所定の送信データを送信することにより処理の要求を行い、受信部は、送信データに対する処理要求対象からの応答である所定ビット数の受信データを受信し、上記少なくとも1つの取得タイミングは、受信データの受信開始後、その受信データを構成する各ビットのデータの各受信タイミングのうち取得タイミング毎に予め決められたタイミングであるとよい。
つまり、受信データの受信開始後、その受信データを1ビットずつ受信する過程においてその1ビットずつの各受信タイミングのいずれか(予め決められたタイミング)を取得タイミングとするのである。各ビットの受信タイミングは、例えばそのビットの受信開始時、受信完了時、又は受信中の任意のタイミングのいずれでもよい。取得タイミングをこのように各ビットの受信タイミングに基づいて定めることで、カウント値をより確実に取得でき、延いては必要な乱数を確実に生成することができる。
本発明の乱数発生装置と処理要求対象との関係は、様々なケースが考えられる。例えば、乱数発生装置は、所定の機能を有する電気機器に搭載され、処理要求対象は、その電気機器と接続して使用される接続機器であるケースが考えられる。
この場合、乱数発生装置が、自身が搭載れている電気機器とは別の接続機器に対して処理を要求し、その接続機器から応答を受信することになる。そのため、乱数要素がより高くなり、乱数性のより優れた乱数を生成することが可能となる。また、例えば電気機器と接続機器とが相互に通信を行うように構成されている場合には、その通信を利用して乱数を生成することができるため、より簡素且つ低コストで乱数を生成することができる。
本発明の乱数発生装置と処理要求対象との関係として、例えば、乱数発生装置は所定の機能を有する電気機器に搭載され、処理要求対象はその電気機器内に設けられているというケースも考えられる。
この場合、電気機器内で乱数の生成が完結する。そのため、電気機器が単独で使用される場合であっても、簡素な構成で乱数性の高い乱数を生成することができる。
本発明の乱数発生装置は、ソフトウェアにより実現されるものであってもよい。即ち、CPUを有するマイクロコンピュータにおいて、当該乱数発生装置が備える上記各部は、CPUが所定のプログラムを実行することにより実現されるものであるとよい。このように、CPUを乱数発生装置として機能させることで、乱数発生装置をより簡易的に構成することができる。
マイクロコンピュータにおいてCPUが所定のプログラムを実行することで本発明の乱数発生装置が実現される構成の場合、処理要求対象は、マイクロコンピュータ内においてCPUと通信を行うペリフェラルであってもよい。一般に、マイクロコンピュータ内においては、CPUは各種のペリフェラルと通信を行う。そのCPUとペリフェラルとの通信においても、両者間の通信経路の状態や両者の動作状態、性能等によって時間的な不確定要素(乱数要素)が発生する可能性がある。
そこで、その各種ペリフェラルとの通信を利用して、例えばCPUがあるペリフェラルに対して処理を要求し、その要求に対して要求対象のペリフェラルから応答を受信した場合に、その応答に基づいてカウント値を取得し、乱数を生成する。したがって、本発明の乱数発生装置によっても、簡素な構成で乱数性の高い乱数を発生することができる。
上記のようにCPUとペリフェラルとの通信に基づいて乱数を生成する場合、ペリフェラルとして、例えば記憶内容を書き換え可能なメモリとすることができる。この場合、処理要求部は、前記メモリの記憶内容に関する所定の処理を要求する。そして、上記少なくとも1つの取得タイミングのうちの1つは、メモリにおいて処理要求部から要求された処理が完了した場合にメモリから応答として出力される信号を受信したタイミングを基準に設定するとよい。
マイクロコンピュータ内において、CPUがメモリに所定の処理を要求した場合の応答時間は、マイクロコンピュータの使用環境や使用状態等によって変動し、その変動が不確定要素(乱数要素)となる。そのため、乱数生成のためのペリフェラルとしてメモリを用いるとより好適である。
第1実施形態のバッテリパック及び電動工具の概略構成を表す説明図。 第1実施形態の乱数生成方法を説明するための説明図。 第1実施形態のマスター側ループカウンタ処理を表すフローチャート。 第1実施形態のマスター側乱数生成処理を表すフローチャート。 第1実施形態のスレーブ側受信応答処理を表すフローチャート。 第2実施形態のバッテリパック及びアダプタの概略構成を表す説明図。 第3実施形態のモータ制御マイコンの概略構成を表すブロック図。 第3実施形態の乱数生成方法を説明するための説明図。 第3実施形態の乱数生成処理を表すフローチャート。 第4実施形態の乱数生成方法を説明するための説明図。 第4実施形態のマスター側乱数生成処理を表すフローチャート。 他の実施形態のバッテリパック及び充電器の概略構成を表す説明図。
以下に、本発明の好適な実施形態を図面に基づいて説明する。なお、本発明は、下記の実施形態に示された具体的手段や構造等に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の形態を採り得る。また、下記の実施形態の構成の一部を、課題を解決できる限りにおいて省略した態様も本発明の実施形態であり、下記の複数の実施形態を適宜組み合わせて構成される態様も本発明の実施形態である。
[第1実施形態]
1.電動工具及びバッテリパックの構成
本実施形態の乱数発生装置は、バッテリパック1を装着することにより動作する電動工具3の一機能として実現される。バッテリパック1は、電動工具3に着脱可能に構成されている。電動工具3は、バッテリパック1が装着されたとき、バッテリパック1が正規のものか否かを乱数を用いて判定(認証)し、正規のものであると判定した場合に、バッテリパック1からの供給電力による動作を開始する。なお、バッテリパック1は、充電器7(本実施形態では図示及び説明を省略。後述の図12参照。)によって内部のバッテリ10を充電できるよう構成されている。
図1に示すように、バッテリパック1は、電動工具3やその他の各種電気機器(図示略)に着脱可能であってこれら電動工具3等の電源として用いられるものである。バッテリパック1は、バッテリ10と、監視IC11と、バッテリ制御マイコン12と、レギュレータ13と、電流検出回路14と、温度検出回路15と、正極側端子21と、負極側端子22と、共通通信端子23と、放電制御通信端子24と、充電制御通信端子25とを備えている。
バッテリ10は、複数(本実施形態では4個)のバッテリセル26,27,28,29が直列接続されて構成されている。バッテリ10の正極(最も高電位側のバッテリセル26の正極)は、正極側端子21に接続されており、バッテリ10の負極(最も低電位側のバッテリセル29の負極)は、電流検出回路14を介して負極側端子22に接続されている。バッテリ10は、繰り返し充電可能な二次電池(例えばリチウムイオン二次電池)である。
監視IC11は、バッテリ10の電圧や各バッテリセル26〜29の電圧(セル電圧)を検出してバッテリ制御マイコン12へ出力する機能、各バッテリセル26〜29のセル電圧をそれぞれ監視して何れか一つでもセル電圧が過電圧状態となったらその旨の信号(過電圧信号)をバッテリ制御マイコン12へ出力する機能などを備えた、バッテリ10監視用の集積回路(IC)である。
レギュレータ13は、バッテリ10の電圧を降圧して所定電圧値の制御電圧を生成する電源回路である。監視IC11やバッテリ制御マイコン12はこの制御電圧により動作する。
電流検出回路14は、負極側端子22からバッテリ10の負極に至る通電経路上に設けられ、この通電経路を流れる電流、即ちバッテリ10に充電される充電電流およびバッテリ10から放電される放電電流を検出する。
温度検出回路15は、バッテリ10の近傍に設けられた温度検出素子(図示略。例えばサーミスタ。)からの検出信号に基づいてバッテリ10の温度を検出し、その検出結果をバッテリ制御マイコン12へ出力する。
バッテリ制御マイコン12は、監視IC11からバッテリ10の電圧や各セル26〜29のセル電圧を取得してそれら各電圧を監視する機能、監視IC11から過電圧信号が入力された場合に所定の保護動作を行う機能、バッテリ10の残容量を算出する残容量算出機能、バッテリ10の温度が所定の上限値を超えた場合に所定の保護動作を行う機能、及び電動工具3のモータ制御マイコン32とのデータ通信機能等を含む、各種の機能を備えたマイクロコンピュータである。
バッテリ制御マイコン12が備える上記各機能を含む各種機能は、主に、CPU16がフラッシュメモリ17に記憶されている各種プログラムを実行することにより実現される。
なお、バッテリ制御マイコン12の機能は、マイクロコンピュータにより構成することは必須ではなく、各種ロジック回路等からなるICにて構成するなど、種々の形態で実現できる。後述するモータ制御マイコン32、アダプタ制御マイコン51(図6参照)及び充電制御マイコン73(図12参照)についても同様である。
バッテリ制御マイコン12は、共通通信端子23、放電制御通信端子24及び充電制御通信端子25に接続されており、これら各通信端子23〜25を介して、バッテリパック1に接続される各種電気機器との間でデータ通信可能である。バッテリパック1が電動工具3に装着されているときは、バッテリパック1の共通通信端子23が電動工具3の共通通信端子43と接続され、バッテリパック1の放電制御通信端子24が電動工具3の放電制御通信端子44と接続される。
バッテリ制御マイコン12は、電動工具3のモータ制御マイコン32から共通通信端子23を介してデータを受信すると、その受信したデータに応じた各種処理を行う。その受信したデータに対して何らかの応答が必要な場合は、バッテリ制御マイコン12は応答データを共通通信端子23を介して電動工具3のモータ制御マイコン32へ送信する。
バッテリ制御マイコン12は、電動工具3に装着されて電動工具へバッテリ10の電力を供給しているときに、バッテリ10からの放電電流が過電流状態になったり、バッテリ10の温度が上限値を超えると、その旨を示す異常信号(例えばLowレベルの信号)を放電制御通信端子24を介して電動工具3へ出力する。充電制御通信端子25は、バッテリパック1と充電器7との間のデータ通信に用いられる。
電動工具3は、図1に示すように、モータ31と、モータ制御マイコン32と、レギュレータ33と、トリガスイッチ34と、駆動用スイッチング素子35と、正極側端子41と、負極側端子42と、共通通信端子43と、放電制御通信端子44とを備えている。
正極側端子41は、トリガスイッチ34を介してモータ31の一端に接続されている。負極側端子42は、駆動用スイッチング素子35を介してモータ31の他端に接続されている。本実施形態のモータ31は、ブラシ付き直流モータである。
レギュレータ33は、電動工具3にバッテリパック1が装着されたときにバッテリ10から供給される電圧を降圧して所定電圧値の制御電圧を生成する電源回路である。モータ制御マイコン32はこの制御電圧により動作する。
トリガスイッチ34は、電動工具3に設けられた図示しないトリガを使用者が操作することによりオン・オフされる。即ち、使用者がトリガを引くとオンし、使用者がトリガを離すとオフされる。トリガスイッチ34のオン・オフの情報は、モータ制御マイコン32にも入力される。
モータ制御マイコン32は、CPU36がフラッシュメモリ37に記憶されている各種プログラムを実行することにより各種機能を実現する。モータ制御マイコン32は、CPU36やフラッシュメモリ37のほか、RAM38、A/D変換器39及びI/Oインターフェース40(何れも図1では図示略。後述する図7参照。)も備えている。
モータ制御マイコン32は、トリガスイッチ34がオンされると、駆動用スイッチング素子35をオンさせることで、バッテリパック1からモータ31への通電を開始させ、これによりモータ31を動作させる。トリガスイッチ34がオフされると、モータ制御マイコン32は、駆動用スイッチング素子35をオフさせることで、モータ31への通電を停止させる。なお、駆動用スイッチング素子35は、本実施形態ではNチャネル型MOSFETであるが、これはあくまでも一例である。
モータ制御マイコン32によりモータ31への通電が行われている間(即ちバッテリ10からの放電中)に、バッテリパック1から放電制御通信端子44を介して異常信号が入力されると、駆動用スイッチング素子35が強制的にオフされ、モータ31への通電が強制的に停止される。
モータ制御マイコン32は、上述したモータ31の通電制御に加え、バッテリパック1が正規のものか否かを認証するバッテリパック認証機能を有する。モータ制御マイコン32は、バッテリパック認証機能によりバッテリパック1が正規のものであると判定した場合に、トリガスイッチ34の操作状態に基づくモータ31への通電を行う。
モータ制御マイコン32によるバッテリ認証は、おおよそ次のように行われる。モータ制御マイコン32は、乱数を発生させ、その乱数に所定の暗号化データを付加した認証用データをバッテリパック1のバッテリ制御マイコン12へ送信する。バッテリ制御マイコン12は、モータ制御マイコン32から認証用データを受信すると、その認証用データを元に回答データを生成し、モータ制御マイコン32へ送信する。モータ制御マイコン32は、バッテリ制御マイコン12から回答データを受信すると、その回答データに基づき、バッテリパック1の認証を行う。なお、乱数を用いたバッテリパック認証機能のより具体的な処理については、例えば、特開2011−135740号公報等に詳しく説明されており、本発明の主要部でもないので、ここでは説明を省略する。
2.乱数生成方法の説明
次に、電動工具3のモータ制御マイコン32が上記バッテリパック認証の際に発生(生成)する乱数の生成方法について説明する。本実施形態では、モータ制御マイコン32のCPU36が、バッテリ制御マイコン12のCPU16とデータ通信を行うことで、乱数を生成する。
具体的には、モータ制御マイコン32のCPU36がマスターとなってバッテリ制御マイコン12へ予め決められた乱数生成用のデータを送信する。その送信データに対し、上記データ通信におけるスレーブとしてのバッテリ制御マイコン12のCPU16は、所定の応答データをモータ制御マイコン32へ送信する。
マスターとしてのモータ制御マイコン32は、バッテリ制御マイコン12へデータを送信する一方、ループカウンタの変数を制御周期で常時インクリメントさせておく。本実施形態のループカウンタは、CPU36が所定のループカウンタプログラムを実行することにより実現される1バイトのソフトウェアカウンタである。そのため、ループカウンタの変数は、制御周期で0から255まで順次インクリメントされる。変数がオーバーフローすると(つまり255の次は)、再び0からインクリメントされる。
マスターとしてのモータ制御マイコン32のCPU36は、バッテリ制御マイコン12から応答データを受信すると、その応答データの受信中における所定の取得タイミングでループカウンタのカウント値Kを取得する。CPU36は、その取得したカウント値Kを乱数として保持(例えばRAMに記憶)する。
なお、以下の説明では、乱数生成用の所定のデータを送信して乱数を生成する側(本例ではモータ制御マイコン32のCPU36)を単にマスターともいい、そのマスターからの送信データに対して所定の応答データを返す側(本例ではバッテリ制御マイコン12のCPU16)を単にスレーブともいう。
図2には、時刻t1でマスターから送信データの送信が開始され、その送信データに対して時刻t10でスレーブからの応答データの受信が開始される例が示されている。図2の例について具体的に説明する。マスターは、時刻t1で送信データを送信する一方、その送信よりも先にループカウンタの動作を開始させておく。
マスターでは、送信データに対するスレーブからの応答データの受信が時刻t10で開始される。スレーブからの応答データは、予め決められたフォーマットのデータであり、本実施形態では例えば全体として5バイトの情報量からなるデータである。
マスターにおける、応答データ受信時のループカウンタカウント値Kの取得タイミングは、本実施形態では1バイト受信完了毎に設定されている。つまり、応答データを1バイト受信する毎にそのときのループカウンタのカウント値Kを取得する。
具体的には、時刻t10で応答データの受信開始後、1バイトのデータの受信が完了した時刻t11で、ループカウンタのカウント値K1を取得し、そのカウント値K1を乱数データとして保持する。その後再び1バイトのデータの受信が完了すると(時刻t12)、その時刻t12でのループカウンタのカウント値K2を取得し、そのカウント値K2を乱数データとして保持する。その後も同様に、1バイトのデータを受信完了する時刻t13,t14,t15で、それぞれその時刻でのループカウンタのカウント値K3,K4,K5を順次取得して乱数として保持する。なお、5つ目の取得タイミングである時刻t15は、本実施形態では応答データの受信が完了するタイミングでもある。
マスターは、最終的には、取得した各カウント値K1〜K5を用いた所定の乱数生成規則に従って1つの乱数を生成する。具体的には、図2に示すように、1バイト(2進数表示で8桁)のカウント値をK1〜K5の順で順次右方向に並べる(先に取得したカウント値KのLSBの右側に次のカウント値KをMSBから順に並べる)ことで、全体として2進数40桁の乱数を生成する。より具体的には、最初に取得したカウント値K1のLSBである”a0”の右側に、2回目に取得したカウント値K2をそのMSBである”b7”から順に並べる。そのカウント値K2のLSBである”b0”の右側に、3回目に取得したカウント値K3をそのMSBである”c7”から順に並べる。同じ要領で5回目のカウント値K5まで順次並べることで、1つの乱数を生成する。
このように、本実施形態では、ループカウンタのビット数(1バイト)よりもビット数の大きい乱数(40ビット)を生成するよう構成されている。そのため、ループカウンタのカウント値を必要回数(本例では5回)取得するよう構成されている。
そのため、例えば必要な乱数が例えばnバイトならば、ループカウンタのカウント値Kをn回取得してそれらn個のカウント値を用いてnバイトの1つの乱数を生成するようにするとよい。n個よりも多くのカウント値Kを取得して、その中から適宜選択、演算等して、必要なnビットの乱数を生成するようにしてもよい。必要な乱数がループカウンタのビット数以下ならば、ループカウンタのカウント値Kを1つ取得してそのカウント値Kをそのまま(或いは必要ビット数)用いて乱数として生成すればよい。また例えば、ループカウンタのビット数以下の乱数が個別に複数必要な場合は、その必要数分のカウント値Kを取得してそれぞれを乱数として保持すればよい。また例えば、ループカウンタのビット数よりも大きいビット数の乱数が個別に複数必要な場合は、1つの乱数を生成するために必要なカウント値Kの数に、生成すべき乱数の数を乗じた数のカウント値Kを取得して、必要な乱数を生成すればよい。いずれの場合においても、具体的にどのタイミングでカウント値Kを取得するかについては、カウント値Kの必要数や応答データの受信タイミング(受信期間)等に基づいて適宜決めればよい。
マスターからの送信データに対するスレーブからの応答データの受信タイミングは、理論上・設計上は予め規定されている。しかし実際には、マスターとスレーブの両者間におけるデータ通信経路の状態や、マスター及びスレーブ双方でのデータ処理時間の変動などによって、応答データの受信タイミングは予め規定された時間からずれる可能性がある。そのずれは乱数要素となり、ループカウンタのカウント値Kのばらつき(乱数性の高いばらつき)として現れる。そこで、そのカウント値Kを乱数として用いることができるのである。
データ送信からカウント値Kの取得までの時間が長くなるほど、乱数性も高くなっていく。そのため、仮に1つの乱数が必要な場合、乱数性の高さを優先するならば、受信完了タイミング(時刻t15)でカウント値Kを取得するのが好ましい。
なお、単に乱数性の高さだけを考慮するなら、受信完了タイミングよりもさらに後のタイミングの方がよいのだが、受信完了タイミングを過ぎると、どのタイミングで取得するかを決める契機付けが別途必要になり、また乱数が生成されるまでの時間も長くなる。
そのため、高い乱数性を備えつつ、適切なタイミングで迅速に乱数を生成するためには、応答データの受信期間中のうち特に受信完了タイミングに近いタイミングでカウント値Kを取得するのが望ましい。
3.乱数生成のために実行されるマスター及びスレーブの処理の説明
図2を用いて説明した上記乱数生成方法を実現するためにマスター及びスレーブにおいて実行される各種処理について、図3〜図5の各フローチャートを用いて説明する。
まず、マスターとしての電動工具3側におけるモータ制御マイコン32のCPU36が実行するマスター側ループカウンタ処理について、図3を用いて説明する。マスターとしてのCPU36は、モータ制御マイコン32に電源が投入されて動作を開始すると、図3のマスター側ループカウンタ処理のプログラムをフラッシュメモリ37から読み込んで実行する。
マスターは、図3のマスター側ループカウンタ処理を開始すると、S10で、ループカウンタのカウント値Kを1つインクリメントする。マスターは、動作中は常時このS10の処理を制御周期で繰り返し実行する。そのため、マスターが動作中は、ループカウンタのカウント値Kが常に制御周期でインクリメントされている。
次に、マスターが実行するマスター側乱数生成処理について、図4を用いて説明する。マスターは、動作開始後、例えばバッテリパック1が接続された直後の認証タイミングや、バッテリパック1が接続されている期間中の所定の認証タイミングなどの、乱数が必要となるタイミングが到来すると、図4のマスター側乱数生成処理のプログラムをフラッシュメモリ37から読み込んで実行する。
マスターは、図4のマスター側乱数生成処理を開始すると、S110で、送信完了フラグがセット中か否か判断する。この送信完了フラグは、後述するS140でセットされるフラグである。送信完了フラグがセットされていればS150に進むが、送信完了フラグがセットされていない場合はS120に進む。
S120では、スレーブに対して乱数生成用の所定のデータを送信する。S130では、送信すべき全てのデータの送信が完了したか否か判断する。全データの送信が完了していない場合は、S110に戻って、データ送信を継続する。全データの送信が完了した場合は、S140で送信完了フラグをセットして、S110に戻る。
S110で、送信フラグがセットされていることによってS150へ進むと、スレーブからデータを受信したか否か、より具体的には、スレーブから応答データを1バイト受信完了したか否かを判断する。応答データを1バイト受信するまではS110に戻るが、1バイト受信すると、S160に進む。
S160では、現在のループカウンタのカウント値Kを取得し、その取得したカウント値Kを乱数として保持する。S170では、必要分の乱数を生成済みか否か判断する。本実施形態の場合、1つの乱数を生成するためにカウント値Kが計5つ必要である。そのため、本実施形態においては、S170の判断処理は、5つのカウント値Kを取得・保持したか否かを判断する処理である。必要分の乱数がまだ生成されていない場合はS110に戻る。その場合、S150で再び新たに1バイトの応答データの受信を待ち、1バイト受信したらS160に進んでそのときのカウント値Kを取得・保持することになる。
S170で、必要分の乱数を生成したと判断した場合は、S180で送信完了フラグをクリアして、このマスター側乱数生成処理を終了する。
次に、スレーブが実行するスレーブ側受信応答処理について、図5を用いて説明する。スレーブは、動作開始後、図5のスレーブ側受信応答処理のプログラムをフラッシュメモリ17から読み込んで繰り返し実行する。
スレーブは、図5のスレーブ側受信応答処理を開始すると、S210で、返信中フラグがセット中か否か判断する。この返信中フラグは、後述するS240でセットされるフラグである。返信中フラグがセットされていればS250に進むが、返信中フラグがセットされていない場合はS220に進む。
S220では、マスターから乱数生成用の所定のデータを受信したか否か判断する。乱数生成用の所定のデータを受信しない間はS210に戻るが、乱数生成用の所定のデータを受信した場合は、S230に進む。
S230では、乱数生成用のデータの仕様として規定されている数(ビット数)のデータが受信完了したか否か判断する。規定仕様数のデータの受信がまだ完了していない場合は、S210に戻って、データの受信を継続する。規定仕様数のデータの受信が完了した場合は、S240で返信中フラグをセットして、S210に戻る。
返信中フラグがセットされたことにより、S210からS250に進むと、スレーブは、マスターに対して所定の応答データを返信する。S260では、応答データを全て返信完了したか否か判断する。応答データを全て返信完了していない場合は、S210に戻って返信を継続する。応答データを全て返信完了した場合は、S270で、返信中フラグをクリアして、このスレーブ側受信応答処理を終了する。
4.第1実施形態の効果等
以上説明したように、本実施形態では、マスターは、乱数が必要な場合、スレーブへ所定のデータを送信すると共に、別途、ループカウンタを動作させておく。スレーブは、マスターから所定のデータを受信すると、マスターへ応答データを返信する。マスターは、応答データの受信期間中の所定の取得タイミングで必要数分のカウント値K(本例ではK1〜K5)を順次取得し、これら複数のカウント値Kを用いて必要な乱数を生成する。
マスターが送信データを送信してから応答データを受信するまでの間には時間的な不確定要素(乱数要素)が生じるため、応答データ受信中に取得されるカウント値Kは高い乱数性を有している。そのため、マスターは、簡素な構成ながら乱数性の高い乱数を発生することができる。
また、マスターがループカウンタのカウント値Kを取得するタイミングのうち少なくとも1つは、スレーブからの応答データの受信が完了したタイミング(図2の時刻t15)である。取得タイミングを遅らせれば遅らせるほど、得られるカウント値Kの乱数性は高くなるため、応答データ受信の完了時にカウント値Kを取得することで、より乱数性の高い乱数を生成することができる。
また、マスターは、複数の取得タイミングでカウント値Kを取得し、その取得した複数のカウント値Kを用いて乱数を生成する。図2では、5つのカウント値Kから1つの乱数を生成する例を示したが、既述の通り、カウント値Kをいくつ取得するかについては、必要な乱数の数や大きさ(ビット数等)に応じて適宜決めることができる。このように、複数の取得タイミングで取得した複数のカウント値Kを用いて一又は複数の乱数を生成することで、乱数生成の自由度が高まり、所望の数や大きさの乱数を容易且つ適切に生成することができる。特に、複数のカウント値Kを用いて1つの乱数を生成することで、生成可能な乱数の幅(例えば桁数や乱数性など)を広げることができる。
また、マスターは、複数のカウント値Kを取得するにあたり、各カウント値Kをいずれも応答データの受信期間中(図2の時刻t10〜t15の間)に取得するようにしている。しかも、各取得タイミングは、応答データの受信ビット数(本例では1バイト毎)を基準としている。このように応答データ受信中に必要な数のカウント値Kを受信ビット数に基づいて取得することで、複数のカウント値Kを迅速且つ確実に取得でき、延いては所望の乱数を迅速且つ確実に生成することができる。
また、本実施形態では、電動工具3がマスターとして動作し、電動工具3とは別体であって電動工具3に装着されて使用されるバッテリパック1がスレーブとして動作するよう構成されている。つまり、別個独立して構成された2つの機器間のデータ通信を利用して乱数の生成が行われる。そのため、より簡素且つ低コストで、乱数性の高い乱数を生成することができる。
なお、本実施形態において、電動工具3は本発明の電気機器の一例に相当し、バッテリパック1は本発明の接続機器の一例に相当し、電動工具3のCPU36(マスター)は本発明の処理要求部、受信部、カウント部及び乱数生成部の一例に相当し、バッテリパック1のCPU16(スレーブ)は本発明の処理要求対象の一例に相当する。
また、図3のマスター側ループカウンタ処理は本発明のカウント部が実行する処理の一例に相当する。また、図4のマスター側乱数生成処理において、S120の処理は本発明の処理要求部が実行する処理の一例に相当し、S150の処理は本発明の受信部が実行する処理の一例に相当し、S160〜S170の処理は本発明の乱数生成部が実行する処理の一例に相当する。
[第2実施形態]
次に、本発明の第2実施形態について説明する。本実施形態の乱数発生装置は、バッテリパック1の一機能として実現される。バッテリパック1は、自身で生成した乱数を、アダプタ5による認証の際に用いる。即ち、アダプタ5からの認証要求に対して回答データを応答する際に、自身で生成した乱数を付加して応答する。
図6に示すように、バッテリパック1は、アダプタ5に着脱可能であって、アダプタ5の電源としても用いられる。バッテリパック1のハードウェア構成は第1実施形態と同じである。そのため、図6において、バッテリパック1の各部には図1と同じ符号を付している。
アダプタ5は、バッテリパック1に装着されているときに、バッテリパック1のバッテリ制御マイコン12が蓄積している各種情報を読み出して、その情報に応じて、アダプタに備えられている機能の制御を行う。アダプタ5の機能の一例として、アダプタ5に備えられているLEDライト(図示略)の電流制御がある。アダプタ5は、各種定格電圧のバッテリパックに装着される。そのため、アダプタ5は、バッテリパック1のバッテリパック制御マイコン12に蓄積されている電圧情報を読み出して、LEDライトに流す電流が一定になるように制御する。この機能は、アダプタ制御マイコン51によって実現される。アダプタ5の構成や機能自体は本発明の本質ではないため、アダプタ5のより詳細な説明は省略する。
バッテリ制御マイコン12のCPU16と監視IC11との各種データ通信の1つに、CPU16が監視IC11からバッテリ情報(バッテリ10の電圧や各バッテリセル26〜29のセル電圧、バッテリ温度など)を取得するためのデータ通信がある。具体的には、バッテリ制御マイコン12のCPU16が、監視IC11に対してバッテリ情報を要求するための所定の要求データを送信する。監視IC11は、その要求データを受信すると、その要求データに従い、要求されたバッテリ情報を含む応答データを返信する。バッテリ制御マイコン12のCPU16は、監視IC11からの応答データを受信することで、所望のバッテリ情報を取得することができる。
バッテリ制御マイコン12のCPU16は、上記のバッテリ情報取得のためのデータ通信を利用して、乱数の生成を行う。つまり、本実施形態では、バッテリパック1において、バッテリ制御マイコン12のCPU16がマスターとして動作し、監視IC11がスレーブとして動作することで、マスター側で乱数が生成される。
マスターは、第1実施形態と同様、乱数生成のために図3のマスター側ループカウンタ処理及び図4のマスター側乱数生成処理を実行する。ただし、マスターが送信する送信データは、乱数生成用のデータではなく、上述した、バッテリ情報を取得する際に通常送信される送信データである。スレーブは、第1実施形態と同様、図5のスレーブ側受信応答処理を実行することで、マスターからの乱数生成用の送信データに対して応答データを返信する。
このように、本実施形態では、バッテリパック1内において、マスターとしてのバッテリ制御マイコン12のCPU16が、スレーブとしての監視IC11とのデータ通信を用いて、乱数を生成する。そのため、本実施形態のバッテリパック1は、当該バッテリパック1単体で、簡素な構成ながら乱数性の高い乱数を生成することができる。
なお、本実施形態では、バッテリパック1内にマスターとスレーブが構成されてバッテリパック1単独で乱数の生成が実現される構成を示したが、アダプタ5のアダプタ制御マイコン51内のCPU(図示略)がマスター、バッテリパック1内のバッテリ制御マイコン12のCPU16がスレーブとなって(或いはその逆の構成として)、マスターとスレーブ双方のデータ通信によりマスターが乱数を生成する構成としてもよい。なお、本実施形態においては、バッテリパック1が本発明の電気機器の一例に相当する。
[第3実施形態]
次に、本発明の第3実施形態について説明する。本実施形態では、図1に示した第1実施形態のバッテリパック1及び電動工具3の接続構成を用いて説明する。本実施形態の乱数発生装置は、電動工具3の一機能として実現される。ただし、第1実施形態では、電動工具3側をマスター、バッテリパック1側をスレーブとして、双方のデータ通信によってマスター側で乱数が生成される例を示したが、本実施形態では、モータ制御マイコン32内のデータ通信によって乱数が生成される。
モータ制御マイコン32は、より詳しくは、図7に示すように、CPU36、フラッシュメモリ37、RAM38、A/D変換器39及びI/Oインターフェース40などを備え、これらがバスを介して接続されている。CPU36は、モータ制御マイコン32内における、フラッシュメモリ37、RAM38、A/D変換器39及びI/Oインターフェース40などの各種ペリフェラル(周辺装置)との間で、適宜データ通信を行う。
CPU36と各種ペリフェラルとのデータ通信においても、両者間のデータ伝送路の状態や両者それぞれにおけるデータ処理時間の変動などによって、データ通信にかかる時間は予め規定された時間からずれる可能性がある。そのずれは乱数要素となる。本実施形態では、CPU36が、自身とペリフェラルとの間のデータ通信において生じる乱数要素を用いて乱数を生成する。
乱数生成のためにCPU36がデータ通信を行う通信対象のペリフェラルは、本実施形態ではフラッシュメモリ37である。CPU36は、様々なタイミングで、フラッシュメモリ37にアクセスして、記憶内容の読み出し、書き込み、消去などの様々な処理を指示する。フラッシュメモリ37は、CPU36から各種指示を受けると、その指示に従って処理を実行する。フラッシュメモリ37における処理実行中も、適宜、CPU36はフラッシュメモリ37にアクセスして、処理状況を確認したり、必要なデータを送信したりする。そして、フラッシュメモリ37において指示された処理が完了すると、CPU36からフラッシュメモリ37へのアクセスも完了する。
CPU36がフラッシュメモリ37に対して各種処理を指示してから、その指示した処理が完了してCPU36からフラッシュメモリ37へのアクセスが完了するまでの時間は、上述した各種要因によって変動し、乱数要素を有する。特に、各種処理のうちフラッシュメモリ37の記憶内容を消去する処理は、データの読み込みや書き込みなどの他の処理に比べて、CPU36からのアクセス時間がより大きく変動し、乱数性が相対的に最も高い。
そこで本実施形態では、CPU36は、乱数を生成する際、フラッシュメモリ37に所定のデータの消去を要求する。即ち、図8に例示するように、CPU36は、乱数生成が必要となった所定のタイミング(時刻t1)で、フラッシュメモリ37へ処理(即ちデータ消去)を要求する。なお、CPU36がループカウンタを常時動作させていることは第1実施形態と同じである。
CPU36は、フラッシュメモリ37への処理要求後、適宜フラッシュメモリ37にアクセスしながらデータ消去を進める。時刻t2で、フラッシュメモリ37においてデータ消去が終了してCPU36へ完了応答が送信されることにより、CPU36からフラッシュメモリ37へのアクセスが完了すると、その時刻t2でのループカウンタのカウント値K1を取得して、乱数とする。
本実施形態においてモータ制御マイコン32のCPU36が実行する乱数生成処理を、図9のフローチャートを用いて説明する。なお、CPU36は、図9の乱数生成処理と並行して、第1実施形態と同様、図3のマスター側ループカウンタ処理も実行して、ループカウンタのカウント動作を継続実施する。
モータ制御マイコン32のCPU36は、図9に示す乱数生成処理を開始すると、S310で、フラッシュメモリ37へ所定のデータの消去を指示する。S320では、消去が完了したか否かを判断し、消去が完了するまではこのS320の判断処理を繰り返す。
フラッシュメモリ37からの完了応答によりデータ消去の完了(アクセス完了)を判断すると、S330で、現在のループカウンタのカウント値Kを取得し、その取得したカウント値Kを乱数として保持する。
なお、第1実施形態のように所望の乱数を生成するために1バイトの乱数が複数必要な場合は、CPU36がフラッシュメモリ37に対してデータ消去指示を必要回数行えばよい。或いは、フラッシュメモリ37へのアクセス開始からアクセス完了までの間に複数回カウント値Kを取得して、その複数回分のカウント値Kを用いて所望の乱数を生成するようにしてもよい。
以上説明したように、本実施形態では、電動工具3のモータ制御マイコン32内において、CPU36がペリフェラルとのデータ通信を利用して乱数を生成する。特に本実施形態では、乱数生成用のペリフェラルとしてフラッシュメモリ37を採用し、フラッシュメモリ37に対してデータ消去を指示した場合のアクセス時間が有する乱数要素を利用して乱数を生成するようにしている。そのため、本実施形態においても、簡素な構成で乱数性の高い乱数を発生することができる。
なお、乱数生成のためにCPU36がフラッシュメモリ37に対して要求する処理は、データ消去に限らず、例えばデータ読み出しやデータ書き込みなどの他の処理でもよい。また、乱数生成のためにCPU36が処理を要求する要求対象のペリフェラルは、フラッシュメモリ37以外の他のペリフェラルでもよい。
また、CPU36がペリフェラルに対して複数回の処理要求を行う場合、要求する各回の処理内容は、必ずしも同じ内容とする必要はなく、異なる内容としてもよい。例えば、1回目はデータ消去要求、2回目はデータ書き込み要求、3回目はデータ読み込み要求、というように、異なる処理を要求するようにしてもよい。
[第4実施形態]
次に、本発明の第4実施形態について説明する。本実施形態でも、図1に示した第1実施形態のバッテリパック1及び電動工具3の接続構成を用いて説明する。本実施形態の乱数発生装置も、電動工具3の一機能として実現される。ただし、第1実施形態では、図2に示したように、マスターがスレーブからの応答データを1バイト受信する毎にループカウンタのカウント値Kを取得したのに対し、本実施形態では、マスターが、スレーブからの応答データの受信電圧レベルの変動に基づいてカウント値Kを取得する。
即ち、スレーブからの応答データは、電気的には、Highレベル(以下「Hレベル」という)とLowレベル(以下「Lレベル」という)の2つの電圧レベルの変化として受信される。そこで、マスターは、その受信電圧レベルの変化を監視し、受信電圧レベルのHレベルからLレベルへの変化(以下「H→Lエッジ変化」という)をカウントする。そして、そのカウント値が偶数となる毎に、その偶数となったときのループカウンタのカウント値Kを取得する。
具体的には、図10に例示するように、マスターは、時刻t10での応答データの受信開始後、応答データのH→Lエッジ変化を検出してその回数をカウントしていく。時刻t11で2回目のH→Lエッジ変化が発生すると、その時刻t11でのループカウンタのカウント値K11を取得・保持する。その後、時刻t12で4回目のH→Lエッジ変化が発生すると、その時刻t12でのループカウンタのカウント値K12を取得・保持する。
同様にして、6回目のH→Lエッジ変化が発生した時刻t13でループカウンタのカウント値K13を取得・保持し、8回目のH→Lエッジ変化が発生した時刻t14でループカウンタのカウント値K14を取得・保持し、10回目のH→Lエッジ変化が発生した時刻t15でループカウンタのカウント値K15を取得・保持する。マスターは、取得した計5つのカウント値K11〜K15を用いて、第1実施形態と同じ要領で1つの乱数を生成する。即ち、各カウント値K11〜K15を組み合わせて1つ又は複数の乱数を生成してもよいし、各カウント値K11〜K15をそれぞれ単独で乱数としてもよい。
本実施形態においてモータ制御マイコン32のCPU36が実行するマスター側乱数生成処理を、図11のフローチャートを用いて説明する。モータ制御マイコン32のCPU36は、図11に示すマスター側乱数生成処理を開始すると、S410で、送信完了フラグがセット中か否か判断する。送信完了フラグがセットされていればS450に進むが、送信完了フラグがセットされていない場合はS420に進み、スレーブに対して乱数生成用の所定のデータを送信する。S420〜S440の処理は、第1実施形態における図4のS120〜S140の処理と同じであり、スレーブへのデータ送信が完了すると送信完了フラグがセットされる(S440)。
S410で、送信フラグがセットされていることによってS450へ進むと、応答データの受信電圧レベルのH→Lエッジ変化を検出したか否かを判断する。H→Lエッジ変化を検出しない場合はS410に戻るが、H→Lエッジ変化を検出した場合は、S460に進む。
S460では、応答データ受信開始時からのH→Lエッジ変化の検出回数が偶数回目であるか否かを判断する。偶数回目でない場合はS410に戻るが、偶数回目である場合は、S470に進み、現在のループカウンタのカウント値Kを取得して、その取得したカウント値Kを乱数として保持する。S480では、図4のS170と同様、必要分の乱数を生成済みか否か判断する。必要分の乱数がまだ生成されていない場合はS410に戻る。S480で、必要分の乱数を生成したと判断した場合は、S490で送信完了フラグをクリアして、このマスター側乱数生成処理を終了する。
このように、本実施形態では、マスターは、スレーブからの応答データのH→Lエッジ変化が偶数回発生する毎にそのときのカウント値Kを取得して乱数を生成する。そのため、応答データを予め決められたデータとするのではなく、応答時のスレーブ側の状態等に応じて変動するようなデータとすれば、応答データ自体にも乱数要素が生じることになる。つまり、マスターがスレーブにデータを送信してから応答データを受信するまでの応答時間の乱数要素に加えて、応答データ自体の変動(不確定性)に起因する乱数要素も加わる。
そのため、本実施形態のマスターは、第1,第2実施形態に比べてより乱数性の高い乱数を発生することができる。
なお、乱数要素を含む応答データとしては、例えば、バッテリ10の電圧や各バッテリセル26〜29のセル電圧などを示すデータが考えられる。また、上記のように応答データのH→Lエッジ変化が偶数回発生する毎にカウント値Kを取得することはあくまでも一例であり、奇数回発生する毎であってもよいし、H→Lエッジ変化が所定回数発生する毎であってもよい。また、H→Lエッジ変化の発生回数ではなく、逆に応答データがLレベルからHレベルへ変化するタイミングを検出してその検出回数に基づいてカウント値Kを取得するようにしてもよい。応答データの電圧レベル変化に基づいてカウント値Kの取得タイミングを適切に設定することができる限り、その具体的な取得タイミングの設定方法は種々考えられる。
[他の実施形態]
(1)上記第1,第2実施形態では、マスターから乱数生成用の特定のデータを送信し、それに対してスレーブが応答することで乱数を発生させるようにしているが、マスターから送信するデータは、必ずしも乱数生成用の特定のデータである必要はない。送信したデータに対してスレーブから応答が返ってくるような送信データである限り、種々の送信データを送信して乱数を発生させることができる。
マスターからの送信データに対してスレーブが送信する応答データの内容や形式(フォーマット)等についても、上記例に限定されるものではない。マスターにおいてスレーブからの応答データに基づいて必要数のカウント値Kを適切なタイミングで取得できる限り、スレーブはあらゆる内容・フォーマットの応答データを送信することができる。
(2)スレーブからの応答データの受信中にマスターがどのタイミングでループカウンタのカウント値Kを取得するかについては適宜決めることができる。例えば、上記各実施形態の例以外に、受信開始時に取得してもよいし、受信完了後の所定のタイミング(例えば受信完了から所定時間経過後)に取得してもよい。
カウント値Kが複数必要な場合についても、複数のカウント値Kをそれぞれどのタイミングで、どのような時間間隔で取得するかについては適宜決めることができる。例えば、第1実施形態では、1つの送信データに対して返ってくる1つの応答データ全体の中で複数回(上記例では1バイト受信毎)に分けて必要数のカウント値Kを取得するようにしたが、1つの応答データの受信中に必要数のカウント値Kを全て取得する必要は必ずしもない。送信データを複数回送信してそれらに対する応答データを複数回受信することで、全体として必要数のカウント値Kを取得してもよい。例えば、1つの応答データからは1つのカウント値Kのみ取得するようにし、複数のカウント値Kが必要ならばその複数分の送信データを送信して応答データが返ってくる毎に逐次カウント値Kを取得するようにしてもよい。
上述した各実施形態におけるカウント値Kの取得タイミングは、あくまでも一例にすぎない。スレーブからの応答データに基づいて取得タイミングを決めてカウント値Kを取得することができる限り、どの取得タイミングで取得してもよいし、1つの乱数を発生させるためにいくつの応答データを用いるかについても適宜決めることができる。
(3)ループカウンタのビット数(上記例では1バイト)よりもビット数の大きい乱数を発生させる方法として、上記実施形態では、1バイトのループカウンタのカウント値Kを必要数取得してそれらを組み合わせて1つの乱数を生成する方法を示したが、これもあくまでも一例である。例えば、発生させるべき乱数のビット数と同じ或いはそれ以上のビット数をカウント可能なカウンタを用いるようにしてもよい。
あるビット数の乱数を発生させるために、どのようなビット数のカウンタを用いるか、またカウント値Kをいくつ用いるか、複数のカウント値Kから1つの乱数を発生させる場合に複数のカウント値Kをどのように組み合わせるか、などについては適宜決めることができる。
(4)上記実施形態では、ループカウンタを、CPUによるソフトウェアタイマとして構成したが、これはあくまでも一例である。例えばハードウェアタイマによってループカウンタを構成してもよく、ループカウンタの具体的構成は特に限定されるものではない。
(5)スレーブから送信される応答データ自体は、デジタルデータであることは必須ではなく、アナログ信号であってもよい。スレーブから送信される応答データがアナログ信号である場合、例えばそのアナログ信号をマスター側のマイコン内でAD変換し、そのAD変換後の応答データをマスターが処理するようにしてもよい。
(6)ループカウンタの動作開始タイミングは、必ずしもCPUの動作開始時である必要はなく、例えば、CPU動作開始からデータ送信を開始するまでの間の所定のタイミングでもよいし、データ送信中の所定のタイミングでもよいし、データ送信完了から所定時間後などでもよい。ただし、より優れた乱数性を有する乱数を発生させるためには、スレーブからの応答データを受信開始するタイミングに対してより早めがよく、より好ましくは、データ送信開始時以前がよい。
また、ループカウンタを常時動作させておくことは必須ではない。例えば、必要なとき(即ち乱数生成が必要となったとき)にカウント動作を開始させ、必要な乱数が生成された後は動作を停止させるというように、必要に応じて動作・非動作を切り替えるようにしてもよい。
(7)上記実施形態では、電動工具3にバッテリパック1が装着された例(図1参照)や、アダプタ5にバッテリパック1が装着された例(図6参照)を示したが、これら機器の組み合わせはあくまでも一例である。
例えば、図12に示すように、充電器7にバッテリパック1が装着される例においても本発明を適用できる。図12において、バッテリパック1は図1と同じである。充電器7は、バッテリパック1のバッテリ10を充電するための機器である。
図12に示す充電器7は、整流回路71と、充電用スイッチング電源回路72と、充電制御マイコン73と、制御用電源回路74と、正極側端子81と、負極側端子82と、共通通信端子83と、充電制御通信端子85と、を備えている。
整流回路71は、商用電源等の交流(AC)電源から供給される交流電圧を整流するものであり、その整流出力は、充電用スイッチング電源回路72及び制御用電源回路74に出力される。充電用スイッチング電源回路72は、整流回路71からの出力に基づいてバッテリ10への直流の充電電力を生成するスイッチング電源回路であり、充電制御マイコン73により駆動制御される。制御用電源回路74は、整流回路71からの出力に基づいて所定の制御電圧を生成するスイッチング電源回路である。この制御用電源回路74により生成された制御電圧は、充電制御マイコン73の動作用電源となる。
充電制御マイコン73は、バッテリパック1内のバッテリ制御マイコン12と同様、CPU76やフラッシュメモリ77等を備えたマイクロコンピュータにて構成されている。充電制御マイコン73は、充電制御の開始後、バッテリパック1のバッテリ制御マイコン12から充電制御通信端子85を介して充電完了信号を受信すると、充電制御を停止する。また、充電制御マイコン73は、共通通信端子83を介してバッテリパック1のバッテリ制御マイコン12とデータ通信可能に構成されている。
このような構成を基本としつつ、充電制御マイコン73は、更に、バッテリパック1が正規のものか否かを認証するバッテリパック認証機能を有する。充電制御マイコン73は、バッテリパック認証機能によりバッテリパック1が正規のものであると判定した場合に、バッテリ10の充電制御を行う。
充電制御マイコン73によるバッテリパック認証機能は、第1実施形態の電動工具3によるバッテリパック認証機能と同じである。即ち、充電制御マイコン73のCPU76がマスター、バッテリ制御マイコン12のCPU16がスレーブとなり、マスター−スレーブ間で第1実施形態と同様のデータ通信を行って、乱数を生成する。そして、その生成した乱数を用いてバッテリパックの認証を行う。
このように、充電器7とバッテリパック1の組み合わせにおいても、充電器7側がマスター、バッテリパック1側がスレーブとなって、第1実施形態と同様にマスター側で乱数の生成を行うことができる。上述した各種機器の組み合わせ以外でも、本発明の適用は可能である。
(8)上記各実施形態では、マスターの機能をCPUがソフトウェア処理によって実現する構成を示したが、マスターの機能をソフトウェア処理で実現することは必須ではない。マスターの機能の一部又は全てをハードウェアにより実現してもよい。
(9)第3実施形態では、単一機器内でのデータ通信により乱数を生成する例として、バッテリパック1内におけるバッテリ制御マイコン12と監視IC11とのデータ通信を示したが、これはあくまでも一例である。バッテリパック1以外の他の機器においても、その機器内でのデータ通信を用いて乱数を生成することができる。
(10)複数のカウント値Kを組み合わせて1つの乱数を生成する際の乱数生成規則は、上記実施形態の例以外にも種々考えられる。例えば、第1実施形態とは逆に、取得したカウント値KをMSB側に並べていくようにしてもよい。また、例えば、複数のカウント値Kを用いた所定の演算を行うことで1つの乱数を生成するようにしてもよい。
1…バッテリパック、3…電動工具、5…アダプタ、7…充電器、10…バッテリ、11…監視IC、12…バッテリ制御マイコン、13,33,52…レギュレータ、14…電流検出回路、15…温度検出回路、16,36,76…CPU、17,37,77…フラッシュメモリ、21,41,61,81…正極側端子、22,42,62,82…負極側端子、23,43,63,83…共通通信端子、24,44…放電制御通信端子、25,85…充電制御通信端子、26〜29…バッテリセル、31…モータ、32…モータ制御マイコン、34…トリガスイッチ、35…駆動用スイッチング素子、38…RAM、39…A/D変換器、40…I/Oインターフェース、51…アダプタ制御マイコン、71…整流回路、72…充電用スイッチング電源回路、73…充電制御マイコン、74…制御用電源回路。

Claims (11)

  1. 処理要求対象に対して所定の処理を要求する処理要求部と、
    前記要求に対する前記処理要求対象からの応答を受信する受信部と、
    所定周期でカウント値を増加又は減少させるカウント動作を行うカウント部であって、少なくとも前記応答を受信する前から前記カウント動作を開始するカウント部と、
    前記応答の受信開始後、所定の少なくとも1つの取得タイミングで前記カウント部のカウント値を取得してその取得した少なくとも1つのカウント値を用いて乱数を生成する乱数生成部と、
    を備えることを特徴とする乱数発生装置。
  2. 請求項1に記載の乱数発生装置であって、
    前記少なくとも1つの取得タイミングのうちの1つは、前記応答の受信が完了したタイミングである
    ことを特徴とする乱数発生装置。
  3. 請求項1又は請求項2に記載の乱数発生装置であって、
    前記取得タイミングは複数設定されており、
    前記乱数生成部は、複数の前記取得タイミング毎にその取得タイミングでの前記カウント部のカウント値を取得し、その取得した複数のカウント値を用いて乱数を生成する
    ことを特徴とする乱数発生装置。
  4. 請求項3に記載の乱数発生装置であって、
    前記乱数生成部は、前記複数のカウント値のうち少なくとも2つ以上を用いた所定の乱数生成規則に従って1つの乱数を生成する
    ことを特徴とする乱数発生装置。
  5. 請求項3又は請求項4記載の乱数発生装置であって、
    前記複数の取得タイミングは、前記応答の受信が開始されてから完了するまでの受信期間中にそれぞれ設定されている
    ことを特徴とする乱数発生装置。
  6. 請求項1〜請求項5の何れか1項に記載の乱数発生装置であって、
    前記処理要求部は、所定の送信データを送信することにより前記処理の要求を行い、
    前記受信部は、前記送信データに対する前記処理要求対象からの前記応答である所定ビット数の受信データを受信し、
    前記少なくとも1つの取得タイミングは、前記受信データの受信開始後、その受信データを構成する各ビットのデータの各受信タイミングのうち前記取得タイミング毎に予め決められたタイミングである
    ことを特徴とする乱数発生装置。
  7. 請求項1〜請求項6の何れか1項に記載の乱数発生装置であって、
    当該乱数発生装置は、所定の機能を有する電気機器に搭載され、
    前記処理要求対象は、前記電気機器と接続して使用される接続機器である
    ことを特徴とする乱数発生装置。
  8. 請求項1〜請求項6の何れか1項に記載の乱数発生装置であって、
    当該乱数発生装置は、所定の機能を有する電気機器に搭載され、
    前記処理要求対象は、前記電気機器内に設けられている
    ことを特徴とする乱数発生装置。
  9. 請求項1〜請求項8の何れか1項に記載の乱数発生装置であって、
    CPUを有するマイクロコンピュータを備え、
    当該乱数発生装置が備える前記各部は、前記CPUが所定のプログラムを実行することにより実現される
    ことを特徴とする乱数発生装置。
  10. 請求項1〜請求項6の何れか1項に記載の乱数発生装置であって、
    CPUを有するマイクロコンピュータを備え、
    当該乱数発生装置が備える前記各部は、前記CPUが所定のプログラムを実行することにより実現され、
    前記処理要求対象は、前記マイクロコンピュータ内において前記CPUと通信を行うペリフェラルである
    ことを特徴とする乱数発生装置。
  11. 請求項10に記載の乱数発生装置であって、
    前記ペリフェラルは、記憶内容を書き換え可能なメモリであり、
    前記処理要求部は、前記メモリの記憶内容に関する所定の処理を要求し、
    前記少なくとも1つの取得タイミングのうちの1つは、前記メモリにおいて前記要求された処理が完了した場合に前記メモリから前記応答として出力される信号を受信したタイミングを基準に設定される
    ことを特徴とする乱数発生装置。
JP2012279601A 2012-12-21 2012-12-21 乱数発生装置 Pending JP2014123284A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2012279601A JP2014123284A (ja) 2012-12-21 2012-12-21 乱数発生装置
CN201310627939.6A CN103885746A (zh) 2012-12-21 2013-11-29 随机数产生装置
US14/099,464 US9372666B2 (en) 2012-12-21 2013-12-06 Random number generating device
DE102013021805.5A DE102013021805A1 (de) 2012-12-21 2013-12-20 Elektrokraftwerkzeuganordnung, Ladeanordnung für ein wiederaufladbares Batteriepack und Zufallszahlerzeugungsvorrichtung

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012279601A JP2014123284A (ja) 2012-12-21 2012-12-21 乱数発生装置

Publications (1)

Publication Number Publication Date
JP2014123284A true JP2014123284A (ja) 2014-07-03

Family

ID=50878823

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012279601A Pending JP2014123284A (ja) 2012-12-21 2012-12-21 乱数発生装置

Country Status (4)

Country Link
US (1) US9372666B2 (ja)
JP (1) JP2014123284A (ja)
CN (1) CN103885746A (ja)
DE (1) DE102013021805A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016076741A (ja) * 2014-10-02 2016-05-12 Nttエレクトロニクス株式会社 ランダムデータ生成器及びデータ通信端末

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014123284A (ja) * 2012-12-21 2014-07-03 Makita Corp 乱数発生装置
GB2528983A (en) * 2014-08-08 2016-02-10 Apply Mobile Ltd Improvements in and relating to random number generation apparatus
SE1551123A1 (en) * 2015-08-31 2017-03-01 Conroy Medical Ab Cordless apparatus
US10505378B2 (en) 2016-06-30 2019-12-10 Infineon Technologies Ag Ensuring backward compatibility in battery authentication applications
JP7159035B2 (ja) * 2018-12-25 2022-10-24 株式会社マキタ 充電システム、バッテリパック及び充電器

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61296443A (ja) * 1985-06-24 1986-12-27 Mitsubishi Electric Corp ウオツチドツグ・タイマ
JP2002215030A (ja) * 2001-01-17 2002-07-31 Advanced Mobile Telecommunications Security Technology Research Lab Co Ltd 乱数発生方法
JP2002301203A (ja) * 2001-04-05 2002-10-15 Konami Parlor Entertainment Kk 乱数発生装置
JP2005107776A (ja) * 2003-09-30 2005-04-21 Fuji Electric Systems Co Ltd 2重化コントローラシステム、その方法
JP2006235995A (ja) * 2005-02-24 2006-09-07 Sony Corp 信号処理装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10103071A1 (de) * 2001-01-24 2002-08-08 Infineon Technologies Ag Zufallszahlengenerator und Verfahren zum Erzeugen einer Zufallszahl
WO2002091147A1 (en) * 2001-05-09 2002-11-14 Magiq Technologies, Inc. Efficient use of detectors for random number generation
US6968460B1 (en) * 2001-05-10 2005-11-22 Advanced Micro Devices, Inc. Cryptographic randomness register for computer system security
JP4467216B2 (ja) * 2001-09-07 2010-05-26 Necエレクトロニクス株式会社 乱数発生方法及び装置
US6871206B2 (en) * 2001-11-20 2005-03-22 Ip-First, Llc Continuous multi-buffering random number generator
US7219112B2 (en) * 2001-11-20 2007-05-15 Ip-First, Llc Microprocessor with instruction translator for translating an instruction for storing random data bytes
JP4248950B2 (ja) * 2003-06-24 2009-04-02 株式会社ルネサステクノロジ 乱数発生装置
EP1780937A1 (en) 2005-11-01 2007-05-02 Black & Decker, Inc. Method and system for authenticating a smart battery system
JP4917478B2 (ja) 2007-05-25 2012-04-18 株式会社ケーヒン 乱数発生装置及び車両制御装置
US8489659B2 (en) * 2007-10-19 2013-07-16 Schneider Electric USA, Inc. Pseudorandom number generation
JP2011135740A (ja) 2009-12-25 2011-07-07 Makita Corp 電動工具用バッテリパックおよびバッテリ接続装置
JP2014123284A (ja) * 2012-12-21 2014-07-03 Makita Corp 乱数発生装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61296443A (ja) * 1985-06-24 1986-12-27 Mitsubishi Electric Corp ウオツチドツグ・タイマ
JP2002215030A (ja) * 2001-01-17 2002-07-31 Advanced Mobile Telecommunications Security Technology Research Lab Co Ltd 乱数発生方法
JP2002301203A (ja) * 2001-04-05 2002-10-15 Konami Parlor Entertainment Kk 乱数発生装置
JP2005107776A (ja) * 2003-09-30 2005-04-21 Fuji Electric Systems Co Ltd 2重化コントローラシステム、その方法
JP2006235995A (ja) * 2005-02-24 2006-09-07 Sony Corp 信号処理装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016076741A (ja) * 2014-10-02 2016-05-12 Nttエレクトロニクス株式会社 ランダムデータ生成器及びデータ通信端末

Also Published As

Publication number Publication date
US9372666B2 (en) 2016-06-21
US20140181167A1 (en) 2014-06-26
CN103885746A (zh) 2014-06-25
DE102013021805A1 (de) 2014-06-26

Similar Documents

Publication Publication Date Title
JP2014123284A (ja) 乱数発生装置
US9660469B2 (en) Multi-battery charging circuit and charging method thereof
JP6791386B2 (ja) 充電時間演算方法及び充電制御装置
CN107179512B (zh) 预测电池寿命的方法及装置
TWI427892B (zh) 具省電功能之供電系統及供電方法
US9753094B2 (en) Battery performance under high temperature exposure
JP2018082618A (ja) バッテリ充電方法、バッテリ充電情報生成方法、及びバッテリ充電装置
JP2013097901A (ja) 温度検出装置及びバッテリパック
EP3185348B1 (en) A battery information detection and control method, smart battery,terminal and computer storage medium
WO2013143398A1 (zh) 一种多电池充电方法、装置以及一种手持移动终端
CN110843600A (zh) 电池充电管理方法、装置、终端设备及存储介质
JP6796766B2 (ja) 蓄電システム及び蓄電方法
CN113612295B (zh) 一种应急储能电池电能管理方法、装置及介质
JP2019106761A (ja) ソーラー充電制御装置及び方法
US20120314796A1 (en) Method of signal exchange, method of bit-sequence transmission, and battery pack
JP2006164820A (ja) 電池パックおよび充電器
CN112615405B (zh) 一种电池组的被动均衡方法、设备及装置
US10193358B2 (en) Deep-charging power resources of power resource group having identifier corresponding to range within which modulo falls based on charging time
KR20210030091A (ko) 통신 장치, 통신 방법 및 전기 차량
CN115498295A (zh) 荷电状态检测方法、装置、储能设备以及介质
JP2014241694A (ja) 充電管理装置および充電管理プログラム
JP7412993B2 (ja) 電池パック、制御方法およびプログラム
JP2013149487A (ja) パック電池
CN103633686A (zh) 用于修正充电错误的系统、方法以及计算机程序产品
US20190348851A1 (en) System and method for managing a rechargeable battery based on historical charging data

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150619

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160524

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160525

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160722

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160823