Patent Description:
<CIT> describes a method and system for remote reflash of electronic control units in vehicles. When a software update in the electronic control units of certain vehicles is desired, a software update package is prepared and transmitted to a telematics device in each of the vehicles. The software update package includes reflash execution instructions, and target ECU software as well as target ECU flash instructions for each of plural ECUs, an update of which is desired. The telematics device executes the reflash execution instructions, by transmitting and installing the respective target ECU software in the respective target ECUs.

A marine propulsion device such as an outboard motor is mounted to a watercraft. The marine propulsion device includes an electronic control device. device, as disclosed in <CIT>. The electronic control device is connected to a communication network such as a CAN (Controller Area Network). For example, as described in Japan Laid-open Patent Application Publication No. <CIT>, when a program of an electronic control device is updated, a computer for rewriting the program is connected to the electronic control device through a communication network. The computer rewrites the program of the electronic control device by utilizing a rewriting protocol such as UDS (Unified Diagnostic Services). In this case, the computer specifies an identifier of the electronic control device and vice versa; accordingly, a peer-to-peer communication is established therebetween. Under the condition, data transmission and reception are made therebetween so as to rewrite the program.

There is a type of watercraft provided with a system including a plurality of marine propulsion devices. In the system described herein, a plurality of electronic control devices of the plurality of marine propulsion devices are connected to each other through a communication network. The electronic control devices are identical in function to each other but are identified as discrete devices in the communication network. Because of this, identifiers are uniquely assigned to the electronic control devices, respectively.

In the system including the marine propulsion devices as described above, when the programs of the electronic control devices are rewritten, the computer is configured to rewrite the programs of the electronic control devices, separately. Because of this, a length of time required for rewriting the programs inevitably increases with increase in number of the electronic control devices.

It is an object of the present invention to reduce a length of time required for rewriting programs of a plurality of electronic control devices in a system for a watercraft including a plurality of marine propulsion devices.

According to the present invention, the data for rewriting each of the programs are transmitted to each of the plural electronic control devices with the common identifier through the communication network. This results in reduction in length of time required for rewriting the programs of the plural electronic control devices. Besides, each of the plural electronic control devices determines whether or not to rewrite the program thereof. Because of this, the computer for rewriting the programs is not required to determine whether or not to rewrite the program in each of the plural electronic control devices; hence, the processing to be executed by the computer is simplified.

A preferred embodiment will be hereinafter explained with reference to drawings. <FIG> is a perspective view of a watercraft <NUM> according to the preferred embodiment. A plurality of marine propulsion devices 1Ato 1C are attached to the stern ofthe watercraft <NUM>. Each ofthe marine propulsion devices 1A to 1C generates a thrust for propelling the watercraft <NUM>. In the present preferred embodiment, the marine propulsion devices 1A to 1C are outboard motors. The marine propulsion devices 1Ato 1C include a first marine propulsion device 1A, a second marine propulsion device 1B, and a third marine propulsion device 1C.

<FIG> is a side view of the first marine propulsion device 1A. As shown in <FIG>, the first marine propulsion device 1A includes an engine <NUM>, a drive shaft <NUM>, a propeller shaft <NUM>, and a shift mechanism <NUM>. The engine <NUM> generates the thrust for propelling the watercraft <NUM>. The engine <NUM> includes a crankshaft <NUM>. The crankshaft <NUM> extends in the vertical direction. The drive shaft <NUM> is connected to the crankshaft <NUM>. The drive shaft <NUM> extends in the vertical direction. The drive shaft <NUM> extends downward from the engine <NUM>.

The propeller shaft <NUM> extends in the back-and-forth direction ofthe first marine propulsion device 1A. The propeller shaft <NUM> is connected to the drive shaft <NUM> through the shift mechanism <NUM>. A propeller <NUM> is connected to the propeller shaft <NUM>. The shift mechanism <NUM> switches the rotational direction of mechanical power to be transmitted from the drive shaft <NUM> to the propeller shaft <NUM>. The shift mechanism <NUM> includes, for instance, a plurality of gears and a clutch that changes meshing of the gears. The first marine propulsion device 1A is attached to the watercraft <NUM> through a bracket <NUM>.

