電池の電圧を検出する電圧検出手段と、前記電池に流れる充放電電流を検出する電流検出手段と、前記電池に電流が流れていないときに前記電圧検出手段により検出される電圧に対応する、前記電池の満充電容量を基準とする前記電池の残充電容量の割合である初期SOCと、前記電池の満充電容量を基準とする、前記初期SOCを取得してから所定時間経過するまでの間において前記電流検出手段により検出される充放電電流の積算値の割合との加算値を求めるとともに、前記初期SOCから前記加算値への変化に対応する補正量を求め、前記加算値から前記補正量を減算した値を、前記初期SOCを取得してから前記所定時間経過後における推定SOCとする制御回路と、を備えることを特徴とするSOC推定装置。請求項1に記載のSOC推定装置であって、前記制御回路は、前記初期SOCから前記加算値への変化のうちの充電時のみの変化に対応する充電補正量と、前記初期SOCから前記加算値への変化のうちの放電時のみの変化に対応する放電補正量との加算値を、前記補正量とすることを特徴とするSOC推定装置。請求項2に記載のSOC推定装置であって、前記制御回路は、前記充電補正量と前記放電補正量との加算値と、前記初期SOCに応じて変化する初期SOC補正係数との乗算値を、前記補正量とすることを特徴とするSOC推定装置。請求項1に記載のSOC推定装置であって、前記制御回路は、充放電が繰り返されたときに前記電池の分極の影響で生じる前記推定SOCの誤差が無くなるように、前記補正量を調整することを特徴とするSOC推定装置。請求項1に記載のSOC推定装置であって、前記制御回路は、前記電池の初期の内部抵抗を基準とする前記電池の現在の内部抵抗の割合の増加に伴って生じる前記推定SOCの誤差が無くなるように、前記補正量を調整することを特徴とするSOC推定装置。請求項1に記載のSOC推定装置であって、前記制御回路は、他の前記電池の内部抵抗を基準とする使用中の前記電池の内部抵抗の割合の変化に伴って生じる前記推定SOCの誤差が無くなるように、前記補正量を調整することを特徴とするSOC推定装置。本発明は、電池のSOCを高精度に推定することが可能なSOC推定装置を提供することを目的とする。本発明のSOC推定装置は、電池の電圧を検出する電圧検出手段と、前記電池に流れる充放電電流を検出する電流検出手段と、前記電池に電流が流れていないときに前記電圧検出手段により検出される電圧に対応する、前記電池の満充電容量を基準とする前記電池の残充電容量の割合である初期SOCと、前記電池の満充電容量を基準とする、前記初期SOCを取得してから所定時間経過するまでの間において前記電流検出手段により検出される充放電電流の積算値の割合との加算値を求めるとともに、前記初期SOCから前記加算値への変化に対応する補正量を求め、前記加算値から前記補正量を減算した値を、前記初期SOCを取得してから前記所定時間経過後における推定SOCとする制御回路とを備える。これにより、推定SOCに補正量の誤差が累積されていかず、推定SOCの精度を向上させることができる。また、前記制御回路は、前記初期SOCから前記加算値への変化のうちの充電時のみの変化に対応する充電補正量と、前記初期SOCから前記加算値への変化のうちの放電時のみの変化に対応する放電補正量との加算値を、前記補正量とするように構成してもよい。これにより、充電時と放電時とで推定SOCの誤差が異なる電池に対して精度良く補正量を求めることができるため、推定SOCの精度をより向上させることができる。また、前記制御回路は、前記充電補正量と前記放電補正量との加算値と、前記初期SOCに応じて変化する初期SOC補正係数との乗算値を、前記補正量とするように構成してもよい。これにより、初期SOCの変化に伴って補正量を複数種類用意しておく必要がないため、それら複数種類の補正量を記憶しておくためのハードウェア資源を低減することができる。また、前記制御回路は、充放電が繰り返された後に前記電池に生じる分極の影響で生じる前記推定SOCの誤差が無くなるように、前記補正量を調整するように構成してもよい。これにより、さらに精度良く補正量を求めることができるため、推定SOCの精度をより向上させることができる。また、前記制御回路は、前記電池の初期の内部抵抗を基準とする前記電池の現在の内部抵抗の割合の増加に伴って生じる前記推定SOCの誤差が無くなるように、前記補正量を調整するように構成してもよい。これにより、さらに精度良く補正量を求めることができ、推定SOCの精度をより向上させることができる。また、前記制御回路は、他の前記電池の内部抵抗を基準とする使用中の前記電池の内部抵抗の割合の変化に伴って生じる前記推定SOCの誤差が無くなるように、前記補正量を調整するように構成してもよい。これにより、さらに精度良く補正量を求めることができるため、推定SOCの精度をより向上させることができる。本発明によれば、電池のSOCを高精度に推定することができる。図1は、本発明の実施形態のSOC推定装置を示す図である。図1に示すSOC推定装置1は、ハイブリッド車や電気自動車などの車両に搭載される電池2と負荷3との間に設けられるリレー4と、電池2の電圧を検出する電圧検出部5電圧検出手段と、電池2に流れる充放電電流を検出する電流検出部6電流検出手段と、電池2の周囲温度を検出する温度検出部7と、制御回路8とを備える。電池2は、例えば、リチウムイオン二次電池やニッケル水素電池などの二次電池が複数互いに直列接続されて構成される。負荷3は、例えば、走行用モータを駆動するためのインバータ装置などであり、電池2から供給される電力により駆動する。電圧検出部5は、例えば、ADコンバータと、電池2の各二次電池の電圧の何れか1つを選択してADコンバータに出力する切替回路とを備えて構成される。制御回路8は、ADコンバータから出力される各二次電池の電圧を順次入力して電池2全体の電圧を取得する。電流検出部6は、例えば、ホール素子を用いた電流センサなどにより構成される。制御回路8は、電流センサから出力される電圧に基づいて、電池2に流れる充放電電流を求める。温度検出部7は、例えば、サーミスタなどであり、制御回路8は、サーミスタにかかる電圧に基づいて、電池2の周囲温度を求める。制御回路8は、初期SOC取得部9と、平均電流算出部10と、積算電流算出部11と、補正量算出部12と、推定SOC算出部13と、記憶部14とを備える。なお、制御回路8は、CPUCentralProcessingUnitやプログラマブルなデバイスFPGAFieldProgrammableGateArray、PLDProgrammableLogicDeviceなどにより構成される。また、記憶部14は、例えば、ROMReadOnlyMemory、RAMRandomAccessMemoryなどのメモリやハードディスクなどにより構成され、制御回路8の外部に設けられてもよい。また、例えば、初期SOC取得部9、平均電流算出部10、積算電流算出部11、補正量算出部12、及び推定SOC算出部13は、一部又は全部が、ハードウェアにより実現されてもよいし、制御回路8が記憶部14に記憶されるプログラムを実行することにより実現されてもよい。初期SOC取得部9は、停車時間T1が所定時間T2以上になると、リレー4をオフさせているときに、電圧検出部5により検出される電池2の電圧OCVに対応するSOCを、記憶部14に記憶されるOCVとSOCとの対応関係を示すOCV-SOCマップから取り出し、その取り出したSOCを初期SOCとする。なお、上記停車時間T1は、例えば、車両が停車し車両全体を制御する上位制御回路が停止してREADYOFF状態になってから上位制御回路が起動し車両を走行させる準備が完了してREADYON状態になるまでの時間とする。また、上記所定時間T2は、例えば、電池2の充放電が終了してから電池2の分極の影響が無くなり電池2の電圧変動が収まるまでの時間とする。例えば、図2は、OCV-SOCマップの一例をグラフ化したものを示す図である。一般に、SOCは、OCVにより一意に求めることができるため、図2に示すように、OCVVとSOCとの対応関係を予めOCV-SOCマップにして記憶部14に記憶させておく。これにより、初期SOC取得部9は、電圧検出部5により取得されるOCVに対応するSOCを記憶部14に記憶されるOCV-SOCマップから取り出すことができる。また、初期SOC取得部9は、停車時間T1が所定時間T2以上でないとき、前回READYOFF状態になる直前に求めた推定SOCを初期SOCとする。平均電流算出部10は、初期SOCを取得してから1以上の一定時間T3が経過するまでの累積時間所定時間において、電流検出部6により取得される電池2の充放電電流の平均値[A]平均電流を算出する。例えば、平均電流算出部10は、初期SOCを取得してから一定時間T3が3回経過すると、初期SOCを取得してから一定時間T3が3回経過するまでの累積時間において、一定時間T4一定時間T3よりも短い時間であって、例えば、制御回路8の単位クロック毎に電流検出部6により取得される電池2の充放電電流を全て加算し、その加算結果を加算回数で割った結果を平均電流とする。積算電流算出部11は、初期SOCを取得してから1以上の一定時間T3が経過するまでの累積時間において、電流検出部6により取得される電池2の充放電電流の積算値[Ah]積算電流を算出する。例えば、積算電流算出部11は、初期SOCを取得してから一定時間T3が3回経過すると、初期SOCを取得してから一定時間T3が3回経過するまでの累積時間において、一定周期T4毎に電流検出部6により取得される電池2の充放電電流を全て加算し、その加算結果を積算電流とする。補正量算出部12は、初期SOCを取得してから1以上の一定時間T3が経過するまでの累積時間において、電池2の満充電容量を基準とする積算電流算出部11により算出される積算電流の割合[]、すなわち、SOCの変化量を求め、そのSOCの変化量と初期SOCとの加算値[]を求める。また、補正量算出部12は、初期SOCから上記加算値への変化及び電池2の周囲温度に対応する充電補正量を、初期SOCから上記加算値への変化及び電池2の周囲温度と充電補正量との対応関係を示す充電補正量マップから取り出すとともに、初期SOCから上記加算値への変化及び電池2の周囲温度に対応する放電補正量を、初期SOCから加算値への変化及び電池2の周囲温度と放電補正量との対応関係を示す放電補正量マップから取り出す。例えば、図3aは充電補正量マップの一例を示す図である。一般に、充電時の積算電流の増加、すなわち、充電時のSOCの増加に伴い推定SOCが実際のSOCよりも高くなるため、充電時のSOCの増加に伴う推定SOCの誤差の変化量を充電補正量として図3aに示す充電補正量マップのように予めマップ化しておく。また、一般に、図4に示すように、電池2の周囲温度が低い程、電池2の内部抵抗[Ω]が高くなり、推定SOCが実際のSOCよりも高くなってしまうため、電池2の周囲温度の変化に伴う推定SOCの誤差の変化量も図3aに示す充電補正量マップのように充電補正量に反映させておく。すなわち、図3aに示す充電補正量マップでは、例えば、電池2の周囲温度が25°CにおいてSOCが10→20に増加するときの充電補正量は-0.1になる。また、例えば、電池2の周囲温度が25°CにおいてSOCが10→90に増加するときの充電補正量は-0.25になる。また、例えば、電池2の周囲温度が-30°CにおいてSOCが10→90に増加するときの充電補正量は-2.0になる。なお、図3aに示す充電補正量マップは、初期SOCが10のときの充電補正量が格納されているが、初期SOCが10以外のときの充電補正量が格納されていてもよい。また、図3aに示す充電補正量マップは、SOCの変化に応じた充電補正量が格納されているが、充電電流例えば、0.5C、1C、2C、に応じた充電補正量が格納されていてもよい。なお、0.5Cは電池2を12.5Aで1h充電させることを示し、1Cは電池2を25Aで1h充電させることを示し、2Cは電池2を50Aで1h充電させることを示す。また、図3bは放電補正量マップの一例を示す図である。一般に、放電時の積算電流の増加、すなわち、充電時のSOCの増加に伴い推定SOCが実際のSOCよりも高くなるため、放電時のSOCの増加に伴う推定SOCの誤差の変化量を放電補正量として図3bに示す放電補正量マップのように予めマップ化しておく。また、充電補正量マップと同様に、電池2の周囲温度の変化に伴う推定SOCの誤差の変化量も図3bに示す放電補正量マップのように放電補正量に反映させておく。すなわち、図3bに示す放電補正量マップでは、例えば、電池2の周囲温度が25°CにおいてSOCが90→80に減少するときの放電補正量は-0.1になる。また、例えば、電池2の周囲温度が25°CにおいてSOCが90→10に減少するときの放電補正量は-0.25になる。また、例えば、電池2の周囲温度が-30°CにおいてSOCが90→10に減少するときの放電補正量は-2.0になる。なお、図3bに示す放電補正量マップは、初期SOCが90のときの放電補正量が格納されているが、初期SOCが90以外のときの放電補正量が格納されていてもよい。また、図3bに示す放電補正量マップは、SOCの変化に応じた放電補正量が格納されているが、放電電流例えば、0.5C、1C、2C、に応じた放電補正量が格納されていてもよい。なお、0.5Cは電池2を12.5Aで1h放電させることを示し、1Cは電池2を25Aで1h放電させることを示し、2Cは電池2を50Aで1h放電させることを示す。そして、補正量算出部12は、補正量=充電補正量放電補正量1を計算することにより補正量を求める。このように、充電補正量と放電補正量との加算値を補正量とすることにより、充電時と放電時とで推定SOCの誤差が異なる電池2に対して精度良く補正量を求めることができる。また、補正量算出部12は、充電時の場合、初期SOC取得部9により取得される初期SOC及び電池2の周囲温度に対応する初期SOC補正係数を、初期SOC及び電池2の周囲温度と初期SOC補正係数との対応関係を示す充電用初期SOC補正係数マップ例えば、図5aに示す充電用初期SOC補正係数マップから取り出し、放電時の場合、初期SOC取得部9により取得される初期SOC及び電池2の周囲温度に対応する初期SOC補正係数を、初期SOC及び電池2の周囲温度と初期SOC補正係数との対応関係を示す放電用初期SOC補正係数マップ例えば、図5bに示す放電用初期SOC補正係数マップから取り出すように構成してもよい。そして、補正量算出部12は、補正量=充電補正量放電補正量×初期SOC補正係数2を計算することにより補正量を求めるように構成してもよい。例えば、電池2の周囲温度が25°CでSOCの変化が20→30のとき、補正量算出部12は、図3aに示す充電補正量マップから充電補正量として-0.15を取り出し、図5aに示す充電用初期SOC補正係数マップから初期SOC補正係数として0.1を取り出し、補正量=-0.15×0.1=-0.015を計算する。これにより、電池2の周囲温度が25°CでSOCの変化が20→30のときの補正量を精度良く求めることができる。また、このように、初期SOC補正係数を充電補正量放電補正量に乗算することで補正量を求める場合は、初期SOCが異なる充電補正量マップ又は放電補正量マップを複数種類用意する必要がなくなるため、記憶部14の記憶容量を低減することができる。また、補正量算出部12は、電池2の満充電容量を基準とする、初期SOCを取得してから1以上の一定時間T3が経過するまでの累積時間と上記平均電流との乗算値の割合[]を、その累積時間において充放電が繰り返されたときの電池2の分極の影響により生じる推定SOCの誤差、すなわち、学習補正量として求め、その学習補正量をSOCの変化や電池2の周囲温度毎にマップ化していくように構成してもよい。例えば、図6に示すように、全ての学習補正量を0とする学習マップを予め記憶部14に記憶しておき、補正量算出部12が学習補正量を求める度にその学習補正量を学習マップに上書きしていく。なお、学習マップに格納されない学習補正量は、学習マップにすでに格納されている複数の学習補正量により得られる近似式を使って求めてもよい。例えば、電池2の周囲温度が-30°CでSOCの変化が10→25のときの学習補正量は、電池2の周囲温度が-30°CでSOCの変化が10→20ときの学習補正量と電池2の周囲温度が-30でSOCの変化が10→30のときの学習補正量とから得られる直線の式を使って求めてもよい。そして、補正量算出部12は、補正量=充電補正量放電補正量×初期SOC補正係数学習補正量3を計算することにより補正量を求めるように構成してもよい。このように、充放電が繰り返されたときに電池2の分極の影響により生じる推定SOCの誤差が無くなるように、補正量を調整しているため、さらに精度良く補正量を求めることができる。また、補正量算出部12は、補正量=充電補正量放電補正量×初期SOC補正係数学習補正量×抵抗劣化率4を計算することにより補正量を求めるように構成してもよい。なお、抵抗劣化率は、特定の条件例えば、電池2の周囲温度が25°C、SOCが80、充電時のみにおいて、電池2の初期内部抵抗を基準とする電池2の現在の内部抵抗の割合[]を示す。電池2の内部抵抗は、例えば、予め決められた放電電流を流しているときの電池2の電圧に基づいて求められる。電池2の内部抵抗が増加すると、電力=抵抗×電流2より、電池2の充放電電力の損失が増加するため、実際のSOCが推定SOCよりも低くなる。そのため、上記4式のように、電池2の初期の内部抵抗を基準とする電池2の現在の内部抵抗の割合の増加に伴って生じる推定SOCの誤差が無くなるように、補正量を調整することにより、さらに精度良く補正量を求めることができる。また、補正量算出部12は、補正量=充電補正量放電補正量×初期SOC補正係数学習補正量×抵抗劣化率×初期抵抗比5を計算することにより補正量を求めるように構成してもよい。なお、初期抵抗比は、特定の条件例えば、電池2の周囲温度が25°C、SOCが80、充電時のみにおいて、他の電池2の内部抵抗を基準とする使用中の電池2の内部抵抗の割合[]を示す。このように、他の電池2の内部抵抗と使用中の電池2の内部抵抗が互いに異なると、電力=抵抗×電流2より、電池2の充放電電力の損失も異なる。そのため、上記5式のように、他の電池2の内部抵抗を基準とする使用中の電池2の内部抵抗の割合の変化に伴って生じる推定SOCの誤差が無くなるように、補正量を調整することにより、さらに精度良く補正量を求めることができる。図7は、制御回路8の動作を示すフローチャートである。まず、制御回路8は、READYON状態になるとS1がYes、停車時間T1が所定時間T2以上であるか否かを判断するS2。停車時間T1が所定時間T2以上であると判断するとS2がYes、制御回路8は、電池2の充放電前において、リレー4をオフさせつつ電圧検出部5で検出される電圧OCVを取得するとともに、温度検出部7で検出される電池2の周囲温度を取得しS3、そのOCVに対応する初期SOCを記憶部14に記憶される初期SOCマップから取得しS4、その初期SOC及び電池2の周囲温度に対応する初期SOC補正係数を記憶部14に記憶される充電用補正係数マップ又は放電用補正係数マップから取得するS5。一方、停車時間T1が所定時間T2以上でないと判断するとS2がNo、制御回路8は、前回記憶部14に記憶した推定SOCを初期SOCとしS6、その初期SOC及び電池2の周囲温度に対応する初期SOC補正係数を記憶部14に記憶される充電用補正係数マップ又は放電用補正係数マップから取得するS5。次に、制御回路8は、平均電流算出部10で取得される平均電流に基づいて学習マップを作成しつつ、その平均電流に対応する学習補正量をその学習マップから取得しS7、積算電流算出部11により積算電流を取得しS8、一定時間T3経過したか否かを判断するS9。一定時間T3経過したと判断するとS9がYes、制御回路8は、電池2の周囲温度を取得しS10、積算電流に基づいて充電補正量又は放電補正量を取得するとともに、補正量=充電補正量放電補正量×初期SOC補正係数学習補正量×抵抗劣化率×初期抵抗比5を計算するS11。なお、S11において、上記1~4式のうちの何れかの式を用いて補正量を算出してもよい。次に、制御回路8は、推定SOC[]=初期SOC[]電池2の満充電容量を基準とする積算電流の割合[]補正量[]を計算しS12、その推定SOCを記憶部14に記憶しS13、S7に戻る。一方、制御回路8は、一定時間T3経過しておらずS9がNo、READYOFF状態にもなっていないと判断するとS14がNo、S7に戻り、一定時間T3経過していないがS9がNo、READYOFF状態になったと判断するとS14がYes、S10~S13と同様に、電池2の周囲温度を取得しS15、補正量を算出しS16、推定SOCを算出しS17、推定SOCを記憶するS18。例えば、図8に示す時刻t1における初期SOCが70、累積時間t1~t2における電池2の満充電容量を基準とする積算電流の割合が10、累積時間t1~t2における補正量が-0.07のとき、制御回路8は、推定SOC=7010-0.07=79.93を計算する。また、図8に示す時刻t1における初期SOCが70、累積時間t1~t3における電池2の満充電容量を基準とする積算電流の割合が5、累積時間t1~t3における補正量が-0.08のとき、制御回路8は、推定SOC=705-0.08=74.92を計算する。このように、本実施形態のSOC推定装置1は、OCVに対応する初期SOCと、電池2の満充電容量を基準とする、初期SOCを取得してから1以上の一定時間T3経過するまでの累積時間における積算電流の割合との加算値を求めるとともに、初期SOCから加算値への変化に対応する補正量を求め、加算値から補正量を減算した値を、初期SOCを取得してから1以上の一定時間T3経過後における推定SOCとしているため、推定SOCを求める度に推定SOCに補正量の誤差が累積されていかず、推定SOCの精度を向上させることができる。また、本実施形態のSOC推定装置1は、精度良く補正量を求めることができるため、推定SOCの精度をさらに向上させることができる。