(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-29
(45)【発行日】2024-12-09
(54)【発明の名称】作業機械のコンポーネントのソフトウェア更新システムおよびソフトウェア更新方法
(51)【国際特許分類】
G05B 19/042 20060101AFI20241202BHJP
G05B 19/05 20060101ALI20241202BHJP
G06F 8/65 20180101ALI20241202BHJP
【FI】
G05B19/042
G05B19/05 A
G06F8/65
(21)【出願番号】P 2020031851
(22)【出願日】2020-02-27
【審査請求日】2023-01-13
(73)【特許権者】
【識別番号】000001236
【氏名又は名称】株式会社小松製作所
(74)【代理人】
【識別番号】110001634
【氏名又は名称】弁理士法人志賀国際特許事務所
(72)【発明者】
【氏名】山根 潤
(72)【発明者】
【氏名】千村 洋平
【審査官】石坂 知樹
(56)【参考文献】
【文献】特開2017-156937(JP,A)
【文献】特開2003-076554(JP,A)
【文献】特開2018-055615(JP,A)
【文献】特開2020-144682(JP,A)
【文献】米国特許出願公開第2018/0173182(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/042
G05B 19/05
G06F 8/65
(57)【特許請求の範囲】
【請求項1】
作業機械の第1コンポーネントのソフトウェアを更新するソフトウェア更新システムであって、
前記作業機械の内部ネットワークを介して接続される前記第1コンポーネントの更新のための差分データを、外部ネットワークを介して受信する受信部と、
前記第1コンポーネントから、当該第1コンポーネントが記憶し、実行する第1のソフトウェアを取得するソフトウェア取得部と、
前記第1のソフトウェアに前記差分データを適用することで第2のソフトウェアを生成するソフトウェア生成部と、
生成された前記第2のソフトウェアを前記第1コンポーネントに出力するソフトウェア出力部と
、
互いに通信可能に接続された、第1プロセッサと、第2プロセッサとを備え、
前記第1プロセッサは、前記作業機械を制御するための前記第1コンポーネントと接続され、
前記第2プロセッサは、前記作業機械の機能を拡張するための前記第1コンポーネントと接続され、
前記第2プロセッサが前記ソフトウェア生成部として機能する
作業機械のコンポーネントのソフトウェア更新システム。
【請求項2】
前記ソフトウェア生成部は、前記第1コンポーネントと異なる第2コンポーネントに搭載される
請求項1に記載の作業機械のコンポーネントのソフトウェア更新システム。
【請求項3】
前記ソフトウェア生成部は、前記第1プロセッサに接続された前記第1コンポーネントに係る前記第2のソフトウェアを生成する
請求項1に記載の作業機械のコンポーネントのソフトウェア更新システム。
【請求項4】
生成された前記第2のソフトウェアを前記第1コンポーネントに出力した後に、前記第1コンポーネントから、当該第1コンポーネントの前記第1のソフトウェアの品番を取得する品番取得部と、
取得された前記品番に基づいて、前記第1コンポーネントの前記第1のソフトウェアが更新されたか否かを判定する更新判定部と
を備える請求項1から
請求項3の何れか1項に記載の作業機械のコンポーネントのソフトウェア更新システム。
【請求項5】
互いに通信可能に接続された、第1プロセッサと、第2プロセッサとを備え、前記第1プロセッサが、作業機械を制御するための第1コンポーネントと接続され、前記第2プロセッサが、前記作業機械の機能を拡張するための第1コンポーネントと接続された作業機械の制御システムにおいて、前記第1コンポーネントのソフトウェアを更新するソフトウェア更新
方法であって、
前記作業機械の内部ネットワークを介して接続される前記第1コンポーネントの更新のための差分データを、外部ネットワークを介して受信するステップと、
前記第1コンポーネントから、当該第1コンポーネントが記憶し、実行する第1のソフトウェアを取得するステップと、
前記第2プロセッサが、前記第1のソフトウェアに前記差分データを適用することで第2のソフトウェアを生成するステップと、
生成された前記第2のソフトウェアを前記第1コンポーネントに出力するステップと
を備える作業機械のコンポーネントのソフトウェア更新方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、作業機械に搭載されたコンポーネントのソフトウェア更新システムおよびソフトウェア更新方法に関する。
【背景技術】
【0002】
作業機械には、作業機械を制御し、または作業機械の状態を監視するためのコンポーネントが設けられる。コンポーネントは、マイクロコンピュータなどによって構成され、ソフトウェアの実行により機能を発揮する。そのため、コンポーネントの機能の拡張などを目的に、コンポーネントのソフトウェアを更新することがある。
特許文献1には、作業機械のコンポーネントのソフトウェアを更新するためにソフトウェアの差分データを適用する技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、作業機械のコンポーネントは、差分の適用計算のために十分な計算資源を有していない可能性がある。
本開示の目的は、差分データを用いて作業機械のコンポーネントのソフトウェアを更新することができる作業機械のコンポーネントのソフトウェア更新システムおよびソフトウェア更新方法を提供することにある。
【課題を解決するための手段】
【0005】
本発明の第1の態様によれば、作業機械の第1コンポーネントのソフトウェアを更新するソフトウェア更新システムは、前記作業機械の内部ネットワークを介して接続される前記第1コンポーネントの更新のための差分データを、外部ネットワークを介して受信する受信部と、前記第1コンポーネントから、当該第1コンポーネントが記憶し、実行する第1のソフトウェアを取得するソフトウェア取得部と、前記第1のソフトウェアに前記差分データを適用することで第2のソフトウェアを生成するソフトウェア生成部と、生成された前記第2のソフトウェアを前記第1コンポーネントに出力するソフトウェア出力部とを備える。
【発明の効果】
【0006】
上記態様によれば、差分データを用いて作業機械のコンポーネントのソフトウェアを更新することができる。
【図面の簡単な説明】
【0007】
【
図1】第1の実施形態に係るソフトウェア更新システムの構成図である。
【
図3】作業機械の制御系統の構成を示すブロック図である。
【
図4】第1の実施形態に係るコンポーネント管理サーバの構成を示すブロック図である。
【
図5】第1の実施形態に係るソフトウェア管理サーバの構成を示すブロック図である。
【
図6】第1の実施形態に係るソフトウェアテーブルの一例である。
【
図7】第1の実施形態に係るソフトウェア更新システムにおけるコンポーネントのソフトウェアの更新方法を示すシーケンス図である。
【
図8】第1の実施形態に係るゲートウェイ装置の品番確認処理を示すフローチャートである。
【
図9】第1の実施形態に係るゲートウェイ装置のソフトウェア更新処理を示すフローチャートである。
【
図10】第2の実施形態に係るゲートウェイ装置の構成を示す概略ブロック図である。
【
図11】第3の実施形態に係るゲートウェイ装置の構成を示す概略ブロック図である。
【
図12】第4の実施形態に係るゲートウェイ装置の構成を示す概略ブロック図である。
【発明を実施するための形態】
【0008】
〈第1の実施形態〉
図1は、第1の実施形態に係るソフトウェア更新システム1の構成図である。
ソフトウェア更新システム1は、複数の作業機械10が備えるコンポーネント12のソフトウェアの品番を管理する。ソフトウェア更新システム1は、複数の作業機械10と、コンポーネント管理サーバ30と、ソフトウェア管理サーバ50と、開発者端末70とを備える。ソフトウェアとは、ハードウェアの機能の実現のために用いられるデータである。ソフトウェアは、プログラムおよび設定データを含み得る。なお、ソフトウェアの品番とは、ソフトウェアを特定するためのユニークな識別子である。ソフトウェアの品番は、例えば、複数の数字、又はアルファベットの組み合わせによって表現される。
【0009】
各作業機械10は、ゲートウェイ装置11と2つ以上のコンポーネント12とを備える。なお、ゲートウェイ装置11も、コンポーネント12の一例である。ゲートウェイ装置11は、作業機械10の内部ネットワークと外部ネットワークとに接続される。内部ネットワークとは、作業機械10の内部のコンポーネント12同士を接続するネットワークである。外部ネットワークとは、作業機械10と作業機械の外部の装置とを接続するワイドエリアネットワーク(WAN)である。各コンポーネントは、作業機械10の制御、または作業機械10の状態の監視のための機能を発揮する。各コンポーネント12とゲートウェイ装置11とは、互いに作業機械10の内部ネットワークで接続される。
図1において、作業機械10として油圧ショベルが図示されているが、その他の作業機械でもよく、例えばブルドーザ、ダンプトラック、ホイールローダであってもよい。
【0010】
コンポーネント管理サーバ30は、複数の作業機械10が備えるコンポーネント12のハードウェアおよびソフトウェアの品番を記憶し、コンポーネント12のソフトウェアを更新するためのデータを作業機械10に提供する。具体的には、コンポーネント管理サーバ30は、コンポーネント12の更新前のソフトウェアと更新後のソフトウェアとの差分データを、外部ネットワークを介して作業機械10に提供する。
【0011】
ソフトウェア管理サーバ50は、コンポーネント12のハードウェアの品番に関連付けて、当該品番に係るコンポーネント12に適用可能な品番の異なる複数のソフトウェアを記憶する。また、ソフトウェア管理サーバ50は、ソフトウェアの更新のための差分データを生成し、コンポーネント管理サーバ30に送信する。なお、ハードウェアの品番とは、コンポーネント12を特定するためのユニークな識別子である。ハードウェアの品番は、例えば、複数の数字、又はアルファベットの組み合わせによって表現される。
【0012】
開発者端末70は、ソフトウェアの開発者によって操作される端末である。開発者は、開発者端末70を用いてソフトウェアを開発し、開発したソフトウェアを開発者端末70からソフトウェア管理サーバ50へ送信する。
【0013】
《作業機械10の構成》
図2は、作業機械10の外観を示す斜視図である。
作業機械である作業機械10は、油圧により作動する作業機1100と、作業機1100を支持する旋回体1200と、旋回体1200を支持する走行体1300とを備える。
【0014】
《作業機1100》
作業機1100は、ブーム1110と、アーム1120と、バケット1130と、ブームシリンダ1140と、アームシリンダ1150と、バケットシリンダ1160とを備える。
【0015】
ブーム1110は、アーム1120およびバケット1130を支える支柱である。ブーム1110の基端部は、旋回体1200の前部にピンを介して取り付けられる。
アーム1120は、ブーム1110とバケット1130とを連結する。アーム1120の基端部は、ブーム1110の先端部にピンを介して取り付けられる。
バケット1130は、土砂などを掘削するための刃を有する容器である。バケット1130の基端部は、アーム1120の先端部にピンを介して取り付けられる。
【0016】
ブームシリンダ1140は、ブーム1110を作動させるための油圧シリンダである。ブームシリンダ1140の基端部は、旋回体1200に取り付けられる。ブームシリンダ1140の先端部は、ブーム1110に取り付けられる。
アームシリンダ1150は、アーム1120を駆動するための油圧シリンダである。アームシリンダ1150の基端部は、ブーム1110に取り付けられる。アームシリンダ1150の先端部は、アーム1120に取り付けられる。
バケットシリンダ1160は、バケット1130を駆動するための油圧シリンダである。バケットシリンダ1160の基端部は、アーム1120に取り付けられる。バケットシリンダ1160の先端部は、バケット1130に取り付けられる。
【0017】
《旋回体1200》
旋回体1200には、オペレータが搭乗する運転室1210が備えられる。運転室1210は、旋回体1200の前方かつ作業機1100の左側に備えられる。
【0018】
運転室1210の内部には、作業機1100を操作するための操作装置1211が設けられる。操作装置1211の操作量に応じて、ブームシリンダ1140、アームシリンダ1150、およびバケットシリンダ1160に作動油が供給され、作業機1100が駆動する。また操作装置1211の操作量に応じて、図示しない旋回用モータに作動油が供給され、旋回体1200が旋回する。
【0019】
《コンポーネント12》
作業機械10は、位置方位演算器12a、傾斜検出器12bを備える。位置方位演算器12a、傾斜検出器12bは、コンポーネント12の一例である。また、作業機械10は、各コンポーネントを接続する内部ネットワークと外部ネットワークとを接続するゲートウェイ装置11を備える。ゲートウェイ装置11は、運転室1210内に設けられている。他のコンポーネント12は、同様に運転室1210内に設けられてもよいし、例えば旋回体1200上の運転室1210の外に設けられてもよい。
【0020】
位置方位演算器12aは、旋回体1200の位置および旋回体1200が向く方位を演算する。位置方位演算器12aは、GNSS(Global Navigation Satellite System)を構成する人工衛星から測位信号を受信する第1受信器12a1および第2受信器12a2を備える。第1受信器12a1および第2受信器12a2は、それぞれ旋回体1200の異なる位置に設置される。位置方位演算器12aは、第1受信器12a1が受信した測位信号に基づいて、図示しない現場座標系における旋回体1200の代表点O(車体座標系の原点)の位置を検出する。例えば、位置方位演算器12aは、第1受信器12a1が受信した測位信号に基づいて第1受信器12a1の位置を検出し、予め記憶された第1受信器12a1を基準とする代表点Oの相対位置に基づいて第1受信器12a1の位置を水平移動させることで、代表点Oの位置を検出する。
位置方位演算器12aは、第1受信器12a1が受信した測位信号と、第2受信器12a2が受信した測位信号とを用いて、検出された第1受信器12a1の設置位置に対する第2受信器12a2の設置位置の関係として、旋回体1200の方位を演算する。
【0021】
傾斜検出器12bは、旋回体1200の加速度および角速度を計測し、計測結果に基づいて旋回体1200の傾き(例えば、ロール角およびピッチ角)を検出する。傾斜検出器12bは、例えば運転室1210の下面に設置される。傾斜検出器12bは、例えば、慣性計測装置であるIMU(Inertial Measurement Unit)を用いることができる。
【0022】
図3は、作業機械10の制御系統の構成を示すブロック図である。
ゲートウェイ装置11は、物理的に分かれた第1基板100と第2基板200とを備える。
【0023】
第1基板100は、第1プロセッサ110、第1メインメモリ130、第1ストレージ150、第1インタフェース170を備える。第1プロセッサ110は、第1ストレージ150からプログラムを読み出して第1メインメモリ130に展開し、当該プログラムに従って所定の処理を実行する。なお、第1ストレージ150は、当該プログラムを含む同じソフトウェアを主系ソフトウェアと予備系ソフトウェアとして2系統記憶する。主系ソフトウェアとは、平常時にソフトウェアの機能を発揮する際に使用されるソフトウェアである。予備系ソフトウェアとは、主系ソフトウェアの異常時に主系ソフトウェアの復旧のために使用されるソフトウェアである。すなわち、第1基板100は、主系ソフトウェアを実行することで機能を発揮する。また第1基板100は、例えばソフトウェアの更新ミス等により異常が発生し、主系ソフトウェアを実行できない場合に、予備系ソフトウェアを主系ソフトウェアにコピーすることで主系ソフトウェアを復旧し、復旧した主系ソフトウェアを実行する。第1基板100は、コンポーネント12の一例である。
第1インタフェース170は、内部ネットワークである第1ネットワークN1を介して作業機械10を制御するための複数のコンポーネント12と接続される。第1基板100に接続されるコンポーネント12の例としては、エンジンの各種データをセンサにより取得しエンジンの動作を制御するエンジン制御コンポーネント、作業機1100の動作を制御する油圧機器関連の各種データをセンサにより取得し当該油圧機器を制御する油圧制御コンポーネント、作業機械10の各種センサからデータを取得し図示しないモニタの表示制御を行うモニタ制御コンポーネント等が挙げられる。第1ネットワークN1に接続されるコンポーネント12により、作業機械10の動作に関する基本的な動作制御が行われる。
【0024】
第2基板200は、第2プロセッサ210、第2メインメモリ230、第2ストレージ250、第2インタフェース270を備える。第2プロセッサ210は、第2ストレージ250からプログラムを読み出して第2メインメモリ230に展開し、当該プログラムに従って所定の処理を実行する。第2インタフェース270は、内部ネットワークである第2ネットワークN2を介して作業機械10の機能を拡張するための複数のコンポーネント12と接続される。第2基板200に接続されるコンポーネント12の例としては、カメラで撮像した画像に対して所定の画像処理を行い表示制御をする画像表示コンポーネント、施工現場の設計面と作業機械10との位置関係などをオペレータにガイダンスするためのガイダンスモニタを表示制御するマシンガイダンスコンポーネント、作業機1100により掘削した土量を計測するためのペイロードコンポーネント、外部のサーバ等と通信を行うための通信機器を制御し、作業機械の各種センサからデータを取得する通信コンポーネント等が挙げられる。第2ネットワークN2に接続されるコンポーネント12により、作業機械10およびオペレータに、作業機械の機能を向上させるなどの拡張的な情報の提供が行われる。第2基板200は、作業機械のコンポーネントの一例であってよい。
第1インタフェース170と第2インタフェース270は、互いに通信可能に接続される。また、第1基板100および第2基板200は、作業機械10が備える各コンポーネント12への経路を示す接続情報を記憶する。接続情報は、例えばルーティングテーブルであってよい。接続情報は、作業機械10にコンポーネント12が取り付けられ、または取り外されるたびに、第1基板100および第2基板200の間で情報が交換されることで更新される。
【0025】
他の実施形態においては、第1基板100または第2基板200は、上記構成に加えて、または上記構成に代えてPLD(Programmable Logic Device)などのカスタムLSI(Large Scale Integrated Circuit)を備えてもよい。PLDの例としては、PAL(Programmable Array Logic)、GAL(Generic Array Logic)、CPLD(Complex Programmable Logic Device)、FPGA(Field Programmable Gate Array)が挙げられる。この場合、第1基板100または第2基板200によって実現される機能の一部または全部が当該集積回路によって実現されてよい。
【0026】
第1ストレージ150および第2ストレージ250の例としては、磁気ディスク、光磁気ディスク、光ディスク、半導体メモリ等が挙げられる。第1ストレージ150および第2ストレージ250は、バス線に直接接続された内部メディアであってもよいし、第1インタフェース170または通信回線を介してゲートウェイ装置11に接続される外部メディアであってもよい。少なくとも1つの実施形態において第1ストレージ150および第2ストレージ250は、一時的でない有形の記憶媒体である。
なお、第2基板200が有する計算資源は、少なくとも1つのコンポーネント12が有する計算資源より大きい。また、第2基板200が有する計算資源は、第1基板100が有する計算資源より大きいことが好ましい。計算資源とは、コンピュータにおける計算において使用される資源である。計算資源とは、コンピュータが備える計算時間または記憶容量を提供する資源である。計算資源の例としては、CPU、メインメモリ、ストレージなどが挙げられる。なお、第2メインメモリ230の容量は、第1メインメモリ130の容量より大きいのが好ましい。また、第2ストレージ250の容量は、第1ストレージ150の容量より大きいのが好ましい。
【0027】
第1プロセッサ110は、第1ストレージ150が記憶するプログラムの実行により、入力部111、アクセス部112、更新部113、出力部114として機能する。
【0028】
入力部111は、第2基板200からコンポーネント12のソフトウェアの取得指示の入力を受け付ける。また入力部111は、第2基板200からコンポーネント12のソフトウェアの更新指示の入力を受け付ける。
【0029】
アクセス部112は、第2基板200から受け付けたソフトウェアの取得指示に従ってコンポーネント12から現行のソフトウェアを取得する。現行のソフトウェアとは、アクセス部112によるアクセス時に、コンポーネント12が記憶し、機能の発揮のために実行されているソフトウェアをいう。現行のソフトウェアは、第1のソフトウェアの一例である。またアクセス部112は、第2基板200から受け付けたソフトウェアの更新指示に従ってコンポーネント12にソフトウェアを出力する。ソフトウェアを受信したコンポーネント12は、ソフトウェアを書き換える。アクセス部112は、コンポーネント12から現行のソフトウェアを取得するソフトウェア取得部、および生成されたソフトウェアをコンポーネント12に出力するソフトウェア出力部の一例である。
【0030】
更新部113は、第2基板200から受け付けたソフトウェアの更新指示に従って、第1ストレージ150から主系ソフトウェアを読み出す。主系ソフトウェアは、現行のソフトウェアの一例である。また更新部113は、第2基板200から受け付けたソフトウェアの更新指示に従って予備系ソフトウェアおよび主系ソフトウェアを書き換える。
【0031】
出力部114は、アクセス部112または更新部113が取得したソフトウェアを第2基板200に出力する。
【0032】
第2プロセッサ210は、第2ストレージ250が記憶するプログラムの実行により、受信部211、出力部212、入力部213、アクセス部214、ソフトウェア生成部215、送信部216として機能する。また、第2ストレージ250には、予備系ソフトウェア記憶部251の記憶領域が確保される。
【0033】
受信部211は、コンポーネント管理サーバ30から、コンポーネント12のソフトウェアの差分データとともに、コンポーネントのソフトウェアの更新指示を受信する。また受信部211は、コンポーネントのソフトウェアの品番の確認指示を受信する。
【0034】
出力部212は、更新対象のコンポーネント12が第1基板100に接続される場合に、または更新対象のコンポーネント12が第1基板100である場合に、ソフトウェアの取得指示を第1基板100に出力する。また出力部212は、ソフトウェアの更新指示を第1基板100に出力する。
【0035】
入力部213は、第1基板100から更新対象のコンポーネント12のソフトウェアの入力を受け付ける。
【0036】
アクセス部214は、更新対象のコンポーネント12が第2基板200に接続される場合に、当該コンポーネント12からソフトウェアを取得する。またアクセス部214は、ソフトウェア生成部215が生成したソフトウェアを更新対象のコンポーネント12に出力する。ソフトウェアを受信したコンポーネント12は、ソフトウェアを書き換える。アクセス部214は、コンポーネント12から現行のソフトウェアを取得するソフトウェア取得部、および生成されたソフトウェアをコンポーネント12に出力するソフトウェア出力部の一例である。
【0037】
ソフトウェア生成部215は、入力部213に入力された現行のソフトウェアまたはアクセス部214が取得した現行のソフトウェアに、受信部211が受信した差分データを適用することで、更新後のソフトウェアを生成する。更新後のソフトウェアは、第2のソフトウェアの一例である。例えば、差分データは、ファイルの先頭からのビット数であるオフセットと、変更後の値の組み合わせを、変更箇所ごとに保持する。この場合、ソフトウェア生成部215は、差分データのオフセットに基づいて現行のソフトウェアの該当部分を特定し、該当部分における差分データが示す変更前の値を変更後の値に書き換える。これにより、ソフトウェア生成部215は、現行のソフトウェアと差分データから更新後のソフトウェアを生成することができる。
【0038】
送信部216は、受信部211が受信した要求に対する応答をコンポーネント管理サーバ30に送信する。
【0039】
《コンポーネント管理サーバ30の構成》
図4は、第1の実施形態に係るコンポーネント管理サーバ30の構成を示すブロック図である。
コンポーネント管理サーバ30は、プロセッサ310、メインメモリ330、ストレージ350、インタフェース370を備える。プロセッサ310は、ストレージ350からプログラムを読み出してメインメモリ330に展開し、当該プログラムに従って所定の処理を実行する。インタフェース370は、ゲートウェイ装置11の第2基板200、およびソフトウェア管理サーバ50と通信可能に接続される。
【0040】
ストレージ350に記憶されるプログラムは、コンポーネント管理サーバ30に発揮させる機能の一部を実現するためのものであってもよい。また、他の実施形態においては、コンポーネント管理サーバ30は、上記構成に加えて、または上記構成に代えてPLDなどのカスタムLSIを備えてもよい。この場合、コンポーネント管理サーバ30によって実現される機能の一部または全部が当該集積回路によって実現されてよい。
【0041】
ストレージ350の例としては、磁気ディスク、光磁気ディスク、光ディスク、半導体メモリ等が挙げられる。ストレージ350は、バス線に直接接続された内部メディアであってもよいし、インタフェース370または通信回線を介してコンポーネント管理サーバ30に接続される外部メディアであってもよい。また、プログラムは、ストレージ350に記憶されず、通信回線によってコンポーネント管理サーバ30に配信され、プロセッサ310が当該プログラムを実行してもよい。少なくとも1つの実施形態においてストレージ350は、一時的でない有形の記憶媒体である。
【0042】
プロセッサ310は、ストレージ350が記憶するプログラムの実行により、差分データ受信部311、更新対象特定部312、品番確認部313、更新指示送信部314、テーブル更新部315を備える。また、ストレージ350には、コンポーネントテーブル351の記憶領域が確保される。
【0043】
コンポーネントテーブル351は、複数の作業機械10それぞれが備えるコンポーネント12のハードウェアおよびソフトウェアの品番を記憶する。つまり、コンポーネントテーブル351は、作業機械10の機械IDと、コンポーネントのハードウェア品番と、ソフトウェア品番とを関連付けて記憶する。
【0044】
差分データ受信部311は、ソフトウェア管理サーバ50から、ソフトウェアの差分データと当該差分データの適用対象のソフトウェア品番を受信する。
【0045】
更新対象特定部312は、コンポーネントテーブル351を参照し、差分データ受信部311が受信したソフトウェア品番に係るコンポーネント12および当該コンポーネント12を備える作業機械10を特定する。
【0046】
品番確認部313は、更新対象特定部312が特定した作業機械10に更新対象となるコンポーネント12のソフトウェア品番の確認要求を送信する。品番確認部313は、作業機械10からソフトウェア品番の確認結果を受信する。品番確認部313は、コンポーネント12から、当該コンポーネント12の現行のソフトウェアの品番を取得する品番取得部の一例である。
【0047】
更新指示送信部314は、品番確認部313が作業機械10から受信した確認結果が、差分データ受信部311がソフトウェア管理サーバ50から受信したソフトウェア品番と一致する場合に、作業機械10にソフトウェアの更新指示を送信する。ソフトウェアの更新指示には、差分データ受信部311が受信した差分データ、ゲートウェイ装置11が実行するためのゲートウェイスクリプト、および更新対象のコンポーネント12が実行するためのコンポーネントスクリプトが含まれる。ゲートウェイスクリプトには、ゲートウェイ11が更新指示に含まれる差分データを処理する手順が記述される。コンポーネントスクリプトには、更新後のプログラムをインストールする手順が記述される。なお、コンポーネント12が更新後のプログラムをインストールする機能を有している場合には、更新指示にゲートウェイスクリプトが含まれなくてもよい。
【0048】
テーブル更新部315は、ソフトウェアの更新指示の後に品番確認部313が作業機械10から受信した確認結果に基づいて、ソフトウェアが更新されたか否かを判定する。テーブル更新部315は、ソフトウェアが更新されたと判定した場合に、コンポーネントテーブル351を更新する。テーブル更新部315は、コンポーネント12から取得された品番に基づいて、コンポーネント12の現行のソフトウェアが更新されたか否かを判定する更新判定部の一例である。
【0049】
《ソフトウェア管理サーバ50の構成》
図5は、第1の実施形態に係るソフトウェア管理サーバ50の構成を示すブロック図である。
ソフトウェア管理サーバ50は、プロセッサ510、メインメモリ530、ストレージ550、インタフェース570を備える。プロセッサ510は、ストレージ550からプログラムを読み出してメインメモリ530に展開し、当該プログラムに従って所定の処理を実行する。インタフェース570は、コンポーネント管理サーバ30と通信可能に接続される。
【0050】
ストレージ550に記憶されるプログラムは、ソフトウェア管理サーバ50に発揮させる機能の一部を実現するためのものであってもよい。また、他の実施形態においては、ソフトウェア管理サーバ50は、上記構成に加えて、または上記構成に代えてPLDなどのカスタムLSIを備えてもよい。この場合、ソフトウェア管理サーバ50によって実現される機能の一部または全部が当該集積回路によって実現されてよい。
【0051】
ストレージ550の例としては、磁気ディスク、光磁気ディスク、光ディスク、半導体メモリ等が挙げられる。ストレージ550は、バス線に直接接続された内部メディアであってもよいし、インタフェース570または通信回線を介してソフトウェア管理サーバ50に接続される外部メディアであってもよい。また、このプログラムが通信回線によってソフトウェア管理サーバ50に配信され、プロセッサ510が当該プログラムを実行してもよい。少なくとも1つの実施形態においてストレージ550は、一時的でない有形の記憶媒体である。
【0052】
プロセッサ510は、ストレージ550が記憶するプログラムの実行により、ソフトウェア記録部511、差分データ生成部512、差分データ送信部513を備える。また、ストレージ550には、ソフトウェアテーブル551の記憶領域が確保される。
【0053】
ソフトウェアテーブル551は、コンポーネント12のハードウェア品番に関連付けて、当該品番に係るコンポーネント12に適用可能な品番の異なる複数のソフトウェアを記憶する。つまり、ソフトウェアテーブル551は、コンポーネントのハードウェア品番と、ソフトウェアの実体と、当該ソフトウェアのソフトウェア品番とを関連付けて記憶する。
図6は、第1の実施形態に係るソフトウェアテーブルの一例である。ソフトウェアテーブル551は、画像表示コンポーネントを示すハードウェア品番と、画像表示コンポーネントアプリを示すソフトウェア品番と、ソフトウェアの実体とを関連付けて記憶している。なお、画像表示コンポーネントアプリ1、画像表示コンポーネントアプリ2、及び画像表示コンポーネントアプリ3は、ソフトウェアの実体の一例である。また、
図6に示す例では、ソフトウェアテーブル551は、マシンガイダンスコンポーネントを示すハードウェア品番と、マシンガイダンスコンポーネントアプリを示すソフトウェア品番と、ソフトウェアの実体とを関連付けて記憶している。なお、マシンガイダンスコンポーネントアプリ1、及びマシンガイダンスコンポーネントアプリ2はソフトウェアの実体の一例である。
【0054】
ソフトウェア記録部511は、サーバの管理者やソフトウェアの開発者からソフトウェアの実体、ソフトウェアの品番、およびソフトウェアの適用対象のコンポーネント12のハードウェア品番の入力を受け付け、これをソフトウェアテーブル551に記録する。管理者や開発者は、開発者端末70を操作し、ソフトウェアの実体、ソフトウェアの品番、およびソフトウェアの適用対象のコンポーネント12のハードウェア品番をソフトウェア管理サーバ50に送信する。
【0055】
差分データ生成部512は、ソフトウェアテーブル551に新たに記録されたソフトウェアと、当該ソフトウェアの適用対象のハードウェアに適用される他の品番のソフトウェアとの差分データを生成する。
【0056】
差分データ送信部513は、差分データ生成部512が生成した差分データと、当該差分データの適用対象となるソフトウェア品番とを、関連付けてコンポーネント管理サーバ30に送信する。
【0057】
《ソフトウェアの更新方法》
図7は、第1の実施形態に係るソフトウェア更新システム1におけるコンポーネント12のソフトウェアの更新方法を示すシーケンス図である。
開発者は、コンポーネント12のソフトウェアを更新すると、開発者端末70を操作し、当該ソフトウェアの実体、当該ソフトウェアの品番、および当該ソフトウェアの適用対象のコンポーネント12のハードウェア品番とを関連付けてソフトウェア管理サーバ50に送信する。ソフトウェア管理サーバ50のソフトウェア記録部511は、受信したソフトウェアの実体、ソフトウェア品番、およびハードウェア品番を、関連付けてソフトウェアテーブル551に記録する(ステップS1)。なお、ソフトウェア記録部511が受信したソフトウェア品番は、更新後のソフトウェア品番である更新品番である。
【0058】
差分データ生成部512は、ソフトウェアテーブル551から、ステップS1で受信したハードウェア品番に関連付けられたソフトウェアの実体およびソフトウェア品番を取得する(ステップS2)。差分データ生成部512は、ステップS1で受信したソフトウェアと、ステップS2で読み出した各ソフトウェアとの差分を計算することで、ソフトウェア品番ごとの差分データを生成する(ステップS3)。なお、コンポーネント12が記憶するソフトウェアが常に最新のものとなっている場合には、ステップS2で読み出したソフトウェアのうち最新のソフトウェアのみについて、差分データを生成してもよい。差分データ送信部513は、ステップS3で生成した差分データを、ステップS1で受信したハードウェア品番、ステップS1で受信した更新品番、およびステップS2で読み出したソフトウェア品番である対象品番に関連付けて、コンポーネント管理サーバ30に送信する(ステップS4)。
【0059】
コンポーネント管理サーバ30の差分データ受信部311は、ソフトウェア管理サーバ50から差分データ、ソフトウェア品番およびハードウェア品番を受信する。更新対象特定部312は、コンポーネントテーブル351を参照し、受信したハードウェア品番に係るコンポーネント12を備える作業機械10を特定する(ステップS5)。なお、ハードウェア品番に係るコンポーネント12を備える複数の作業機械10が特定されてもよい。次に、品番確認部313は、特定した作業機械10のゲートウェイ装置11に、更新対象となるコンポーネントのソフトウェア品番の確認要求を送信する(ステップS6)。すなわち、ソフトウェア品番の確認要求には、更新対象となるコンポーネント12のハードウェア品番が含まれる。
【0060】
ゲートウェイ装置11は、コンポーネント管理サーバ30からソフトウェア品番の確認要求を受信する(ステップS6)。ゲートウェイ装置11は、コンポーネント12の品番確認処理を実行し、特定したソフトウェア品番をコンポーネント管理サーバ30に送信する(ステップS7)。ソフトウェア品番は、ソフトウェアの実体に定数として書き込まれており、例えばソフトウェアが有する品番確認コマンドを実行することで、特定される。ゲートウェイ装置11による品番確認処理の詳細については、後述する。
【0061】
コンポーネント管理サーバ30の品番確認部313は、作業機械10からソフトウェア品番を受信する(ステップS7)。ステップS7で受信したソフトウェア品番と、ステップS4で受信した対象品番とが一致する場合、更新指示送信部314は、当該作業機械10のゲートウェイ装置11に、更新対象となるコンポーネントのソフトウェアの更新指示を送信する(ステップS8)。ソフトウェアの更新指示には、ステップS4で受信した差分データとゲートウェイ装置11が実行するためのゲートウェイスクリプト、および更新対象のコンポーネント12が実行するためのコンポーネントスクリプトが含まれる。ゲートウェイスクリプトには、差分データを適用するコンポーネントのハードウェア品番が含まれる。
【0062】
ゲートウェイ装置11は、コンポーネント管理サーバ30からソフトウェアの更新指示を受信する(ステップS8)。ゲートウェイ装置11は、更新指示に含まれるゲートウェイスクリプトに従って、コンポーネント12のソフトウェア更新処理を実行する(ステップS9)。ゲートウェイスクリプトには、作業機械10のキーオフ後に、個別のコンポーネント12をWake-on-LAN等の機能によってウェイクさせて、ソフトウェア更新処理を実行することが記述されていてもよい。これは、作業機械10の稼働中に更新のためにコンポーネント12が機能しなくなることを防ぐためである。また、キーオン後、図示しない作業機械10のロックレバー(作業機、旋回、走行の全ての油圧回路の流路を遮断するレバー)によって、作業機械10の動作をロックしているときに、ソフトウェア更新処理を実行することが記述されてもよい。ゲートウェイ装置11によるソフトウェア更新処理の詳細については、後述する。
【0063】
コンポーネント管理サーバ30の差分データ受信部311がステップS9で更新指示を送信した所定時間後に、品番確認部313は、更新指示を送信した作業機械10のゲートウェイ装置11に、更新対象のコンポーネントのソフトウェア品番の確認要求を送信する(ステップS10)。所定時間は、ソフトウェアへの差分データの適用処理の所要計算時間より十分に長い時間である。なお、他の実施形態においては、作業機械10のゲートウェイ装置11が更新完了後に完了通知をコンポーネント管理サーバ30に送信し、品番確認部313が、完了通知を送信した作業機械10のゲートウェイ装置11に、更新対象のコンポーネントのソフトウェア品番の確認要求を送信してもよい。
【0064】
ゲートウェイ装置11は、コンポーネント管理サーバ30からソフトウェア品番の確認要求を受信する。ゲートウェイ装置11は、コンポーネント12の品番確認処理を実行し、特定したソフトウェア品番をコンポーネント管理サーバ30に送信する(ステップS11)。なお、ソフトウェア品番は、ソフトウェアの実体に定数として書き込まれるため、ステップS9のソフトウェア更新処理が正常に完了していれば、ソフトウェア品番も合わせて更新される。
【0065】
コンポーネント管理サーバ30の品番確認部313は、作業機械10からソフトウェア品番を受信する(ステップS11)。ステップS11で受信したソフトウェア品番とステップS4で受信した更新品番とが一致する場合、テーブル更新部315は、コンポーネントテーブル351が記憶する当該コンポーネント12のソフトウェア品番をステップS11で受信したソフトウェア品番に更新する(ステップS12)。
なお、
図7に示すシーケンス図は、処理の一例を示すものであり、他の処理によってソフトウェアの更新がなされることを妨げない。例えば、他の実施形態に係るソフトウェア更新システム1は、ステップS6、ステップS7、ステップS10、ステップS11、ステップS12の処理を行わなくてもよい。なお、他の実施形態においては、ソフトウェア品番は、コンポーネント12の図示しないメインメモリまたはストレージに記憶されてよい。この場合、ゲートウェイ装置11は、ステップS7およびステップS11においてコンポーネント12の品番確認要求をコンポーネント12に送信し、コンポーネント12がメインメモリまたはストレージに記憶されたソフトウェア品番を読み出してゲートウェイ装置11に送信してもよい。
【0066】
《ゲートウェイ装置11の品番確認処理》
ここで、ソフトウェアの更新処理におけるゲートウェイ装置11の動作について説明する。ゲートウェイ装置11の第2基板200の受信部211が、ステップS6またはステップS10にてコンポーネント管理サーバ30からソフトウェア品番の確認要求を受信すると、ゲートウェイ装置11は品番確認処理を実行する。
【0067】
図8は、第1の実施形態に係るゲートウェイ装置11の品番確認処理を示すフローチャートである。
受信部211は、ソフトウェア品番の確認対象のコンポーネント12、すなわち確認要求に含まれるハードウェア品番に係るコンポーネント12が、第2基板200に接続されているかを判定する(ステップS31)。確認対象のコンポーネント12が第2基板200に接続されている場合(ステップS31:YES)、アクセス部214は、第2ネットワークN2を介して、確認対象のコンポーネント12からソフトウェア品番を取得する(ステップS32)。
【0068】
他方、確認対象のコンポーネント12が第2基板200に接続されていない場合(ステップS31:NO)、出力部212はソフトウェア品番の確認要求を第1基板100に出力する(ステップS33)。
第1基板100の入力部111が第2基板200からソフトウェア品番の確認要求の入力を受け付ける(ステップS34)。次に、アクセス部112は、第1ネットワークN1を介して、確認対象のコンポーネント12からソフトウェア品番を取得する(ステップS35)。出力部114は、読み出したソフトウェア品番を第2基板200に出力する(ステップS36)。
第2基板200の入力部213は、第1基板100から確認対象のコンポーネント12からのソフトウェア品番の入力を受け付ける(ステップS37)。
【0069】
第2基板200の送信部216は、ステップS32またはステップS37で特定した確認対象のコンポーネント12からのソフトウェア品番を、コンポーネント管理サーバ30に送信する(ステップS38)。
これにより、ゲートウェイ装置11は、コンポーネント管理サーバ30の確認要求に応答してコンポーネント12のソフトウェア品番を通知することができる。
なお、
図8に示すフローチャートは、処理の一例を示すものであり、他の処理によって品番の確認がなされることを妨げない。また、他の実施形態に係るゲートウェイ装置11は、品番確認処理を行わなくてもよい。なお、他の実施形態においては、ソフトウェア品番は、コンポーネント12の図示しないメインメモリまたはストレージに記憶されてよい。この場合、第2基板200は、ステップS32およびステップS37においてコンポーネント12の品番確認要求をコンポーネント12に送信し、コンポーネント12がメインメモリまたはストレージに記憶されたソフトウェア品番を読み出して第2基板に送信してもよい。
【0070】
《ゲートウェイ装置11のソフトウェア更新処理》
ゲートウェイ装置11の第2基板200の受信部211が、ステップS8にてコンポーネント管理サーバ30からソフトウェアの更新指示を受信すると、ゲートウェイ装置11は更新指示に含まれるゲートウェイスクリプトを実行することで、ソフトウェア更新処理を実行する。
【0071】
図9は、第1の実施形態に係るゲートウェイ装置11のソフトウェア更新処理を示すフローチャートである。
受信部211は、ソフトウェアの更新対象のコンポーネント12、すなわちゲートウェイスクリプトに記述されたハードウェア品番に係るコンポーネント12との通信を行うために、接続情報を参照して当該コンポーネント12が第2基板200に接続されているかを判定する(ステップS61)。確認対象のコンポーネント12が第2基板200に接続されている場合(ステップS61:YES)、アクセス部214は、第2ネットワークN2を介して、確認対象のコンポーネント12から現行のソフトウェアを取得する(ステップS62)。
【0072】
他方、更新対象のコンポーネント12が第1基板100に接続されている場合、または更新対象のコンポーネント12が第1基板100である場合(ステップS61:NO)、出力部212は第1基板100にソフトウェアの取得指示を出力する(ステップS63)。
第1基板100の入力部111は、第2基板200からソフトウェアの取得指示の入力を受け付ける(ステップS64)。更新部113は、更新対象のコンポーネント12が第1基板100自身であるか否かを判定する(ステップS65)。更新対象のコンポーネント12が第1基板100自身である場合(ステップS65:YES)、更新部113は、第1ストレージ150から主系ソフトウェアを読み出す(ステップS66)。他方、更新対象のコンポーネント12が第1基板100自身でない場合(ステップS65:NO)、アクセス部112は、第1ネットワークN1を介して更新対象のコンポーネント12から現行のソフトウェアを取得する(ステップS67)。なお、コンポーネント12は、現行のソフトウェアの情報を複数回に分けて第1基板に送信するようにしてもよい。これにより、一度の送信で現行のソフトウェアを、第1基板に送信することができない計算資源の小さいコンポーネント12においても、複数回に分けて送信することによって、現行のソフトウェアの情報を第1基板に送信することができる。
出力部114は、ステップS66またはステップS67で読み出したソフトウェアを、第2基板200に出力する(ステップS68)。
第2基板200の入力部213は、第1基板100から更新対象のコンポーネント12のソフトウェアの入力を受け付ける(ステップS69)。
【0073】
そして、ソフトウェア生成部215は、ゲートウェイスクリプトに従って、ステップS62またはステップS69で取得したソフトウェアに、コンポーネント管理サーバ30から受信した更新指示に含まれる差分データを適用することで、更新後のソフトウェアを生成する(ステップS70)。ソフトウェア生成部215は、生成したソフトウェアをコンポーネント12のハードウェア品番に関連付けて予備系ソフトウェア記憶部に記録する(ステップS71)。
【0074】
ソフトウェア生成部215は、生成したソフトウェアを更新対象のコンポーネント12に送信するために、接続情報を参照して更新対象のコンポーネント12が第2基板200に接続されているかを判定する(ステップS72)。更新対象のコンポーネント12は、第1コンポーネントの一例である。更新対象のコンポーネント12の例としては、第1ネットワークN1に接続されるコンポーネント12、第2ネットワークN2に接続されるコンポーネント12、第1基板100、および第2基板200が挙げられる。また、ソフトウェア生成部215を備える第2基板200は、第2コンポーネントの一例である。なお、他の実施形態においては、第2基板200以外のコンポーネントが第2コンポーネントになってもよい。すなわち、他の実施形態においては、第2基板200以外のコンポーネントがソフトウェア生成部215を備えてもよい。
【0075】
更新対象のコンポーネント12が第2基板200に接続されている場合(ステップS72:YES)、アクセス部214は、第2ネットワークN2を介して、更新対象のコンポーネント12にステップS70で生成したソフトウェアおよび更新指示に含まれるコンポーネントスクリプトを出力する。これにより、当該コンポーネント12は、コンポーネントスクリプトの実行により、記憶するソフトウェアを、ステップS70で生成したソフトウェアに書き換える(ステップS73)。このように、例えば、ソフトウェアの更新対象のコンポーネント12は、第1コンポーネントの一例である。また、例えば、第2基板200は、更新対象のコンポーネント12と異なる第2コンポーネントの一例である。
【0076】
他方、更新対象のコンポーネント12が第1基板100に接続されている場合、または更新対象のコンポーネント12が第1基板100である場合(ステップS72:NO)、出力部212は第1基板100にソフトウェアの更新指示を出力する(ステップS74)。ソフトウェアの更新指示には、ステップS70で生成したソフトウェアおよび更新指示に含まれるコンポーネントスクリプトが含まれる。
第1基板100の入力部111は、第2基板200からソフトウェアの更新指示の入力を受け付ける(ステップS75)。更新部113は、更新対象のコンポーネント12が第1基板100自身であるか否かを判定する(ステップS76)。更新対象のコンポーネント12が第1基板100自身である場合(ステップS76:YES)、更新部113は、第1ストレージ150が記憶する予備系ソフトウェアを、更新指示に含まれるソフトウェアに書き換える(ステップS77)。このように、例えば、ソフトウェアの更新対象の第1基板100は、第1コンポーネントの一例である。また、例えば、第1コンポーネントと異なる第2基板200は、第2コンポーネントの一例である。予備系ソフトウェアの書き換えが完了すると、更新部113は、第1ストレージ150が記憶する主系ソフトウェアを、更新指示に含まれるソフトウェアに書き換える(ステップS78)。
【0077】
他方、更新対象のコンポーネント12が第1基板100自身でない場合(ステップS76:NO)、アクセス部112は、第1ネットワークN1を介して更新対象のコンポーネント12に更新指示に含まれるソフトウェアおよびコンポーネントスクリプトを出力する。これにより、当該コンポーネント12は、コンポーネントスクリプトの実行により、記憶するソフトウェアを、更新指示に含まれるソフトウェアに書き換える(ステップS79)。このように、例えば、ソフトウェアの更新対象のコンポーネント12は、第1コンポーネントの一例である。また、例えば、第1コンポーネントと異なる第2基板200は、第2コンポーネントの一例である。また、ソフトウェアの更新対象のコンポーネント12に接続される第1基板100は、他のコンポーネントの一例である。
これにより、ゲートウェイ装置11は、差分データに基づいてコンポーネント12のソフトウェアを更新することができる。
なお、
図9に示すフローチャートは、処理の一例を示すものであり、他の処理によってソフトウェアの更新がなされることを妨げない。例えば、他の実施形態に係るゲートウェイ装置11は、ステップS71の処理、ステップS77の処理を行わなくてもよい。また、他の実施形態においては、第1基板100、第1基板100に接続されているコンポーネント12、および第2基板200に接続されているコンポーネント12のいずれかを更新するものであってもよい。また、更新対象のコンポーネント12がコンポーネントスクリプトを記憶している場合、更新指示にコンポーネントスクリプトが含まれなくてもよい。
【0078】
《作用・効果》
このように、第1の実施形態によれば、ゲートウェイ装置11は、外部ネットワークを介して作業機械10のコンポーネント12の更新のための差分データを受信し、内部ネットワークを介して接続されるコンポーネントの現行のソフトウェアに差分データを適用する。そして、ゲートウェイ装置11は、生成されたソフトウェアをコンポーネント12に出力する。これにより、ゲートウェイ装置11は、コンポーネント12の計算資源の大小に依らず、コンポーネント12のソフトウェアを更新することができる。またゲートウェイ装置11は、差分データを用いてソフトウェアを更新することで、外部ネットワークの通信量を抑えることができる。
【0079】
また、第1の実施形態に係るゲートウェイ装置11は、第1基板100より大きい記憶容量を有する第2基板200において、差分データを用いたソフトウェアの生成を行う。これにより、第1の実施形態に係るゲートウェイ装置11は、第1基板100の計算資源を作業機械10の制御に多く振り分けることができる。
また、第2基板200は、第1基板100に接続されるコンポーネント12のソフトウェアの更新を行う。
【0080】
また、第1の実施形態に係るゲートウェイ装置11は、生成されたコンポーネント12のソフトウェアを、予備系ソフトウェア記憶部251に記憶する。これにより、ステップS73またはステップS79におけるソフトウェアの書き換え処理時の電源断などによりソフトウェアの破損が生じた場合にも、予備系ソフトウェア記憶部251が記憶するソフトウェアを用いて生成することができる。また、第1基板100は、更新後のソフトウェアを、第1ストレージ150の予備系ソフトウェアおよび主系ソフトウェアとして順に記録する。これにより、予備系ソフトウェアの記録が完了し、主系ソフトウェアの記録中に処理の中断が生じること等により、主系ソフトウェアの破損が生じた場合にも、記録が完了した予備系ソフトウェアを用いて主系ソフトウェアを復旧することができる。
なお、破損したソフトウェアの復旧は、ゲートウェイ装置11による自動操作によってなされてもよいし、サービスマンやオペレータによる手動操作によってなされてもよい。
【0081】
〈第2の実施形態〉
第1の実施形態に係るゲートウェイ装置11は、作業機械10のすべてのコンポーネント12のソフトウェアを、当該作業機械10に搭載された第2基板200において生成する。他方、コンポーネント12の中には、十分な計算資源を有しているものが存在する。
第2の実施形態では、一部のコンポーネント12が自身のソフトウェアの更新を自律的に行う。
【0082】
図10は、第2の実施形態に係るゲートウェイ装置11の構成を示す概略ブロック図である。
図10に示すように、第2基板200は、第1の実施形態の構成に加え、さらに判定部217を備える。また第2ストレージ250には、コンポーネント記憶部252の記憶領域がさらに設けられる。
【0083】
コンポーネント記憶部252は、差分データの適用機能を有するコンポーネント12のソフトウェア品番を予め記憶する。コンポーネント記憶部252が記憶する情報は、コンポーネント12の交換時などに、サービスマン等により更新される。
判定部217は、コンポーネント記憶部252を参照して、更新対象のコンポーネント12が差分データの適用機能を有するか否かを判定する。
【0084】
第2の実施形態に係るゲートウェイ装置11がソフトウェア更新処理を実行すると、まず判定部217がコンポーネント記憶部252を参照して、更新対象のコンポーネント12が差分データの適用機能を有するか否かを判定する。更新対象のコンポーネント12が差分データの適用機能を有する場合、アクセス部112は、コンポーネント管理サーバ30から受信した更新指示を更新対象のコンポーネント12に転送する。これにより、更新対象のコンポーネント12は、更新指示に含まれる差分データを用いてソフトウェアを更新する。
他方、更新対象のコンポーネント12が差分データの適用機能を有しない場合、ゲートウェイ装置11は、第1の実施形態に係るステップS61からステップS79の処理を実行することで、コンポーネント12のソフトウェアを更新する。
【0085】
〈第3の実施形態〉
第1の実施形態に係るゲートウェイ装置11は、物理的に分かれた第1基板100と第2基板200とを備える。これに対し、第3の実施形態に係るゲートウェイ装置11は、1つの基板に実装される。
【0086】
図11は、第3の実施形態に係るゲートウェイ装置11の構成を示す概略ブロック図である。すなわち、第3の実施形態に係るゲートウェイ装置11は、プロセッサ210a、メインメモリ230a、ストレージ250a、インタフェース270aを備える。プロセッサ210a、メインメモリ230a、ストレージ250a、およびインタフェース270aは、それぞれ第1の実施形態に係る第2基板の第2プロセッサ210、第2メインメモリ230、第2ストレージ250、および第2インタフェース270と同等の計算資源を有する。
【0087】
第3の実施形態に係るゲートウェイ装置11は、他の基板との通信を行う必要がないため、第1の実施形態に係るゲートウェイ装置11の出力部212および入力部213に相当する機能を有しなくてよい。
また、第3の実施形態に係るゲートウェイ装置11は、第1の実施形態に係るステップS31の判定、ステップS33からステップS37の処理、ステップS61の判定、ステップS63からステップS69の処理、ステップS72の判定、およびステップS74からステップS79の処理を行わなくてもよい。
【0088】
〈第4の実施形態〉
第1の実施形態に係るゲートウェイ装置11は、第1基板100と第2基板200がそれぞれプロセッサを1つずつ備える。これに対し、第4の実施形態に係るゲートウェイ装置11は、1つの基板が2つのプロセッサを備える。
【0089】
図12は、第4の実施形態に係るゲートウェイ装置11の構成を示す概略ブロック図である。すなわち、第4の実施形態に係るゲートウェイ装置11は、1つの基板に、第1プロセッサ110、第1メインメモリ130、第1ストレージ150、第1インタフェース170、第2プロセッサ210、第2メインメモリ230、第2ストレージ250、第2インタフェース270を備える。
なお、第1プロセッサ110および第2プロセッサ210は、マルチコアCPUの各コアによって実現されてよい。また第1プロセッサ110および第2プロセッサ210は、仮想化技術によって1つの物理プロセッサから仮想化された2つの仮想プロセッサであってもよい。また、第1メインメモリ130および第2メインメモリ230、ならびに第1ストレージ150および第2ストレージ250も、1つのメインメモリおよびストレージにて実現されてもよい。この場合、予めプロセッサごとにメインメモリおよびストレージの利用可能な記憶領域を割り当てておく。また、第1インタフェース170および第2インタフェース270は、1つのインタフェースによって実現されてよい。この場合、第1ネットワークN1および第2ネットワークN2は、ソフトウェアによって仮想的に分離してもよい。
【0090】
第4の実施形態に係るゲートウェイ装置11は、第1の実施形態と同様の処理によってコンポーネント12のソフトウェアの更新を行うことができる。
【0091】
以上、図面を参照して一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、様々な設計変更等をすることが可能である。
例えば、他の実施形態においては、ゲートウェイ装置11が3つ以上の基板を備えてもよい。また、他の実施形態においては、ゲートウェイ装置11が備える複数の基板の役割は、上述の実施形態と異なるものであってもよい。
また、他の実施形態においては、ソフトウェア管理サーバ50とコンポーネント管理サーバ30は別体ではなく、1つの装置によって実現されてもよい。
【0092】
また第2の実施形態においては、ゲートウェイ装置11が、更新対象のコンポーネント12が差分データの適用機能を有するか否かを判定するが、これに限られない。例えば、第2基板200に接続されるコンポーネント12が必ず差分データの適用機能を有し、第1基板100に接続されるコンポーネント12が必ず差分データの適用機能を有しないことが分かっている場合、判定部217は、更新対象のコンポーネント12がいずれの基板に接続されるかを判定することで、差分データの適用を行うか否かを決定してもよい。
【符号の説明】
【0093】
1…ソフトウェア更新システム 10…作業機械 11…ゲートウェイ装置 12…コンポーネント 30…コンポーネント管理サーバ 50…ソフトウェア管理サーバ 100…第1基板 111…入力部 112…アクセス部 113…更新部 114…出力部 200…第2基板 211…受信部 212…出力部 213…入力部 214…アクセス部 215…ソフトウェア生成部 216…送信部 311…差分データ受信部 312…更新対象特定部 313…品番確認部 314…更新指示送信部 315…テーブル更新部 511…ソフトウェア記録部 512…差分データ生成部 513…差分データ送信部