The first marine propulsion device 1A includes a first ECU (Engine Control Unit) 17A. The first ECU 17A is an electronic control device for controlling the engine <NUM>. The first ECU 17A includes a processor <NUM> such as a CPU (Central Processing Unit), a RAM (Random Access Memory) <NUM>, and a flash ROM (Read Only Memory) <NUM>. The flash ROM <NUM> stores programs for controlling the engine <NUM>. The first ECU 17Ais programmed to electrically control the engine <NUM>.

<FIG> is a schematic diagram showing a configuration of a watercraft system installed in the watercraft <NUM>. As shown in <FIG>, the second marine propulsion device 1B includes a second ECU 17B. The third marine propulsion device 1C includes a third ECU 17C. Each of the second and third ECUs 17B and 17C is similar in configuration and function to the first ECU 17A. The other constituent elements in each of the second and third marine propulsion devices 1B and 1C are similar to those in the first marine propulsion device 1A.

As shown in <FIG>, the watercraft system includes a data communication module (hereinafter referred to as DCM) <NUM>, a device system <NUM>, and a controller <NUM>. The DCM <NUM> performs wireless communication with an external computer <NUM>. For example, the DCM <NUM> is capable of performing data transmission with the external computer <NUM> through a mobile communication network <NUM>. The mobile communication network <NUM> is, for instance, a network of a <NUM>, <NUM>, or <NUM> mobile communication system.

The device system <NUM> includes electric devices installed in the watercraft <NUM>. For example, the device system <NUM> includes the first to third ECUs 17A to 17C described above. The device system <NUM> includes a throttle-shift operating device <NUM>. The throttle-shift operating device <NUM> is operable by an operator to regulate the rotational speed of the engine <NUM> in each of the first to third marine propulsion devices 1Ato 1C. Besides, the throttle-shift operating device <NUM> is operable by the operator to perform switching between a forward moving action and a rearward moving action by each of the first to third marine propulsion devices 1Ato 1C.

The throttle-shift operating device <NUM> includes a throttle lever <NUM>. The throttle lever <NUM> is operable from a neutral position to a forward moving position and a rearward moving position. The throttle-shift operating device <NUM> outputs a throttle signal indicating the operating position of the throttle lever <NUM>. Each ECU 17A, 17B, 17C receives the throttle signal from the throttle-shift operating device <NUM>. Each ECU 17A, 17B, 17C controls the shift mechanism <NUM> relevant thereto in accordance with the operating position of the throttle lever <NUM>. Accordingly, the rotational direction of the propeller shaft <NUM> relevant thereto is switched between a forward moving direction and a rearward moving direction. Besides, each ECUs 17A, 17B, 17C controls the rotational speed of the engine <NUM> relevant thereto depending on the operating position of the throttle lever <NUM>.

The device system <NUM> includes a steering actuator <NUM> and a steering operating device <NUM>. The steering actuator <NUM> turns each marine propulsion device 1A, 1B, 1C right and left so as to change the rudder angle of each marine propulsion device 1A, 1B, 1C. The steering actuator <NUM> is, for instance, an electric motor. Alternatively, the steering actuator <NUM> may include an electric pump and a hydraulic cylinder.

The steering operating device <NUM> is operable by the operator to adjust the rudder angle of each marine propulsion device 1A, 1B, 1C. The steering operating device <NUM> is, for instance, a steering wheel. Alternatively, the steering operating device <NUM> may be another type of operating device such as a joystick. The steering operating device <NUM> is operable right and left from a neutral position. The steering operating device <NUM> outputs a steering signal indicating the operating position thereof. The steering actuator <NUM> is controlled depending on the operating position of the steering operating device <NUM>, whereby the rudder angle of each marine propulsion device 1A, 1B, 1C is controlled.

The device system <NUM> includes a display <NUM> and an input device <NUM>. The display <NUM> displays information regarding each marine propulsion device 1A, 1B, 1C. The display <NUM> displays an image in accordance with an image signal inputted thereto. The input device <NUM> receives an operational input by a user. The input device <NUM> outputs an input signal indicating the operational input by the user. The input device <NUM> is, for instance, a touchscreen. However, the input device <NUM> may include at least one hardware key. The device system <NUM> includes a CAN (Controller Area Network) <NUM>. The CAN <NUM> is a communication network that the electric devices, included in the device system <NUM>, are connected therethrough to each other.

The controller <NUM> includes a processor such as a CPU and memories such as a RAM and a ROM. The controller <NUM> controls the device system <NUM>. For example, the controller <NUM> controls the device system <NUM> in accordance with the input signal transmitted thereto from the input device <NUM>. The controller <NUM> outputs the image signal to the display <NUM> so as to cause the display <NUM> to display a desired image. The device system <NUM> is connected to the DCM <NUM> through the controller <NUM>.

