WO2023032850A1 - ソフトウェア更新システム、作業機械およびソフトウェア更新方法 - Google Patents

ソフトウェア更新システム、作業機械およびソフトウェア更新方法 Download PDF

Info

Publication number
WO2023032850A1
WO2023032850A1 PCT/JP2022/032230 JP2022032230W WO2023032850A1 WO 2023032850 A1 WO2023032850 A1 WO 2023032850A1 JP 2022032230 W JP2022032230 W JP 2022032230W WO 2023032850 A1 WO2023032850 A1 WO 2023032850A1
Authority
WO
WIPO (PCT)
Prior art keywords
software
component
update
unit
components
Prior art date
Application number
PCT/JP2022/032230
Other languages
English (en)
French (fr)
Inventor
洋平 千村
潤 山根
Original Assignee
株式会社小松製作所
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 株式会社小松製作所 filed Critical 株式会社小松製作所
Priority to CN202280055761.XA priority Critical patent/CN117882049A/zh
Priority to DE112022002828.9T priority patent/DE112022002828T5/de
Priority to KR1020247001902A priority patent/KR20240022634A/ko
Publication of WO2023032850A1 publication Critical patent/WO2023032850A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • EFIXED CONSTRUCTIONS
    • E02HYDRAULIC ENGINEERING; FOUNDATIONS; SOIL SHIFTING
    • E02FDREDGING; SOIL-SHIFTING
    • E02F9/00Component parts of dredgers or soil-shifting machines, not restricted to one of the kinds covered by groups E02F3/00 - E02F7/00
    • E02F9/20Drives; Control devices
    • E02F9/2025Particular purposes of control systems not otherwise provided for
    • EFIXED CONSTRUCTIONS
    • E02HYDRAULIC ENGINEERING; FOUNDATIONS; SOIL SHIFTING
    • E02FDREDGING; SOIL-SHIFTING
    • E02F9/00Component parts of dredgers or soil-shifting machines, not restricted to one of the kinds covered by groups E02F3/00 - E02F7/00
    • E02F9/20Drives; Control devices
    • E02F9/2025Particular purposes of control systems not otherwise provided for
    • E02F9/2054Fleet management
    • EFIXED CONSTRUCTIONS
    • E02HYDRAULIC ENGINEERING; FOUNDATIONS; SOIL SHIFTING
    • E02FDREDGING; SOIL-SHIFTING
    • E02F9/00Component parts of dredgers or soil-shifting machines, not restricted to one of the kinds covered by groups E02F3/00 - E02F7/00
    • E02F9/20Drives; Control devices
    • E02F9/22Hydraulic or pneumatic drives
    • EFIXED CONSTRUCTIONS
    • E02HYDRAULIC ENGINEERING; FOUNDATIONS; SOIL SHIFTING
    • E02FDREDGING; SOIL-SHIFTING
    • E02F9/00Component parts of dredgers or soil-shifting machines, not restricted to one of the kinds covered by groups E02F3/00 - E02F7/00
    • E02F9/26Indicating devices
    • E02F9/261Surveying the work-site to be treated
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1433Saving, restoring, recovering or retrying at system level during software upgrading
    • EFIXED CONSTRUCTIONS
    • E02HYDRAULIC ENGINEERING; FOUNDATIONS; SOIL SHIFTING
    • E02FDREDGING; SOIL-SHIFTING
    • E02F3/00Dredgers; Soil-shifting machines
    • E02F3/04Dredgers; Soil-shifting machines mechanically-driven
    • E02F3/28Dredgers; Soil-shifting machines mechanically-driven with digging tools mounted on a dipper- or bucket-arm, i.e. there is either one arm or a pair of arms, e.g. dippers, buckets
    • E02F3/36Component parts
    • E02F3/42Drives for dippers, buckets, dipper-arms or bucket-arms
    • E02F3/43Control of dipper or bucket position; Control of sequence of drive operations
    • E02F3/435Control of dipper or bucket position; Control of sequence of drive operations for dipper-arms, backhoes or the like

