(57)【特許請求の範囲】
【請求項１】
荷役機器を駆動する油圧シリンダの油路上に設けられた電磁弁と、
前記電磁弁のソレノイドに流すべき目標電流値を記憶する記憶手段と、
前記ソレノイドに流れる電流を目標電流値とするための制御に使うデータを得るのに必要な測定値を測定するための測定手段と、
前記ソレノイドに流れる電流を制御するための電流指令値を、その電流を目標電流値に近づけ得るように前記測定手段の測定値から得た前記データを使って補正する補正処理をプログラムデータに基づいて実行する制御手段と、
前記電磁弁のスプールを微小振動させるディザ制御のため、前記電流指令値に加える振幅分のディザ振幅値を、所望する電流振幅が得られるように前記測定値を使って得たデータを用いて決めるとともに、該ディザ振幅値を前記電流指令値に加えたディザ指令値を指令するディザ制御手段と
を備えている産業車両における電磁弁のディザ制御装置。
【請求項２】
前記ディザ制御手段は、前記制御手段が補正処理を１回実行する毎に、前記電流指令値を中心に所定周期で振幅する波形上の値をとるようにその波形の１周期のうちに前記ディザ指令値を割込処理で複数決めて指令する請求項１に記載の産業車両における電磁弁のディザ制御装置。
【請求項３】
前記電磁弁のソレノイドに流れる電流を検出する電流検出手段が設けられ、前記制御手段が実行する前記補正処理は、前記電流検出手段の検出信号から定まる電流検出値と前記目標電流値との差が許容範囲内に収まるように前記電流指令値を補正するフィードバック制御であり、
前記ディザ制御手段は、該フィードバック制御で使用した前記測定値を使って得たデータを用いて前記ディザ振幅値を決めている請求項１又は請求項２に記載の産業車両における電磁弁のディザ制御装置。
【請求項４】
前記測定手段は前記電流検出手段であり、前記ディザ制御手段は、前記制御手段がフィードバック制御で使用した前記電流検出値を使って得たデータを用いて前記ディザ振幅値を決めている請求項３に記載の産業車両における電磁弁のディザ制御装置。
【請求項５】
前記測定手段は前記ソレノイドに流れる電流に影響を与える外乱要因を測定する外乱要因測定手段であり、前記ディザ制御手段は、前記制御手段がフィードバック制御で使用した前記外乱要因の測定値を使って得たデータを用いて前記ディザ振幅値を決めている請求項３に記載の産業車両における電磁弁のディザ制御装置。
【請求項６】
前記測定手段は前記ソレノイドに流れる電流に影響を与える外乱要因を測定する外乱要因測定手段であり、前記制御手段が実行する前記補正処理は、外乱要因測定手段の測定値を用いて外乱要因を考慮して目標電流値から決めた電流指令値を指令するフィードフォワード制御であり、
前記ディザ制御手段は、前記外乱要因測定手段の測定値を使って得たデータを用いて前記ディザ振幅値を決めている請求項１又は請求項２に記載の産業車両における電磁弁のディザ制御装置。
【請求項７】
前記ディザ制御手段は、前記ソレノイドに流れる電流に影響を与える外乱要因が基準状態にあるとの仮定の下で前記所望する電流振幅が得られるように予めディザ振幅基準値が設定されており、前記ディザ振幅値を決めるために前記測定値を使って得たデータと、前記外乱要因が基準状態にあるとの仮定の下で決まるそのデータと同じ次元の基準データとの比に応じて前記ディザ振幅基準値を補正して前記ディザ振幅値を決めている請求項１〜請求項６のいずれか一項に記載の産業車両における電磁弁のディザ制御装置。
【請求項８】
前記ディザ制御手段は、前記ソレノイドに流れる電流に影響を与える外乱要因が基準状態にあるとの仮定の下で前記所望する電流振幅が得られるように予めディザ振幅基準値が設定されており、前記目標電流値と前記電流指令値とを前記外乱要因が基準状態にあるとの仮定の下で同じ次元で比較した比に応じて前記ディザ振幅基準値を補正して前記ディザ振幅値を決めている請求項３〜請求項５のいずれか一項に記載の産業車両における電磁弁のディザ制御装置。
【請求項９】
前記制御手段は積分型制御のフィードバック制御を行い、前記ディザ制御手段は、前記ディザ振幅基準値を補正して得られた前記ディザ振幅値が所定範囲内にあるか否かを判定するための判定手段と、該判定手段により該ディザ振幅値が所定範囲内にないと判定された際には、ディザ振幅値を所定範囲の上限値または下限値に制限する振幅値制限手段とを備えている請求項８に記載の産業車両における電磁弁のディザ制御装置。
【請求項１０】
前記ディザ制御手段は、前記ソレノイドに流れる電流に影響を与える外乱要因が基準状態にあるとの仮定の下で前記所望する電流振幅が得られるように予めディザ振幅基準値が設定されており、前記電流指令値と前記電流検出値とを前記外乱要因が基準状態にあるとの仮定の下で同じ次元で比較した比に応じて前記ディザ振幅基準値を補正して前記ディザ振幅値を決めている請求項３〜請求項５のいずれか一項に記載の産業車両における電磁弁のディザ制御装置。
【請求項１１】
前記制御手段が前記電流検出手段から入力する検出信号は所定周期で振幅する信号であって、前記制御手段は該検出信号に対して所定周期の自然数倍の一定時間当たりに、１周期につき２回以上サンプリングされるよう合計偶数回のサンプリングを行い、この偶数個のサンプリング値を平均して前記電流検出値を算出する検出値算出手段を備えている請求項１〜請求項１０のいずれか一項に記載の産業車両における電磁弁のディザ制御装置。
【請求項１２】
請求項１〜請求項１１のいずれか一項に記載の前記電磁弁のディザ制御装置を備えている産業車両。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は産業車両に設けられた荷役機器を駆動する油圧シリンダの油路に設けた電磁弁の応答性を高めるためにスプールを微小振動させるディザ制御を行う産業車両における電磁弁のディザ制御装置及び産業車両に関するものである。
【０００２】
【従来の技術】
従来、フォークリフトに備えられたリフトシリンダやティルトシリンダの油路上に設けられた電磁弁をコントローラに制御させることで、作業者による荷役レバーの操作に独立して、フォークを所定状態で停止させる停止制御や、マストの速度制御を行う装置が開示されている（例えば特開平７−６１７９２号公報等）。
【０００３】
コントローラによる電磁弁の電流値制御は通常次のように行われていた。コントローラは車両に設けられた各種センサからの検出値から決まる電磁弁の開度に応じた電流指令値（目標電流値）をソレノイド駆動回路に指令する。バッテリと電磁弁との間に設けられたソレノイド駆動回路内のスイッチング素子が電流指令値に基づいてオンオフすることで、電磁弁のソレノイドに流れる電流が制御される。
【０００４】
ところで、バッテリ電圧は満充電のときと空充電に近くなったときとで大きく変動する。また、電磁弁のソレノイド抵抗は、油温上昇や電流の通電による発熱などによるソレノイド温度の上昇に伴い変動する。これらの変動が外乱要因になって、スイッチング素子が電流指令値通りにオンオフしても、ソレノイドに流れる電流が目標値からずれる事態が起こり得る。電流値の目標値からのずれは電磁弁の開度のばらつきをもたらし、荷役機器に動作上の不具合をもたらす原因となる。このため、従来、電磁弁の電流値制御はフィードバック制御により行われていた。
【０００５】
従来は、フィードバック制御をハードウェアで行っていた。ハードウェアで行う場合、三角波発生回路、デューティ発生回路、電流検出回路、フィードバック回路などの多くの回路が必要であった。すなわち、三角波信号を生成するための三角波発生回路。ＣＰＵから入力した目標電流値に相当する指令値（電圧信号Ｖ１）と三角波信号とを入力して指令値に応じたデューティ値（％）のＰＷＭ信号を生成するためのデューティ発生回路。電磁弁のソレノイドに流れる電流を検出するための電流検出回路。さらにＣＰＵが出力した指令値（電圧信号Ｖ１）と、電流検出回路からの電流検出値（電圧信号Ｖ２）との差に比例した信号（電圧；ａ（Ｖ１−Ｖ２））を出力して、デューティ発生回路に入力される入力電圧を電流検出値に応じて補正するためのフィードバック回路である。
【０００６】
つまり、ＣＰＵはソレノイドに流す必要がある目標電流値に相当する指令値を指令すれば、あとはハードウェアを構成する各回路がその指令値通りの電流がソレノイドに流れるように、スイッチング素子に入力されるＰＷＭ信号のデューティ値（％）を補正するようになっていた。こうしてバッテリ電圧やソレノイド抵抗の変動などの外乱要因があっても、ソレノイドに目標電流値通りの電流が流れる。
【０００７】
しかしながら、フィードバック制御をハードウェアで行う構成では、前述した多くの回路が必要なため、複雑な回路構成になり、しかも電子部品の部品点数が多くなるという問題があった。また、このことが装置コストを引き上げる原因にもなっていた。
【０００８】
【発明が解決しようとする課題】
そこで、本願出願人は、ハードウェアの回路数を低減してその簡素化を図るため、フィードバック制御をＣＰＵによりソフトウェアで行うことを提案している。つまり、ソレノイド電流を検出する電流検出回路からの電流検出値をＣＰＵに入力する。そして、ＣＰＵがＰＷＭ信号のデューティ値（％）を決めるために指令しているデューティ出力値Ｄoutを、電流検出値が目標電流値に近づくようにプログラムデータに基づいて補正する方法である。
【０００９】
ところで、電磁弁の応答性を上げるための制御として、スプールを微小振動させるディザ制御が一般に行われている。ハードウェアによるフィードバック制御では、ＣＰＵがスプールを微小振動させられるような波形を描くように電流指令値を指令すれば、あとはハードウェアが電流指令値通りの電流が流れるように電流指令値を補正してくれるので、スプールの微小な振幅は外乱要因によらずいつも一定に保持される。制御としては目標電流値にディザ振幅分の補正を加えることでディザ制御の波形に乗るような電流指令値を割込処理で複数点決めてやり、これを順次指令する。
【００１０】
ソフトウェアによるフィードバック制御でも、この方法を踏襲し、電流指令値にディザ振幅分の補正を加えることでディザ制御の波形に乗るような電流指令値を割込処理で複数点決めてやり、これを順次指令することでディザ制御を行うことはできる。
【００１１】
しかし、ディザ振幅分の補正量であるディザ振幅値をハードウェアでのフィードバック制御の場合と同様に一定値とすると、前述したバッテリ電圧やソレノイド抵抗値の変動などの外乱要因によって、ソレノイドに流れる電流の振幅がばらつくことになる。
【００１２】
すなわち、図２１に示すように、バッテリ電圧大，ソレノイド抵抗小になるに連れてＡ線に示すようにソレノイド電流の振幅が所望する電流波形Ｉの振幅よりも大きくなり過ぎ、スプールが過大に振幅するようになる。また、バッテリ電圧小，ソレノイド抵抗大になるに連れてＢ線に示すようにソレノイド電流の振幅が所望する電流波形Ｉの振幅よりも小さくなり過ぎ、スプールの振幅が過小になる。
【００１３】
スプールの振幅が大きくなり過ぎると、閉弁すべきときに電磁弁が僅かに開弁してしまう不具合を招いたり、ディザ制御による電磁弁の開度の変動が荷役機器の動作に影響するほどになり、荷役機器が動作中に微小な振動を起こすなどの不具合が起こりかねない。また、スプールの微小な振幅が小さくなり過ぎると、スプールの始動時の摩擦抵抗の低減効果が不十分となって電磁弁の応答性が低下し、ディザ制御を採用した意味があまりなくなってしまう。
【００１４】
本発明は前記の問題点に鑑みてなされたものであって、その第１の目的は、産業車両に設けられた電磁弁の電流値制御をソフトウェアで行う構成において、ディザ制御により微小振動する電磁弁のスプールの振幅を、電源電圧やソレノイド抵抗の変動などの外乱要因によらずいつも所望する一定に確保し、スプールの振幅のばらつきに起因する不具合を防止できる産業車両における電磁弁のディザ制御装置及び産業車両を提供することにある。第２の目的は、フィードバック制御の際に使用するデータをディザ制御に利用できるようにすることにある。第３の目的は、フィードバック制御で使用する電流検出値を利用し、少なくとも電流が定常状態にあるときにスプールの振幅を適正に得ることにある。第４の目的は、フィードバック制御で使用する外乱要因の測定値を利用し、電流の過渡域と定常域ともに、スプールの振幅を適正に得ることにある。第５の目的は、外乱要因の測定値を使用するフィードフォワード制御であっても、電流の過渡域と定常域ともに、スプールの振幅を適正に得ることにある。第６の目的は、簡単な演算でディザ振幅値を決められることにある。第７の目的は、目標電流値と電流指令値を使った簡単な演算でディザ振幅値を決められることにある。第８の目的は、目標電流値と電流指令値を使ってディザ振幅値を決める場合、電流の過渡域にスプールの振幅が異常な値になることを回避することにある。第９の目的は、電流指令値と電流検出値を使った簡単な演算でディザ振幅値を決められることにある。第１０目的は、電流検出値をほぼリアルタイムに得ることで、制御の応答性を損なわないことにある。
【００１５】
【課題を解決するための手段】
前記第１の目的を達成するため請求項１に記載の発明では、荷役機器を駆動する油圧シリンダの油路上に設けられた電磁弁と、前記電磁弁のソレノイドに流すべき目標電流値を記憶する記憶手段と、前記ソレノイドに流れる電流を目標電流値とするための制御に使うデータを得るのに必要な測定値を測定するための測定手段と、前記ソレノイドに流れる電流を制御するための電流指令値を、その電流を目標電流値に近づけ得るように前記測定手段の測定値から得た前記データを使って補正する補正処理をプログラムデータに基づいて実行する制御手段と、前記電磁弁のスプールを微小振動させるディザ制御のため、前記電流指令値に加える振幅分のディザ振幅値を、所望する電流振幅が得られるように前記測定値を使って得たデータを用いて決めるとともに、該ディザ振幅値を前記電流指令値に加えたディザ指令値を指令するディザ制御手段とを備えている。
【００１６】
請求項２に記載の発明では、請求項１に記載の発明において、前記ディザ制御手段は、前記制御手段が補正処理を１回実行する毎に、前記電流指令値を中心に所定周期で振幅する波形上の値をとるようにその波形の１周期のうちに前記ディザ指令値を割込処理で複数決めて指令することをその要旨とする。
【００１７】
第２の目的を達成するため請求項３に記載の発明では、請求項２に記載の発明において、前記電磁弁のソレノイドに流れる電流を検出する電流検出手段が設けられ、前記制御手段が実行する前記補正処理は、前記電流検出手段の検出信号から定まる電流検出値と前記目標電流値との差が許容範囲内に収まるように前記電流指令値を補正するフィードバック制御であり、前記ディザ制御手段は、該フィードバック制御で使用した前記測定値を使って得たデータを用いて前記ディザ振幅値を決めていることをその要旨とする。
【００１８】
第３の目的を達成するため請求項４に記載の発明では、請求項３に記載の発明において、前記測定手段は前記電流検出手段であり、前記ディザ制御手段は、前記制御手段がフィードバック制御で使用した前記電流検出値を使って得たデータを用いて前記ディザ振幅値を決めていることをその要旨とする。
【００１９】
第４の目的を達成するため請求項５に記載の発明では、請求項３に記載の発明において、前記測定手段は前記ソレノイドに流れる電流に影響を与える外乱要因を測定する外乱要因測定手段であり、前記ディザ制御手段は、前記制御手段がフィードバック制御で使用した前記外乱要因の測定値を使って得たデータを用いて前記ディザ振幅値を決めていることをその要旨とする。
【００２０】
第５の目的を達成するため請求項６に記載の発明では、請求項１又は請求項２に記載の発明において、前記測定手段は前記ソレノイドに流れる電流に影響を与える外乱要因を測定する外乱要因測定手段であり、前記制御手段が実行する前記補正処理は、外乱要因測定手段の測定値を用いて外乱要因を考慮して目標電流値から決めた電流指令値を指令するフィードフォワード制御であり、前記ディザ制御手段は、前記外乱要因測定手段の測定値を使って得たデータを用いて前記ディザ振幅値を決めていることをその要旨とする。
【００２１】
第６の目的を達成するため請求項７に記載の発明では、請求項１〜請求項６のいずれか一項に記載の発明において、前記ディザ制御手段は、前記ソレノイドに流れる電流に影響を与える外乱要因が基準状態にあるとの仮定の下で前記所望する電流振幅が得られるように予めディザ振幅基準値が設定されており、前記ディザ振幅値を決めるために前記測定値を使って得たデータと、前記外乱要因が基準状態にあるとの仮定の下で決まるそのデータと同じ次元の基準データとの比に応じて前記ディザ振幅基準値を補正して前記ディザ振幅値を決めていることをその要旨とする。
【００２２】
第７の目的を達成するため請求項８に記載の発明では、請求項３〜請求項５のいずれか一項に記載の発明において、前記ディザ制御手段は、前記ソレノイドに流れる電流に影響を与える外乱要因が基準状態にあるとの仮定の下で前記所望する電流振幅が得られるように予めディザ振幅基準値が設定されており、前記目標電流値と前記電流指令値とを前記外乱要因が基準状態にあるとの仮定の下で同じ次元で比較した比に応じて前記ディザ振幅基準値を補正して前記ディザ振幅値を決めていることをその要旨とする。
【００２３】
第８の目的を達成するため請求項９に記載の発明では、請求項８に記載の発明において、前記制御手段は積分型制御のフィードバック制御を行い、前記ディザ制御手段は、前記ディザ振幅基準値を補正して得られた前記ディザ振幅値が所定範囲内にあるか否かを判定するための判定手段と、該判定手段により該ディザ振幅値が所定範囲内にないと判定された際には、ディザ振幅値を所定範囲の上限値または下限値に制限する振幅値制限手段とを備えている。
【００２４】
第９の目的を達成するため請求項１０に記載の発明では、請求項３〜請求項５のいずれか一項に記載の発明において、前記ディザ制御手段は、前記ソレノイドに流れる電流に影響を与える外乱要因が基準状態にあるとの仮定の下で前記所望する電流振幅が得られるように予めディザ振幅基準値が設定されており、前記電流指令値と前記電流検出値とを前記外乱要因が基準状態にあるとの仮定の下で同じ次元で比較した比に応じて前記ディザ振幅基準値を補正して前記ディザ振幅値を決めていることをその要旨とする。
【００２５】
第１０の目的を達成するため請求項１１に記載の発明では、請求項１〜請求項１０のいずれか一項に記載の発明において、前記制御手段が前記電流検出手段から入力する検出信号は所定周期で振幅する信号であって、前記制御手段は該検出信号に対して所定周期の自然数倍の一定時間当たりに、１周期につき２回以上サンプリングされるよう合計偶数回のサンプリングを行い、この偶数個のサンプリング値を平均して前記電流検出値を算出する検出値算出手段を備えている。
【００２６】
請求項１２に記載の発明では、請求項１〜請求項１１のいずれか一項に記載の発明において、産業車両には請求項１〜請求項１１のいずれか一項に記載の前記電磁弁のディザ制御装置が備えられている。
【００２７】
（作用）
従って、請求項１に記載の発明によれば、荷役機器を駆動する油圧シリンダの油路上に設けられた電磁弁が制御手段により電流値制御されることで、荷役機器の速度制御や停止制御などの制御が行われる。ソレノイドに流れる電流を目標電流値とするための制御に必要なデータが測定手段により測定される。制御手段はソレノイドに流れる電流を制御するための電流指令値を、測定手段が測定した測定値から得たデータを使って補正する補正処理をプログラムデータに基づいて実行する。ディザ制御手段は、測定手段の測定値を使って得たデータを用いてディザ振幅値を決め、制御手段が決めた電流指令値にディザ振幅値を加えて決まるディザ指令値を指令する。このため、電源電圧やソレノイド抵抗の変動などの外乱要因に拘わらず、ソレノイドには所望する電流振幅で振幅する目標電流値通りの電流が流れる。この結果、スプールがいつも所望する振幅で微小振動することになる。従って、スプールの振幅が過大になって閉弁すべきときに僅かに開弁してしまったり、荷役機器の振動となって現れるなどの不具合の発生や、スプールの振幅が過小になることによる電磁弁の応答性の低下が防止される。
【００２８】
請求項２に記載の発明によれば、ディザ制御手段は、制御手段が補正処理を１回実行する毎に、制御手段が決めた電流指令値を中心に所定周期で振幅する波形上の値をとるようにディザ指令値をその波形の１周期に複数回の割込処理で決めて指令する。この結果、ソレノイドに流れる電流は所定周期の所望する電流振幅で振幅する。
【００２９】
請求項３に記載の発明によれば、電磁弁のソレノイドに流れる電流が電流検出手段により検出される。制御手段は電流検出手段の検出信号から定まる電流検出値と目標電流値との差が許容範囲内に収まるように電流指令値を補正するフィードバック制御を実行する。ディザ制御手段は、フィードバック制御で使用した測定値を使って得たデータを用いてディザ振幅値を決める。
【００３０】
請求項４に記載の発明によれば、制御手段がフィードバック制御で使用した電流検出値を使って得たデータを用いてディザ振幅値がディザ制御手段により決められる。
【００３１】
請求項５に記載の発明によれば、ソレノイドに流れる電流に影響を与える外乱要因が外乱要因測定手段により測定される。制御手段がフィードバック制御で使用した外乱要因の測定値を使って得たデータを用いてディザ振幅値がディザ制御手段により決められる。
【００３２】
請求項６に記載の発明によれば、ソレノイドに流れる電流に影響を与える外乱要因が外乱要因測定手段により測定される。制御手段は外乱要因測定手段の測定値を用いることにより外乱要因が考慮された電流指令値を目標電流値から決めて指令するフィードフォワード制御を実行する。外乱要因測定手段の測定値を使って得たデータを用いてディザ振幅値がディザ制御手段により決められる。
【００３３】
請求項７に記載の発明によれば、外乱要因が基準状態にあるとの仮定の下で所望する電流振幅が得られるようなディザ振幅基準値が予め設定される。ディザ制御手段は、測定手段の測定値を使って得たデータと、外乱要因が基準状態にあるとの仮定の下で決まるそのデータと同じ次元の基準データとの比に応じて、ディザ振幅基準値を補正することでディザ振幅値を決める。
【００３４】
請求項８に記載の発明によれば、外乱要因が基準状態にあるとの仮定の下で所望する電流振幅が得られるようなディザ振幅基準値が予め設定される。ディザ制御手段は、外乱要因が基準状態にあるとの仮定の下で、制御手段がフィードバック制御で使用した目標電流値と電流指令値とを同じ次元で比較した比に応じて、ディザ振幅基準値を補正することでディザ振幅値を決める。
【００３５】
請求項９に記載の発明によれば、制御手段は積分型制御のフィードバック制御を実行する。ディザ制御手段は、ディザ振幅基準値を目標電流値と電流指令値との同じ次元での比に応じて補正して決めたディザ振幅値が所定範囲内にあるか否かを判定手段により判定する。積分型制御のフィードバック制御では電流が目標電流値に達するまでの過渡域において、電流指令値が目標電流値よりも小さめの値に決まるため、目標電流値と電流指令値との同じ次元での比が外乱要因の影響を正確に反映しなくなる。しかし、判定手段によりそのディザ振幅値が所定範囲内にない判定されれば、ディザ振幅値が所定範囲内に収まるように上限値または下限値に制限されるので、電流が目標電流値に安定するまで過渡域においても、スプールの振幅が異常に過大もしくは過小になることが回避される。
【００３６】
請求項１０に記載の発明によれば、外乱要因が基準状態にあるとの仮定の下で所望する電流振幅が得られるようなディザ振幅基準値が予め設定される。ディザ制御手段は、制御手段がフィードバック制御で使用した電流指令値と電流検出値とを外乱要因が基準状態にあるとの仮定の下で同じ次元で比較した比に応じて、ディザ振幅基準値を補正することでディザ振幅値を決める。
【００３７】
請求項１１に記載の発明によれば、制御手段は所定周期で振幅する検出信号を電流検出手段から入力する。制御手段に備えられた検出値算出手段は、検出信号の周期の自然数倍の一定時間当たりに、その１周期につき２回以上サンプリングするよう合計偶数回のサンプリングを行い、この偶数個のサンプリング値を平均して電流検出値を算出する。
【００３８】
請求項１２に記載の発明によれば、産業車両には、請求項１〜請求項１１のいずれか一項に記載のディザ制御装置が備えられているので、請求項１〜請求項１１のいずれか一項に記載の発明と同様の作用が得られる。
【００３９】
【発明の実施の形態】
（第１実施形態）
以下、本発明を具体化した第１実施形態を図１〜図１２に従って説明する。
【００４０】
図１１に示すように、産業車両としてのフォークリフト１には、荷役機器としてのフォーク２を昇降させるためのリフトシリンダ３と、フォーク２が昇降可能に支持されるマスト４を傾動させるための油圧シリンダとしてのティルトシリンダ５が設けられている。運転室６にはリフトシリンダ３を伸縮駆動させるために操作するリフトレバー７と、ティルトシリンダ５を伸縮駆動させるために操作するティルトレバー８が装備されている。フォークリフト１の車体１ａには、リフトシリンダ３及びティルトシリンダ５を駆動するための図１２に示す油圧回路が設けられている。
【００４１】
油圧回路は次のように構成される。
図１２に示すように、オイルタンク１０から作動油を汲み上げて吐出する油圧ポンプ１１は、エンジン１２（図１１に示す）により駆動される。油圧ポンプ１１から管路１３を通って吐出された作動油は、フローディバイダ１４で所定圧以上に昇圧されてから、荷役系の油圧回路と、ステアリング系のステアリングバルブ１５とに分流される。
【００４２】
フローディバイダ１４から荷役系に分流された圧油が通る作動油供給用管路１６は、オイルタンク１０に戻る戻り管路１７に接続されており、リフト用手動切換弁１８とティルト用手動切換弁１９は、この作動油供給用管路１６上に直列に配設されている。
【００４３】
リフト用手動切換弁１８は３位置切換弁であり、リフトレバー７を上昇・中立・下降操作することによりａ，ｂ，ｃの３つの状態に切換可能となっている。リフト用手動切換弁１８が３つの状態に切換えられることで、リフトシリンダ３のボトム室３ａに繋がる管路２０と、分岐管路１６ａ及び戻り管路１７との間が連通・遮断状態に切換えられる。
【００４４】
油圧ポンプ１１の吐出圧は管路１３に接続された圧力伝達管路２１に伝達されるようになっている。圧力伝達管路２１上には減圧弁２２が、その下流側における油圧を所定のパイロット設定圧に調整するために設けられている。
【００４５】
ティルト用手動切換弁１９は３位置切換弁であり、ティルトレバー８を後傾・中立・前傾操作することによりａ，ｂ，ｃの３つの状態に切換可能となっている。ティルト用手動切換弁１９が３つの状態に切換えられることで、ティルトシリンダ５のロッド室５ａに繋がる管路２３ａとボトム室５ｂに繋がる管路２３ｂが、分岐管路１６ｂと排出管路２４との間で連通・遮断状態に切換えられる。ティルトシリンダ５は、ティルトレバー８を後傾操作した（ａ状態）ときに収縮駆動し、ティルトレバー８を前傾操作した（ｃ状態）ときに伸長駆動する。
【００４６】
本実施形態では、ティルトレバー８の操作に独立してマスト４の停止制御や速度制御を行うため、ティルト系の油路にティルト用手動切換弁１９と直列に配置されるように管路２３ａ上に電磁弁２５を設けている。電磁弁２５は、管路２３ａ上に設けられた制御弁２６と、制御弁２６のスプールを駆動するパイロット圧を調節するために圧力伝達管路２１上に設けられた比例ソレノイド弁２７とから構成される。ティルトシリンダ５は、電磁弁２５のソレノイド２５ａに流れる電流の電流値制御により速度制御及び停止制御される。
【００４７】
リリーフ弁２８は、リフト用手動切換弁１８がａ状態（上昇位置）に切換えられた際に、リフト系の油路が所定圧（リフト設定圧）になるように管路２９を介して余分な作動油を逃がすためのものである。また、リリーフ弁３０は、ティルト用手動切換弁１９がａ状態（後傾位置）とｃ状態（前傾位置）とのいずれかに切換えられた際に、ティルト系の油路が所定圧（ティルト設定圧）になるように管路３１を介して余分な作動油を逃がすためのものである。また、チェック弁３２，３３，３４は作動油の逆流を阻止するためのもの、フィルタ３５は電磁弁２５に油中のゴミが流れないように除去するためのものである。なお、管路１６ｂ，２３ａ，２３ｂ，２４によりティルト系の油路が構成される。
【００４８】
本実施形態では、図８に示すコントローラ４０が電磁弁２５を電流値制御してその開度を制御することで、マスト４の速度制御や停止制御などのティルト制御が行われる。フォークリフト１にはティルト制御を行うために必要な制御情報を検出値として得るためのセンサ類として、揚高センサ４１，ティルト角センサ４２，圧力センサ４３，前傾スイッチ４４，後傾スイッチ４５及び操作スイッチ４６が設けられている。なお、これらセンサ類４１〜４６により検出手段が構成される。
【００４９】
揚高センサ４１はアウタマスト４ａの上部に設けられ、フォーク２が所定高さ以上にある高揚高のときにオンし、フォーク２が所定高さ未満の低揚高のときにオフするようになっている。揚高センサ４１は例えば近接センサからなる。また、ティルト角センサ４２はティルトシリンダ５の姿勢角を検出してマスト４の傾斜角（ティルト角）を間接的に検出するためのもので、マスト４の傾斜角に応じた検出信号を出力するようになっている。ティルト角センサ４２は例えばポテンショメータからなる。また、圧力センサ４３はリフトシリンダ３のボトム室３ａの油圧を検出するためのもので、フォーク２に積載された荷の重量（積載荷重）に応じた検出信号を出力する。
【００５０】
前傾スイッチ４４はティルトレバー８が前傾操作されたことを検知するためのもの、後傾スイッチ４５はティルトレバー８が後傾操作されたことを検知するためのものである。両スイッチ４４，４５は例えばマイクロスイッチからなる。また、操作スイッチ４６はティルトレバー８のノブ８ａに設けられ、フォーク２を水平姿勢で自動停止させたいときに操作者がティルトレバー８の操作の際に操作するためのものである。
【００５１】
次に、フォークリフト１に備えられたティルト制御装置の電気的構成を図６，図８に基づいて説明する。
コントローラ４０は、マイクロコンピュータ５０、ソレノイド駆動回路５１、電流検出回路５２及びローパスフィルタ（ＲＣローパスフィルタ）５３を備えている。マイクロコンピュータ５０は、制御手段及びディザ制御手段を構成するとともに判定手段、振幅値制限手段及び検出値算出手段としての中央処理装置（以下ＣＰＵという）５４、制御手段及びディザ制御手段を構成するとともに記憶手段としての読み出し専用メモリ（ＲＯＭ）５５、ＥＥＰＲＯＭ（Ｅlectorical Ｅrasable Ｐrogrammable ＲＯＭ）５６、読出し及び書替え可能なメモリ（ＲＡＭ）５７を備える。なお、電流検出回路５２及びローパスフィルタ５３により測定手段及び電流検出手段が構成される
ＣＰＵ５４には、揚高センサ４１、前傾スイッチ４４、後傾スイッチ４５及び操作スイッチ４６が入力インタフェイス（図示せず）を介して接続されるとともに、ティルト角センサ４２及び圧力センサ４３がＡ／Ｄ変換回路（図示せず）及び入力インタフェイスを介して接続されている。ＣＰＵ５４に出力インタフェイス（図示せず）を介して接続されたソレノイド駆動回路５１には、電源としてのバッテリ５８のプラス端子が接続されるとともに、ソレノイド２５ａの第１端部が接続されている。ソレノイド２５ａの第２端部は電流検出回路５２に接続されており、ソレノイド２５ａを流れた電流が電流検出回路５２により検出されるようになっている。電流検出回路５２が検出した検出信号（検出電圧）Ｓ１を入力するローパスフィルタ５３から出力される検出信号Ｓ２がＣＰＵ５４に入力される。
【００５２】
図６に示すように、ＣＰＵ５４はＰＷＭポート５９を備える。ＰＷＭポート５９は、ＣＰＵ５４が実行する後述する電流値制御処理（図１）及びディザ制御処理（図２）で決定されたディザ指令値としてのデューティ出力値Ｄoutが書き込まれると、そのデューティ出力値Ｄoutをデューティ値（％）とする２ｋＨｚのＰＷＭ信号を生成して出力する（但し、Ｄout値は実際にはビットデータ）。
【００５３】
ソレノイド駆動回路５１には、ＰＷＭ信号がベースに入力されるように接続されたトランジスタ６０が内蔵されている。このトランジスタ６０はコレクタがバッテリ５８のプラス端子に接続され、そのエミッタがソレノイド２５ａの第１端部に接続されている。トランジスタ６０がＰＷＭ信号に基づいてオンオフ動作することで、ソレノイド２５ａに流れる電流はデューティ制御される。
【００５４】
電流検出回路５２は、ソレノイド２５ａと直列に接続された抵抗Ｒ４を備え、この抵抗Ｒ４の両端に印加された電圧を増幅器６１を介して増幅した検出信号Ｓ１を出力する。ローパスフィルタ５３は、検出信号Ｓ１から２ｋＨｚのリプルを取り除くためのものである。その帯域制限周波数（カットオフ周波数）は例えば５００Ｈｚに設定されている。ＣＰＵ５４は検出信号Ｓ２をＡ／Ｄポート６２から入力する。
【００５５】
また、ＣＰＵ５４にはカウンタ６３が備えられている。カウンタ６３は、後述するディザ制御処理が割込処理で実行される際の割込時間の計時のために使用されるものである。
【００５６】
ＲＯＭ５５には、ＰＷＭ信号のデューティ値（％）を決めるための電流指令値としてのデューティ出力中心値Ｄcentを決定するための図１に示す電流値制御処理のプログラムデータが記憶されている。電流値制御処理のプログラムデータは、検出信号Ｓ２から定まる後述する電流検出値を目標電流値に近づけるべくデューティ出力中心値Ｄcentを補正するフィードバック制御を行うためのもので、ＣＰＵ５４により１０ミリ秒毎に実行されるものである。
【００５７】
本実施形態では、電磁弁２５のスプールを微小振動させてその動作開始時の摩擦抵抗を小さくしてその応答性を向上させるディザ制御を採用している。ソレノイド２５ａに流れる電流をディザ制御のために例えば１００Ｈｚで微小振幅させられるデューティ出力値Ｄout（％）の指令する。このためにデューティ出力値Ｄoutを、１０ミリ秒毎に決まるデューティ出力中心値Ｄcentからこの値を中心に１００Ｈｚで振幅するサイン波上の値として８回／１０ミリ秒の割込処理で決めるようにしている。ＲＯＭ５５にはこの割込処理を実行するための図２に示すディザ制御処理のプログラムデータが記憶されている。ＣＰＵ５４によるＰＷＭポート５９へのデューティ出力値Ｄoutの書き込みが８回／１０ミリ秒で行われることで、ＰＷＭポート５９からはデューティ出力中心値Ｄcentを中心とする１００Ｈｚのサイン波上の値に相当するデューティ値（％）のＰＷＭ信号が出力されることになる。
【００５８】
本実施形態では、デューティ出力値Ｄoutを、デューティ出力中心値Ｄcentにディザ振幅分の補正を加えることで求めている。つまり、式  Ｄout＝Ｄcent＋Ｄdizz  により計算する。ここで、Ｄdizzはディザ制御のための振幅分の補正量に相当するサイン波上の値をとるディザ振幅値である。Ｄdizz値はサイン波上の値をとることから割込処理が８回のうち何回目であるかによって変化する。ＲＯＭ５５にはこのディザ振幅値Ｄdizzを決めるために図３に示すディザ振幅基準値Ｄ［cnt］のデータが記憶されている。このデータは、バッテリ電圧ＶBが基準電圧Ｖbase（例えば満充電時の９０％）、かつ電磁弁２５のソレノイド抵抗Ｒsolが基準温度のときの基準抵抗値Ｒbase（例えば常温時の抵抗値）となる基準状態にあるとの仮定の下で設定されている。ディザ振幅基準値Ｄ［cnt］は、ディザ制御に必要な電流振幅Ｉdizz（図４，図５を参照）を得るのに必要なディザ振幅値（％）を、割込回数を計数するカウント値「cnt」に対して設定したものである。そのため、バッテリ電圧ＶBおよびソレノイド抵抗値Ｒsolが基準状態からずれた状態のときは、ディザ振幅基準値Ｄ［cnt］を適宜補正してディザ振幅値Ｄdizzを決めるようにしている。
【００５９】
ディザ振幅基準値Ｄ［cnt］は１周期当たりの割込回数を「ｎ」とすれば、一般にＤ［cnt］＝sin（（cnt／ｎ）・２π）（cnt＝０，１，２，…，ｎ）で表わされる。本実施形態では１周期当たりの割込回数ｎ＝８を採用しており、Ｄ［０］＝０，Ｄ［１］＝Ｄmax／√２，Ｄ［２］＝Ｄmax，Ｄ［３］＝Ｄmax／√２，Ｄ［４］＝０，Ｄ［５］＝−Ｄmax／√２，Ｄ［６］＝−Ｄmax，Ｄ［７］＝−Ｄmax／√２をデータとして有している。ここで、Ｄmaxはデューティ値の振幅である。
【００６０】
図５は目標電流値Ｉaimとデューティ値（％）との関係を示すグラフである。このグラフで基準線Ｌは、基準状態（バッテリ電圧ＶB＝Ｖbaseかつソレノイド抵抗Ｒsol＝Ｒbase）を仮定したとき、目標電流値Ｉaimの電流を流すために必要なデューティ出力中心値Ｄcent（％）をプロットしたラインである。基準状態の下ではディザ制御に必要な電流振幅Ｉdizzを得るために必要なデューティ値の振幅はこの基準線ＬからわかるようにＤmax（％）になる。
【００６１】
図５のグラフに示すように、目標電流値Ｉaimを得るために必要なデューティ出力中心値Ｄcentは、バッテリ電圧小、ソレノイド抵抗大になるに連れて基準線Ｌに対して傾きが大きくなる方向にシフトし、バッテリ電圧大、ソレノイド抵抗小になるに連れて基準線Ｌに対して傾きが小さくなる方向にシフトする。このため、電流振幅Ｉdizzを得るために必要な振幅分のデューティ値（％）は、ラインＤcentの傾きの変化に応じて変化することになる。図２のディザ制御処理では、バッテリ電圧ＶBやソレノイド抵抗Ｒsolの基準状態からの変動の程度に応じ、適切なディザ振幅値Ｄdizzを得られるように、ディザ振幅基準値Ｄ［cnt］を補正する処理を行う。
【００６２】
本実施形態ではディザ制御のため、電流検出回路５２からは図７（ａ）に示すように２ｋＨｚと１００Ｈｚのリプルが乗った検出信号Ｓ１が出力される。ローパスフィルタ５３からは、検出信号Ｓ１から２ｋＨｚのリプルだけが取り除かれた図７（ｂ）に示す１００Ｈｚのサイン波を描く検出信号Ｓ２が出力される。ＣＰＵ５４はＡ／Ｄポート６３から入力した検出信号Ｓ２から１００Ｈｚのリプルをカットするためのフィルタ処理を行う。すなわち、ＣＰＵ５４は図７（ｃ）に示すように検出信号Ｓ２の１サイクルに偶数回（本実施形態では同図の黒点部の４回）のサンプリングを割込処理で実行し、１サイクル分の偶数個のサンプリング値を得る度にこれを平均して検出信号Ｓ２の振幅中心を計算し、これを電流検出値Ｉdetとする。なお、検出信号Ｓ２の１サイクル当たりのサンプリング回数は、２回以上の偶数回であれば足りる。また、ローパスフィルタ５３において、１００Ｈｚのリプルを取り除かないのは、ローパスフィルタ５３を通過する際の信号の遅延を極力なくし、電流検出値Ｉdetを位相遅れのできるだけ少ないリアルタイムに近い状態で得るためである。
【００６３】
次に電流値制御処理及びディザ制御処理の各プログラムデータについて説明する。まず図１を用いて電流値制御処理について説明する。
ステップ１０は、必要なデータを読み込むためのデータ読込処理である。この処理では、目標電流値Ｉaim，電流検出値Ｉdet，前回のデューティ出力中心値Ｄcentを読み込む。ここで、目標電流値Ｉaimとは、ソレノイド２５ａに流すべき目標とする電流値であり、ＲＯＭ５５に記憶された後述するデータ等（例えば図９）を用いてセンサ類４１〜４６からの検出信号（検出値）に基づいて決まる値である。
【００６４】
ステップ２０は、目標電流値Ｉaimが「０アンペア」であるか否かを判断するための処理である。
ステップ３０は、目標電流値Ｉaimと電流検出値Ｉdetとの差ΔＩを求めるための処理である。差ΔＩは、式  ΔＩ＝Ｉaim−Ｉdet  により計算される。
【００６５】
ステップ４０は、デューティ出力中心値Ｄcentを計算する処理である。デューティ出力中心値Ｄcentは、前回のデューティ出力中心値Ｄcentを差ΔＩに比例する補正量ΔＩ・Ｇで補正して決められ、式  Ｄcent＝Ｄcent＋Ｇ・ΔＩ  により計算される。ここで、本実施形態におけるフィードバック制御は前回のデューティ出力中心値Ｄcentに対して差ΔＩに比例する補正量を加えていく積分型制御に相当する。ゲインＧは、基準状態（バッテリ電圧ＶB＝Ｖbaseかつソレノイド抵抗Ｒsol＝Ｒbase）を仮定して、この積分型制御の伝達関数からその制御系の安定性を考慮して決まるゲインである。制御系の安定性とは、電流の過渡域でのオーバシュートを抑制し、しかも高い即応性を確保し得る設計条件を満たすことである。
【００６６】
ステップ５０は、目標電流値Ｉaimが「０アンペア」のときに、デューティ出力中心値Ｄcent＝０（％）を設定する処理である。
ステップ６０は、次回の処理に使用するために今回（現在）のデューティ出力中心値Ｄcentを記憶（保存）する処理である。このデューティ出力中心値ＤcentはＲＡＭ５７の所定領域に記憶される。
【００６７】
次にディザ制御処理について図２に従って説明する。
ステップ２１０は、必要なデータを読み込むためのデータ読込処理である。この処理では、目標電流値Ｉaim，デューティ出力中心値Ｄcentを読み込む。
【００６８】
ステップ２２０は、目標電流値Ｉaimからデューティ基準値Ｄbaseを求める処理である。デューティ基準値Ｄbaseは、式  Ｄbase＝Ｋ・Ｉaim  より計算される。ここで、「Ｋ」は、基準状態の仮定の下で目標電流値Ｉaimをデューティ値（％）に換算するための変換係数であり、図５の基準線Ｌの傾きに相当する値である。
【００６９】
ステップ２３０は、目標電流値Ｉaimが「０アンペア」であるか否かを判断する処理である。
ステップ２４０〜ステップ２６０は、採用するディザ振幅基準値Ｄ［cnt］を決めるためのカウント値cntを決めるカウンタ処理である。ステップ２４０は、カウンタ６３のカウント値cntが「７」以上の値であるか否かを判断する処理である。ステップ２５０は、カウント値cntが「７」未満のときに、カウント値cntをインクリメントするための処理である。ステップ２６０は、カウント値cntが「７」以上の値であるときにカウント値cntを「０」にリセットする処理である。
【００７０】
ステップ２７０は、ディザ振幅値Ｄdizzを計算する処理である。ディザ振幅値Ｄdizzは、ディザ振幅基準値Ｄ［cnt］にデューティ出力中心値Ｄcentとデューティ基準値Ｄbaseとの比「Ｄcent／Ｄbase」を乗じて計算される（Ｄdizz＝Ｄ［cnt］・Ｄcent／Ｄbase）。
【００７１】
ステップ２８０〜ステップ３１０は、ディザ振幅値Ｄdizzを上限値と下限値との間に収めるための処理である。ステップ２８０及びステップ２９０は、ディザ振幅値Ｄdizzを上限値以下に収めるための処理、ステップ３００及びステップ３１０は、ディザ振幅値Ｄdizzを下限値以上に収めるための処理である。ディザ振幅値Ｄdizzの上限は、ステップ２８０においてディザ振幅値Ｄdizzがディザ基準値Ｄ［cnt］の２倍を超えれば、ステップ２９０において上限値「２Ｄ［cnt］」に決まる。ディザ振幅値Ｄdizzの下限は、ステップ３００においてディザ振幅値Ｄdizzがディザ基準値Ｄ［cnt］の２分の１未満になると、ステップ３１０において下限値「Ｄ［cnt］／２」に決まる。
【００７２】
ステップ３２０は、デューティ出力値Ｄoutを計算する処理である。デューティ出力値Ｄoutは、デューティ出力中心値Ｄcentにディザ振幅値Ｄdizzを加算して求められる（Ｄout＝Ｄcent＋Ｄdizz）。なお、デューティ出力値Ｄoutとして制御上不適切な値、すなわち０％〜１００％の範囲外の値が算出されたときは、１００％を超えるときには「１００％」に、０％未満のときには「０％」に修されるように設定されている。
【００７３】
ステップ３３０は、目標電流値Ｉaimが「０アンペア」のときにデューティ出力値Ｄout＝０に設定する処理である。
ステップ３４０は、デューティ出力値ＤoutをＰＷＭポート５９に書き込む処理である。この書き込み処理がディザ指令値の指令に相当する。
【００７４】
ＲＯＭ５５には、電流値制御処理及びディザ制御処理のプログラムデータの他、電磁弁２５の電流値制御によって行われるマスト４のティルト制御、すなわち前傾規制制御、自動水平停止制御、後傾速度制御、ショックレス制御等のためのプログラムデータが記憶されている。ＣＰＵ５４はセンサ類４１〜４６から入力する検出信号に基づいてティルト制御のうちどの制御を実行すべきであるかを判断し、これをティルトモードとして管理する。そして、現在のティルトモードに応じて目標電流値Ｉaimを決める。
【００７５】
次にティルト制御について説明する。
前傾規制制御とは、マスト４を前傾させた際に車両重心が前方に移り過ぎて後輪が浮き上がるなどの不安定状態を招かないように、マスト４の前傾角度をその時々の揚高と積載荷重に応じて規制する制御である。本実施形態では、揚高センサ４１がオンした高揚高のときに限りこの制御を実施し、その時の積載荷重Ｍに応じてマスト４の最大許容前傾角度θkを図１０に示すマップを用いて決めるようにしている。このマップはＥＥＰＲＯＭ５７に記憶されている。ティルトレバー８の前傾操作中であっても、高揚高で積載荷重がＭo以上ではマップから決まる最大許容前傾角度θkでマスト４は強制停止される。
【００７６】
自動水平停止制御とは、操作スイッチ４６を押しながらティルトレバー８が操作されたときに、ティルト角を監視し、フォーク２が水平姿勢となった時点でマスト４を自動停止させる停止制御である。また、後傾速度制御とは、マスト４の後傾速度を揚高に応じて段階的（本実施形態では２段階）に切換え、高揚高のときのマスト４の後傾速度を制限する速度制御である。
【００７７】
ショックレス制御とは、マスト４を停止制御のために停止させる際にその手前で予め減速させることで、マスト４の停止時の衝撃を緩和させる制御である。このショックレス制御は、前傾規制制御，自動水平停止制御，後傾マニュアル操作時におけるマスト停止時に実行される。ＥＥＰＲＯＭ５７にはショックレス制御のための必要データとして、マスト４の停止角（詳しくは前傾規制角θk，水平設定角，後傾エンド角）θsとその際の減速度とから減速開始角θoを決めるためのデータが記憶されている（図９を参照）。なお、ＥＥＰＲＯＭ５７のデータは、車両機種別、車両用途別、機器精度のばらつき等を考慮して、設定操作部（図示せず）を操作することで機台毎に個々に設定できるようになっている。
【００７８】
また、ＲＯＭ５５には、目標電流値Ｉaimが各種ティルトモードに応じて図９に示すように設定されている。ティルトレバー８の操作時にマスト４が定速で傾動するティルトモード（前傾マニュアル，後傾マニュアル，前傾自動水平，後傾自動水平）での目標電流値Ｉaimには、基本的に制御で通常使用される電流範囲の最大電流値Ｉnが設定されている。但し、高揚高後傾時のみは、マスト後傾速度を制限する必要から中間電流値Ｉmが設定されている。また、ショックレスモードでの目標電流値Ｉaimは、減速開始角度θoでの電流値（通常ＩnまたはＩm）から停止角θsで電磁弁２５を閉弁させる閉弁電流Ｉcloseに達するまで一定の傾きで減少するように設定されている。なお、ティルトレバー８を操作していないティルトオフモードと、マスト４の傾動が禁止されるティルト禁止モードでは、目標電流値Ｉaimに「０アンペア」が設定されている。
【００７９】
次に、このティルト制御装置の動作を説明する。
キ−オンされると、エンジン１２が始動され、油圧ポンプ１１の駆動が開始される。エンジン始動後、圧力伝達管路２１の油圧はパイロット設定圧に達する。油圧ポンプ１１から吐出された作動油はフローディバイダ１４において所定圧に昇圧された後、荷役系とステアリング系に分流される。
【００８０】
キーオン中、ＣＰＵ５４は例えば１０ミリ秒毎に図１に示す電流値制御処理を実行する。ＣＰＵ５４は、各センサ４１〜４３及びスイッチ４４〜４６からの入力信号に基づいて現在実行すべき制御に応じたティルトモード（前傾マニュアル，後傾マニュアル，前傾自動水平，後傾自動水平，ショックレスモード等）を認知し、そのティルトモードに応じた目標電流値Ｉaimを得る。
【００８１】
ＣＰＵ５４は、電流検出回路２５ａが検出した検出信号Ｓ１（図７（ａ））からローパスフィルタ５３を通ることで２ｋＨｚのリプルが除去された検出信号Ｓ２（図７（ｂ））をＡ／Ｄポート６２から入力する。ＣＰＵ５４は入力する検出信号Ｓ２に対し、図７（ｃ）に示すように１サイクルに偶数回（４回）のサンプリングを割込み処理で実行し、１サイクル分の偶数個のサンプリング値を得る度にこれを平均するフィルタ処理を行って電流検出値Ｉdetを得る。１００Ｈｚのリプルの除去がフィルタ処理によって行われるので、位相遅れの極めて少ないリアルタイムに近い状態で電流検出値Ｉdetが得られる。
【００８２】
例えばティルトレバー８が操作されていないときは、ティルトオフモードの目標電流値Ｉaim「０アンペア」に決まる。目標電流値Ｉaim＝０のときは、ＣＰＵ５４はデューティ出力中心値Ｄcent＝０を設定するとともに（Ｓ５０）、そのデータをＲＡＭ５７に保存し（Ｓ６０）、このプログラムを終了する。そして、８回／１０ミリ秒毎のディザ制御処理の割込処理で毎回Ｄout＝０（％）がＰＷＭポート５９に書き込まれる（Ｓ３３０，Ｓ３４０）。このように目標電流値Ｉaim＝０のときはＤcent値の補正をせずにデューティ出力値Ｄoutが強制的に０％に設定されるので、０％であるはずがＤcentを補正してＤout＞０を招いたために電磁弁２５が僅かに開弁してしまう不具合が防止される。
【００８３】
ティルトレバー８を操作すると、目標電流値Ｉaimが通常ＩnまたはＩmに決まる。ＣＰＵ５４は各種データＩaim，Ｉdet，前回のＤcentを読み込むと、差ΔＩを計算する。ティルトレバー８の操作開始時の最初の処理では、ソレノイド２５ａの通電前で電流検出値Ｉdetが「０」であるため、ΔＩ＝Ｉaimと算出される（Ｓ３０）。そして、ＣＰＵ５４は今回のデューティ出力中心値Ｄcent＝Ｄcent＋Ｇ・ΔＩを計算し（Ｓ４０）、次回の処理で使用するためＲＡＭ５７の所定記憶領域に保存する（Ｓ６０）。
【００８４】
ティルトレバー８の操作開始時の最初の処理では、通常前回のＤcent＝０なのでデューティ出力中心値Ｄcentの初期値Ｄcent＝Ｇ・Ｉaimが決まる。以下、１０ミリ秒毎に実行される電流値制御処理において、前回のＤcentに差ΔＩ（＝Ｉaim−Ｉdet）にゲインＧを乗じた補正量（＝Ｇ・ΔＩ）を加算するフィードバック制御（積分型制御）により、１０ミリ秒毎にデューティ出力中心値Ｄcentが逐次決まることになる。
【００８５】
ＣＰＵ５４は１０ミリ秒毎にデューティ出力中心値Ｄcentが決まる度に、ディザ制御処理（図２）を８回／１０ミリ秒の割込処理で実行する。ディザ制御処理は図２に基づいて次のように実行される。
【００８６】
ＣＰＵ５４は最初に目標電流値Ｉaim，デューティ出力中心値Ｄcentを読み込むと（Ｓ２１０）、目標電流値Ｉaimからデューティ基準値Ｄbase＝Ｋ・Ｉaimを計算する。ティルトレバー８の操作開始後では目標電流値Ｉaimが「０アンペア」ではないので、ＣＰＵ５４はカウンタ６３のカウンタ処理を行う（Ｓ２４０〜Ｓ２６０）。第１回目の割込処理ではカウンタ６３のカウント値cntが「７」になっており、まずカウンタ６３がリセットされる（Ｓ２６０）。そして、カウント値cntに応じたディザ振幅基準値Ｄ［cnt］とデューティ出力中心値Ｄcentとが用いられ、ディザ振幅値Ｄdizz＝Ｄ「cnt］・Ｄcent／Ｄbaseが計算される（Ｓ２７０）。つまり、その時々のバッテリ電圧ＶBおよびソレノイド抵抗Ｒsolに応じてディザ振幅基準値Ｄ［cnt］が補正された適切なディザ振幅値Ｄdizzが決定される。
【００８７】
ディザ振幅値ＤdizzがＤ［cnt］／２≦Ｄdizz≦２Ｄ［cnt］の範囲にあれば（Ｓ２８０，Ｓ３００）、その値が採用される。またディザ振幅値ＤdizzがＤdizz＞２Ｄ［cnt］の値であれば（Ｓ２８０）、Ｄdizzが上限値２Ｄ［cnt］に、ディザ振幅値ＤdizzがＤdizz＜Ｄ［cnt］の値であれば（Ｓ３００）、Ｄdizzが下限値Ｄ［cnt］／２にそれぞれ決定される。ディザ振幅値Ｄdizzが決まると、これをデューティ出力中心値Ｄcentに加えてデューティ出力値Ｄout＝Ｄcent＋Ｄdizzが計算される（Ｓ３２０）。そして、必要に応じて０〜１００％の範囲内の値に修正された後、デューティ出力値Ｄout（％）がＰＷＭポート５９に書き込まれる。
【００８８】
こうして第１回目の割込処理を終えると、以下順次、所定時間（１．２５ミリ秒）間隔で第２回目以降の割込処理が行われる。そして、第２回目以降の割込処理ではカウント値cntが順次cnt＝１，２，…，７とされ、カウント値cntに応じて決まるディザ振幅基準値Ｄ［cnt］（cnt＝１，２，…，７）に比（Ｄcent／Ｄbase）を乗じることでディザ振幅値Ｄdizzが決まる。そして、このディザ振幅値Ｄdizzをデューティ出力中心値Ｄcentに加算して、２回目以降の割込処理においてもデューティ出力値Ｄout＝Ｄcent＋Ｄdizz（＝Ｄcent＋Ｄ［cnt］・Ｄcent／Ｄbase（但し、cnt＝１，２，…，７））が計算される。そして、Ｄdizz＞２Ｄ［cnt］あるいはＤdizz＜Ｄ［cnt］のときは、Ｄdizzをそれぞれ上限値２Ｄ［cnt］または下限値Ｄ［cnt］／２としてデューティ出力値Ｄoutが決められ、この割込処理の度に決まる必要に応じて０〜１００％の範囲内の値に修正されたデューティ出力値Ｄout（％）が毎回ＰＷＭポート５９に書き込まれる。
【００８９】
こうしてデューティ出力中心値Ｄcentの１０ミリ秒毎の決定の度にディザ制御処理で決まるデューティ出力値ＤoutがＰＷＭポート５９に８回／１０ミリ秒の割りで書き込まれることで、ＰＷＭポート５９からはデューティ値（％）がＤcent値を中心に１００Ｈｚで微小振幅するＰＷＭ信号が出力される。そして、トランジスタ６０がこのＰＷＭ信号に基づいてオンオフ制御されることで、ソレノイド２５ａには１００Ｈｚで微小振幅する電流が流れることになる。
【００９０】
ソレノイド２５ａに流れる電流が目標電流値Ｉaimに落ち着いた定常域では、その時々のバッテリ電圧およびソレノイド抵抗などの変動などの外乱要因に応じたデューティ出力中心値Ｄcentに最終的に落ち着くことになる。このときのデューティ出力中心値Ｄcentを目標電流値Ｉaimに対してプロットしたラインは、図５に示すようにバッテリ電圧小，ソレノイド抵抗大になるに連れて基準線Ｌより傾きが大きくなる方向にシフトし、バッテリ電圧大，ソレノイド抵抗小になるに連れて基準線Ｌより傾きが小さくなる方向にシフトする。このとき、電流の振幅を決めるためのディザ振幅値Ｄdizzは一定の基準値Ｄ［cnt］をそのまま用いるのではなく、そのときの外乱要因を反映した値をとるＤcent値を利用し、基準値Ｄ［cnt］に比「Ｄcent／Ｄbase」を乗じた外乱要因が考慮された適切な値がディザ振幅値Ｄdizzとして用いられる。
【００９１】
例えば図５に示すようにバッテリ電圧小，ソレノイド抵抗大のときは比（Ｄcent／Ｄbase）＞１となるので、Ｄmaxより大きな振幅を有する同図のサイン波Ｓxを描くようにＰＷＭ信号のデューティ値が決められる。また、バッテリ電圧大，ソレノイド抵抗小のときは比（Ｄcent／Ｄbase）＜１となるので、Ｄmaxより小さな振幅を有する同図のサイン波Ｓyを描くようにＰＷＭ信号のデューティ値が決められる。このため、バッテリ電圧やソレノイド抵抗の変動による外乱要因によらず、ソレノイド２５ａに流れる電流はいつも必要な一定の振幅Ｉdizzで振幅し、電磁弁２５のスプール（詳しくは比例ソレノイド弁２７のスプール）は常に一定の振幅で微小振動する（但し、閉弁時を除く）。
【００９２】
このため、電磁弁２５のスプールの動作開始時の摩擦抵抗が小さくなってスプールの動きだしがスムーズになって電磁弁２５の応答性がよくなる。よって、電磁弁２５のスプールの振幅が過小になって電磁弁２５の応答性が低下したり、電磁弁２５のスプールの振幅が過大になって開弁してはならない時に間違って電磁弁２５が僅かにでも開弁する不具合の発生が防止される。この結果、電磁弁２５の良好な応答性から、ティルトレバー操作時のマスト４の良好な応答性が確保される。また、電磁弁２５のスプールが過大に振幅することに起因するマスト４の傾動動作時における微小な振動や、傾動動作停止時にマスト４が微小に変位するなどの不具合が発生しない。
【００９３】
また、電流の過渡域では、デューティ出力中心値Ｄcentが最終的に収束する値よりも小さな値をとる。この場合、比（Ｄcent／Ｄbase）は外乱要因の影響を正確に反映しておらず、比（Ｄcent／Ｄbase）を使って得たディザ振幅値Ｄdizzを採用すると、電流の振幅が過大になることが心配される。しかし、ステップ２８０〜ステップ３１０において、ディザ振幅値ＤdizzがＤ［cnt］／２≦Ｄdizz≦２Ｄ［cnt］の範囲から外れれば、Ｄdizz値が上限値２Ｄ［cnt］あるいは下限値Ｄ［cnt］／２に制限されるので、電流の過渡域において電流の振幅が異常に過大になることが防止される。よって、電流の過渡域においてマスト４ががたついたりする不具合が発生しない。
【００９４】
以上詳述した本実施形態によれば、以下の効果が得られる。
（１）ディザ振幅値Ｄdizzについてもバッテリ電圧やソレノイド抵抗の変動による外乱要因を反映するＤcent値とＤbase値の比を使って外乱要因が考慮された値に決まるようにしたので、この種の外乱要因に影響されることなく電磁弁２５のスプールを必要な一定振幅で微小振動させることができる。従って、電磁弁２５のスプールの振幅が小さ過ぎてマスト４の始動時の応答性を悪化させる問題や、スプールの振幅が大き過ぎることに起因するマスト４の傾動時の微小な振動や、電磁弁２５が閉弁すべきときに極く僅かに開弁してマスト４が微視的に変位するなどの不具合を確実に防止することができる。
【００９５】
（２）電流の立ち上がり時などの過渡域であってデューティ出力中心値Ｄcentから決まる比（Ｄcent／Ｄbase）が外乱要因の影響を正確に反映しないときでも、ディザ振幅値Ｄdizzを所定範囲（Ｄ［cnt］／２≦Ｄdizz≦２Ｄ［cnt］）に制限したので、安定な制御を実現させ易い積分型制御のフィードバック制御を採用しても、電磁弁２５のスプールの振幅が異常なほど大きくなることを制限できる。従って、電流の過渡域においてスプールの振幅が過大になることに起因するマスト４の振動を防止することができる。
【００９６】
（３）ディザ振幅値Ｄdizzを決めるのにフィードバック制御のための電流値を決めるためのデューティ出力中心値Ｄcentのデータを利用しているので、ディザ振幅値Ｄdizzを決めるだけのためのデータ取得処理が不要である。
【００９７】
（４）バッテリ５９とソレノイド２５ａの間に比較的高価なレギュレータを設けずに、外乱要因によらずソレノイド電流を安定に制御できる。
（５）２ｋＨｚのリプルだけをローパスフィルタ５３で取り除き、１００ＨｚのリプルはＣＰＵ５４によるフィルタ処理で除去するようにしてローパスフィルタ５３での信号の遅延を極力抑えるようにしたので、電流検出値Ｉdetをほぼリアルタイムに近い状態で得ることができる。そのため、十分即応性の高いフィードバック制御を実現できる。
【００９８】
（６）ＣＰＵ５４によるソフトウェアでフィードバック制御を行うので、ローパスフィルタ５３が付加されるものの、ハードウェアによるフィードバック制御をする従来装置において必要であった三角波発生回路，デューティ発生回路及びフィードバック回路を省略でき、フィードバック制御のために必要なハードウェア部分を簡素化できる。
【００９９】
（第２実施形態）
次に本発明を具体化した第２実施形態を図１３〜図１５に従って説明する。
この実施形態では、ソレノイド２５ａに流れる電流に変動をもたらす主な外乱要因の一つであるバッテリ電圧ＶBを測定して監視し、このバッテリ電圧ＶBの測定値を使ってデューティ出力中心値Ｄcentおよびディザ振幅値Ｄdizzを決めるようにした例である。電流値制御処理のプログラムデータが第１実施形態と異なるのみで、ディザ制御処理をはじめとする他の処理は第１実施形態と同じである。また、装置の構成についても、バッテリ電圧検出用の回路が加わった以外は、第１実施形態と同じ構成である。このため以下、特に異なる部分についてのみ説明する。
【０１００】
図１５は電気構成概略図を示す。ＣＰＵ５４のＡ／Ｄポート６４には電源としてのバッテリ５８のプラス端子が測定手段及び外乱要因測定手段としての抵抗Ｒbを介して接続されている。ＣＰＵ５４はバッテリ電圧ＶBが抵抗Ｒb，Ｒcにより降圧された電圧信号をＡ／Ｄポート６４から入力し、この電圧信号からバッテリ電圧検出値Ｖbattを得る。
【０１０１】
ＲＯＭ５５には第１実施形態と同様に図３に示す１周期当たりのディザの振幅基準値Ｄ［cnt］とカウント値cntとの関係を示すデータが記憶されている。すなわち、Ｄ［０］＝０，Ｄ［１］＝Ｄmax／√２，Ｄ［２］＝Ｄmax，Ｄ［３］＝Ｄmax／√２，Ｄ［４］＝０，Ｄ［５］＝−Ｄmax／√２，Ｄ［６］＝−Ｄmax，Ｄ［７］＝−Ｄmax／√２となっている。但し、Ｄmaxはディザ制御のためのデューティ値の振幅（％）である。
【０１０２】
ＲＯＭ５５には図１３に示す電流値制御処理のプログラムデータと、図１４に示すディザ制御処理のプログラムデータが記憶されている。ディザ制御処理は電流値制御処理の度に８回／１０ミリ秒の割込処理で実行される。また、ＣＰＵ５４は、検出信号Ｓ２の振幅中心値を得るために第１実施形態と同様にサンプリング値を平均して電流検出値Ｉdetを計算するフィルタ処理を実行する。
【０１０３】
以下、電流値制御処理及びディザ制御処理の各プログラムデータについて説明する。まず図１３を用いて電流値制御処理について説明する。
ステップ５１０は、必要なデータを読み込むためのデータ読込処理である。この処理では、目標電流値Ｉaim，電流検出値Ｉdet，バッテリ電圧検出値Ｖbatt，前回のデューティ出力中心値Ｄcentを読み込む。
【０１０４】
ステップ５２０は、目標電流値Ｉaimが「０アンペア」であるか否かを判断するための処理である。
ステップ５３０は、目標電流値Ｉaimと電流検出値Ｉdetとの差ΔＩを求めるための処理である。差ΔＩは、式  ΔＩ＝Ｉaim−Ｉdet  により算出される。
【０１０５】
ステップ５４０及びステップ５５０は、ゲインの下限を決めるための処理、ステップ５６０及びステップ５７０は、ゲインの上限を決めるための処理である。ゲインの下限は、ステップ５４０においてバッテリ電圧検出値Ｖbattが基準電圧Ｖbaseの２倍を超えれば、ステップ５５０においてその下限値「Ｇo／２」に決まる。ゲインの上限は、ステップ５６０においてバッテリ電圧検出値Ｖbattが基準電圧Ｖbaseの１／２未満ならば、ステップ５７０においてその上限値「２Ｇo」に決まる。
【０１０６】
ここで、本実施形態におけるフィードバック制御も第１実施形態と同様に前回のデューティ出力中心値Ｄcentに対して差ΔＩに比例する補正量を加えていく積分型制御に相当する。基準ゲインＧoとは、基準状態（バッテリ電圧ＶB＝Ｖbaseかつソレノイド抵抗Ｒsol＝Ｒbase）の仮定の下で、この積分型制御の伝達関数からその制御系の安定性を考慮して決められたゲイン（比例定数）である。なお、制御系の安定性とは、電流の過渡域でのオーバシュートを抑制し、しかも高い即応性を確保し得る設計条件を満たすことである。
【０１０７】
ステップ５８０は、そのときのバッテリ電圧ＶBに応じたゲインＧを計算する処理である。ゲインＧは、基準ゲインＧoをバッテリ電圧検出値Ｖbattに応じて補正することで求められ、式  Ｇ＝Ｇo・Ｖbase／Ｖbatt  により計算される。つまり、ゲインＧは基準ゲインＧoを外乱要因の主要因の１つであるバッテリ電圧ＶBを考慮した補正をすることで決められる。
【０１０８】
ステップ５９０は、デューティ出力中心値Ｄcentを計算する処理である。デューティ出力中心値Ｄcentは、前回のデューティ出力中心値Ｄcentに補正量Ｇ・ΔＩを加えて決められ、式  Ｄcent＝Ｄcent＋Ｇ・ΔＩ  により計算される。
【０１０９】
ステップ６００は、目標電流値Ｉaimが「０アンペア」のときに、デューティ出力中心値Ｄcent＝０（％）を設定する処理である。
ステップ６１０は、次回の処理に使用するために現在のデューティ出力中心値Ｄcentを記憶（保存）する処理である。このデューティ出力中心値ＤcentはＲＡＭ５７の所定領域に記憶される。
【０１１０】
次にディザ制御処理について図１４に従って説明する。
ステップ７１０は、必要なデータを読み込むためのデータ読込処理である。この処理では、目標電流値Ｉaim，バッテリ電圧検出値Ｖbatt，デューティ出力中心値Ｄcentを読み込む。
【０１１１】
ステップ７２０は、目標電流値Ｉaimが「０アンペア」であるか否かを判断する処理である。
ステップ７３０〜ステップ７５０は、ディザ振幅基準値を決めるカウント値cntのカウンタ処理であり、第１実施形態におけるＳ２３０〜Ｓ２５０と同じ処理である。
【０１１２】
ステップ７６０は、ディザ振幅値Ｄdizzを計算する処理である。ディザ振幅値Ｄdizzは、ディザ振幅基準値Ｄ［cnt］にバッテリ電圧検出値Ｖbattと基準電圧Ｖbaseとの比「Ｖbase／Ｖbatt」を乗じて求められ、式  Ｄdizz＝Ｄ［cnt］・Ｖbase／Ｖbatt  により計算される。
【０１１３】
ステップ７７０は、デューティ出力値Ｄoutを計算する処理である。デューティ出力値Ｄoutは、デューティ出力中心値Ｄcentにディザ振幅値Ｄdizzを加算して求められる（Ｄout＝Ｄcent＋Ｄdizz）。
【０１１４】
ステップ７８０〜ステップ８１０は、算出されたデューティ出力値Ｄoutを０〜１００％の範囲に収めるための処理であり、第１実施形態における図２のフローチャートで図示を省略した処理である。ステップ７８０においてＤout＜０であれば、ステップ７９０においてＤout値を「０％」に修正する。ステップ８００においてＤout＞１００％であれば、ステップ８１０においてＤout値を「１００％」に修正する。ステップ７９０の処理は目標電流値Ｉaimが「０アンペア」のときにデューティ出力値Ｄout＝０（％）に設定する処理も兼ねている。
【０１１５】
ステップ８２０は、デューティ出力値ＤoutをＰＷＭポート５９に書き込む処理である。
次に、このティルト制御装置の動作を説明する。
【０１１６】
キーオン中、ＣＰＵ５４は例えば１０ミリ秒毎に図１３に示す電流値制御処理を実行し、デューティ出力中心値Ｄcentを決定する。目標電流値Ｉaimはセンサ類４１〜４６からの入力信号に基づいて決まるティルトモードに応じて決まり、電流検出値ＩdetはＣＰＵ５４がＡ／Ｄポート６３から入力する検出信号Ｓ２に対して偶数回のサンプリングを行って平均するフィルタ処理により得られる。ＣＰＵ５４はＡ／Ｄポート６４からバッテリ電圧ＶBに比例する電圧信号を入力してバッテリ電圧検出値Ｖbattを得る。
【０１１７】
ＣＰＵ５４は、１０ミリ秒毎に必要なデータＩaim，Ｉdet，Ｖbatt，前回のＤcentを読込む。例えばティルトレバー８が操作されていないときは、電流値制御処理においてデューティ出力中心値Ｄcent＝０が毎回ＲＡＭ５７に保存され（Ｓ６００，Ｓ６１０）、８回／１０ミリ秒の割りのディザ制御処理の割込処理で毎回Ｄout＝０（％）がＰＷＭポート５９に書き込まれる（Ｓ７９０，Ｓ８２０）。
【０１１８】
ティルトレバー８を操作すると、目標電流値Ｉaimが０以外の値になり（Ｓ５２０）、電流検出値Ｉdetを目標電流値Ｉaimに近づけるようにデューティ出力中心値Ｄcentを補正するフィードバック制御が行われる。このとき、デューティ出力中心値Ｄcentを決めるために採用するゲインＧはＳ５４０〜Ｓ５８０の処理でそのときのバッテリ電圧検出値Ｖbattに応じて決定される。
【０１１９】
ゲインＧは次のように特定される。バッテリ電圧検出値ＶbattがＶbase／２≦Ｖbatt≦２Ｖbaseを満たす多くの場合は、ゲインＧは式  Ｇo・Ｖbase／Ｖbattにより計算される（Ｓ５８０）。Ｖbatt＞２Ｖbaseを満たすときは、ゲインＧは下限値「Ｇo／２」に設定される（Ｓ５４０，Ｓ５５０）。また、Ｖbatt＜Ｖbase／２を満たすときは、ゲインＧは上限値「２Ｇo」に設定される（Ｓ５６０，Ｓ５７０）。
【０１２０】
ゲインＧが決まると、このゲインＧを用いて前回のＤcentに差ΔＩ＝Ｉaim−Ｉdetに比例する補正量Ｇ・ΔＩをその都度加えることで今回のデューティ出力中心値Ｄcent＝Ｄcent＋Ｇ・ΔＩが計算により決められる（Ｓ５９０）。この今回のデューティ出力中心値Ｄcentは、次回の処理で使用するためＲＡＭ５７の所定記憶領域に保存される（Ｓ６１０）。
【０１２１】
ティルトレバー８の操作開始されると、１０ミリ秒毎の電流値制御処理の度に前回のＤcentにそのときのバッテリ電圧検出値Ｖbattから決まるゲインＧ（＝Ｇo・Ｖbase／Ｖbatt）を用いて決まる補正量（＝Ｇ・ΔＩ）を加算する積分型制御のフィードバック制御が実行され、逐次デューティ出力中心値Ｄcentが決まることになる。
【０１２２】
ＣＰＵ５４はデューティ出力中心値Ｄcentが決まる度に、１０ミリ秒に８回の割りでディザ制御処理（図１４）を割込処理で実行する。ティルトレバー８の操作中は、ＣＰＵ５４は最初に目標電流値Ｉaim，バッテリ電圧検出値Ｖbatt，デューティ出力中心値Ｄcentを読み込み（Ｓ７１０）、カウンタ処理（Ｓ７３０〜Ｓ７５０）で決まるカウント値cntに応じたディザ振幅基準値Ｄ［cnt］を用いて、ディザ振幅値Ｄdizz＝Ｄ「cnt］・Ｖbase／Ｖbattを計算する（Ｓ７６０）。
【０１２３】
このとき、電流の過渡域と定常域のいずれの場合でも、比（Ｖbase／Ｖbatt）が主な外乱要因であるバッテリ電圧ＶBの影響を表現した値になっているので、第１実施形態のようにディザ振幅値Ｄdizzを上限・下限の範囲内に制限する処理は行っていない。こうして決まったディザ振幅値Ｄdizzを用いてデューティ出力値Ｄout＝Ｄcent＋Ｄdizzが計算される（Ｓ７７０）。
【０１２４】
そして、必要に応じて０〜１００％の範囲内の値に修正されたデューティ出力値Ｄout（％）がＰＷＭポート５９に書き込まれる（Ｓ７８０〜Ｓ８２０）。
こうしてＰＷＭポート５９からはデューティ値（％）がデューティ出力中心値Ｄcent（％）を中心に１００Ｈｚで微小振幅するようなＰＷＭ信号が出力されることになる。このＰＷＭ信号のデューティ値（％）に応じてトランジスタ６１のオン時間が制御され、ソレノイド２５ａに電流が１００Ｈｚで微小振幅しながら流れることになる。
【０１２５】
そのため、そのときのバッテリ電圧ＶBが基準電圧Ｖbaseからどの程度ずれていても、電流は常にディザ制御に必要なほぼ一定の振幅Ｉdizzで振幅しながら、基準状態（バッテリ電圧ＶB＝Ｖbaseかつソレノイド抵抗Ｒsol＝Ｒbase）のときに基準ゲインＧoが採用されたときとほぼ同じ履歴をとるように立ち上がることになる。
【０１２６】
そのため、電磁弁２５のスプールは閉弁時以外は常に一定の振幅で微小振動する。従って、電磁弁２５のスプールの振幅が過小になって電磁弁２５の応答性が低下したり、電磁弁２５のスプールの振幅が過大になって開弁してはならない時に間違って電磁弁２５が僅かにでも開弁する不具合の発生が確実に防止される。よって、電磁弁２５のスプールの応答性が常に良好になり、ティルトレバー８の操作開始時におけるマスト４の応答性が常に良好になるうえ、マスト４が電磁弁２５のスプールの振幅の過大に起因し、傾動時に微小にがたつくことも起こらない。
【０１２７】
また、電流の立ち上がり履歴がいつも基準状態のときに基準ゲインＧoが採用されたときとほぼ同じになるので、ティルトレバー８を操作したときのマスト４の動きだし時に電流のオーバシュートに起因するショックが発生することがなく、荷崩れの心配がない。また、ソレノイド抵抗を常温時の抵抗値にあるものとし、ソレノイド抵抗の変動を考慮せずにディザ振幅値Ｄdizzを決めているが、バッテリ電圧ＶBの変動に比べてソレノイド抵抗の変動が少なければほとんど問題なくいつも必要な振幅で電磁弁２５のスプールを微小振動させることはできる。なお、ソレノイド抵抗の変動による外乱要因が考慮されなくても、ＣＰＵ５４によるフィードバック制御により、ソレノイド２５ａに目標電流値Ｉaim通りの電流が流れることになるので、マスト４はソレノイド抵抗の変動によらずいつも設定通りの一定速度で傾動する。このため、マスト４の高揚高後傾時にも設定通りにその後傾速度が速度制限されるので、この場合も荷崩れの心配がない。
【０１２８】
さらにバッテリ電圧検出値Ｖbattが過大もしくは過小の値をとるときはゲインＧが上限値（＝２Ｖbase）と下限値（＝Ｖbase／２）にそれぞれ制限される。このため、例えば検出異常等が原因でバッテリ電圧検出値Ｖbattが過大あるいは過小な値に検出されても、電流の例えば立ち上がり勾配が異常なほど過大もしくは過小になる事態が回避される。
【０１２９】
以上詳述した本実施形態によれば、以下の効果が得られる。
（１）ディザ振幅値Ｄdizzについてもバッテリ電圧検出値Ｖbattを考慮して決めるようにしたので、そのときのバッテリ電圧によらず電磁弁２５のスプールをいつも必要なほぼ一定の振幅で微小振動させることができる。従って、スプールの振幅の過小による電磁弁２５の応答性を悪化や、スプールの振幅の過大による電磁弁２５の閉弁すべきときの僅かな開弁を確実に防止することができる。よって、電磁弁２５のスプールの振幅が小さ過ぎてマスト４の始動時の応答性を悪化させる問題や、スプールの振幅が大き過ぎることに起因するマスト４の傾動時の微小な振動や、電磁弁２５が閉弁すべきときに極く僅かに開弁してマスト４が微視的に変位するなどの不具合を確実に防止することができる。
【０１３０】
（２）比Ｖbase／Ｖbattは電流の過渡域と定常域とを問わず常に外乱要因に見立てたバッテリ電圧の影響を表現した値になっているので、ディザ振幅値Ｄdizzを上限と下限の範囲に制限する第１実施形態では必要であった処理を不要にでき、しかも電流の過渡域におけるスプールの振幅精度を高めることもできる。
【０１３１】
（３）ディザ振幅値Ｄdizzを決めるのにフィードバック制御の際の電流値を決めるためのバッテリ電圧検出値Ｖbattのデータを利用しているので、ディザ振幅値Ｄdizzを決めるだけのためのデータ取得処理が不要である。
【０１３２】
（４）バッテリ電圧検出値Ｖbattを考慮して基準ゲインＧoを補正することでゲインＧを決めるようにしたので、バッテリ電圧ＶBの変動に拘わらずいつもソレノイド電流を設定通りの立ち上がり率で立ち上げることができる。従って、電流の過渡域でのオーバシュートに起因するマスト４の動きだし時のショックが原因で起こり得る荷崩れの心配がなく、しかもバッテリ電圧が低くなったことによるマスト４の応答性の悪化を招くこともない。
【０１３３】
（５）外乱要因の一つであるソレノイド抵抗を考慮しないものの、ソレノイド抵抗の変動による外乱要因も考慮されてフィードバック制御がされるので、ソレノイド２５ａに目標電流値Ｉaim通りの電流を流すことができる。従って、例えばマスト４の高揚高後傾時の後傾速度が確実に設定通りに速度制限され、高揚高後傾時におけるマスト４のエンド停止時のショックが小さく抑えられるので、荷崩れの発生をほぼ確実に防止することができる。
【０１３４】
（６）バッテリ電圧検出値Ｖbattが過大または過小な値に検出されたときは、ゲインＧを上限値または下限値に制限したので、検出異常等の異常発生時でもソレノイド２５ａに問題になるほどの異常電流が流れることを回避することができる。
【０１３５】
その他、第１実施形態と同様に、比較的高価なレギュレータ不要の効果、フィルタ処理の採用によるフィードバック制御の即応性を高める効果、ＣＰＵ５４によるソフトウェアでのフィードバック制御の採用によるフィードバック制御のために必要なハードウェア部分を簡素化できる効果を得ることができる。
【０１３６】
（第３実施形態）
次に本発明を具体化した第３実施形態を図１６，図１７に従って説明する。
本実施形態は、バッテリ電圧検出値Ｖbattを利用するフィードフォワード制御に応用した例である。電流値制御処理のプログラムデータが第２実施形態と異なるのみで、ディザ制御処理のプログラムデータをはじめとする他
のデータは第２実施形態と同じである。また、装置の構成についても、電流検出が不要なため回路の一部が削除されている他は、第１実施形態と同じ構成である。このため以下、共通部分については同じ符号を使用して説明を省略し、特に異なる部分についてのみ説明する。
【０１３７】
図１７に示すように、フィードフォワード制御であって電流検出が不要であるため、第２実施形態のコントローラ４０から電流検出回路５２及びローパスフィルタ５３を省いた構成になっている。すなわち、ソレノイド駆動回路５１に内蔵されたトランジスタ６０のエミッタに第１端部が接続されたソレノイド２５ａの第２端部は接地されている。ＣＰＵ５４は測定手段及び外乱要因測定手段としての抵抗Ｒbを介してＡ／Ｄポート６４から入力する電圧信号からバッテリ電圧検出値Ｖbattを得る。ＣＰＵ５４はトランジスタ６１のオン時間を制御するためＰＷＭポート５９から出力されるＰＷＭ信号のデューティ値（％）を決めるために必要なデータＤcent，Ｄoutを、ＲＯＭ５５に記憶された電流値制御処理（図１６）及びディザ制御処理（図１４）のプログラムデータに基づいて決定する。
【０１３８】
電流制御処理のプログラムデータについて図１６に従って説明する。
ステップ９１０は、必要なデータを読み込むデータ読込処理である。目標電流値Ｉaim及びバッテリ電圧検出値Ｖbattを読み込む。
【０１３９】
ステップ９２０は、デューティ出力中心値Ｄcentを計算する処理である。式  Ｄcent＝（Ｉaim・Ｒbase／Ｖbatt）×１００  により算出される。ここで、Ｒbaseは、基準抵抗値（本実施形態では常温のときのソレノイド抵抗値）であり定数である。目標電流値Ｉaimの電流を流すにはＩaim・Ｒbaseに等しい平均電圧をかけられるようにデューティ値（％）をきめればよいので、デューティ出力中心値Ｄcentはバッテリ電圧検出値Ｖbattを用いて上式のように表わされる。なお、上式により計算されたＤcent値が仮に０〜１００％の範囲にないときは、下限０％、上限１００％になるように修正されたＤcentが採用される。また、この実施形態では上式中の電圧Ｉaim・Ｒbaseが基準データに相当する。
【０１４０】
コントローラ４０による電磁弁２５の電流値制御は、図１６及び図１４のフローチャートに従って次のように行われる。
１０ミリ秒毎に実行する電流値制御処理では、まず目標電流値Ｉaim及びバッテリ電圧検出値Ｖbattを読み込み（Ｓ９１０）、デューティ出力中心値Ｄcent＝（Ｉaim・Ｒbase／Ｖbatt）×１００を計算する（Ｓ９２０）。
【０１４１】
８回／１０ミリ秒の割込みで実行されるディザ制御処理では、このデューティ出力中心値Ｄcentを使用して決まるデューティ出力値Ｄout（＝Ｄcent＋Ｄ［cnt］・Ｖbase／Ｖbatt）がＰＷＭポート５９に書き込まれる。この結果、バッテリ電圧の変動に拘わらずいつもソレノイド２５ａに流れる電流はディザ制御に必要なほぼ一定の振幅Ｉdizzで振幅しながら、ほぼ目標電流値Ｉaim通りに流れるように調整される。
【０１４２】
また、電流検出用の回路５２，５３が不要であるので、前記各実施形態に比べてハードウェア部分の構成を一層簡素化できる。しかもフィードバック制御のための補正処理が不要になるので、前記各実施形態に比べＣＰＵ５４の負担も軽減できる。また、ディザ振幅値Ｄdizzを決めるのにフィードフォワード制御のためのデューティ出力中心値Ｄcentを決めるために用いたバッテリ電圧検出値Ｖbattのデータを利用しているので、ディザ振幅値Ｄdizzを決めるだけのためのデータ取得処理が不要である。その他、前記各実施形態で述べたレギュレータを不要にできる効果を同様に得ることができる。
【０１４３】
（第４実施形態）
次に本発明を具体化した第４実施形態を図１８〜図２０に従って説明する。
本実施形態は、第１実施形態の変形例である。第１実施形態ではディザ振幅値Ｄdizzを決めるためのデータとしてデューティ出力中心値Ｄcentを利用したが、この実施形態では電流検出値Ｉdetを利用している。ディザ制御処理のプログラムデータなどの一部のデータが第１実施形態と異なるのみで、電流値制御処理のプログラムデータをはじめとする他のデータは第１実施形態と同じである。また、装置の構成は第１実施形態と同じである。このため以下、特に異なる部分についてのみ説明する。
【０１４４】
ＲＯＭ５５には図１に示す電流値制御処理のプログラムデータと、図１９，図２０に示すディザ制御処理のプログラムデータが記憶されている。
図１８は電流検出値Ｉdetとデューティ出力中心値Ｄcentとの関係を示すグラフである。グラフ中の基準線Ｍは、基準状態（バッテリ電圧ＶB＝Ｖbaseかつソレノイド抵抗Ｒsol＝Ｒbase）のとき、デューティ出力中心値Ｄcentを中心に振幅するデューティ値のＰＷＭ信号が指令された場合、ＣＰＵ５４により検出されるはずの電流検出値Ｉdet（以下、電流基準検出値Ｉbaseと記す）をプロットしたラインである。
【０１４５】
デューティ出力中心値Ｄcentに対して得られるはずの電流検出値Ｉdetをプロットしたラインは、バッテリ電圧小，ソレノイド抵抗大になるに連れて同図のＸ線のように基準線Ｍより傾きが大きくなる方向にシフトし、バッテリ電圧大，ソレノイド抵抗小になるに連れて同図のＹ線のように基準線Ｍより傾きが小さくなる方向にシフトする。例えばＤcent＝Ｄzのときに基準状態であればＩdet＝Ｉzが得られるはずであるが、そのときの外乱要因に応じてＸ線のようにシフトしていればＩdet＝Ｉx、Ｙ線のようにシフトしていればＩdet＝Ｉyが得られる。つまり、外乱要因によって電流検出値Ｉdetが電流基準検出値Ｉbaseに対してシフトし、比（Ｉbase／Ｉdet）が外乱要因を反映した値になる。このことを利用し、ディザ振幅値Ｄdizz＝Ｄ［cnt］・Ｉbase／Ｉdetの計算式のようにディザ振幅基準値Ｄ［cnt］にその比（Ｉbase／Ｉdet）を乗じて補正することで、外乱要因が考慮されたディザ振幅値Ｄdizzを得るようにしたのが、図１９，図２０に示すディザ制御処理のプログラムデータである。
【０１４６】
以下、このディザ制御処理のプログラムデータについて図１９，図２０に基づいて説明する。
ステップ１０１０は、必要なデータを読込むデータ読込処理である。目標電流値Ｉaim，電流検出値Ｉdet，今回と前回のデューティ出力中心値Ｄcentを読込む。
【０１４７】
ステップ１０２０は、前回のデューティ出力中心値Ｄcentから電流基準検出値Ｉbaseを計算する処理である。ここで、電流基準検出値Ｉbaseは、前回のＤcentに基づいてＰＷＭ信号のデューティ値（％）が決められたときに、基準状態（バッテリ電圧ＶB＝Ｖbaseかつソレノイド抵抗Ｒsol＝Ｒbase）にあるとの仮定の下で検出されるはずの電流検出値Ｉdetに相当する値である。電流基準検出値Ｉbaseは式  Ｉbase＝ｈ・Ｄcent  により計算される。「ｈ」はＤcentをＩbaseに変換するための変換係数であり、図１８の基準線Ｍの傾きに相当する値である。
【０１４８】
ステップ１０３０〜ステップ１０６０は、第１実施形態におけるＳ２３０〜Ｓ２６０に相当する処理である。
ステップ１０７０〜ステップ１１１０は、ディザ振幅値Ｄdizzを決めるための処理である。ステップ１０７０，１０８０は、ディザ振幅値Ｄdizzを下限値以上に収めるための処理、ステップ１０９０，１１００は、ディザ振幅値Ｄdizzを上限値以下に収めるための処理である。
【０１４９】
ステップ１０７０は、電流検出値Ｉdetが電流基準検出値Ｉbaseの２倍を超えるか否かを判断する処理で、この条件Ｉdet＞２Ｉbaseを満たせば、ステップ１０８０においてディザ振幅値Ｄdizzは下限値「Ｄ［cnt］／２」に決まる。また、ステップ１０９０は、電流検出値Ｉdetが電流基準検出値Ｉbaseの１／２未満であるか否かを判断する処理で、この条件Ｉdet＜Ｉbase／２を満たせば、ステップ１１００においてディザ振幅値Ｄdizzは上限値「２Ｄ［cnt］」に決まる。
【０１５０】
ステップ１１１０は、電流検出値ＩdetがＩbase／２≦Ｉdet≦２Ｉbaseを満たすときに、ディザ振幅値Ｄdizzを計算する処理である。ディザ振幅値Ｄdizzは、ディザ振幅基準値Ｄ［cnt］に電流検出値Ｉdetと電流基準検出値との比「Ｉbase／Ｉdet」を乗じて求められ、式  Ｄdizz＝Ｄ［cnt］・Ｉbase／Ｉdet  により計算される。
【０１５１】
ステップ１１２０は、デューティ出力値Ｄoutを計算する処理である。デューティ出力値Ｄoutは、デューティ出力中心値Ｄcentにディザ振幅値Ｄdizzを加算して求められる（Ｄout＝Ｄcent＋Ｄdizz）。
【０１５２】
ステップ１１３０〜ステップ１１６０は、算出されたデューティ出力値Ｄoutを０〜１００％の範囲に収めるための処理であり、第２実施形態におけるＳ７８０〜Ｓ８１０の処理に相当する処理である。ステップ１１４０の処理は目標電流値Ｉaimが「０アンペア」のときにデューティ出力値Ｄout＝０（％）に設定する処理も兼ねている。ステップ１１７０は、デューティ出力値ＤoutをＰＷＭポート５９に書き込む処理である。
【０１５３】
次に、このティルト制御装置の動作を説明する。
目標電流値Ｉaimはセンサ類４１〜４６からの入力信号に基づいて決まるティルトモードに応じて決まり、電流検出値ＩdetはＣＰＵ５４が実行するフィルタ処理により得られる。ＣＰＵ５４は例えば１０ミリ秒毎に図１に示す電流値制御処理を実行し、デューティ出力中心値Ｄcentを決定する。
【０１５４】
ＣＰＵ５４はデューティ出力中心値Ｄcentを決定する度に、８回／１０ミリ秒の割りで図１９に示すディザ制御処理を割込処理で実行する。まず必要なデータＩaim，Ｉdet，今回と前回のＤcentを読込む。ティルトレバー８の操作開始後では、目標電流値Ｉaimが０以外の値になる。
【０１５５】
ＣＰＵ５４は前回のＤcentを用いて電流基準検出値Ｉbase＝ｈ・Ｄcentを計算する。カウンタ処理（Ｓ１０４０〜Ｓ１０６０）で決まるカウント値cntに応じたディザ振幅基準値Ｄ［cnt］を用いて、ディザ振幅値Ｄdizzを決める。すなわち、このとき電流検出値Ｉdetが考慮され、Ｉdet＞２ＩbaseのときはＤdizz＝Ｄ［cnt］／２に決まり、Ｉdet＜Ｉbase／２のときはＤdizz＝２Ｄ［cnt］／２に決まる。Ｉdet値がこれら２つの条件を満たさないとき、つまりＩbase／２≦Ｉdet≦２Ｉbaseを満たすときは、Ｄdizz＝Ｄ「cnt］・Ｉbase／Ｉdetを計算する（Ｓ１０７０〜Ｓ１１１０）。
【０１５６】
こうして決まったディザ振幅値Ｄdizzを用いてデューティ出力値Ｄout＝Ｄcent＋Ｄdizzが計算される（Ｓ１１２０）。そして、必要に応じて０〜１００％の範囲内の値に修正されたデューティ出力値Ｄout（％）がＰＷＭポート５９に書き込まれる（Ｓ１１３０〜Ｓ１１７０）。
【０１５７】
こうしてＰＷＭポート５９からはデューティ値（％）がデューティ出力中心値Ｄcent（％）を中心に１００Ｈｚで微小振幅するようなＰＷＭ信号が出力され、ソレノイド２５ａに電流が１００Ｈｚで微小振幅しながら流れることになる。
【０１５８】
この実施形態で採用する比（Ｉbase／Ｉdet）は、実測電流を基準にするために外乱要因を正確に表現した値をとるので、スプールの振幅精度を高めることができる。また、ディザ振幅値Ｄdizzを決めるのにフィードバック制御で使用したデータＩdet，前回のＤcentを利用しているので、ディザ振幅値Ｄdizzを決めるだけのためのデータ取得処理が不要である。その他、第１実施形態の効果で述べた（１），（４）〜（６）の効果を同様に得ることができる。
【０１５９】
（第５実施形態）
前記第２および第３実施形態では、主な外乱要因としてバッテリ電圧を測定してＤcent値およびＤdizz値の決定にバッテリ電圧だけを反映させたが、本実施形態は、外乱要因の主要因の１つであるソレノイド抵抗をもＤcent値およびＤdizz値の決定に反映させている。ＣＰＵ５４はフィードバック制御やフィードフォワード制御で使用したデータを使ってソレノイド抵抗を計算する。従って、本実施形態ではＣＰＵ５４が外乱要因測定手段を構成する。
【０１６０】
ソレノイド抵抗値Ｒsolは、前回のバッテリ電圧検出値Ｖbatt，電流検出値Ｉdet，デューティ出力中心値Ｄcentを使用して式  Ｒsol＝（Ｄcent／１００）・Ｖbatt／Ｉdet  により計算される。このソレノイド抵抗値Ｒsolをバッテリ電圧検出値Ｖbattと同様に今回のデューティ出力中心値Ｄcentを決定するときに考慮する。すなわち、バッテリ電圧検出値Ｖbattとソレノイド抵抗値Ｒsolを共に外乱要因として考慮したときの補正係数αは、α＝（Ｖbase／Ｖbatt）・（Ｒsol／Ｒbase）＝β・（Ｒsol／Ｖbatt）で与えられる。但し、Ｖbaseは基準電圧，Ｒbaseは基準抵抗値であり，βはβ＝Ｖbase／Ｒbaseで定数である。
【０１６１】
第２実施形態でソレノイド抵抗をも考慮する場合、まずソレノイド抵抗値Ｒsol＝（Ｄcent／１００）・Ｖbatt／Ｉdetを計算し、電流値制御処理でゲインＧを式  Ｇ＝Ｇo・β・（Ｒsol／Ｖbatt）  により計算すればよい。また、ディザ制御処理でディザ振幅値Ｄdizzを式  Ｄdizz＝Ｄ［cnt］・β・（Ｒsol／Ｖbatt）
により計算する。
【０１６２】
また、第３実施形態でソレノイド抵抗をも考慮する場合、まずソレノイド抵抗値Ｒsol＝（Ｄcent／１００）・Ｖbatt／Ｉdetを計算し、電流値制御処理でデューティ出力中心値Ｄcentを式  Ｄcent＝Ｄdef・β・（Ｒsol／Ｖbatt）  により計算すればよい。また、ディザ制御処理でディザ振幅値Ｄdizzを式  Ｄdizz＝Ｄ［cnt］・β・（Ｒsol／Ｖbatt）  により計算する。
【０１６３】
これらの構成によれば、バッテリ電圧とソレノイド抵抗の変動との主な２つの外乱要因に対応でき、電流の過渡域での安定性を確保し、電流のオーバシュートに起因するマスト４の動きだし時のショックを一層低減でき、ソレノイド温度上昇によるソレノイド抵抗値の増加が原因で起こり得る電流の立ち上がり遅れに起因するマスト４の応答性の悪化を防止できる。
【０１６４】
また、ディザ制御処理のディザ振幅値Ｄdizzを決定するときにバッテリ電圧検出値Ｖbattとソレノイド抵抗値Ｒsolの両方の外乱要因を考慮してディザ振幅値Ｄdizz（＝Ｄ［cnt］・β・（Ｒsol／Ｖbatt））が決定されるので、ソレノイド温度上昇によるソレノイド抵抗値の増加が原因で起こり得る電磁弁２５のスプールの振幅の変動までを防止でき、電磁弁２５のスプールを一層確実に必要な振幅で微小振動させることができる。
【０１６５】
特に、ソレノイド抵抗値はキーオン中に変化する外乱要因なので、ソレノイド抵抗の変動を考慮することで、キーオン中に亘ってマスト４を安定にしかも応答性よく動作させることができる。
【０１６６】
なお、前記各実施形態に限定されず、例えば次のように実施してもよい。
（ｎ）ディザ振幅値を得るために利用するデータは、外乱要因の影響を反映するデータであればどんなデータでも採用してよい。例えばデューティ出力中心値Ｄcentを基準状態の仮定の下で電流値に換算した換算値Ｉcentと、目標電流値Ｉaimとの比（Ｉcent／Ｉaim）をディザ振幅基準値Ｄ［cnt］に乗じて、ディザ振幅値Ｄdizzを式  Ｄdizz＝Ｄ［cnt］・（Ｉcent／Ｉaim）  により計算することもできる。また、第４実施形態において、電流検出値Ｉdetを基準状態の仮定の下でデューティ値に換算した換算値Ｄdetと、デューティ出力中心値Ｄcentとの比（Ｄcent／Ｄdet）をディザ振幅基準値Ｄ［cnt］に乗じて、ディザ振幅値Ｄdizzを式  Ｄdizz＝Ｄ［cnt］・Ｄcent／Ｄdet  により計算することもできる。
さらに電流指令値を決めるために使用したデータ以外のデータを採用することもでき、例えば第１及び第４実施形態において、バッテリ電圧検出値Ｖbattやソレノイド抵抗Ｒsolを計測可能な装置構成とし、ディザ振幅値Ｄdizzの決定にＶbattやＲsolのデータを利用するようにしてもよい。
【０１６７】
（ｍ）第２および第３実施形態において、バッテリ電圧とソレノイド抵抗値以外の外乱要因を測定し、その測定値に応じて電流指令値としてのデューティ出力中心値Ｄcentを補正するようにしてもよい。
【０１６８】
（ｋ）第２および第３実施形態において、外乱要因を直接測定するのではなく間接的に測定するようにしてもよい。例えばソレノイド周辺の油温を温度センサ等の検出器を用いて測定し、その検出温度から推定されるソレノイド温度から間接的にソレノイド抵抗値を測定する方法を採用することもできる。
【０１６９】
（ｇ）電流値制御処理１回に対するディザ制御処理の割込回数は適宜設定することができる。例えばディザ振幅の最大値（Ｄmax）と最小値（−Ｄmax）を指令するだけの２回の割込みとしてもよい。また、電流値制御処理１回につきディザ制御を２サイクル以上の波形を指令する処理としてもよい。
【０１７０】
（ｆ）ＣＰＵ５４による電流値制御方法はＰＷＭ制御に限定されない。ＣＰＵからの出力信号に基づいてソレノイドに流れる電流を制御できる構成であればよい。
【０１７１】
（ｈ）検出信号Ｓ２のサンプリング回数は１サイクルに偶数回に限定されない。ディザ制御の周期（例えば１００Ｈｚ）を自然数倍した一定時間当たりに、１サイクル当たりに２回以上サンプリングされるよう合計偶数回のサンプリングを行い、この偶数個のサンプリング値の平均を電流検出値として算出することもできる。例えば２サイクル当たりに６回のサンプリングをし、この６個の値の平均を電流検出値としてもよい。
【０１７２】
（ｐ）ローパスフィルタ５３のカットオフ周波数を１００Ｈｚのリプルも取り除けるように設定し、Ａ／Ｄポート６２から一定電圧の電流検出値Ｉdetが入力されるようにしてもよい。ローパスフィルタを通過する際の信号の遅延時間が許容範囲である制御について採用する場合には特に問題はない。この構成では、ＣＰＵ５４によるフィルタ処理を無くし、ＣＰＵ５４の負担を軽減できる。
【０１７３】
（ｒ）ＣＰＵ５４による電流値制御方法はＰＷＭ制御に限定されない。ＣＰＵからの出力信号に基づいてソレノイドに流れる電流を制御できる構成であればよい。
【０１７４】
（ｑ）フィードバック制御は差ΔＩに比例する補正量で前回のＤcent値を補正する積分型制御に限定されない。目標電流値Ｉaimを換算した電流指令値を初期に指令し、差ΔＩを小さくするように例えば一定量ずつ補正する制御方法を採用することもできる。
【０１７５】
（ｕ）電磁弁２５はパイロット制御方式に限定されず、例えば直動式のものを採用してもよい。
（ｓ）前記各実施形態では、レバー操作で切換えられる手動切換弁と直列に電磁弁を設けた構成に実施したが、このような手動切換弁に代え、荷役レバー操作を検知してコントローラにより切換制御される電磁切換弁を備えたフォークリフト（例えば特開平７−６１７９２号公報等）において、電磁切換弁もしくは他の電磁弁（例えば特開平７−６１７９２号公報における速度調整用の電磁弁）の電流値制御において実施してよい。
【０１７６】
（ｔ）リフトシリンダの油路に設けた電磁弁の電流値制御において実施してもよい。もちろん、リーチ式フォークリフトにおけるリーチシリンダや、フォークを車幅方向にスライドさせるサイドシリンダ等の他の油圧シリンダの油路に設けた電磁弁の電流値制御において実施してもよい。これらの構成でも同様に、電磁弁の応答性の確保、スプールの振幅の過大に起因する開度への悪影響の防止を期待できる。
【０１７７】
（ｖ）エンジンフォークリフトに限らず、バッテリフォークリフトにおいて実施してもよい。
（ｗ）フォークリフト以外の産業車両において実施してもよい。例えば、パワーショベルや高所作業車において油圧シリンダの油路に設けた電磁弁の電流値制御において実施することもできる。ここで、本発明における荷役機器とは、土砂や作業者などを扱うためのショベルや作業台をも含む概念と定義する。
【０１７８】
前記各実施形態及び変更例から把握される請求項に係る発明以外の技術的思想（発明）を、その効果とともに以下に記載する。
（イ）請求項５又は請求項６に係る発明において、前記外乱要因の基準状態とは少なくとも前記ソレノイドに電流を供給する電源の電圧が基準電圧にある状態であり、前記外乱要因測定手段は、前記電源の電圧を前記外乱要因として測定する電源電圧測定手段を備えている。この構成によれば、電源電圧の変動によっても、電流の過渡域と定常域ともに適正なディザ振幅を得られる。
【０１７９】
（ロ）請求項５又は請求項６に係る発明において、前記外乱要因の基準状態とは少なくとも前記ソレノイドの抵抗が基準抵抗値にある状態であり、前記外乱要因測定手段は、前記ソレノイドの抵抗値を前記外乱要因として測定する抵抗値測定手段を備えている。この構成によれば、ソレノイド抵抗値の変動によらず、電流の過渡域と定常域ともに適正なディザ振幅を得られる。
【０１８０】
（ハ）請求項３〜請求項５のいずれか一項に係る発明において、前記制御手段は、前記電流検出値と前記目標電流値との差に比例する補正量で前記電流指令値を補正する積分型制御のフィードバック制御を行い、前記補正量を決めるための比例定数は、積分型制御の伝達関数からその制御系の安定性を考慮して決められたゲインである。この構成によれば、安定な電流値制御を実現できる。
【０１８１】
（ニ）前記（ハ）において、前記制御手段は、測定手段の測定値から得られるデータを用いて前記ゲインを補正する。この構成によれば、電流の過渡特性の安定を図ることができる。
【０１８２】
（ホ）請求項１〜請求項１０のいずれか一項に係る発明において、前記制御手段が前記電流検出手段から入力する検出信号は所定周期で振幅する信号であって、該検出信号の振幅中心を前記電流検出値として算出する検出値算出手段を備えている。この構成によれば、簡単な処理で検出信号の振幅中心値を得ることができる。
【０１８３】
（ヘ）請求項１〜請求項１２のいずれか一項に係る発明において、前記電磁弁は、荷役機器を操作部の操作に独立して駆動するため、前記油圧シリンダの油路上に操作部の操作に応じて切換えられる手動切換弁と直列に設けられてたものである。この構成によれば、荷役機器の安定動作を確保できるうえ、手動切換弁が固着（スティック）しても操作部を操作する力の加減次第で固着を解消でき、弁の固着に起因する不具合の発生を低減できる。なお、前記各実施形態において、ティルトレバー８が操作部を、ティルト用手動切換弁１９が手動切換弁をそれぞれ構成する。
【０１８４】
（ト）請求項１〜請求項１２のいずれか一項に係る発明において、前記制御手段は、前記荷役機器の動作を制御するうえで必要な検出値を得るために車両に設けられた検出手段からの検出値に応じて前記補正処理に使用する前記目標電流値を決める。この構成によれば、荷役機器の動作を制御するうえで必要な検出値に応じて目標電流値を決めて荷役機器の駆動制御を行う際に、荷役機器の動作を安定に制御できる。なお、前記各実施形態において、揚高センサ４１，ティルト角センサ４２，圧力センサ４３，前傾スイッチ４４，後傾スイッチ４５及び操作スイッチ４６が検出手段を構成する。
【０１８５】
（チ）請求項１〜請求項１２のいずれか一項に係る発明において、前記制御手段が指令する前記電流指令値は、電源と前記ソレノイドとの間に設けられたスイッチング手段のオン時間を制御するためのＰＷＭ信号のデューティ値を決めるためのものである。この構成によれば、デューティ制御による電磁弁の電流値制御を実現できる。
【０１８６】
（リ）請求項１〜請求項１２のいずれか一項に係る発明において、前記油圧シリンダは、前記荷役機器を昇降可能に支持するマストを傾動させるためのものである。この構成によれば、マストの傾動動作の安定化が図られる。
【０１８７】
【発明の効果】
以上詳述したように請求項１、請求項２及び請求項１２に記載の発明によれば、電磁弁のソレノイドに流れる電流を目標電流値とする制御のための電流指令値を決める際に使用した測定手段の測定値を使って得たデータを用いてディザ振幅値を決めるようにしたので、電源電圧やソレノイド抵抗の変動などの電流に影響を与える外乱要因に拘わらず、電流をディザ制御で所望する電流振幅で振幅させることができる。従って、電磁弁のスプールをいつも所望する振幅で微小振動させられるので、スプールの過小な振幅による電磁弁の応答性の低下、スプールの過大な振幅による開度への悪影響などのスプールの振幅のばらつきに起因する不具合を防止できる。その結果、ディザ制御の効果を十分発揮して荷役機器の応答性を良好に維持でき、しかも荷役機器の動作の安定性を維持できる。
【０１８８】
請求項３及び請求項１２に記載の発明によれば、フィードバック制御で使用した測定値を使って得たデータを用いてディザ振幅値を決めるので、フィードバック制御で使用したデータをディザ制御に利用することができる。
【０１８９】
請求項４及び請求項１２に記載の発明によれば、フィードバック制御で使用した電流検出値をディザ制御に利用でき、しかも少なくとも電流が定常域にあるときに常にスプールを所望する振幅で微小振動させることができる。
【０１９０】
請求項５及び請求項１２に記載の発明によれば、フィードバック制御で使用した外乱要因の測定値をディザ制御に利用でき、しかも電流が過渡域と定常域とのいずれにあるときにも常にスプールを所望する振幅で微小振動させることができる。
【０１９１】
請求項６及び請求項１２に記載の発明によれば、フィードフォワード制御で使用した外乱要因のの測定値をディザ制御に利用でき、しかも電流が過渡域と定常域とのいずれにあるときにも常にスプールを所望する振幅で微小振動させることができる。
【０１９２】
請求項７及び請求項１２に記載の発明によれば、ディザ振幅値を決める際、測定手段の測定値を使って得たデータと、外乱要因が基準状態にあるとの仮定の下で決まるそのデータと同じ次元の基準データとの比に応じて、外乱要因が基準状態にあるとの仮定の下で所望の電流振幅が得られるように設定されたディザ振幅基準値を補正するので、簡単な演算でディザ振幅値を決めることができる。
【０１９３】
請求項８及び請求項１２に記載の発明によれば、ディザ振幅値を決める際、外乱要因が基準状態にあるとの仮定の下でフィードバック制御で使用した目標電流値と電流指令値とを同じ次元で比較した比に応じて、外乱要因が基準状態にあるとの仮定の下で所望の電流振幅が得られるように設定されたディザ振幅基準値を補正するので、目標電流値と電流指令値を使った簡単な演算でディザ振幅値を決めることができる。
【０１９４】
請求項９及び請求項１２に記載の発明によれば、積分型制御のフィードバック制御で使用した目標電流値と電流指令値との同じ次元での比に応じてディザ振幅基準値を補正してディザ振幅値を決める構成において、ディザ振幅値が所定範囲内にないときにはディザ振幅値をその範囲の上限値または下限値に制限するので、電流の過渡域にスプールが過大に振幅することを防止できる。
【０１９５】
請求項１０及び請求項１２に記載の発明によれば、ディザ振幅値を決める際、外乱要因が基準状態にあるとの仮定の下でフィードバック制御で使用した電流指令値と電流検出値とを同じ次元で比較した比に応じて、外乱要因が基準状態にあるとの仮定の下で所望の電流振幅が得られるように設定されたディザ振幅基準値を補正するので、電流指令値と電流検出値を使った簡単な演算でディザ振幅値を決めることができ、しかも電流が過渡域と定常域とのいずれにあるときにも常にスプールを所望する振幅で微小振動させることができる。
【０１９６】
請求項１１及び請求項１２に記載の発明によれば、電流検出手段からの所定周期で振幅する検出信号の周期の自然数倍の一定時間当たりに、その１周期につき２回以上サンプリングするよう合計偶数回のサンプリングを行い、この偶数個のサンプリング値を平均して電流検出値を算出するので、電流検出値をほぼリアルタイムで得ることができ、制御の応答性を損なわない。
【図面の簡単な説明】
【図１】第１実施形態における電流値制御処理のフローチャート。
【図２】ディザ制御処理のフローチャート。
【図３】ディザ振幅基準値を説明するグラフ。
【図４】ソレノイド電流の時間変化を示すグラフ。
【図５】電流値とデューティ値との関係を示すグラフ。
【図６】電磁弁の電流値制御装置の電気回路図。
【図７】ソレノイドの電流検出値を求める方法を説明する信号波形図。
【図８】ティルト制御装置の電気構成ブロック図。
【図９】ティルト角と目標電流値との関係を示すグラフ。
【図１０】揚高と積載荷重から最大許容前傾角を求めるためのマップ図。
【図１１】フォークリフトの側面図。
【図１２】フォークリフトの油圧制御回路図。
【図１３】第２実施形態における電流値制御処理のフローチャート。
【図１４】ディザ制御処理のフローチャート。
【図１５】電磁弁の電流値制御装置の電気回路図。
【図１６】第３実施形態における電流値制御処理のフローチャート。
【図１７】電磁弁の電流値制御装置の電気回路図。
【図１８】第４実施形態における電流検出値とデューティ出力中心値との関係を示すグラフ。
【図１９】ディザ制御処理のフローチャート。
【図２０】同じくフローチャート。
【図２１】従来技術におけるソレノイド電流の時間変化を示すグラフ。
【符号の説明】
１…産業車両としてのフォークリフト、２…荷役機器としてのフォーク、４…マスト、５…油圧シリンダとしてのティルトシリンダ、２５…電磁弁、２５ａ…ソレノイド、５２…測定手段及び電流検出手段を構成する電流検出回路、５３…測定手段及び電流検出手段を構成するローパスフィルタ、５４…制御手段及びディザ制御手段を構成するとともに判定手段、振幅値制限手段及び検出値算出手段としてのＣＰＵ、５５…制御手段及びディザ制御手段を構成するとともに記憶手段としてのＲＯＭ、５８…電源としてのバッテリ、Ｉaim…目標電流値、Ｉdet…電流検出値、Ｄcent…電流指令値としてのデューティ出力中心値、Ｄout…ディザ指令値としてのデューティ出力値、Ｄdizz…ディザ振幅値、Ｄ［cnt］…ディザ振幅基準値、Ｉdizz…電流振幅、Ｒb…測定手段及び外乱要因測定手段としての抵抗。
【図１】
0003879212.tif 000002
【図２】
0003879212.tif 000003
【図３】
0003879212.tif 000004
【図４】
0003879212.tif 000005
【図５】
0003879212.tif 000006
【図６】
0003879212.tif 000007
【図７】
0003879212.tif 000008
【図８】
0003879212.tif 000009
【図９】
0003879212.tif 000010
【図１０】
0003879212.tif 000011
【図１１】
0003879212.tif 000012
【図１２】
0003879212.tif 000013
【図１３】
0003879212.tif 000014
【図１４】
0003879212.tif 000015
【図１５】
0003879212.tif 000016
【図１６】
0003879212.tif 000017
【図１７】
0003879212.tif 000018
【図１８】
0003879212.tif 000019
【図１９】
0003879212.tif 000020
【図２０】
0003879212.tif 000021
【図２１】
0003879212.tif 000022