A computer <NUM> is connected to the CAN <NUM> through the DCM <NUM>. The computer <NUM> rewrites a program of each ECU 17A, 17B, 17C by utilizing a protocol for rewriting the program such as UDS (Unified Diagnostic Services). A series of processing for rewriting the program of each ECU 17A, 17B, 17C will be hereinafter explained.

<FIG> is a flowchart showing a series of processing executed by the computer <NUM> to rewrite the program of each ECU 17A, 17B, 17C. As shown in <FIG>, in step S101, the computer <NUM> obtains ECU information from each ECU 17A, 17B, 17C. The ECU information includes the protocol version, the frequency of rewriting the program, and the serial number of each ECU 17A, 17B, 17C. It should be noted that the computer <NUM> herein obtains the ECU information by another communication protocol different from the rewriting protocol in the CAN <NUM> described above. In another communication protocol herein described, IDs are set for a plurality of ECUs so as to distinguish the ECUs from one another even when the ECUs are of an identical type. For instance, SAE J1939 may be employed as another communication protocol herein described. This is because, when receiving multiple packet responses from the ECUs 17A to 17C in communication under the rewriting protocol, the computer <NUM> cannot correctly distinguish the responses from the ECUs 17A to 17C from one another.

In step S102, the computer <NUM> determines whether or not each ECU 17A, 17B, 17C is compatible with batch rewriting. The computer <NUM> determines whether or not each ECU 17A, 17B, 17C is compatible with the batch rewriting based on the version of the protocol of each ECU 17A, 17B, 17C.

When each ECU 17A, 17B, 17C is compatible with the batch rewriting, the processing proceeds to step S103. In step S103, the computer <NUM> transmits data for rewriting the program of each ECU 17A, 17B, 17C to each ECU 17A, 17B, 17C with a common identifier for the batch rewriting. The common identifier has been preliminarily set to each ECU 17A, 17B, 17C having a protocol version compatible with the batch rewriting.

When each ECU 17A, 17B, 17C is incompatible with the batch rewriting in step S102, the processing proceeds to step S104. In step S104, the computer <NUM> transmits the data for rewriting the program to each ECU 17A, 17B, 17C with a unique identifier for discrete rewriting. The unique identifier has been preliminarily assigned and set to each ECU 17A, 17B, 17C having a protocol version incompatible with the batch rewriting.

For example, when determining that the first and second ECUs 17A and 17B are compatible with the batch rewriting, the computer <NUM> simultaneously transmits the data for rewriting the program to the first and second ECUs 17A and 17B with an identifier common to the first and second ECUs 17A and 17B. On the other hand, when determining that the third ECU 17C is incompatible with the batch rewriting, the computer <NUM> transmits the data for rewriting the program to the third ECU 17C with an identifier uniquely assigned to the third ECU 17C. In other words, the computer <NUM> separately executes data transmission to the first and second ECUs 17A and 17B with the common identifier and data transmission to the third ECU 17C with the unique identifier.

Alternatively, when determining that all the first to third ECUs 17A to 17C are compatible with the batch rewriting, the computer <NUM> simultaneously transits the data for rewriting the program to the first to third ECUs 17A to 17C with an identifier common to the first to third ECUs 17A to 17C. Contrarily, when determining that all the first to third ECUs 17A to 17C are incompatible with the batch rewriting, the computer <NUM> sequentially transmits the data for rewriting the program to the first to third ECUs 17A to 17C with identifiers uniquely assigned to the first to third ECUs 17A to 17C, respectively.

When given ECUs are compatible with the batch rewriting, the computer <NUM> executes a series of processing shown in <FIG> to transmit data to the given ECUs with an identifier common to the given ECUs. In the following explanation, it is assumed that the first and second ECUs 17A and B are compatible with the batch rewriting, whereas the third ECU 17C is incompatible with the batch rewriting.

As shown in <FIG>, in step S201, the computer <NUM> transmits a request to proceed to an extensive diagnostic session to each ECU 17A, 17B. In step S202, the computer <NUM> transmits a request to proceed to a reprogramming session to each ECU 17A, 17B.