Definitions

  • Patent Literature 1 discloses a technique for updating software of components of a working machine.
  • the software to be installed on the work machine is received via the network.
  • work machines are not necessarily in an environment where they can connect to the network all the time, and may not be able to connect to the network for several days. Therefore, when updating a plurality of components according to the procedure described in Patent Document 1, there is a possibility that some of the plurality of components will be updated and the remaining components will not be updated before being disconnected from the network. In this case, the work machine becomes connectable to the network again and cannot realize functions realized by interlocking a plurality of components until the remaining components are updated.
  • An object of the present disclosure is to provide a software update system, a working machine, and a software update method that can increase the certainty of updating multiple components in order to realize functions realized by interlocking multiple components. That's what it is.
  • a software update system is a software update system for updating a plurality of components provided in a work machine, the first update system used for updating a first component that is one of the plurality of components.
  • Receiving from a server data including software and second software used for updating a second component, which is one of the plurality of components, for realizing functions related to the first software a storage unit for storing the received first software and second software; and after the first software and the second software are stored in the storage unit, the first software and the second software. and an updating unit that updates the first component and the second component based on.
  • the software update system can increase the certainty of updating multiple components in order to implement functions realized by interlocking multiple components.
  • FIG. 1 is a configuration diagram of a software update system according to a first embodiment
  • FIG. 1 is a perspective view showing the appearance of a working machine according to a first embodiment
  • FIG. It is a figure which shows the imaging range of several cameras with which the work machine which concerns on 1st Embodiment is provided. It is a figure which shows the structure inside the cab which concerns on 1st Embodiment.
  • 2 is a schematic block diagram showing the hardware configuration of the control system of the work machine according to the first embodiment
  • FIG. 3 is a block diagram showing the configuration of a gateway function controller according to the first embodiment
  • FIG. 3 is a block diagram showing the configuration of a component management server according to the first embodiment
  • FIG. 1 is a configuration diagram of a software update system according to a first embodiment
  • FIG. 1 is a perspective view showing the appearance of a working machine according to a first embodiment
  • FIG. It is a figure which shows the imaging range of several cameras with which the work machine which concerns on 1st Embodi
  • FIG. 2 is a block diagram showing the configuration of a software management server according to the first embodiment;
  • FIG. It is a figure which shows an example of the software table which concerns on 1st Embodiment.
  • FIG. 4 is a sequence diagram showing a method of updating component software in the software update system according to the first embodiment; 7 is a flowchart showing product number confirmation processing of the gateway function controller according to the first embodiment; 7 is a flowchart showing single software update processing by the gateway function controller according to the first embodiment; 4 is a flow chart showing a plurality of software update processes by the gateway function controller according to the first embodiment;
  • FIG. 1 is a configuration diagram of a software update system 1 according to the first embodiment.
  • the software update system 1 manages software product numbers of components 200 provided in a plurality of work machines 100 .
  • a software update system 1 includes a plurality of work machines 100 , a component management server 300 , a software management server 500 and a developer terminal 700 .
  • Software is data used to implement hardware functions. Software may include programs and configuration data.
  • the software product number is a unique identifier for specifying the software.
  • the product number of software is represented by, for example, a combination of numbers or alphabets.
  • Each work machine 100 comprises a gateway function controller 201 and two or more components 200.
  • the gateway function controller 201 is also an example of the component 200 .
  • Gateway function controller 201 is connected to the internal network and external network of work machine 100 .
  • the internal network is a network that connects components 200 inside work machine 100 .
  • the external network is a wide area network (WAN) that connects work machine 100 and devices outside the work machine.
  • Each component 200 performs a function for controlling work machine 100 or monitoring the state of work machine 100 .
  • Each component 200 and gateway function controller 201 are connected to each other via an internal network of work machine 100 .
  • some components 200 can receive calculation results of other components 200 via the internal network and perform further calculations.
  • a hydraulic excavator is illustrated as the working machine 100 in FIG. 1, other working machines such as a bulldozer, a dump truck, and a wheel loader may be used.
  • the component management server 300 stores the product numbers of the hardware and software of the components 200 provided in the plurality of work machines 100 and provides the work machines 100 with data for updating the software of the components 200 . Specifically, component management server 300 provides package data including difference data between pre-update software and post-update software of component 200 to work machine 100 via the external network. Note that when updating multiple components 200 is necessary to implement a predetermined function, the component management server 300 includes multiple differential data used for updating multiple components 200 in one package data.
  • the software management server 500 stores a plurality of pieces of software with different product numbers applicable to the component 200 associated with the component 200 hardware product number.
  • the software management server 500 also generates difference data for updating software and transmits it to the component management server 300 .
  • the hardware product number is a unique identifier for specifying the component 200 .
  • a hardware product number is represented by, for example, a combination of numbers or alphabets.
  • the developer terminal 700 is a terminal operated by a software developer.
  • a developer develops software using the developer terminal 700 and transmits the developed software from the developer terminal 700 to the software management server 500 .
  • the developer associates product number information indicating the product number of each component to which the software is applicable with the data of the plurality of software. Send to software management server 500 .
  • FIG. 2 is a perspective view showing the appearance of work machine 100.
  • a work machine 100 that is a work machine includes a hydraulically operated work machine 130 , a revolving body 120 that supports the work machine 130 , and a traveling body 110 that supports the revolving body 120 .
  • Traveling body 110 supports work machine 100 so that it can travel.
  • the traveling body 110 includes two endless tracks 111 provided on the left and right sides and two traveling motors 112 for driving each endless track 111 .
  • the revolving body 120 is supported by the traveling body 110 so as to be able to revolve about a revolving center.
  • Work implement 130 is hydraulically driven.
  • Work implement 130 is supported on the front portion of revolving body 120 so as to be vertically drivable.
  • the operator's cab 140 is a space for an operator to operate the work machine 100 .
  • the driver's cab 140 is provided in the front left portion of the revolving body 120 .
  • a portion of the revolving body 120 to which the work implement 130 is attached is referred to as a front portion.
  • the front portion is referred to as the rear portion
  • the left portion is referred to as the left portion
  • the right portion is referred to as the right portion.
  • the swing body 120 includes an engine 121 , a hydraulic pump 122 , a control valve 123 , a swing motor 124 and a fuel injection device 125 .
  • the engine 121 is a prime mover that drives the hydraulic pump 122 .
  • Hydraulic pump 122 is a variable displacement pump driven by engine 121 . Hydraulic pump 122 supplies hydraulic fluid to each actuator (boom cylinder 131C, arm cylinder 132C, bucket cylinder 133C, travel motor 112, and swing motor 124) through control valve 123.
  • the control valve 123 controls the flow rate of hydraulic oil supplied from the hydraulic pump 122 .
  • the swing motor 124 is driven by hydraulic fluid supplied from the hydraulic pump 122 via the control valve 123 to swing the swing body 120 .
  • Fuel injector 125 injects fuel into engine 121 .
  • Revolving body 120 is provided with a plurality of cameras 206 that capture images of the surroundings of work machine 100 .
  • FIG. 3 is a diagram showing imaging ranges of the plurality of cameras 206 included in the work machine 100 according to the first embodiment.
  • the revolving body 120 includes a left rear camera 206A that captures a left rear range Ra of the periphery of the revolving body 120, a rear camera 206B that captures a rear range Rb of the periphery of the revolving body 120, and a revolving body 120.
  • a right rear camera 206C that captures an image of the right rear range Rc and a right front camera 206D that captures an image of a right front range Rd around the revolving body 120 are provided. Part of the imaging ranges of the cameras 206 may overlap each other.
  • the imaging range of the plurality of cameras 206 covers the entire perimeter of work machine 100 excluding left front range Re visible from operator's cab 140 .
  • the camera 206 according to the first embodiment captures images of the left rear, rear, right rear, and right front of the revolving body 120, but other embodiments are not limited to this.
  • the number and coverage of cameras 206 according to other embodiments may differ from the examples shown in FIGS.
  • work implement 130 includes boom 131, arm 132, bucket 133, boom cylinder 131C, arm cylinder 132C, and bucket cylinder 133C.
  • a base end of the boom 131 is attached to the revolving body 120 via a boom pin.
  • Arm 132 connects boom 131 and bucket 133 .
  • the base end of the arm 132 is attached to the tip of the boom 131 via an arm pin.
  • the bucket 133 includes a blade for excavating earth and sand and a container for containing the excavated earth and sand.
  • the base end of the bucket 133 is attached to the tip of the arm 132 via a bucket pin.
  • a boom cylinder 131C is a hydraulic cylinder for operating the boom 131 .
  • a base end portion of the boom cylinder 131 ⁇ /b>C is attached to the revolving body 120 .
  • a tip portion of the boom cylinder 131 ⁇ /b>C is attached to the boom 131 .
  • Arm cylinder 132C is a hydraulic cylinder for driving arm 132 .
  • a base end portion of the arm cylinder 132C is attached to the boom 131 .
  • a tip portion of the arm cylinder 132C is attached to the arm 132 .
  • Bucket cylinder 133C is a hydraulic cylinder for driving bucket 133 .
  • a base end of the bucket cylinder 133C is attached to the arm 132 .
  • a tip of the bucket cylinder 133 ⁇ /b>C is attached to a link member connected to the bucket 133 .
  • FIG. 4 is a diagram showing the internal configuration of the driver's cab 140 according to the first embodiment.
  • a driver's seat 142 , an operating device 143 and a monitor component 202 are provided in the driver's cab 140 .
  • the operation device 143 is a device for driving the traveling body 110, the revolving body 120, and the working machine 130 by manual operation by the operator.
  • the operating device 143 includes a left operating lever 143LO, a right operating lever 143RO, a left foot pedal 143LF, a right foot pedal 143RF, a left travel lever 143LT, and a right travel lever 143RT.
  • the left operating lever 143LO is provided on the left side of the driver's seat 142.
  • the right operating lever 143RO is provided on the right side of the driver's seat 142. As shown in FIG.
  • the left operation lever 143LO is an operation mechanism for rotating the rotating body 120 and excavating/dumping the arm 132. Specifically, when the operator of work machine 100 tilts left operation lever 143LO forward, arm 132 performs a dump operation. When the operator of work machine 100 tilts left operation lever 143LO rearward, arm 132 excavates. Further, when the operator of work machine 100 tilts left operation lever 143LO rightward, revolving body 120 turns rightward. When the operator of work machine 100 tilts left operation lever 143LO leftward, revolving body 120 turns left.
  • the revolving body 120 when the left operating lever 143LO is tilted in the front-rear direction, the revolving body 120 turns to the right or left, and when the left control lever 143LO is tilted in the left-right direction, the arm 132 performs excavation or excavation. Dump operation is allowed.
  • the right operation lever 143RO is an operation mechanism for performing excavation/dumping operations of the bucket 133 and raising/lowering operations of the boom 131. Specifically, when the operator of work machine 100 tilts right operation lever 143RO forward, boom 131 is lowered. Further, when the operator of work machine 100 tilts right operation lever 143RO rearward, boom 131 is raised. When the operator of work machine 100 tilts right operation lever 143RO rightward, bucket 133 is dumped. When the operator of work machine 100 tilts right operation lever 143RO leftward, bucket 133 performs an excavation operation.
  • the bucket 133 when the right operating lever 143RO is tilted in the front-rear direction, the bucket 133 is dumped or excavated, and when the right control lever 143RO is tilted in the left-right direction, the boom 131 is raised or lifted. Lowering may be performed.
  • the left foot pedal 143LF is arranged on the left side of the floor in front of the driver's seat 142 .
  • the right foot pedal 143RF is arranged on the right side of the floor in front of the driver's seat 142 .
  • the left travel lever 143LT is pivotally supported by the left foot pedal 143LF, and configured so that the inclination of the left travel lever 143LT and the depression of the left foot pedal 143LF are interlocked.
  • the right running lever 143RT is pivotally supported by the right foot pedal 143RF, and configured so that the tilting of the right running lever 143RT and the depression of the right foot pedal 143RF are interlocked.
  • the left foot pedal 143LF and the left traveling lever 143LT correspond to rotational driving of the left crawler belt of the traveling body 110. Specifically, when the operator of work machine 100 tilts left foot pedal 143LF or left travel lever 143LT forward, the left crawler belt rotates forward. When the operator of work machine 100 pushes left foot pedal 143LF or left travel lever 143LT backward, the left crawler belt rotates backward.
  • the right foot pedal 143RF and the right traveling lever 143RT correspond to rotational driving of the right crawler belt of the traveling body 110. Specifically, when the operator of work machine 100 tilts right foot pedal 143RF or right travel lever 143RT forward, the right crawler belt rotates forward. Further, when the operator of work machine 100 tilts right foot pedal 143RF or right travel lever 143RT backward, the right crawler belt rotates backward.
  • FIG. 5 is a schematic block diagram showing the hardware configuration of the control system of work machine 100 according to the first embodiment.
  • Work machine 100 includes gateway function controller 201 , monitor component 202 , control controller 203 , engine controller 204 and perimeter monitor component 205 .
  • Gateway function controller 201, monitor component 202, control controller 203, engine controller 204, perimeter monitoring component 205 and camera 206 are connected to each other via an in-vehicle network.
  • gateway function controller 201, monitor component 202, control controller 203, and engine controller 204 are connected via a first network N1 such as a CAN (Controller Area Network).
  • the monitoring component 205 is connected via a second network N2 such as Ethernet.
  • the gateway function controller 201 , monitor component 202 , control controller 203 , engine controller 204 , perimeter monitoring component 205 and camera 206 are all examples of components 200 provided on work machine 100 .
  • the gateway function controller 201 converts the communication protocols of the first network N1 and the second network N2 to each other, and performs communication between the component 200 connected to the first network N1 and the component 200 connected to the second network N2.
  • a monitor component 202 is provided in the cab 140 and controls the display of the display.
  • the controller 203 acquires various data related to the hydraulic equipment that controls the operation of the work machine 130 using a sensor (not shown), and outputs a control signal for controlling the hydraulic equipment according to the operation of the operating device 143 . That is, the controller 203 controls driving of the boom cylinder 131C, the arm cylinder 132C, the bucket cylinder 133C, the travel motor 112, the turning motor 124, and the like.
  • the engine controller 204 acquires various data related to the engine 121 using a sensor (not shown), and controls the engine 121 by instructing the fuel injection device 125 about the fuel injection amount.
  • the perimeter monitoring component 205 generates a bird's-eye view image based on the image captured by the camera 206 and causes the monitor component 202 to display the bird's-eye view image.
  • FIG. 6 is a block diagram showing the configuration of the gateway function controller 201 according to the first embodiment.
  • the gateway function controller 201 comprises a physically separate first board 210 and second board 220 .
  • the first board 210 comprises a first processor 211 , a first main memory 213 , a first storage 215 and a first interface 217 .
  • the first processor 211 acquires a program from the first storage 215, develops it in the first main memory 213, and executes predetermined processing according to the program.
  • the first storage 215 stores the same software including the program in two systems as main software and standby software.
  • Main software is software that is used when the function of the software is exhibited during normal times.
  • Standby software is software that is used to restore the main software when the main software fails. That is, the first board 210 exhibits its function by executing main software.
  • First substrate 210 is an example of component 200 .
  • First interface 217 is connected to a plurality of components 200 for controlling work machine 100 via first network N1, which is an internal network. Examples of the components 200 connected to the first board 210 include a monitor component 202, a control controller 203, an engine controller 204, and the like.
  • a component 200 connected to the first network N1 performs basic motion control regarding the motion of the work machine 100 .
  • the second board 220 comprises a second processor 221 , a second main memory 223 , a second storage 225 and a second interface 227 .
  • the second processor 221 acquires a program from the second storage 225, develops it in the second main memory 223, and executes predetermined processing according to the program.
  • Second interface 227 is connected to a plurality of components 200 for extending the functions of work machine 100 via second network N2, which is an internal network. Examples of the components 200 connected to the second board 220 include a perimeter monitoring component 205, a camera 206, and a guidance monitor for providing guidance to the operator regarding the positional relationship between the design surface of the construction site and the working machine 100.
  • Second board 220 may be an example of a component of a work machine.
  • First board 210 and second board 220 also store connection information indicating routes to components 200 provided in work machine 100 .
  • the connection information may be, for example, a routing table.
  • the connection information is updated by exchanging information between first board 210 and second board 220 each time component 200 is attached or removed from work machine 100 .
  • the first substrate 210 or the second substrate 220 may include a custom LSI (Large Scale Integrated Circuit) such as a PLD (Programmable Logic Device) in addition to or instead of the above configuration. good.
  • PLDs include PAL (Programmable Array Logic), GAL (Generic Array Logic), CPLD (Complex Programmable Logic Device), and FPGA (Field Programmable Gate Array).
  • PAL Programmable Array Logic
  • GAL Generic Array Logic
  • CPLD Complex Programmable Logic Device
  • FPGA Field Programmable Gate Array
  • first storage 215 and the second storage 225 examples include magnetic disks, magneto-optical disks, optical disks, semiconductor memories, and the like.
  • the first storage 215 and the second storage 225 may be internal media directly connected to the bus line, or external media connected to the gateway function controller 201 via the first interface 217 or communication line. good too.
  • primary storage 215 and secondary storage 225 are non-transitory, tangible storage media.
  • the computational resources of the second board 220 are larger than the computational resources of at least one component 200 .
  • the computational resources of the second board 220 are preferably larger than the computational resources of the first board 210 .
  • a computational resource is a resource used in computations on a computer.
  • a computational resource is a resource that provides computing time or storage capacity that a computer has. Examples of computational resources include CPU, main memory, storage, and the like. Note that the capacity of the second main memory 223 is preferably larger than the capacity of the first main memory 213 . Also, the capacity of the second storage 225 is preferably larger than the capacity of the first storage 215 .
  • the first processor 211 functions as an input unit 2111, an access unit 2112, an update unit 2113, and an output unit 2114 by executing programs stored in the first storage 215.
  • the input unit 2111 receives input of an instruction to acquire the software of the component 200 from the second board 220 .
  • the input unit 2111 also receives an input of an instruction to update the software of the component 200 from the second board 220 .
  • the access unit 2112 acquires the current software from the component 200 according to the software acquisition instruction received from the second board 220 .
  • Current software refers to software stored in the component 200 and being executed to perform its function at the time of access by the access unit 2112 .
  • the access unit 2112 also outputs software to the component 200 according to the software update instruction received from the second board 220 .
  • the component 200 that received the software rewrites the software.
  • the update unit 2113 acquires main software from the first storage 215 according to the software update instruction received from the second board 220 .
  • the updating unit 2113 rewrites the backup software and the main software according to the software update instruction received from the second board 220 .
  • the output unit 2114 outputs the software acquired by the access unit 2112 or the update unit 2113 to the second board 220 .
  • the second processor 221 functions as a reception unit 2211, an output unit 2212, an input unit 2213, an access unit 2214, a software generation unit 2215, and a transmission unit 2216 by executing programs stored in the second storage 225. Also, a storage area for the standby software storage unit 2251 is secured in the second storage 225 .
  • the receiving unit 2211 receives from the component management server 300 a package file containing difference data of the software of the component 200 and an instruction to update the software of the component.
  • the receiving unit 2211 also receives an instruction to confirm the product number of the component software.
  • the output unit 2212 outputs a software acquisition instruction to the first board 210 when the update target component 200 is connected to the first board 210 or when the update target component 200 is the first board 210 . .
  • the output unit 2212 also outputs a software update instruction to the first substrate 210 .
  • the input unit 2213 receives input of software of the component 200 to be updated from the first board 210 .
  • the access unit 2214 acquires software from the component 200 to be updated when the component 200 to be updated is connected to the second board 220 .
  • the access unit 2214 also outputs the software generated by the software generation unit 2215 to the update target component 200 .
  • the component 200 that received the software rewrites the software.
  • the access unit 2214 is an example of an update unit that updates the component 200 based on the received software.
  • the software generation unit 2215 generates updated software by applying the difference data received by the reception unit 2211 to the current software input to the input unit 2213 or the current software acquired by the access unit 2214 .
  • the differential data holds a combination of the offset, which is the number of bits from the beginning of the file, and the post-change value for each change.
  • the software generation unit 2215 identifies the applicable portion of the current software based on the offset of the difference data, and rewrites the pre-change value indicated by the difference data in the applicable portion with the post-change value. As a result, the software generation unit 2215 can generate updated software from the current software and the difference data.
  • the transmission section 2216 transmits a response to the request received by the reception section 2211 to the component management server 300 .
  • FIG. 7 is a block diagram showing the configuration of the component management server 300 according to the first embodiment.
  • the component management server 300 comprises a processor 310 , main memory 330 , storage 350 and interface 370 .
  • the processor 310 acquires a program from the storage 350, develops it in the main memory 330, and executes predetermined processing according to the program.
  • a communication device (not shown) having a communication function via a wide area network is connected to the interface 370, and is communicably connected to the second board 220 of the gateway function controller 201 and the software management server 500 via the communication device. be.
  • the program stored in the storage 350 may be for realizing part of the functions that the component management server 300 is to exhibit.
  • the component management server 300 may include a custom LSI such as a PLD in addition to or instead of the above configuration.
  • part or all of the functions implemented by the component management server 300 may be implemented by the integrated circuit.
  • Examples of the storage 350 include magnetic disks, magneto-optical disks, optical disks, and semiconductor memories.
  • the storage 350 may be an internal medium directly connected to the bus line, or an external medium connected to the component management server 300 via the interface 370 or communication line.
  • the program may be distributed to component management server 300 via a communication line without being stored in storage 350, and processor 310 may execute the program.
  • storage 350 is a non-transitory, tangible storage medium.
  • the processor 310 includes a differential data receiving unit 311, an update target identifying unit 312, a product number checking unit 313, an update instruction transmitting unit 314, and a table updating unit 315 by executing a program stored in the storage 350.
  • a storage area for a component table 351 is secured in the storage 350 .
  • the component table 351 stores the product numbers of the hardware and software of the components 200 included in each of the work machines 100 . That is, the component table 351 associates and stores the machine ID of the work machine 100, the hardware product number of the component, and the software product number.
  • the difference data receiving unit 311 receives, from the software management server 500, the software difference data and the software product number to which the difference data is applied.
  • the update target identifying unit 312 refers to the component table 351 and identifies the component 200 related to the software product number received by the difference data receiving unit 311 and the work machine 100 including the component 200 .
  • the product number confirmation unit 313 transmits a confirmation request for the software product number of the component 200 to be updated to the work machine 100 identified by the update target identification unit 312 .
  • Product number confirmation unit 313 receives the confirmation result of the software product number from work machine 100 .
  • update instruction transmission unit 314 updates the software to work machine 100.
  • the software update instruction includes the difference data received by the difference data receiving unit 311, the gateway script to be executed by the gateway function controller 201, and the component script to be executed by the component 200 to be updated.
  • the gateway script describes a procedure for the gateway function controller 201 to process the difference data included in the update instruction.
  • the component script describes the procedure for installing the updated program.
  • the table update unit 315 determines whether the software has been updated based on the confirmation result received from the work machine 100 by the product number confirmation unit 313 after the software update instruction.
  • the table update unit 315 updates the component table 351 when it determines that the software has been updated.
  • FIG. 8 is a block diagram showing the configuration of the software management server 500 according to the first embodiment.
  • the software management server 500 comprises a processor 510 , main memory 530 , storage 550 and interface 570 .
  • Processor 510 acquires a program from storage 550, develops it in main memory 530, and executes predetermined processing according to the program.
  • the interface 570 is communicably connected to the component management server 300 .
  • the programs stored in the storage 550 may be for realizing part of the functions that the software management server 500 is to exhibit.
  • the software management server 500 may include a custom LSI such as a PLD in addition to or instead of the above configuration. In this case, part or all of the functions implemented by the software management server 500 may be implemented by the integrated circuit.
  • Examples of the storage 550 include magnetic disks, magneto-optical disks, optical disks, and semiconductor memories.
  • the storage 550 may be an internal medium directly connected to the bus line, or an external medium connected to the software management server 500 via the interface 570 or communication line.
  • this program may be distributed to software management server 500 via a communication line, and processor 510 may execute the program.
  • storage 550 is a non-transitory, tangible storage medium.
  • the processor 510 includes a software recording unit 511, a difference data generation unit 512, and a difference data transmission unit 513 by executing a program stored in the storage 550.
  • a storage area for a software table 551 is secured in the storage 550 .
  • the software table 551 stores a plurality of pieces of software with different product numbers applicable to the component 200 associated with the hardware product number of the component 200 .
  • the software table 551 associates and stores the hardware product number of the component, the substance of the software, and the software product number of the software.
  • FIG. 9 is a diagram illustrating an example of a software table according to the first embodiment;
  • the software table 551 stores hardware product numbers indicating image display components, software product numbers indicating image display component applications, and software entities in association with each other. Further, in the example shown in FIG. 9, the software table 551 stores hardware product numbers indicating machine guidance components, software product numbers indicating machine guidance component applications, and software entities in association with each other.
  • the software recording unit 511 receives input from the server administrator or software developer of the actual software, the product number of the software, and the hardware product number of the component 200 to which the software is applied, and records this in the software table 551 .
  • the administrator or developer operates the developer terminal 700 to send the software entity, the software product number, and the hardware product number of the component 200 to which the software is applied to the software management server 500 .
  • the software recording unit 511 accepts input of product number information indicating hardware product numbers of a plurality of components 200 for realizing predetermined functions in cooperation from the developer terminal 700 , the received product number information is stored in the storage 550 . Record.
  • the difference data generation unit 512 generates difference data between the software newly recorded in the software table 551 and the software with another product number applied to the hardware to which the software is applied.
  • the difference data transmission unit 513 associates the difference data generated by the difference data generation unit 512 with the software product number to which the difference data is applied, and transmits them to the component management server 300 .
  • the difference data transmission unit 513 also transmits the product number information to the component management server 300 .
  • FIG. 10 is a sequence diagram showing a software update method of the component 200 in the software update system 1 according to the first embodiment.
  • the developer operates the developer terminal 700, associates the substance of the software, the product number of the software, and the hardware product number of the component 200 to which the software is applied, and updates the software management server. 500.
  • the software recording unit 511 of the software management server 500 records the received software substance, software product number, and hardware product number in the software table 551 in association with each other (step S1).
  • the software product number received by the software recording unit 511 is the update product number, which is the software product number after the update.
  • the software recording unit 511 records the received product number information in the storage 550 .
  • the difference data generation unit 512 acquires the actual software and the software product number associated with the hardware product number received in step S1 from the software table 551 (step S2).
  • the difference data generation unit 512 generates difference data for each software product number by calculating the difference between the software received in step S1 and each software acquired in step S2 (step S3). Note that if the software stored in the component 200 is always the latest, difference data may be generated only for the latest software among the software acquired in step S2.
  • the difference data transmission unit 513 associates the difference data generated in step S3 with the target product number, which is the hardware product number received in step S1, the update product number received in step S1, and the software product number acquired in step S2, to obtain the component It is transmitted to the management server 300 (step S4). If the product number information has been received from the developer terminal 700 in step S1, the difference data transmission unit 513 also transmits the product number information to the component management server 300.
  • the difference data receiving unit 311 of the component management server 300 receives the difference data, software product number, and hardware product number from the software management server 500 (step S4).
  • the update target identifying unit 312 refers to the component table 351 and identifies the work machine 100 that includes the component 200 associated with the received hardware product number (step S5). Note that a plurality of work machines 100 having the component 200 associated with the hardware product number may be identified.
  • the product number confirmation unit 313 transmits a confirmation request for the software product number of the component to be updated to the gateway function controller 201 of the specified work machine 100 (step S6). That is, the software product number confirmation request includes the hardware product number of the component 200 to be updated.
  • the gateway function controller 201 receives a software product number confirmation request from the component management server 300 (step S6).
  • the gateway function controller 201 executes product number confirmation processing for the component 200, and transmits the identified software product number to the component management server 300 (step S7).
  • the software product number is written as a constant in the substance of the software, and is specified, for example, by executing a product number confirmation command that the software has. The details of the product number confirmation processing by the gateway function controller 201 will be described later.
  • the product number confirmation unit 313 of the component management server 300 receives the software product number from the work machine 100 (step S7). If the software product number received in step S7 matches the target product number received in step S4, the update instruction transmission unit 314 instructs the gateway function controller 201 of the work machine 100 to update the software of the component to be updated. and the package file used for updating (step S8).
  • the software update instruction includes the difference data received in step S4, the gateway script to be executed by the gateway function controller 201, and the component script to be executed by the component 200 to be updated.
  • the gateway script contains the hardware part number of the component to which the difference data is applied.
  • step S4 if the data received in step S4 contains product number information indicating the hardware product numbers of the plurality of components 200, the component management server 300 updates the update instruction transmission unit 314 with the difference between the plurality of components 200 indicated by the product number information.
  • the gateway script and the component script a package file is generated that includes hardware product number information of each component 200 required to implement the function and update order information indicating the update order of the component 200 .
  • the gateway function controller 201 receives the software update instruction and package file from the component management server 300 (step S8). Upon completion of receiving the package file, the gateway function controller 201 executes software update processing for the component 200 according to the gateway script included in the package file (step S9).
  • the gateway script may describe that after the work machine 100 is turned off, the individual component 200 is woken up by a function such as Wake-on-LAN to execute the software update process. This is to prevent component 200 from malfunctioning due to an update while work machine 100 is in operation. Further, after the key is turned on, when the operation of the work machine 100 is locked by a lock lever (not shown) of the work machine 100 (a lever that cuts off the flow paths of all the hydraulic circuits for the work machine, swing, and travel), software update is performed. Execution of processing may be described. Details of the software update processing by the gateway function controller 201 will be described later.
  • a product number confirmation request is sent (step S10).
  • the predetermined time is a time sufficiently longer than the required calculation time for applying the difference data to the software.
  • gateway function controller 201 of work machine 100 transmits a completion notification to component management server 300 after completion of updating, and part number confirmation unit 313 updates the gateway function controller of work machine 100 that has transmitted the completion notification. 201, a confirmation request for the software product number of the component to be updated may be transmitted.
  • the gateway function controller 201 receives a software product number confirmation request from the component management server 300 .
  • the gateway function controller 201 executes product number confirmation processing for the component 200 and transmits the identified software product number to the component management server 300 (step S11).
  • the software product number is written as a constant in the substance of the software, so if the software update process in step S9 is normally completed, the software product number is also updated.
  • the product number confirmation unit 313 of the component management server 300 receives the software product number from the work machine 100 (step S11). If the software product number received in step S11 and the update product number received in step S4 match, the table updating unit 315 updates the software product number of the component 200 stored in the component table 351 to the software product number received in step S11. (Step S12).
  • the sequence diagram shown in FIG. 10 shows an example of processing, and does not prevent software from being updated by other processing.
  • the software update system 1 according to another embodiment does not have to perform the processes of steps S6, S7, S10, S11, and S12.
  • the software product number may be stored in a main memory or storage (not shown) of the component 200 .
  • the gateway function controller 201 transmits a product number confirmation request of the component 200 to the component 200 in steps S7 and S11, and the component 200 acquires the software product number stored in the main memory or storage and sends it to the gateway function controller 201. You may send.
  • FIG. 11 is a flow chart showing product number confirmation processing of the gateway function controller 201 according to the first embodiment.
  • the receiving unit 2211 determines whether the component 200 whose software product number is to be confirmed, ie, the component 200 related to the hardware product number included in the confirmation request, is connected to the second board 220 (step S31). If the confirmation target component 200 is connected to the second board 220 (step S31: YES), the access unit 2214 acquires the software product number from the confirmation target component 200 via the second network N2 (step S32). ).
  • the output unit 2212 outputs a software product number check request to the first board 210 (step S33).
  • the input unit 2111 of the first substrate 210 receives the software product number confirmation request from the second substrate 220 (step S34).
  • the access unit 2112 acquires the software product number from the confirmation target component 200 via the first network N1 (step S35).
  • the output unit 2114 outputs the acquired software product number to the second board 220 (step S36).
  • the input unit 2213 of the second board 220 receives the software product number from the confirmation target component 200 from the first board 210 (step S37).
  • the transmission unit 2216 of the second board 220 transmits the software product number from the confirmation target component 200 identified in step S32 or step S37 to the component management server 300 (step S38).
  • the gateway function controller 201 can notify the software product number of the component 200 in response to the confirmation request from the component management server 300 .
  • the gateway function controller 201 does not have to perform the product number confirmation process.
  • the software product number may be stored in a main memory or storage (not shown) of the component 200 .
  • the second board 220 transmits a product number confirmation request of the component 200 to the component 200 in steps S32 and S37, and the component 200 obtains the software product number stored in the main memory or storage and transmits it to the second board. You may
  • the receiving unit 2211 of the second substrate 220 of the gateway function controller 201 receives the software update instruction and the package file from the component management server 300 in step S8. Upon completion of receiving the package file, the receiving unit 2211 records the received package file in the second storage 225 .
  • the second storage 225 is an example of a storage unit that stores package files.
  • the gateway function controller 201 executes the software update process by executing the gateway script included in the package file.
  • FIG. 12 is a flowchart showing single software update processing by the gateway function controller 201 according to the first embodiment.
  • the example shown in the flowchart shown in FIG. 12 represents the procedure when the package file contains only data used for updating one component 200 .
  • the receiving unit 2211 refers to the connection information to connect the component 200 to the second board 220 with reference to the connection information in order to communicate with the component 200 to be updated of the software, that is, the component 200 related to the hardware product number described in the gateway script. It is determined whether it is connected (step S61). If the update target component 200 is connected to the second board 220 (step S61: YES), the access unit 2214 acquires the current software from the update target component 200 via the second network N2 (step S62).
  • the output unit 2212 outputs the software to the first board 210. is output (step S63).
  • the input unit 2111 of the first substrate 210 receives the software acquisition instruction from the second substrate 220 (step S64).
  • the updating unit 2113 determines whether or not the component 200 to be updated is the first board 210 itself (step S65). If the component 200 to be updated is the first board 210 itself (step S65: YES), the updating unit 2113 acquires main software from the first storage 215 (step S66).
  • the access unit 2112 acquires the current software from the update target component 200 via the first network N1 (step S67). .
  • the component 200 may divide the current software information into multiple times and transmit it to the first board. As a result, even in the component 200 with small computational resources that cannot transmit the current software to the first board in one transmission, the information of the current software can be transmitted to the first board by dividing it into multiple transmissions. can be sent.
  • the output unit 2114 outputs the software acquired in step S66 or step S67 to the second substrate 220 (step S68).
  • the input unit 2213 of the second board 220 receives the software of the component 200 to be updated from the first board 210 (step S69).
  • the software generation unit 2215 generates updated software by applying the difference data included in the package file received from the component management server 300 to the software acquired in step S62 or step S69 according to the gateway script. (Step S70).
  • the software generation unit 2215 records the generated software in the backup software storage unit in association with the hardware product number of the component 200 (step S71).
  • the software generation unit 2215 refers to the connection information and determines whether the update target component 200 is connected to the second board 220 (step S72).
  • step S72 If the update target component 200 is connected to the second board 220 (step S72: YES), the access unit 2214 transfers the software and package generated in step S70 to the update target component 200 via the second network N2. Output the component script contained in the file. As a result, the component 200 rewrites the stored software with the software generated in step S70 by executing the component script (step S73).
  • the output unit 2212 outputs the software to the first board 210. is output (step S74).
  • the software update instruction includes the software generated in step S70 and the component script included in the update instruction.
  • the input unit 2111 of the first substrate 210 receives the software update instruction from the second substrate 220 (step S75).
  • the updating unit 2113 determines whether or not the update target component 200 is the first board 210 itself (step S76).
  • step S76 If the component 200 to be updated is the first board 210 itself (step S76: YES), the updating unit 2113 rewrites the backup software stored in the first storage 215 with the software included in the update instruction (step S77). . When the rewriting of the backup software is completed, the updating unit 2113 rewrites the main software stored in the first storage 215 with the software included in the update instruction (step S78).
  • step S76 if the component 200 to be updated is not the first board 210 itself (step S76: NO), the access unit 2112 transfers the software and component script included in the package file to the component 200 to be updated via the first network N1. Output. As a result, the component 200 rewrites the stored software with the software included in the package file by executing the component script (step S79). This allows the gateway function controller 201 to update the software of the component 200 based on the difference data.
  • FIG. 13 is a flow chart showing multiple software update processes by the gateway function controller 201 according to the first embodiment.
  • the example shown in the flowchart shown in FIG. 13 represents the procedure when data used for updating a plurality of components 200 realizing functions related to each other is included in the package file.
  • the receiving unit 2211 determines whether the hardware part number of each component 200 to be updated satisfies the update conditions based on the hardware part number information included in the package file (step S81).
  • the receiving unit 2211 may determine the update condition based on the hardware product number of the component 200 acquired in step S7, or may receive the hardware product number from the component 200 again to determine the update condition. .
  • the receiving unit 2211 compares, for example, the hardware product number information included in the package file with the hardware product number of each component 200 to be updated, and determines that the update conditions are satisfied when they match.
  • the receiving unit 2211 deletes the received package file (step S82), and deletes all components related to the update instruction. Do not update 200. For example, even if only one of the three components 200 to be updated does not satisfy the update conditions and the remaining two satisfy the update conditions, the gateway function controller 201 does not update all the three components 200 . .
  • step S81 determines that all the components 200 satisfy the update condition. If all the components 200 satisfy the update condition (step S81: YES), the receiving unit 2211 determines that some of the components 200 indicated by the update order information included in the package file have not been updated. It is determined whether or not (step S83). For example, since the information of the updated component 200 is recorded in the second storage 225 in step S87, which will be described later, the receiving unit 2211 selects the updated component 200 as the updated component 200 among the plurality of components 200 indicated by the update order information. If there is anything that is not recorded, it is determined that there is a component 200 that has not been updated.
  • step S83 determines the component 200 to be updated as the component 200 with the earliest update order (step S84). Then, for the component 200 to be updated, the processing from step S61 to step S70 shown in FIG. 12 is executed to update the software (step S85).
  • the access unit 2214 determines whether the update of the update target component 200 has been completed normally (step S86). For example, the access unit 2214 determines whether or not a notification indicating abnormal termination or suspension of updating has been received from the component 200 .
  • the access unit 2214 is an example of a detection unit that detects interruption of update of the component 200 . If the update of the component 200 to be updated has not been completed normally (step S86: NO), the gateway function controller 201 interrupts the update process, and updates the component 200 whose update order is later than the component 200 to be updated determined in step S84. Terminate the process without updating the
  • step S86 YES
  • step S86: YES the completion of the update of the component 200 determined in step S84 is recorded in the second storage 225 (step S87).
  • step S83 the receiving unit 2211 deletes the package file recorded in the second storage 225 (step S82), and ends the update process. do.
  • the gateway function controller 201 may perform update processing of multiple components 200 by parallel processing without depending on update order information.
  • Perimeter monitoring component 205 of pre-update work machine 100 has a function of generating a bird's-eye view of work machine 100 from above based on an image captured by camera 206 .
  • perimeter monitoring component 205 can realize a function of detecting an obstacle existing within a predetermined distance from work machine 100 by updating software.
  • the monitor component 202 can realize a function of marking the position of the detected obstacle on the bird's-eye view image by updating the software.
  • the controller 203 limits the operation of the hydraulic equipment (eg, the traveling motor 112, the turning motor 124, the boom cylinder 131C, the arm cylinder 132C, the bucket cylinder 133C, etc.) by updating the software when an obstacle is detected.
  • the software of the monitor component 202 and the control controller 203 are software related to the software of the perimeter monitoring component 205 .
  • the software of the perimeter monitoring component 205 is an example of first software
  • the software of the monitor component 202 and the controller 203 is an example of second software.
  • the component management server 300 receives the software of the peripheral monitoring component 205, the monitor component 202, and the control controller 203 from the software management server 500, and generates difference data for each. Then, the component management server 300 generates a package file including each difference data, hardware product number information of each component 200, and update order information. At this time, the update order indicated by the update order information is, for example, the order of the peripheral monitoring component 205, the controller 203, and the monitor component 202.
  • the gateway function controller 201 of the work machine 100 receives the package file from the component management server 300. If communication is interrupted for some reason before the reception of the package file is completed, work machine 100 does not update the software. Therefore, for example, when the work machine 100 is started while receiving the package file and moves out of the communication range, it is possible to prevent only part of the component 200 from being updated and part of the component 200 to remain in an old state.
  • the component 200 when the reception of the package file is completed, if the hardware product number of each component 200 does not satisfy the update condition indicated by the hardware product number information, the component 200 is not updated. This can prevent some of the components 200 from being updated and only some of the components 200 from being updated.
  • the gateway function controller 201 updates the components 200 in the order indicated by the update order information.
  • the update process may be interrupted for some reason during the update.
  • the gateway function controller 201 interrupts the updating work and causes each component 200 to operate.
  • the information of the component 200 whose update has been completed is recorded in the second storage 225 in step S86. Therefore, by performing the process from step S81 again, the receiving unit 2211 can identify the component 200 whose update has been interrupted in steps S83 and S84 and restart the update process.
  • the reception unit 2211 is an example of a determination unit that determines the component 200 for which the update has not been completed when interruption of update is detected. Also, since the package file has already been recorded in the second storage 225, even if the user has moved out of the communication range when the update is resumed, the update process can be resumed.
  • the software update system 1 receives data including the first software used for updating the first component and the second software used for updating the second component from the server, and stores the data. updating the first component and the second component based on the first software and the second software after being stored in the copy; As a result, even if the updating of the plurality of components 200 stops halfway, the software update system 1 can resume the updating, and realize the function realized by the linkage of the plurality of components 200. can.
  • the software update system 1 according to the first embodiment when the function realized by the second software uses the calculation result by the function realized by the first software, the update is not performed by the first software. It is possible to prevent the function of the second software from becoming unusable.
  • the gateway function controller 201 generates software for all the components 200 of the working machine 100 on the second board 220 mounted on the working machine 100 .
  • the component 200 autonomously generates new software from the difference data and autonomously updates its own software. You can go to
  • the component management server 300 may send to the gateway function controller 201 a package file containing the new software used for updating instead of the difference data. In this case, for example, in the sequence diagram shown in FIG. The target product number is associated and transmitted to the component management server 300 .
  • the gateway function controller 201 associates the new software to be used for the update received from the component management server 300 with the hardware product number of the component 200, and stores the standby software. Record in the department.
  • the update instruction includes new software used for updating, a gateway script to be executed by the gateway function controller 201, and a component script to be executed by the component 200 to be updated.
  • the gateway script describes the procedure for processing the new software.
  • the gateway function controller 201 includes a first board 210 and a second board 220 that are physically separated.
  • the gateway function controller 201 according to another embodiment may be mounted on one substrate.
  • the gateway function controller 201 according to another embodiment may have two processors on one board.
  • gateway function controller 201 may comprise more than two boards.
  • the roles of the plurality of substrates included in the gateway function controller 201 may be different from those in the above embodiments.
  • the software management server 500 and the component management server 300 may be realized by one device instead of separate units.
  • the software update system can increase the certainty of updating multiple components in order to implement functions realized by interlocking multiple components.
  • receiving section 2212 output section 2213... input section 2214... accessing section 2215... software generating section 2216... transmitting section 223... second main memory 225... second storage 2251... Standby system software storage unit 227...Second interface 300
  • Component management server 311 ...Differential data reception unit 312
  • Update target identification unit 313 ...Product number confirmation unit 314
  • Update instruction transmission unit 315 ...Table update unit 500
  • Software management server 511 ... Software recording unit 512

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Mining & Mineral Resources (AREA)
  • Civil Engineering (AREA)
  • Structural Engineering (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)
  • Operation Control Of Excavators (AREA)