In step S203, the computer <NUM> transmits "Seed" for secure access to each ECU 17A, 17B. In step S204, the computer <NUM> transmits "Key" for secure access to each ECU 17A, 17B. It should be noted that the Key is processed as an error in a given ECU other than each ECU 17A, 17B associated with the Key; hence, the number of Keys transmitted from the computer <NUM> is equal to the number of the ECUs 17A and 17B associated with the Keys. Besides, the ECUs 17A and 17B allow errors to occur at a frequency of "the number of ECUs - <NUM>".

In step S205, the computer <NUM> transmits a command to update the frequency of rewriting. The computer <NUM> transmits, not a specific value of frequency, but a command to increase by one the frequency of rewriting, to each ECU 17A, 17B.

<FIG> is a flowchart showing a series of processing executed by each ECU 17A, 17B when each ECU 17A, 17B receives the command to update the frequency of rewriting. For example, suppose the first ECU 17A receives the command to update the frequency of rewriting. As shown in <FIG>, the first ECU 17A increases by one the frequency of rewriting executed therein in step S301. When the upper limit is set for the frequency of rewriting in the ECU 17A, the first ECU 17A determines whether or not the frequency of rewriting is greater than a set value A1 in step S302.

When the first ECU 17A determines that the frequency of rewriting is greater than the set value A1 in step S302, the processing proceeds to step S303. In step S303, the first ECU 17A refuses to rewrite the program. In this case, the first ECU 17A transmits a negative response to the computer <NUM>. When receiving the negative response from the first ECU 17A, the computer <NUM> determines that the program is not rewritable in the first ECU 17A.

When the first ECU 17A determines that the frequency of rewriting is not greater than the set value A1 in step S302, the processing proceeds to step S304. In step S304, the first ECU 17A accepts rewriting of the program. In this case, the first ECU 17A transmits a positive response to the computer <NUM>. It should be noted that, even when the upper limit is not set for the frequency of rewriting in the first ECU 17A, the first ECU 17A transmits the positive response to the computer <NUM>. When receiving the positive response from the first ECU 17A, the computer <NUM> determines that the program is rewritable in the first ECU 17A. Likewise, the second ECU 17B executes the series of processing described above, when receiving the command to update the frequency of rewriting.

In step S206, the computer <NUM> transmits a command to erase the flash ROM to each ECU 17A, 17B. It should be noted that a given ECU, in which the program is not rewritable, transmits a negative response with respect to the series of processing in step S206 and thereafter, whereas only another ECU, in which the program is rewritable, continues executing the series of processing in step S206 and thereafter.

In step S207, the computer <NUM> transmits a download request to each ECU 17A, 17B. When there is a difference in response to the download request between the ECUs 17A and 17B (e.g., a difference in volume of acceptable data or a difference in request for intervals of communication time), the computer <NUM> executes data transfer in accordance with the loosest one of the conditions obtained from the responses. Besides, each ECU 17A, 17B transmits a response based on the volume of data transmission declared by the computer <NUM>. In short, the computer <NUM> does not execute processing depending on a value requested by each ECU 17A, 17B.

In step S208, the computer <NUM> transmits updated program data to each ECU 17A, 17B. Each ECU 17A, 17B rewrites the program based on the received program data. For example, when accepting to rewrite the program, the first ECU 17A rewrites the program based on the program data received from the computer <NUM>. When refusing to rewrite the program, the first ECU 17A does not rewrite the program.

When transmission of the program data is completed, the computer <NUM> transmits a checksum verification to each ECU 17A, 17B in step S209. In step S210, the computer <NUM> transmits a reboot command to each ECU 17A, 17B. In step S211, the computer <NUM> transmits a request to proceed to an extensive diagnostic session to each ECU 17A, 17B. In step S212, the computer <NUM> transmits a request to proceed to a default session to each ECU 17A, 17B.

In step S213, the computer <NUM> transmits an ECU information request to each ECU 17A, 17B. In similar manner to step S101 described above, the computer <NUM> herein obtains the ECU information with another communication protocol different from the rewriting protocol in the CAN <NUM>.

It should be noted that each ECU 17A, 17B transmits a response with respect to each processing described above; then, the computer <NUM> executes the following processing after receiving the response from each ECU 17A, 17B. When any kind of error occurs in either the ECU 17A or the ECU 17B in the series of processing executed before the processing step of erasing the flash ROM, the computer <NUM> determines that the program is not rewritable in the ECU in which any kind of error occurs but continues executing the batch rewriting. On the other hand, even when any kind of error occurs in either the ECU 17A or the ECU 17B in the series of processing at and after the processing step of erasing the flash ROM, the computer <NUM> executes the batch rewriting till the end. In other words, when a given ECU has a chance of success of rewriting, the computer <NUM> executes the series of processing with respect to the given ECU till the end of rewriting. Accordingly, occurrence of damage or breakage of software can be inhibited in each ECU 17A, 17B.