Abstract

受信部は、複数のコンポーネントの1つである第1コンポーネントの更新に用いる第1ソフトウェアと、複数のコンポーネントの1つである第2コンポーネントの更新に用いるソフトウェアであって、第1ソフトウェアと関連する機能を実現するための第2ソフトウェアとを含むデータをサーバから受信する。記憶部は、受信された第1ソフトウェアおよび第2ソフトウェアを記憶する。更新部は、記憶部に第1ソフトウェアおよび第2ソフトウェアが記憶された後に、第1ソフトウェアおよび第2ソフトウェアに基づいて、第1コンポーネントと第2コンポーネントの更新を行う。

Description

ソフトウェア更新システム、作業機械およびソフトウェア更新方法
 本開示は、ソフトウェア更新システム、作業機械およびソフトウェア更新方法に関する。
 本願は、2021年8月31日に日本に出願された特願2021-141277号について優先権を主張し、その内容をここに援用する。
 作業機械には、作業機械を制御し、または作業機械の状態を監視するためのコンポーネントが設けられる。コンポーネントは、マイクロコンピュータなどによって構成され、ソフトウェアの実行により機能を発揮する。そのため、コンポーネントの機能の拡張などを目的に、コンポーネントのソフトウェアを更新することがある。
 特許文献1には、作業機械のコンポーネントのソフトウェアを更新する技術が開示されている。
特開2017-41114号公報
 ところで、作業機械に実装される機能として、複数のコンポーネントが連動することで実現されるものがある。このような機能を作業機械に実現させるためには、複数のコンポーネントのそれぞれのソフトウェアを更新する必要がある。
 ところで、作業機械にインストールするソフトウェアは、ネットワークを介して受信される。しかしながら、作業機械は、必ずしも常にネットワークに接続可能な環境にあるとはいえず、数日にわたってネットワークに接続できないこともある。そのため、特許文献1に記載された手順で複数のコンポーネントを更新する場合に、複数のコンポーネントの一部が更新され、残りが更新されない状態でネットワークから切断される可能性がある。この場合、作業機械は、再度ネットワークに接続可能となり、残りのコンポーネントが更新されるまで、複数のコンポーネントが連動することで実現される機能を実現できないこととなる。
 本開示の目的は、複数のコンポーネントが連動することで実現される機能を実現するために、複数のコンポーネントの更新の確実性を高めることができるソフトウェア更新システム、作業機械およびソフトウェア更新方法を提供することにある。
 本開示の一態様によれば、ソフトウェア更新システムは、作業機械に備えられる複数のコンポーネントを更新するソフトウェア更新システムであって、前記複数のコンポーネントの1つである第1コンポーネントの更新に用いる第1ソフトウェアと、前記複数のコンポーネントの1つである第2コンポーネントの更新に用いるソフトウェアであって、前記第1ソフトウェアと関連する機能を実現するための第2ソフトウェアとを含むデータをサーバから受信する受信部と、受信された前記第1ソフトウェアおよび前記第2ソフトウェアを記憶する記憶部と、前記記憶部に前記第1ソフトウェアおよび前記第2ソフトウェアが記憶された後に、前記第1ソフトウェアおよび前記第2ソフトウェアに基づいて、前記第1コンポーネントと前記第2コンポーネントの更新を行う更新部と、を備える。
 上記態様によれば、ソフトウェア更新システムは、複数のコンポーネントが連動することで実現される機能を実現するために、複数のコンポーネントの更新の確実性を高めることができる。
第1の実施形態に係るソフトウェア更新システムの構成図である。 第1の実施形態に係る作業機械の外観を示す斜視図である。 第1の実施形態に係る作業機械が備える複数のカメラの撮像範囲を示す図である。 第1の実施形態に係る運転室の内部の構成を示す図である。 第1の実施形態に係る作業機械の制御系のハードウェア構成を示す概略ブロック図である。 第1の実施形態に係るゲートウェイ機能コントローラの構成を示すブロック図である。 第1の実施形態に係るコンポーネント管理サーバの構成を示すブロック図である。 第1の実施形態に係るソフトウェア管理サーバの構成を示すブロック図である。 第1の実施形態に係るソフトウェアテーブルの一例を示す図である。 第1の実施形態に係るソフトウェア更新システムにおけるコンポーネントのソフトウェアの更新方法を示すシーケンス図である。 第1の実施形態に係るゲートウェイ機能コントローラの品番確認処理を示すフローチャートである。 第1の実施形態に係るゲートウェイ機能コントローラによる単体のソフトウェア更新処理を示すフローチャートである。 第1の実施形態に係るゲートウェイ機能コントローラによる複数のソフトウェア更新処理を示すフローチャートである。
〈第1の実施形態〉
 図1は、第1の実施形態に係るソフトウェア更新システム1の構成図である。
 ソフトウェア更新システム1は、複数の作業機械100が備えるコンポーネント200のソフトウェアの品番を管理する。ソフトウェア更新システム1は、複数の作業機械100と、コンポーネント管理サーバ300と、ソフトウェア管理サーバ500と、開発者端末700とを備える。ソフトウェアとは、ハードウェアの機能の実現のために用いられるデータである。ソフトウェアは、プログラムおよび設定データを含み得る。なお、ソフトウェアの品番とは、ソフトウェアを特定するためのユニークな識別子である。ソフトウェアの品番は、例えば、複数の数字、又はアルファベットの組み合わせによって表現される。
 各作業機械100は、ゲートウェイ機能コントローラ201と2つ以上のコンポーネント200とを備える。なお、ゲートウェイ機能コントローラ201も、コンポーネント200の一例である。ゲートウェイ機能コントローラ201は、作業機械100の内部ネットワークと外部ネットワークとに接続される。内部ネットワークとは、作業機械100の内部のコンポーネント200同士を接続するネットワークである。外部ネットワークとは、作業機械100と作業機械の外部の装置とを接続するワイドエリアネットワーク(WAN)である。各コンポーネント200は、作業機械100の制御、または作業機械100の状態の監視のための機能を発揮する。各コンポーネント200とゲートウェイ機能コントローラ201とは、互いに作業機械100の内部ネットワークで接続される。これにより、一部のコンポーネント200は、内部ネットワークを介して他のコンポーネント200の演算結果を受け取り、さらに演算を行うことができる。図1において、作業機械100として油圧ショベルが図示されているが、その他の作業機械でもよく、例えばブルドーザ、ダンプトラック、ホイールローダであってもよい。
 コンポーネント管理サーバ300は、複数の作業機械100が備えるコンポーネント200のハードウェアおよびソフトウェアの品番を記憶し、コンポーネント200のソフトウェアを更新するためのデータを作業機械100に提供する。具体的には、コンポーネント管理サーバ300は、コンポーネント200の更新前のソフトウェアと更新後のソフトウェアとの差分データを含むパッケージデータを、外部ネットワークを介して作業機械100に提供する。なお、所定の機能を実現するために複数のコンポーネント200の更新が必要な場合に、コンポーネント管理サーバ300は、1つのパッケージデータに、複数のコンポーネント200の更新に用いる複数の差分データを含める。
 ソフトウェア管理サーバ500は、コンポーネント200のハードウェアの品番に関連付けて、当該品番に係るコンポーネント200に適用可能な品番の異なる複数のソフトウェアを記憶する。また、ソフトウェア管理サーバ500は、ソフトウェアの更新のための差分データを生成し、コンポーネント管理サーバ300に送信する。なお、ハードウェアの品番とは、コンポーネント200を特定するためのユニークな識別子である。ハードウェアの品番は、例えば、複数の数字、又はアルファベットの組み合わせによって表現される。
 開発者端末700は、ソフトウェアの開発者によって操作される端末である。開発者は、開発者端末700を用いてソフトウェアを開発し、開発したソフトウェアを開発者端末700からソフトウェア管理サーバ500へ送信する。開発者は、連携して所定の機能を実現するための複数のコンポーネント200のソフトウェアを作成した場合、ソフトウェアを適用可能な各コンポーネントの品番を示す品番情報と、複数のソフトウェアのデータとを関連付けてソフトウェア管理サーバ500へ送信する。
《作業機械100の構成》
 図2は、作業機械100の外観を示す斜視図である。
 作業機械である作業機械100は、油圧により作動する作業機130と、作業機130を支持する旋回体120と、旋回体120を支持する走行体110とを備える。
 走行体110は、作業機械100を走行可能に支持する。走行体110は、左右に設けられた2つの無限軌道111と、各無限軌道111を駆動するための2つの走行モータ112を備える。
 旋回体120は、走行体110に旋回中心回りに旋回可能に支持される。
 作業機130は、油圧により駆動する。作業機130は、旋回体120の前部に上下方向に駆動可能に支持される。運転室140は、オペレータが搭乗し、作業機械100の操作を行うためのスペースである。運転室140は、旋回体120の左前部に設けられる。
 ここで、旋回体120のうち作業機130が取り付けられる部分を前部という。また、旋回体120について、前部を基準に、反対側の部分を後部、左側の部分を左部、右側の部分を右部という。
《旋回体120の構成》
 旋回体120は、エンジン121、油圧ポンプ122、コントロールバルブ123、旋回モータ124、燃料噴射装置125を備える。
 エンジン121は、油圧ポンプ122を駆動する原動機である。
 油圧ポンプ122は、エンジン121により駆動される可変容量ポンプである。油圧ポンプ122は、コントロールバルブ123を介して各アクチュエータ(ブームシリンダ131C、アームシリンダ132C、バケットシリンダ133C、走行モータ112、および旋回モータ124)に作動油を供給する。
 コントロールバルブ123は、油圧ポンプ122から供給される作動油の流量を制御する。
 旋回モータ124は、コントロールバルブ123を介して油圧ポンプ122から供給される作動油によって駆動し、旋回体120を旋回させる。
 燃料噴射装置125は、燃料をエンジン121に噴射する。
 旋回体120には、作業機械100の周囲を撮像する複数のカメラ206が設けられる。図3は、第1の実施形態に係る作業機械100が備える複数のカメラ206の撮像範囲を示す図である。
 具体的には、旋回体120には、旋回体120の周囲のうち左後方範囲Raを撮像する左後方カメラ206A、旋回体120の周囲のうち後方範囲Rbを撮像する後方カメラ206B、旋回体120の周囲のうち右後方範囲Rcを撮像する右後方カメラ206C、旋回体120の周囲の右前方範囲Rdを撮像する右前方カメラ206Dが設けられる。なお、複数のカメラ206の撮像範囲の一部は、互いに重複していてもよい。
 複数のカメラ206の撮像範囲は、作業機械100の全周のうち、運転室140から視認可能な左前方範囲Reを除く範囲をカバーする。なお、第1の実施形態に係るカメラ206は、旋回体120の左後方、後方、右後方、および右前方を撮像するが、他の実施形態においてはこれに限られない。例えば、他の実施形態に係るカメラ206の数および撮像範囲は、図2、図3に示す例と異なっていてよい。
《作業機130の構成》
 図2に示すように、作業機130は、ブーム131、アーム132、バケット133、ブームシリンダ131C、アームシリンダ132C、およびバケットシリンダ133Cを備える。
 ブーム131の基端部は、旋回体120にブームピンを介して取り付けられる。
 アーム132は、ブーム131とバケット133とを連結する。アーム132の基端部は、ブーム131の先端部にアームピンを介して取り付けられる。
 バケット133は、土砂などを掘削するための刃と掘削した土砂を収容するための収容部とを備える。バケット133の基端部は、アーム132の先端部にバケットピンを介して取り付けられる。
 ブームシリンダ131Cは、ブーム131を作動させるための油圧シリンダである。ブームシリンダ131Cの基端部は、旋回体120に取り付けられる。ブームシリンダ131Cの先端部は、ブーム131に取り付けられる。
 アームシリンダ132Cは、アーム132を駆動するための油圧シリンダである。アームシリンダ132Cの基端部は、ブーム131に取り付けられる。アームシリンダ132Cの先端部は、アーム132に取り付けられる。
 バケットシリンダ133Cは、バケット133を駆動するための油圧シリンダである。バケットシリンダ133Cの基端部は、アーム132に取り付けられる。バケットシリンダ133Cの先端部は、バケット133に接続されるリンク部材に取り付けられる。