The computer <NUM> transmits data to the third ECU 17C incompatible with the batch rewriting with an identifier uniquely assigned to the third ECU 17C in a series of processing similar to that described above.

In the watercraft system according to the present preferred embodiment explained above, the data for rewriting the program are transmitted to each of the plural ECUs 17A and 17B with the common identifier through the CAN <NUM>. Because of this, rewriting of the program is simultaneously executed with respect to the ECUs 17A and 17B compatible with the batch rewriting. This results in reduction in length of time required for rewriting the programs of the plural ECUs 17A and 17B. Besides, when the plural ECUs 17A to 17C include not only one or more ECUs compatible with the batch rewriting but also one or more ECUs incompatible with the batch rewriting, the discrete rewriting of the program can be executed with respect to the one or more ECUs incompatible with the batch rewriting.

Each of the plural ECUs 17A and 17B determines whether or not to rewrite the program thereof. Because of this, the computer <NUM> is not required to determine whether or not to rewrite the program in each of the plural ECUs 17A and 17B; hence, the processing to be executed by the computer <NUM> is simplified.

One preferred embodiment of the present invention has been explained above. However, the present invention is not limited to the preferred embodiment described above, and a variety of changes can be made within the scope of the appended claims.

Each marine propulsion device 1A, 1B, 1C is not limited to the outboard motor, and alternatively, may be another type of propulsion device such as an inboard engine outboard drive or a jet propulsion device. The structure of each marine propulsion device 1A, 1B, 1C is not limited to that in the preferred embodiment described above and may be changed. For example, each marine propulsion device 1A, 1B, 1C may include an electric motor instead of the engine.

The number of marine propulsion devices is not limited to three. The number of marine propulsion devices may be more than three. The electronic control device is not limited to the ECU described above and may be changed. For example, when each marine propulsion device includes an electric motor as a drive source, the electronic control device may be a motor controller for controlling the electric motor.

The condition for rewriting the program is not limited to that the frequency of rewriting the program has not reached the set value. Another condition may be set as an additional condition for rewriting the program. For example, a condition that at least one of the marine propulsion devices is not in operation or a condition that a voltage applied to each ECU is greater than or equal to a predetermined value may be set as an additional condition for rewriting the program.

Claim 1:
A method of rewriting a program of a first electronic control device (17A), a program of a second electronic control device (17B), and a program of a third electronic control device (17C),
the first electronic control device (17A), the second electronic control device (17B), and the third electronic control device (17C) are in a watercraft system, the watercraft system including a first marine propulsion device (1A), a second marine propulsion device (1B), a third marine propulsion device (1C), and a communication network (<NUM>), the first marine propulsion device (1A) including the first electronic control device (17A), the second marine propulsion device (1B) including the second electronic control device (17B), the third marine propulsion device (1C) including a third electronic control device (17C), the communication network (<NUM>) connecting the first electronic control device (17A), the second electronic control device (17B), and the third electronic control device (17C) therethrough and wirelessly connects the watercraft system with an external computer (<NUM>);
the computer (<NUM>) is configured to perform
the method comprising:
obtaining (S101) a version of a protocol for rewriting each of the programs of the first, second, and third electronic control devices (17A, 17B, 17C) from the each of the first, second, and third electronic control devices (17A, 17B, 17C);
determining (S102) whether or not each of the first, second, and third electronic control devices (17A, 17B, 17C) is compatible with batch rewriting of the program of the first electronic control device (17A), the program of the second electronic control device (17B), and the program of the third electronic control device (17C) with a common identifier, based on the version of the protocol thereof;
transmitting (S103) the data for rewriting the each of the programs to those of the first, second, and third electronic control devices (17A, 17B, 17C) with the common identifier, which are determined to be compatible with the batch rewriting (S102: YES); and
transmitting (S104) data for rewriting the program of an electronic control device which is determined to be incompatible with the batch rewriting (S102: NO) to the electronic control device which is determined to be incompatible with the batch rewriting, with an identifier uniquely assigned to the electronic control device which is determined to be incompatible with the batch rewriting, so as to be different from the common identifier.