《運転室140の構成》
 図4は、第1の実施形態に係る運転室140の内部の構成を示す図である。
 運転室140内には、運転席142、操作装置143およびモニタコンポーネント202が設けられる。
 操作装置143は、オペレータの手動操作によって走行体110、旋回体120および作業機130を駆動させるための装置である。操作装置143は、左操作レバー143LO、右操作レバー143RO、左フットペダル143LF、右フットペダル143RF、左走行レバー143LT、右走行レバー143RTを備える。
 左操作レバー143LOは、運転席142の左側に設けられる。右操作レバー143ROは、運転席142の右側に設けられる。
 左操作レバー143LOは、旋回体120の旋回動作、及び、アーム132の掘削/ダンプ動作を行うための操作機構である。具体的には、作業機械100のオペレータが左操作レバー143LOを前方に倒すと、アーム132がダンプ動作する。また、作業機械100のオペレータが左操作レバー143LOを後方に倒すと、アーム132が掘削動作する。また、作業機械100のオペレータが左操作レバー143LOを右方向に倒すと、旋回体120が右旋回する。また、作業機械100のオペレータが左操作レバー143LOを左方向に倒すと、旋回体120が左旋回する。なお、他の実施形態においては、左操作レバー143LOを前後方向に倒した場合に旋回体120が右旋回または左旋回し、左操作レバー143LOを左右方向に倒した場合にアーム132が掘削動作またはダンプ動作してもよい。
 右操作レバー143ROは、バケット133の掘削/ダンプ動作、及び、ブーム131の上げ/下げ動作を行うための操作機構である。具体的には、作業機械100のオペレータが右操作レバー143ROを前方に倒すと、ブーム131の下げ動作が実行される。また、作業機械100のオペレータが右操作レバー143ROを後方に倒すと、ブーム131の上げ動作が実行される。また、作業機械100のオペレータが右操作レバー143ROを右方向に倒すと、バケット133のダンプ動作が行われる。また、作業機械100のオペレータが右操作レバー143ROを左方向に倒すと、バケット133の掘削動作が行われる。なお、他の実施形態においては、右操作レバー143ROを前後方向に倒した場合に、バケット133がダンプ動作または掘削動作し、右操作レバー143ROを左右方向に倒した場合にブーム131が上げ動作または下げ動作してもよい。
 左フットペダル143LFは、運転席142の前方の床面の左側に配置される。右フットペダル143RFは、運転席142の前方の床面の右側に配置される。左走行レバー143LTは、左フットペダル143LFに軸支され、左走行レバー143LTの傾斜と左フットペダル143LFの押し下げが連動するように構成される。右走行レバー143RTは、右フットペダル143RFに軸支され、右走行レバー143RTの傾斜と右フットペダル143RFの押し下げが連動するように構成される。
 左フットペダル143LFおよび左走行レバー143LTは、走行体110の左側履帯の回転駆動に対応する。具体的には、作業機械100のオペレータが左フットペダル143LFまたは左走行レバー143LTを前方に倒すと、左側履帯は前進方向に回転する。また、作業機械100のオペレータが左フットペダル143LFまたは左走行レバー143LTを後方に倒すと、左側履帯は後進方向に回転する。
 右フットペダル143RFおよび右走行レバー143RTは、走行体110の右側履帯の回転駆動に対応する。具体的には、作業機械100のオペレータが右フットペダル143RFまたは右走行レバー143RTを前方に倒すと、右側履帯は前進方向に回転する。また、作業機械100のオペレータが右フットペダル143RFまたは右走行レバー143RTを後方に倒すと、右側履帯は後進方向に回転する。
《制御系の構成》
 図5は、第1の実施形態に係る作業機械100の制御系のハードウェア構成を示す概略ブロック図である。
 作業機械100は、ゲートウェイ機能コントローラ201、モニタコンポーネント202、制御コントローラ203、エンジンコントローラ204、周辺監視コンポーネント205を備える。ゲートウェイ機能コントローラ201、モニタコンポーネント202、制御コントローラ203、エンジンコントローラ204、周辺監視コンポーネント205およびカメラ206は、互いに車内ネットワークを介して接続される。具体的には、ゲートウェイ機能コントローラ201、モニタコンポーネント202、制御コントローラ203およびエンジンコントローラ204は、CAN(Controller Area Network)などの第1ネットワークN1を介して接続され、ゲートウェイ機能コントローラ201、カメラ206および周辺監視コンポーネント205は、イーサネット(登録商標)などの第2ネットワークN2を介して接続される。
 ゲートウェイ機能コントローラ201、モニタコンポーネント202、制御コントローラ203、エンジンコントローラ204、周辺監視コンポーネント205およびカメラ206は、いずれも作業機械100に備えられるコンポーネント200の一例である。
 ゲートウェイ機能コントローラ201は、第1ネットワークN1と第2ネットワークN2の通信プロトコルを互いに変換し、第1ネットワークN1に接続されたコンポーネント200と第2ネットワークN2に接続されたコンポーネント200との間の通信を中継する。
 モニタコンポーネント202は、運転室140に設けられ、ディスプレイの表示を制御する。
 制御コントローラ203は、作業機130の動作を制御する油圧機器に関連する各種データを図示しないセンサにより取得し、操作装置143の操作に従って油圧機器を制御するための制御信号を出力する。つまり、制御コントローラ203は、ブームシリンダ131C、アームシリンダ132C、バケットシリンダ133C、走行モータ112、旋回モータ124などの駆動を制御する。
 エンジンコントローラ204は、エンジン121に関連する各種データを図示しないセンサにより取得し、燃料噴射装置125に燃料噴射量を指示することで、エンジン121を制御する。
 周辺監視コンポーネント205は、カメラ206が撮像した画像に基づいて俯瞰画像を生成し、モニタコンポーネント202に俯瞰画像を表示させる。
《ゲートウェイ機能コントローラ201の構成》
 図6は、第1の実施形態に係るゲートウェイ機能コントローラ201の構成を示すブロック図である。
 ゲートウェイ機能コントローラ201は、物理的に分かれた第1基板210と第2基板220とを備える。
 第1基板210は、第1プロセッサ211、第1メインメモリ213、第1ストレージ215、第1インタフェース217を備える。第1プロセッサ211は、第1ストレージ215からプログラムを取得して第1メインメモリ213に展開し、当該プログラムに従って所定の処理を実行する。なお、第1ストレージ215は、当該プログラムを含む同じソフトウェアを主系ソフトウェアと予備系ソフトウェアとして2系統記憶する。主系ソフトウェアとは、平常時にソフトウェアの機能を発揮する際に使用されるソフトウェアである。予備系ソフトウェアとは、主系ソフトウェアの異常時に主系ソフトウェアの復旧のために使用されるソフトウェアである。すなわち、第1基板210は、主系ソフトウェアを実行することで機能を発揮する。また第1基板210は、例えばソフトウェアの更新ミス等により異常が発生し、主系ソフトウェアを実行できない場合に、予備系ソフトウェアを主系ソフトウェアにコピーすることで主系ソフトウェアを復旧し、復旧した主系ソフトウェアを実行する。第1基板210は、コンポーネント200の一例である。第1インタフェース217は、内部ネットワークである第1ネットワークN1を介して作業機械100を制御するための複数のコンポーネント200と接続される。第1基板210に接続されるコンポーネント200の例としては、モニタコンポーネント202、制御コントローラ203、エンジンコントローラ204等が挙げられる。第1ネットワークN1に接続されるコンポーネント200により、作業機械100の動作に関する基本的な動作制御が行われる。
 第2基板220は、第2プロセッサ221、第2メインメモリ223、第2ストレージ225、第2インタフェース227を備える。第2プロセッサ221は、第2ストレージ225からプログラムを取得して第2メインメモリ223に展開し、当該プログラムに従って所定の処理を実行する。第2インタフェース227は、内部ネットワークである第2ネットワークN2を介して作業機械100の機能を拡張するための複数のコンポーネント200と接続される。第2基板220に接続されるコンポーネント200の例としては、周辺監視コンポーネント205及びカメラ206や、施工現場の設計面と作業機械100との位置関係などをオペレータにガイダンスするためのガイダンスモニタを表示制御するマシンガイダンスコンポーネント、作業機130により掘削した土量を計測するためのペイロードコンポーネント、外部のサーバ等と通信を行うための通信機器を制御し、作業機械の各種センサからデータを取得する通信コンポーネント等が挙げられる。第2ネットワークN2に接続されるコンポーネント200により、作業機械100およびオペレータに、作業機械の機能を向上させるなどの拡張的な情報の提供が行われる。第2基板220は、作業機械のコンポーネントの一例であってよい。
 第1インタフェース217と第2インタフェース227は、互いに通信可能に接続される。また、第1基板210および第2基板220は、作業機械100が備える各コンポーネント200への経路を示す接続情報を記憶する。接続情報は、例えばルーティングテーブルであってよい。接続情報は、作業機械100にコンポーネント200が取り付けられ、または取り外されるたびに、第1基板210および第2基板220の間で情報が交換されることで更新される。
 他の実施形態においては、第1基板210または第2基板220は、上記構成に加えて、または上記構成に代えて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基板210または第2基板220によって実現される機能の一部または全部が当該集積回路によって実現されてよい。
 第1ストレージ215および第2ストレージ225の例としては、磁気ディスク、光磁気ディスク、光ディスク、半導体メモリ等が挙げられる。第1ストレージ215および第2ストレージ225は、バス線に直接接続された内部メディアであってもよいし、第1インタフェース217または通信回線を介してゲートウェイ機能コントローラ201に接続される外部メディアであってもよい。少なくとも1つの実施形態において第1ストレージ215および第2ストレージ225は、一時的でない有形の記憶媒体である。
 なお、第2基板220が有する計算資源は、少なくとも1つのコンポーネント200が有する計算資源より大きい。また、第2基板220が有する計算資源は、第1基板210が有する計算資源より大きいことが好ましい。計算資源とは、コンピュータにおける計算において使用される資源である。計算資源とは、コンピュータが備える計算時間または記憶容量を提供する資源である。計算資源の例としては、CPU、メインメモリ、ストレージなどが挙げられる。なお、第2メインメモリ223の容量は、第1メインメモリ213の容量より大きいのが好ましい。また、第2ストレージ225の容量は、第1ストレージ215の容量より大きいのが好ましい。
 第1プロセッサ211は、第1ストレージ215が記憶するプログラムの実行により、入力部2111、アクセス部2112、更新部2113、出力部2114として機能する。
 入力部2111は、第2基板220からコンポーネント200のソフトウェアの取得指示の入力を受け付ける。また入力部2111は、第2基板220からコンポーネント200のソフトウェアの更新指示の入力を受け付ける。
 アクセス部2112は、第2基板220から受け付けたソフトウェアの取得指示に従ってコンポーネント200から現行のソフトウェアを取得する。現行のソフトウェアとは、アクセス部2112によるアクセス時に、コンポーネント200が記憶し、機能の発揮のために実行されているソフトウェアをいう。またアクセス部2112は、第2基板220から受け付けたソフトウェアの更新指示に従ってコンポーネント200にソフトウェアを出力する。ソフトウェアを受信したコンポーネント200は、ソフトウェアを書き換える。
 更新部2113は、第2基板220から受け付けたソフトウェアの更新指示に従って、第1ストレージ215から主系ソフトウェアを取得する。また更新部2113は、第2基板220から受け付けたソフトウェアの更新指示に従って予備系ソフトウェアおよび主系ソフトウェアを書き換える。
 出力部2114は、アクセス部2112または更新部2113が取得したソフトウェアを第2基板220に出力する。
 第2プロセッサ221は、第2ストレージ225が記憶するプログラムの実行により、受信部2211、出力部2212、入力部2213、アクセス部2214、ソフトウェア生成部2215、送信部2216として機能する。また、第2ストレージ225には、予備系ソフトウェア記憶部2251の記憶領域が確保される。
 受信部2211は、コンポーネント管理サーバ300から、コンポーネント200のソフトウェアの差分データを含むパッケージファイルとともに、コンポーネントのソフトウェアの更新指示を受信する。また受信部2211は、コンポーネントのソフトウェアの品番の確認指示を受信する。
 出力部2212は、更新対象のコンポーネント200が第1基板210に接続される場合に、または更新対象のコンポーネント200が第1基板210である場合に、ソフトウェアの取得指示を第1基板210に出力する。また出力部2212は、ソフトウェアの更新指示を第1基板210に出力する。
 入力部2213は、第1基板210から更新対象のコンポーネント200のソフトウェアの入力を受け付ける。
 アクセス部2214は、更新対象のコンポーネント200が第2基板220に接続される場合に、当該コンポーネント200からソフトウェアを取得する。またアクセス部2214は、ソフトウェア生成部2215が生成したソフトウェアを更新対象のコンポーネント200に出力する。ソフトウェアを受信したコンポーネント200は、ソフトウェアを書き換える。つまり、アクセス部2214は、受信したソフトウェアに基づいてコンポーネント200の更新を行う更新部の一例である。
 ソフトウェア生成部2215は、入力部2213に入力された現行のソフトウェアまたはアクセス部2214が取得した現行のソフトウェアに、受信部2211が受信した差分データを適用することで、更新後のソフトウェアを生成する。例えば、差分データは、ファイルの先頭からのビット数であるオフセットと、変更後の値の組み合わせを、変更箇所ごとに保持する。この場合、ソフトウェア生成部2215は、差分データのオフセットに基づいて現行のソフトウェアの該当部分を特定し、該当部分における差分データが示す変更前の値を変更後の値に書き換える。これにより、ソフトウェア生成部2215は、現行のソフトウェアと差分データから更新後のソフトウェアを生成することができる。
 送信部2216は、受信部2211が受信した要求に対する応答をコンポーネント管理サーバ300に送信する。
《コンポーネント管理サーバ300の構成》
 図7は、第1の実施形態に係るコンポーネント管理サーバ300の構成を示すブロック図である。
 コンポーネント管理サーバ300は、プロセッサ310、メインメモリ330、ストレージ350、インタフェース370を備える。プロセッサ310は、ストレージ350からプログラムを取得してメインメモリ330に展開し、当該プログラムに従って所定の処理を実行する。インタフェース370には、広域通信網を介した通信機能を有する図示しない通信装置が接続され、当該通信装置を介してゲートウェイ機能コントローラ201の第2基板220、およびソフトウェア管理サーバ500と通信可能に接続される。
 ストレージ350に記憶されるプログラムは、コンポーネント管理サーバ300に発揮させる機能の一部を実現するためのものであってもよい。また、他の実施形態においては、コンポーネント管理サーバ300は、上記構成に加えて、または上記構成に代えてPLDなどのカスタムLSIを備えてもよい。この場合、コンポーネント管理サーバ300によって実現される機能の一部または全部が当該集積回路によって実現されてよい。
 ストレージ350の例としては、磁気ディスク、光磁気ディスク、光ディスク、半導体メモリ等が挙げられる。ストレージ350は、バス線に直接接続された内部メディアであってもよいし、インタフェース370または通信回線を介してコンポーネント管理サーバ300に接続される外部メディアであってもよい。また、プログラムは、ストレージ350に記憶されず、通信回線によってコンポーネント管理サーバ300に配信され、プロセッサ310が当該プログラムを実行してもよい。少なくとも1つの実施形態においてストレージ350は、一時的でない有形の記憶媒体である。
 プロセッサ310は、ストレージ350が記憶するプログラムの実行により、差分データ受信部311、更新対象特定部312、品番確認部313、更新指示送信部314、テーブル更新部315を備える。また、ストレージ350には、コンポーネントテーブル351の記憶領域が確保される。
 コンポーネントテーブル351は、複数の作業機械100それぞれが備えるコンポーネント200のハードウェアおよびソフトウェアの品番を記憶する。つまり、コンポーネントテーブル351は、作業機械100の機械IDと、コンポーネントのハードウェア品番と、ソフトウェア品番とを関連付けて記憶する。
 差分データ受信部311は、ソフトウェア管理サーバ500から、ソフトウェアの差分データと当該差分データの適用対象のソフトウェア品番を受信する。
 更新対象特定部312は、コンポーネントテーブル351を参照し、差分データ受信部311が受信したソフトウェア品番に係るコンポーネント200および当該コンポーネント200を備える作業機械100を特定する。
 品番確認部313は、更新対象特定部312が特定した作業機械100に更新対象となるコンポーネント200のソフトウェア品番の確認要求を送信する。品番確認部313は、作業機械100からソフトウェア品番の確認結果を受信する。
 更新指示送信部314は、品番確認部313が作業機械100から受信した確認結果が、差分データ受信部311がソフトウェア管理サーバ500から受信したソフトウェア品番と一致する場合に、作業機械100にソフトウェアの更新指示を送信する。ソフトウェアの更新指示には、差分データ受信部311が受信した差分データ、ゲートウェイ機能コントローラ201が実行するためのゲートウェイスクリプト、および更新対象のコンポーネント200が実行するためのコンポーネントスクリプトが含まれる。ゲートウェイスクリプトには、ゲートウェイ機能コントローラ201が更新指示に含まれる差分データを処理する手順が記述される。コンポーネントスクリプトには、更新後のプログラムをインストールする手順が記述される。
 テーブル更新部315は、ソフトウェアの更新指示の後に品番確認部313が作業機械100から受信した確認結果に基づいて、ソフトウェアが更新されたか否かを判定する。テーブル更新部315は、ソフトウェアが更新されたと判定した場合に、コンポーネントテーブル351を更新する。
《ソフトウェア管理サーバ500の構成》
 図8は、第1の実施形態に係るソフトウェア管理サーバ500の構成を示すブロック図である。
 ソフトウェア管理サーバ500は、プロセッサ510、メインメモリ530、ストレージ550、インタフェース570を備える。プロセッサ510は、ストレージ550からプログラムを取得してメインメモリ530に展開し、当該プログラムに従って所定の処理を実行する。インタフェース570は、コンポーネント管理サーバ300と通信可能に接続される。
 ストレージ550に記憶されるプログラムは、ソフトウェア管理サーバ500に発揮させる機能の一部を実現するためのものであってもよい。また、他の実施形態においては、ソフトウェア管理サーバ500は、上記構成に加えて、または上記構成に代えてPLDなどのカスタムLSIを備えてもよい。この場合、ソフトウェア管理サーバ500によって実現される機能の一部または全部が当該集積回路によって実現されてよい。
 ストレージ550の例としては、磁気ディスク、光磁気ディスク、光ディスク、半導体メモリ等が挙げられる。ストレージ550は、バス線に直接接続された内部メディアであってもよいし、インタフェース570または通信回線を介してソフトウェア管理サーバ500に接続される外部メディアであってもよい。また、このプログラムが通信回線によってソフトウェア管理サーバ500に配信され、プロセッサ510が当該プログラムを実行してもよい。少なくとも1つの実施形態においてストレージ550は、一時的でない有形の記憶媒体である。
 プロセッサ510は、ストレージ550が記憶するプログラムの実行により、ソフトウェア記録部511、差分データ生成部512、差分データ送信部513を備える。また、ストレージ550には、ソフトウェアテーブル551の記憶領域が確保される。
 ソフトウェアテーブル551は、コンポーネント200のハードウェア品番に関連付けて、当該品番に係るコンポーネント200に適用可能な品番の異なる複数のソフトウェアを記憶する。つまり、ソフトウェアテーブル551は、コンポーネントのハードウェア品番と、ソフトウェアの実体と、当該ソフトウェアのソフトウェア品番とを関連付けて記憶する。図9は、第1の実施形態に係るソフトウェアテーブルの一例を示す図である。ソフトウェアテーブル551は、画像表示コンポーネントを示すハードウェア品番と、画像表示コンポーネントアプリを示すソフトウェア品番と、ソフトウェアの実体とを関連付けて記憶している。また、図9に示す例では、ソフトウェアテーブル551は、マシンガイダンスコンポーネントを示すハードウェア品番と、マシンガイダンスコンポーネントアプリを示すソフトウェア品番と、ソフトウェアの実体とを関連付けて記憶している。
 ソフトウェア記録部511は、サーバの管理者やソフトウェアの開発者からソフトウェアの実体、ソフトウェアの品番、およびソフトウェアの適用対象のコンポーネント200のハードウェア品番の入力を受け付け、これをソフトウェアテーブル551に記録する。管理者や開発者は、開発者端末700を操作し、ソフトウェアの実体、ソフトウェアの品番、およびソフトウェアの適用対象のコンポーネント200のハードウェア品番をソフトウェア管理サーバ500に送信する。また、ソフトウェア記録部511は、開発者端末700から連携して所定の機能を実現するための複数のコンポーネント200のハードウェア品番を示す品番情報の入力を受け付けると、受信した品番情報をストレージ550に記録する。
 差分データ生成部512は、ソフトウェアテーブル551に新たに記録されたソフトウェアと、当該ソフトウェアの適用対象のハードウェアに適用される他の品番のソフトウェアとの差分データを生成する。
 差分データ送信部513は、差分データ生成部512が生成した差分データと、当該差分データの適用対象となるソフトウェア品番とを、関連付けてコンポーネント管理サーバ300に送信する。差分データ送信部513は、開発者端末700から複数のコンポーネント200の品番情報を受信している場合、当該品番情報もコンポーネント管理サーバ300に送信する。
《ソフトウェアの更新方法》
 図10は、第1の実施形態に係るソフトウェア更新システム1におけるコンポーネント200のソフトウェアの更新方法を示すシーケンス図である。
 開発者は、コンポーネント200のソフトウェアを更新すると、開発者端末700を操作し、当該ソフトウェアの実体、当該ソフトウェアの品番、および当該ソフトウェアの適用対象のコンポーネント200のハードウェア品番とを関連付けてソフトウェア管理サーバ500に送信する。ソフトウェア管理サーバ500のソフトウェア記録部511は、受信したソフトウェアの実体、ソフトウェア品番、およびハードウェア品番を、関連付けてソフトウェアテーブル551に記録する(ステップS1)。なお、ソフトウェア記録部511が受信したソフトウェア品番は、更新後のソフトウェア品番である更新品番である。このとき、開発者端末700から品番情報を受信した場合、ソフトウェア記録部511は、受信した品番情報をストレージ550に記録する。
 差分データ生成部512は、ソフトウェアテーブル551から、ステップS1で受信したハードウェア品番に関連付けられたソフトウェアの実体およびソフトウェア品番を取得する(ステップS2)。差分データ生成部512は、ステップS1で受信したソフトウェアと、ステップS2で取得した各ソフトウェアとの差分を計算することで、ソフトウェア品番ごとの差分データを生成する(ステップS3)。なお、コンポーネント200が記憶するソフトウェアが常に最新のものとなっている場合には、ステップS2で取得したソフトウェアのうち最新のソフトウェアのみについて、差分データを生成してもよい。差分データ送信部513は、ステップS3で生成した差分データを、ステップS1で受信したハードウェア品番、ステップS1で受信した更新品番、およびステップS2で取得したソフトウェア品番である対象品番に関連付けて、コンポーネント管理サーバ300に送信する(ステップS4)。ステップS1で開発者端末700から品番情報を受信している場合、差分データ送信部513は、品番情報もコンポーネント管理サーバ300に送信する。
 コンポーネント管理サーバ300の差分データ受信部311は、ソフトウェア管理サーバ500から差分データ、ソフトウェア品番およびハードウェア品番を受信する(ステップS4)。更新対象特定部312は、コンポーネントテーブル351を参照し、受信したハードウェア品番に係るコンポーネント200を備える作業機械100を特定する(ステップS5)。なお、ハードウェア品番に係るコンポーネント200を備える複数の作業機械100が特定されてもよい。次に、品番確認部313は、特定した作業機械100のゲートウェイ機能コントローラ201に、更新対象となるコンポーネントのソフトウェア品番の確認要求を送信する(ステップS6)。すなわち、ソフトウェア品番の確認要求には、更新対象となるコンポーネント200のハードウェア品番が含まれる。
 ゲートウェイ機能コントローラ201は、コンポーネント管理サーバ300からソフトウェア品番の確認要求を受信する(ステップS6)。ゲートウェイ機能コントローラ201は、コンポーネント200の品番確認処理を実行し、特定したソフトウェア品番をコンポーネント管理サーバ300に送信する(ステップS7)。ソフトウェア品番は、ソフトウェアの実体に定数として書き込まれており、例えばソフトウェアが有する品番確認コマンドを実行することで、特定される。ゲートウェイ機能コントローラ201による品番確認処理の詳細については、後述する。
 コンポーネント管理サーバ300の品番確認部313は、作業機械100からソフトウェア品番を受信する(ステップS7)。ステップS7で受信したソフトウェア品番と、ステップS4で受信した対象品番とが一致する場合、更新指示送信部314は、当該作業機械100のゲートウェイ機能コントローラ201に、更新対象となるコンポーネントのソフトウェアの更新指示と更新に用いるパッケージファイルとを送信する(ステップS8)。ソフトウェアの更新指示には、ステップS4で受信した差分データとゲートウェイ機能コントローラ201が実行するためのゲートウェイスクリプト、および更新対象のコンポーネント200が実行するためのコンポーネントスクリプトが含まれる。ゲートウェイスクリプトには、差分データを適用するコンポーネントのハードウェア品番が含まれる。
 なお、コンポーネント管理サーバ300は、ステップS4で受信したデータに複数のコンポーネント200のハードウェア品番を示す品番情報が含まれる場合、更新指示送信部314は、品番情報が示す複数のコンポーネント200に係る差分データ、ゲートウェイスクリプトおよびコンポーネントスクリプトに加えて、機能を実現するために要する各コンポーネント200のハードウェア品番情報と、コンポーネント200の更新順を示す更新順情報とを含むパッケージファイルを生成する。
 ゲートウェイ機能コントローラ201は、コンポーネント管理サーバ300からソフトウェアの更新指示およびパッケージファイルを受信する(ステップS8)。ゲートウェイ機能コントローラ201は、パッケージファイルの受信が完了すると、パッケージファイルに含まれるゲートウェイスクリプトに従って、コンポーネント200のソフトウェア更新処理を実行する(ステップS9)。ゲートウェイスクリプトには、作業機械100のキーオフ後に、個別のコンポーネント200をWake-on-LAN等の機能によってウェイクさせて、ソフトウェア更新処理を実行することが記述されていてもよい。これは、作業機械100の稼働中に更新のためにコンポーネント200が機能しなくなることを防ぐためである。また、キーオン後、図示しない作業機械100のロックレバー(作業機、旋回、走行の全ての油圧回路の流路を遮断するレバー)によって、作業機械100の動作をロックしているときに、ソフトウェア更新処理を実行することが記述されてもよい。ゲートウェイ機能コントローラ201によるソフトウェア更新処理の詳細については、後述する。
 コンポーネント管理サーバ300の差分データ受信部311がステップS9で更新指示を送信した所定時間後に、品番確認部313は、更新指示を送信した作業機械100のゲートウェイ機能コントローラ201に、更新対象のコンポーネントのソフトウェア品番の確認要求を送信する(ステップS10)。所定時間は、ソフトウェアへの差分データの適用処理の所要計算時間より十分に長い時間である。なお、他の実施形態においては、作業機械100のゲートウェイ機能コントローラ201が更新完了後に完了通知をコンポーネント管理サーバ300に送信し、品番確認部313が、完了通知を送信した作業機械100のゲートウェイ機能コントローラ201に、更新対象のコンポーネントのソフトウェア品番の確認要求を送信してもよい。
 ゲートウェイ機能コントローラ201は、コンポーネント管理サーバ300からソフトウェア品番の確認要求を受信する。ゲートウェイ機能コントローラ201は、コンポーネント200の品番確認処理を実行し、特定したソフトウェア品番をコンポーネント管理サーバ300に送信する(ステップS11)。なお、ソフトウェア品番は、ソフトウェアの実体に定数として書き込まれるため、ステップS9のソフトウェア更新処理が正常に完了していれば、ソフトウェア品番も合わせて更新される。
 コンポーネント管理サーバ300の品番確認部313は、作業機械100からソフトウェア品番を受信する(ステップS11)。ステップS11で受信したソフトウェア品番とステップS4で受信した更新品番とが一致する場合、テーブル更新部315は、コンポーネントテーブル351が記憶する当該コンポーネント200のソフトウェア品番をステップS11で受信したソフトウェア品番に更新する(ステップS12)。
 なお、図10に示すシーケンス図は、処理の一例を示すものであり、他の処理によってソフトウェアの更新がなされることを妨げない。例えば、他の実施形態に係るソフトウェア更新システム1は、ステップS6、ステップS7、ステップS10、ステップS11、ステップS12の処理を行わなくてもよい。なお、他の実施形態においては、ソフトウェア品番は、コンポーネント200の図示しないメインメモリまたはストレージに記憶されてよい。この場合、ゲートウェイ機能コントローラ201は、ステップS7およびステップS11においてコンポーネント200の品番確認要求をコンポーネント200に送信し、コンポーネント200がメインメモリまたはストレージに記憶されたソフトウェア品番を取得してゲートウェイ機能コントローラ201に送信してもよい。
《ゲートウェイ機能コントローラ201の品番確認処理》
 ここで、ソフトウェアの更新処理におけるゲートウェイ機能コントローラ201の動作について説明する。ゲートウェイ機能コントローラ201の第2基板220の受信部2211が、ステップS6またはステップS10にてコンポーネント管理サーバ300からソフトウェア品番の確認要求を受信すると、ゲートウェイ機能コントローラ201は品番確認処理を実行する。
 図11は、第1の実施形態に係るゲートウェイ機能コントローラ201の品番確認処理を示すフローチャートである。
 受信部2211は、ソフトウェア品番の確認対象のコンポーネント200、すなわち確認要求に含まれるハードウェア品番に係るコンポーネント200が、第2基板220に接続されているかを判定する(ステップS31)。確認対象のコンポーネント200が第2基板220に接続されている場合(ステップS31:YES)、アクセス部2214は、第2ネットワークN2を介して、確認対象のコンポーネント200からソフトウェア品番を取得する(ステップS32)。
 他方、確認対象のコンポーネント200が第2基板220に接続されていない場合(ステップS31:NO)、出力部2212はソフトウェア品番の確認要求を第1基板210に出力する(ステップS33)。
 第1基板210の入力部2111が第2基板220からソフトウェア品番の確認要求を受信する(ステップS34)。次に、アクセス部2112は、第1ネットワークN1を介して、確認対象のコンポーネント200からソフトウェア品番を取得する(ステップS35)。出力部2114は、取得したソフトウェア品番を第2基板220に出力する(ステップS36)。
 第2基板220の入力部2213は、第1基板210から確認対象のコンポーネント200からのソフトウェア品番を受信する(ステップS37)。
 第2基板220の送信部2216は、ステップS32またはステップS37で特定した確認対象のコンポーネント200からのソフトウェア品番を、コンポーネント管理サーバ300に送信する(ステップS38)。
 これにより、ゲートウェイ機能コントローラ201は、コンポーネント管理サーバ300の確認要求に応答してコンポーネント200のソフトウェア品番を通知することができる。
 なお、図11に示すフローチャートは、処理の一例を示すものであり、他の処理によって品番の確認がなされることを妨げない。また、他の実施形態に係るゲートウェイ機能コントローラ201は、品番確認処理を行わなくてもよい。なお、他の実施形態においては、ソフトウェア品番は、コンポーネント200の図示しないメインメモリまたはストレージに記憶されてよい。この場合、第2基板220は、ステップS32およびステップS37においてコンポーネント200の品番確認要求をコンポーネント200に送信し、コンポーネント200がメインメモリまたはストレージに記憶されたソフトウェア品番を取得して第2基板に送信してもよい。
《ゲートウェイ機能コントローラ201のソフトウェア更新処理》
 ゲートウェイ機能コントローラ201の第2基板220の受信部2211が、ステップS8にてコンポーネント管理サーバ300からソフトウェアの更新指示とパッケージファイルとを受信する。受信部2211は、パッケージファイルの受信が完了すると、受信したパッケージファイルを第2ストレージ225に記録する。第2ストレージ225は、パッケージファイルを記憶する記憶部の一例である。そして、ゲートウェイ機能コントローラ201はパッケージファイルに含まれるゲートウェイスクリプトを実行することで、ソフトウェア更新処理を実行する。
 図12は、第1の実施形態に係るゲートウェイ機能コントローラ201による単体のソフトウェア更新処理を示すフローチャートである。つまり、図12で示すフローチャートに示す例は、パッケージファイルに1つのコンポーネント200の更新に用いるデータのみが含まれる場合の手順を表す。
 受信部2211は、ソフトウェアの更新対象のコンポーネント200、すなわちゲートウェイスクリプトに記述されたハードウェア品番に係るコンポーネント200との通信を行うために、接続情報を参照して当該コンポーネント200が第2基板220に接続されているかを判定する(ステップS61)。更新対象のコンポーネント200が第2基板220に接続されている場合(ステップS61:YES)、アクセス部2214は、第2ネットワークN2を介して、更新対象のコンポーネント200から現行のソフトウェアを取得する(ステップS62)。
 他方、更新対象のコンポーネント200が第1基板210に接続されている場合、または更新対象のコンポーネント200が第1基板210である場合(ステップS61:NO)、出力部2212は第1基板210にソフトウェアの取得指示を出力する(ステップS63)。
 第1基板210の入力部2111は、第2基板220からソフトウェアの取得指示を受信する(ステップS64)。更新部2113は、更新対象のコンポーネント200が第1基板210自身であるか否かを判定する(ステップS65)。更新対象のコンポーネント200が第1基板210自身である場合(ステップS65:YES)、更新部2113は、第1ストレージ215から主系ソフトウェアを取得する(ステップS66)。他方、更新対象のコンポーネント200が第1基板210自身でない場合(ステップS65:NO)、アクセス部2112は、第1ネットワークN1を介して更新対象のコンポーネント200から現行のソフトウェアを取得する(ステップS67)。なお、コンポーネント200は、現行のソフトウェアの情報を複数回に分けて第1基板に送信するようにしてもよい。これにより、一度の送信で現行のソフトウェアを、第1基板に送信することができない計算資源の小さいコンポーネント200においても、複数回に分けて送信することによって、現行のソフトウェアの情報を第1基板に送信することができる。
 出力部2114は、ステップS66またはステップS67で取得したソフトウェアを、第2基板220に出力する(ステップS68)。
 第2基板220の入力部2213は、第1基板210から更新対象のコンポーネント200のソフトウェアを受信する(ステップS69)。
 そして、ソフトウェア生成部2215は、ゲートウェイスクリプトに従って、ステップS62またはステップS69で取得したソフトウェアに、コンポーネント管理サーバ300から受信したパッケージファイルに含まれる差分データを適用することで、更新後のソフトウェアを生成する(ステップS70)。ソフトウェア生成部2215は、生成したソフトウェアをコンポーネント200のハードウェア品番に関連付けて予備系ソフトウェア記憶部に記録する(ステップS71)。ソフトウェア生成部2215は、生成したソフトウェアを更新対象のコンポーネント200に送信するために、接続情報を参照して更新対象のコンポーネント200が第2基板220に接続されているかを判定する(ステップS72)。
 更新対象のコンポーネント200が第2基板220に接続されている場合(ステップS72:YES)、アクセス部2214は、第2ネットワークN2を介して、更新対象のコンポーネント200にステップS70で生成したソフトウェアおよびパッケージファイルに含まれるコンポーネントスクリプトを出力する。これにより、当該コンポーネント200は、コンポーネントスクリプトの実行により、記憶するソフトウェアを、ステップS70で生成したソフトウェアに書き換える(ステップS73)。
 他方、更新対象のコンポーネント200が第1基板210に接続されている場合、または更新対象のコンポーネント200が第1基板210である場合(ステップS72:NO)、出力部2212は第1基板210にソフトウェアの更新指示を出力する(ステップS74)。ソフトウェアの更新指示には、ステップS70で生成したソフトウェアおよび更新指示に含まれるコンポーネントスクリプトが含まれる。
 第1基板210の入力部2111は、第2基板220からソフトウェアの更新指示を受信する(ステップS75)。更新部2113は、更新対象のコンポーネント200が第1基板210自身であるか否かを判定する(ステップS76)。更新対象のコンポーネント200が第1基板210自身である場合(ステップS76:YES)、更新部2113は、第1ストレージ215が記憶する予備系ソフトウェアを、更新指示に含まれるソフトウェアに書き換える(ステップS77)。予備系ソフトウェアの書き換えが完了すると、更新部2113は、第1ストレージ215が記憶する主系ソフトウェアを、更新指示に含まれるソフトウェアに書き換える(ステップS78)。
 他方、更新対象のコンポーネント200が第1基板210自身でない場合(ステップS76:NO)、アクセス部2112は、第1ネットワークN1を介して更新対象のコンポーネント200にパッケージファイルに含まれるソフトウェアおよびコンポーネントスクリプトを出力する。これにより、当該コンポーネント200は、コンポーネントスクリプトの実行により、記憶するソフトウェアを、パッケージファイルに含まれるソフトウェアに書き換える(ステップS79)。
 これにより、ゲートウェイ機能コントローラ201は、差分データに基づいてコンポーネント200のソフトウェアを更新することができる。
 図13は、第1の実施形態に係るゲートウェイ機能コントローラ201による複数のソフトウェア更新処理を示すフローチャートである。つまり、図13で示すフローチャートに示す例は、パッケージファイルに互いに関連する機能を実現する複数のコンポーネント200の更新に用いるデータが含まれる場合の手順を表す。
 受信部2211は、パッケージファイルに含まれるハードウェア品番情報に基づいて、更新対象の各コンポーネント200のハードウェア品番が更新条件を満たすか否かを判定する(ステップS81)。受信部2211は、ステップS7で取得したコンポーネント200のハードウェア品番に基づいて更新条件の判定を行ってもよいし、再度コンポーネント200からハードウェア品番を受信して更新条件の判定を行ってもよい。受信部2211は、例えばパッケージファイルに含まれるハードウェア品番情報と、更新対象の各コンポーネント200のハードウェア品番を比較して、一致する場合に更新条件を満たすと判定する。
 少なくとも1つのコンポーネント200が、ハードウェア品番情報が示す更新条件を満たさない場合(ステップS81:NO)、受信部2211は、受信したパッケージファイルを削除し(ステップS82)、更新指示に係るすべてのコンポーネント200の更新を行わない。例えば、更新対象の3つのコンポーネント200のうち1つのみが更新条件を満たさず、残り2つが更新条件を満たす場合であっても、ゲートウェイ機能コントローラ201は、3つのコンポーネント200すべての更新を行わない。
 他方、すべてのコンポーネント200が更新条件を満たす場合(ステップS81:YES)、受信部2211は、パッケージファイルに含まれる更新順情報が示す複数のコンポーネント200のうち、更新が完了していないものがあるか否かを判定する(ステップS83)。例えば、更新が完了したコンポーネント200の情報は後述のステップS87にて第2ストレージ225に記録されるため、受信部2211は、更新順情報が示す複数のコンポーネント200のうち更新が完了したコンポーネント200として記録されていないものがある場合に、更新が完了していないコンポーネント200があると判定する。更新が完了していないものがある場合(ステップS83:YES)、出力部2212は、最も更新順が早いものを、更新対象のコンポーネント200に決定する(ステップS84)。そして、更新対象のコンポーネント200について、図12に示すステップS61からステップS70の処理を実行し、ソフトウェアの更新を行う(ステップS85)。
 アクセス部2214は、更新対象のコンポーネント200の更新が正常に完了したか否かを判定する(ステップS86)。例えば、アクセス部2214は、更新の異常終了や中断を示す通知をコンポーネント200から受信したか否かを判定する。アクセス部2214は、コンポーネント200の更新の中断を検知する検知部の一例である。更新対象のコンポーネント200の更新が正常に完了しなかった場合(ステップS86:NO)、ゲートウェイ機能コントローラ201は更新処理を中断し、ステップS84で決定した更新対象のコンポーネント200より更新順の遅いコンポーネント200の更新をせずに処理を終了する。
 他方、更新が正常に完了した場合(ステップS86:YES)、第2ストレージ225にステップS84で決定したコンポーネント200の更新が完了したことを記録する(ステップS87)。これにより、電源断によって更新処理が中断された場合にも、更新が完了したコンポーネント200を特定することができる。そして、処理をステップS83に戻し、次のコンポーネント200の更新へ処理を移す。ステップS83で更新が完了していないものがないと判定された場合(ステップS83:NO)、受信部2211は、第2ストレージ225に記録したパッケージファイルを削除し(ステップS82)、更新処理を終了する。
 なお、図13に示すフローチャートは、処理の一例を示すものであり、他の処理によって品番の確認がなされることを妨げない。例えば、他の実施形態においては、ゲートウェイ機能コントローラ201は、複数のコンポーネント200の更新処理を更新順情報によらず並列処理によって実行してもよい。
 ここで、複数のコンポーネント200の更新について具体例を用いて説明する。更新前の作業機械100の周辺監視コンポーネント205は、カメラ206による撮像画像に基づいて作業機械100を中心に、上方から俯瞰したような俯瞰画像を生成する機能を有する。これに対し、周辺監視コンポーネント205は、ソフトウェアの更新により、作業機械100から所定の距離以内に存在する障害物を検出する機能を実現することができるようになる。また、モニタコンポーネント202は、ソフトウェアの更新により、検出された障害物の位置を俯瞰画像上にマーキングする機能を実現することができるようになる。また、制御コントローラ203は、ソフトウェアの更新により、障害物が検出された場合に油圧機器(例えば、走行モータ112、旋回モータ124、ブームシリンダ131C、アームシリンダ132C、バケットシリンダ133Cなど)の動作を制限させる機能を実現することができるようになる。つまり、モニタコンポーネント202および制御コントローラ203のソフトウェアは、周辺監視コンポーネント205のソフトウェアと関連するソフトウェアである。周辺監視コンポーネント205のソフトウェアは第1ソフトウェアの一例であり、モニタコンポーネント202および制御コントローラ203のソフトウェアは、第2ソフトウェアの一例である。
 コンポーネント管理サーバ300は、ソフトウェア管理サーバ500から周辺監視コンポーネント205、モニタコンポーネント202、および制御コントローラ203のソフトウェアを受信し、それぞれの差分データを生成する。そして、コンポーネント管理サーバ300は、各差分データと、各コンポーネント200のハードウェア品番情報と、更新順情報とを含むパッケージファイルを生成する。このとき更新順情報が示す更新順は、例えば、周辺監視コンポーネント205、制御コントローラ203、モニタコンポーネント202の順である。
 作業機械100のゲートウェイ機能コントローラ201は、コンポーネント管理サーバ300からパッケージファイルを受信する。パッケージファイルの受信が完了しないうちに何らかの要因で通信が中断された場合、作業機械100はソフトウェアの更新を行わない。そのため、例えばパッケージファイルの受信途中で作業機械100が起動し、通信圏外に移動した場合に、コンポーネント200の一部のみが更新され、一部が古い状態のままとなることを防ぐことができる。
 他方、パッケージファイルの受信が完了した場合、各コンポーネント200のハードウェア品番がハードウェア品番情報が示す更新条件を満たさない場合、コンポーネント200の更新を行わない。これにより、コンポーネント200の一部が更新できず、一部のコンポーネント200のみが更新されることを防ぐことができる。
 ハードウェア品番情報が示す更新条件を満たす場合、ゲートウェイ機能コントローラ201は更新順情報が示す順にコンポーネント200の更新を行う。このとき、更新の途中に何らかの要因で更新処理が中断されることがある。例えば、更新中に作業機械100が起動された場合、ゲートウェイ機能コントローラ201は、更新作業を中断して、各コンポーネント200を動作させる。この場合、ステップS86により更新が完了したコンポーネント200の情報が第2ストレージ225に記録される。そのため、再度ステップS81から処理を行うことで、ステップS83およびS84において受信部2211は更新が中断されたコンポーネント200を特定し、更新処理を再開することができる。受信部2211は、更新の中断を検知した場合に、更新が完了していないコンポーネント200を判定する判定部の一例である。また、既にパッケージファイルは第2ストレージ225に記録されているため、更新の再開時に通信圏外に移動していたとしても、更新処理を再開することができる。
《作用・効果》
 このように、第1の実施形態に係るソフトウェア更新システム1は、第1コンポーネントの更新に用いる第1ソフトウェアと、第2コンポーネントの更新に用いる第2ソフトウェアとを含むデータをサーバから受信し、記憶部に記憶された後に、第1ソフトウェアおよび第2ソフトウェアに基づいて、第1コンポーネントと第2コンポーネントの更新を行う。これにより、ソフトウェア更新システム1は、複数のコンポーネント200の更新が途中で止まったとしても、当該更新を再開することができ、複数のコンポーネント200が連動することで実現される機能を実現させることができる。特に、第1の実施形態に係るソフトウェア更新システム1は、第2ソフトウェアによって実現される機能が、第1ソフトウェアによって実現される機能による計算結果を用いる場合に、第1ソフトウェアによる更新がなされずに第2ソフトウェアの機能が利用できなくなることを防ぐことができる。
〈他の実施形態〉
 以上、図面を参照して一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、様々な設計変更等をすることが可能である。すなわち、他の実施形態においては、上述の処理の順序が適宜変更されてもよい。また、一部の処理が並列に実行されてもよい。
 第1の実施形態に係るゲートウェイ機能コントローラ201は、作業機械100のすべてのコンポーネント200のソフトウェアを、当該作業機械100に搭載された第2基板220において生成する。他方、他の実施形態において、コンポーネント200が十分な計算資源を有しているものが存在する場合、コンポーネント200が自律的に差分データから新たなソフトウェアを生成し、自身のソフトウェアの更新を自律的に行ってもよい。また他の実施形態においては、コンポーネント管理サーバ300が差分データでなく、更新に用いる新たなソフトウェアそのものを含むパッケージファイルをゲートウェイ機能コントローラ201に送信してもよい。この場合、例えば、ソフトウェア管理サーバ500は、図10に示すシーケンス図のうちステップS2からステップS4の処理に代えて、ステップS1で受信したハードウェア品番、ソフトウェアの実体、更新品番およびソフトウェア品番である対象品番を、関連付けて、コンポーネント管理サーバ300に送信する。また、ゲートウェイ機能コントローラ201は、図12に示すステップS61からステップS71の処理に代えて、コンポーネント管理サーバ300から受信した更新に用いる新たなソフトウェアをコンポーネント200のハードウェア品番に関連付けて予備系ソフトウェア記憶部に記録する。更新指示には、更新に用いる新たなソフトウェア、ゲートウェイ機能コントローラ201が実行するためのゲートウェイスクリプト、および更新対象のコンポーネント200が実行するためのコンポーネントスクリプトが含まれる。ゲートウェイスクリプトには、新たなソフトウェアを処理する手順が記述される。
 第1の実施形態に係るゲートウェイ機能コントローラ201は、物理的に分かれた第1基板210と第2基板220とを備える。これに対し、他の実施形態に係るゲートウェイ機能コントローラ201は、1つの基板に実装されるものであってもよい。また他の実施形態に係るゲートウェイ機能コントローラ201は、1つの基板が2つのプロセッサを備えるものであってもよい。また他の実施形態においては、ゲートウェイ機能コントローラ201が3つ以上の基板を備えてもよい。また、他の実施形態においては、ゲートウェイ機能コントローラ201が備える複数の基板の役割は、上述の実施形態と異なるものであってもよい。
 また、他の実施形態においては、ソフトウェア管理サーバ500とコンポーネント管理サーバ300は別体ではなく、1つの装置によって実現されてもよい。
 上記態様によれば、ソフトウェア更新システムは、複数のコンポーネントが連動することで実現される機能を実現するために、複数のコンポーネントの更新の確実性を高めることができる。
 1…ソフトウェア更新システム 100…作業機械 110…走行体 111…無限軌道 112…走行モータ 120…旋回体 121…エンジン 122…油圧ポンプ 123…コントロールバルブ 124…旋回モータ 125…燃料噴射装置 130…作業機 131…ブーム 131C…ブームシリンダ 132…アーム 132C…アームシリンダ 133…バケット 133C…バケットシリンダ 140…運転室 142…運転席 143…操作装置 200…コンポーネント 201…ゲートウェイ機能コントローラ 202…モニタコンポーネント 203…制御コントローラ 204…エンジンコントローラ 205…周辺監視コンポーネント 206…カメラ 210…第1基板 211…第1プロセッサ 2111…入力部 2112…アクセス部 2113…更新部 2114…出力部 213…第1メインメモリ 215…第1ストレージ 217…第1インタフェース 220…第2基板 221…第2プロセッサ 2211…受信部 2212…出力部 2213…入力部 2214…アクセス部 2215…ソフトウェア生成部 2216…送信部 223…第2メインメモリ 225…第2ストレージ 2251…予備系ソフトウェア記憶部 227…第2インタフェース 300…コンポーネント管理サーバ 311…差分データ受信部 312…更新対象特定部 313…品番確認部 314…更新指示送信部 315…テーブル更新部 500…ソフトウェア管理サーバ 511…ソフトウェア記録部 512…差分データ生成部 513…差分データ送信部 700…開発者端末

Claims (10)

  1.  作業機械に備えられる複数のコンポーネントを更新するソフトウェア更新システムであって、
     前記複数のコンポーネントの1つである第1コンポーネントの更新に用いる第1ソフトウェアと、前記複数のコンポーネントの1つである第2コンポーネントの更新に用いるソフトウェアであって、前記第1ソフトウェアと関連する機能を実現するための第2ソフトウェアとを含むデータをサーバから受信する受信部と、
     受信された前記第1ソフトウェアおよび前記第2ソフトウェアを記憶する記憶部と、
     前記記憶部に前記第1ソフトウェアおよび前記第2ソフトウェアが記憶された後に、前記第1ソフトウェアおよび前記第2ソフトウェアに基づいて、前記第1コンポーネントと前記第2コンポーネントの更新を行う更新部と、
     を備えるソフトウェア更新システム。
  2.  前記第1コンポーネントは、前記作業機械に備えられる撮像装置を用いた周辺監視を行う周辺監視コンポーネントを含み、
     前記第2コンポーネントは、前記作業機械に備えられるモニタの表示制御を行うモニタコンポーネントと、前記作業機械に備えられる油圧機器の油圧制御を行う油圧コンポーネントとを含み、
     前記第1ソフトウェアは、前記撮像装置を用いた前記作業機械の周辺の障害物を検知する機能を実現するためのソフトウェアを含み、
     前記第2ソフトウェアは、前記第1ソフトウェアによる障害物の検知に関する表示を前記モニタに表示するための前記モニタコンポーネントのソフトウェアと、前記第1ソフトウェアによる障害物の検知時の前記油圧機器の出力を制御するための前記油圧コンポーネントのソフトウェアとを含み、
     前記更新部は、前記第1ソフトウェアと前記第2ソフトウェアに基づき、前記周辺監視コンポーネント、前記モニタコンポーネント、及び前記油圧コンポーネントの障害物検知機能に関連する機能を有効にする
     請求項1に記載のソフトウェア更新システム。
  3.  前記データは前記複数のコンポーネントの更新順を示す更新順情報を含み、
     前記更新部は、前記更新順情報が示す順に、前記複数のコンポーネントの更新を行う 請求項1または請求項2に記載のソフトウェア更新システム。
  4.  前記更新部は、前記複数のコンポーネントのうち更新に失敗したコンポーネントがある場合に、前記更新順情報において当該コンポーネント以降に更新することを示すコンポーネントの更新を行わない
     請求項3に記載のソフトウェア更新システム。
  5.  前記更新部は、前記第1ソフトウェアによる前記第1コンポーネントの更新が完了した後に、前記第2ソフトウェアによる前記第2コンポーネントの更新を行う
     請求項1から請求項4の何れか1項に記載のソフトウェア更新システム。
  6.  前記更新部は、前記複数のコンポーネントのうち前記モニタコンポーネントを最後に更新する
     請求項2に記載のソフトウェア更新システム。
  7.  前記第1ソフトウェアおよび前記第2ソフトウェアに基づく前記第1コンポーネントおよび前記第1コンポーネントの更新の中断を検知する検知部と、
     前記更新の中断を検知した場合、更新が完了していない前記第1のコンポーネントおよび前記第2のコンポーネントのうちコンポーネントを判定する判定部と、
     を備え、
     前記更新部は、前記判定部によって更新が完了していないと判定された前記コンポーネントの更新が再開可能になった場合、前記記憶部に記憶した前記第1ソフトウェアまたは前記第2ソフトウェアに基づいて、前記判定部によって更新が完了していないと判定された前記コンポーネントの更新を行う
     請求項1から請求項6の何れか1項に記載のソフトウェア更新システム。
  8.  前記データは、前記第1ソフトウェアおよび前記第2ソフトウェアによる更新が可能な前記第1コンポーネント及び前記第2コンポーネントの品番の条件を示す品番情報を含み、
     前記更新部は、前記第1コンポーネント及び前記第2コンポーネントの品番が、前記品番情報が示す条件を満たす場合に、前記第1コンポーネント及び前記第2コンポーネント更新を行う
     請求項1から請求項7の何れか1項に記載のソフトウェア更新システム。
  9.  車体と、
     前記車体に取り付けられた作業機と、
     第1コンポーネントおよび第2コンポーネントを含む複数のコンポーネントと、
     請求項1から請求項8の少なくとも何れか1項に記載のソフトウェア更新システムと を備える作業機械。
  10.  作業機械に備えられる複数のコンポーネントを更新するソフトウェア更新方法であって、
     コンピュータが、前記複数のコンポーネントの1つである第1コンポーネントの更新に用いる第1ソフトウェアと、前記複数のコンポーネントの1つである第2コンポーネントの更新に用いるソフトウェアであって、前記第1ソフトウェアと関連する機能を実現するための第2ソフトウェアとを含むデータをサーバから受信するステップと、
     前記コンピュータが、受信された前記第1ソフトウェアおよび前記第2ソフトウェアを記憶するステップと、
     前記第1ソフトウェアおよび前記第2ソフトウェアが記憶された後に、前記コンピュータが、前記第1ソフトウェアおよび前記第2ソフトウェアに基づいて、前記第1コンポーネントと前記第2コンポーネントの更新を行うステップと、
     を備えるソフトウェア更新方法。
PCT/JP2022/032230 2021-08-31 2022-08-26 ソフトウェア更新システム、作業機械およびソフトウェア更新方法 WO2023032850A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202280055761.XA CN117882049A (zh) 2021-08-31 2022-08-26 软件更新系统、作业机械及软件更新方法
DE112022002828.9T DE112022002828T5 (de) 2021-08-31 2022-08-26 Software-Aktualisierungssystem, Arbeitsmaschine und Software-Aktualisierungsverfahren
KR1020247001902A KR20240022634A (ko) 2021-08-31 2022-08-26 소프트웨어 갱신 시스템, 작업 기계 및 소프트웨어 갱신 방법

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2021-141277 2021-08-31
JP2021141277A JP2023034836A (ja) 2021-08-31 2021-08-31 ソフトウェア更新システム、作業機械およびソフトウェア更新方法

Publications (1)

Publication Number Publication Date
WO2023032850A1 true WO2023032850A1 (ja) 2023-03-09

Family

ID=85412688

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2022/032230 WO2023032850A1 (ja) 2021-08-31 2022-08-26 ソフトウェア更新システム、作業機械およびソフトウェア更新方法

Country Status (5)

Country Link
JP (1) JP2023034836A (ja)
KR (1) KR20240022634A (ja)
CN (1) CN117882049A (ja)
DE (1) DE112022002828T5 (ja)
WO (1) WO2023032850A1 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004118586A (ja) * 2002-09-26 2004-04-15 Murata Mach Ltd 管理装置およびそのプログラム
JP2004194298A (ja) * 2002-11-18 2004-07-08 Ricoh Co Ltd 画像形成装置、プログラム更新方法
JP2006011647A (ja) * 2004-06-23 2006-01-12 Fujitsu Ten Ltd ソフトウェア管理装置
JP2016178499A (ja) * 2015-03-20 2016-10-06 シャープ株式会社 画像処理装置及び情報処理装置
JP2021111154A (ja) * 2020-01-10 2021-08-02 日立建機株式会社 作業機械

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6135723B2 (ja) 2015-08-20 2017-05-31 コベルコ建機株式会社 建設機械及びこれを備えたプログラム書き換えシステム
JP2021141277A (ja) 2020-03-09 2021-09-16 東京エレクトロン株式会社 載置台及びプラズマ処理装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004118586A (ja) * 2002-09-26 2004-04-15 Murata Mach Ltd 管理装置およびそのプログラム
JP2004194298A (ja) * 2002-11-18 2004-07-08 Ricoh Co Ltd 画像形成装置、プログラム更新方法
JP2006011647A (ja) * 2004-06-23 2006-01-12 Fujitsu Ten Ltd ソフトウェア管理装置
JP2016178499A (ja) * 2015-03-20 2016-10-06 シャープ株式会社 画像処理装置及び情報処理装置
JP2021111154A (ja) * 2020-01-10 2021-08-02 日立建機株式会社 作業機械

Also Published As

Publication number Publication date
DE112022002828T5 (de) 2024-03-14
KR20240022634A (ko) 2024-02-20
JP2023034836A (ja) 2023-03-13
CN117882049A (zh) 2024-04-12

Similar Documents

Publication Publication Date Title
JP7142151B2 (ja) 作業機械
US9851719B2 (en) System and method for executing a project plan at worksite
JP2018018307A (ja) 建設機械のソフトウェア遠隔更新システム
US10900202B2 (en) Systems and methods for generating operational machine heading
CN111335376B (zh) 作业车辆的附接件坡度控制
JP7252146B2 (ja) 作業機械
WO2023032850A1 (ja) ソフトウェア更新システム、作業機械およびソフトウェア更新方法
WO2021172526A1 (ja) 作業機械のコンポーネントのソフトウェア更新システムおよびソフトウェア更新方法
CN111287245B (zh) 作业车辆的二维附接件坡度控制
WO2022244832A1 (ja) 積込機械の制御システム及び制御方法
JP7453128B2 (ja) 施工支援システムおよび施工支援方法
WO2022091839A1 (ja) データ送信システム、作業機械、および作業機械のデータ送信方法
JP2024508916A (ja) 土工機械における周期的動作の自動制御方法
KR20220059963A (ko) Gnss 구동 제어 장치, gnss 컨트롤러, 작업 기계, 및 gnss 구동 제어 방법
JP2021155998A (ja) 作業機械の管理システム
US10267016B2 (en) System and method for swing control
US20230374758A1 (en) Modifying a rotational position of a boom of a machine
US20240254720A1 (en) Attachment leveling apparatus, system, and method
JP2024048983A (ja) 作業機械の自動制御システム
JP3576846B2 (ja) 油圧ショベルの作業量モニタ装置
WO2022244830A1 (ja) 積込機械の制御システム及び制御方法
US20200181869A1 (en) Boom Lock
WO2024075716A1 (ja) 作業機械
JP2024143477A (ja) 異機種の建設機械の運転操作を行う遠隔操作装置
CN118020287A (zh) 作业机械的起动系统、作业机械的起动方法以及作业机械

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 22864434

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 20247001902

Country of ref document: KR

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 1020247001902

Country of ref document: KR

WWE Wipo information: entry into national phase

Ref document number: 112022002828

Country of ref document: DE

WWE Wipo information: entry into national phase

Ref document number: 202280055761.X

Country of ref document: CN

122 Ep: pct application non-entry in european phase

Ref document number: 22864434

Country of ref document: EP

Kind code of ref document: A1