Automatic identifier selector for registering battery packs on an uninterruptible power supply
A software-based battery-pack ID selector automatically assigns unique identifiers to battery packs connected to UPS systems, addressing inefficiencies and errors in manual methods by using communication bus monitoring and rank-based selection, ensuring conflict-free and cost-effective operation.
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2025-09-12
- Publication Date
- 2026-03-19
AI Technical Summary
Existing methods for assigning unique identifiers to battery packs connected to uninterruptible power supplies (UPS) are inefficient and prone to human errors, leading to conflicts and increased costs due to the use of manual hardware-based ID selection.
A software-based battery-pack ID selector that automatically selects and assigns unique identifiers to newly connected battery packs by monitoring communication buses and adjusting identifiers to avoid conflicts, using a combination of random selection and rank-based assignment to ensure uniqueness.
The solution provides efficient, error-free, and cost-effective automatic assignment of unique identifiers to battery packs, reducing the likelihood of conflicts and eliminating the need for manual hardware-based selection.
Smart Images

Figure US2025046143_19032026_PF_FP_ABST
Abstract
Description
[0001] Attorney Docket No.: A2000-7825WO(2024P00762 WO)
[0002] AUTOMATIC IDENTIFIER SELECTOR FOR REGISTERING BATTERY PACKS ON AN UNINTERRUPTIBLE POWER SUPPLY
[0003] CROSS-REFERENCE TO RELATED APPLICATIONS
[0004] This application claims priority to U.S. Provisional Patent Application No. 63 / 694,429, titled “AUTOMATIC IDENTIFIER SELECTOR FOR REGISTERING BATTERY PACKS ON AN UNINTERRUPTIBLE POWER SUPPLY,” filed on September 13, 2024, the contents of which are incorporated herein by reference in their entirety for all purposes.
[0005] BACKGROUND
[0006] 1. Field of the Disclosure
[0007] At least one example in accordance with the present disclosure generally relates to selecting identifiers (IDs) for registering battery packs connected to an uninterruptible power supply (UPS).
[0008] 2. Discussion of Related Art
[0009] Power devices, such as uninterruptible power supplies (UPSs), may be used to provide regulated, uninterrupted power for sensitive and / or critical loads, such as computer systems and other data-processing systems. Examples of UPSs include online UPSs, offline UPSs, line- interactive UPSs, as well as others. UPSs may provide output power to a load. The output power may be derived from a primary source of power, such as a utility-mains source, and / or derived from a back-up source of power, such as an energy-storage device.
[0010] SUMMARY
[0011] Examples of the methods and systems discussed herein are not limited in application to the details of construction and the arrangement of components set forth in the following description or illustrated in the accompanying drawings. The methods and systems may be capable of implementation in other embodiments and of being practiced or of being carried out in various ways. Examples of specific implementations are provided herein for illustrative purposes and are not intended to be limiting. Acts, components, elements, and features discussed Attorney Docket No.: A2000-7825WO(2024P00762 WO) in connection with any one or more examples may be configured to operate and / or be implemented in a similar role in any other examples.
[0012] The phraseology and terminology used herein is for the purpose of description. References to examples, embodiments, components, elements, or acts of the systems and methods herein referred to in the singular may also embrace embodiments including a plurality. Similarly, references in plural to embodiments, components, elements, or acts may be implemented as a singularity. References in the singular or plural form may therefore not be intended to limit the presently disclosed systems or methods, their components, acts, or elements. The use herein of “including,” “comprising,” “having,” “containing,” “involving,” and variations so forth, may encompass the items listed thereafter and equivalents thereof as well as additional items.
[0013] References to “or” may be construed as inclusive so that any terms described using “or” may indicate any of a single, more than one, and all of the described terms. For example, the phrase “at least one of A or B” may refer A and / or B — that is, A only, B only, or A and B together. In addition, in the event of inconsistent usages of terms between this document and documents incorporated herein by reference, the term usage in the incorporated documents is supplementary to this document. For irreconcilable differences, the term usage in this document controls.
[0014] According to at least one aspect of the present disclosure, in one example, a method of selecting a battery-pack ID is disclosed. The method includes (a) assigning a first ID to a first battery pack; (b) monitoring a communication bus associated with an uninterruptible power supply (UPS) coupled to the first battery pack and a second battery pack; (c) detecting, via the communication bus, communication indicating that, prior to being assigned to the first battery pack, the first ID is assigned to the second battery pack; and (d) assigning a second ID to the first battery pack in response to detecting the communication, the second ID being different from the first ID.
[0015] In another example of the method, assigning the second ID to the first battery pack includes determining that, prior to being assigned to the first battery pack, the second ID is not assigned to any other battery pack coupled to the UPS based on monitoring the communication bus for a predetermined time interval. Attorney Docket No.: A2000-7825WO(2024P00762 WO)
[0016] In one example, the method further includes (e) determining a secondary ID based on the second ID; (f) assigning the secondary ID to the first battery pack; (g) detecting, via the communication bus, second communication indicating that, prior to being assigned to the first battery pack, the secondary ID is assigned to a third battery pack coupled to the UPS; and (h) assigning a third ID to the first battery pack in response to detecting the second communication, the third ID being different from the first ID and the second ID. In one example, the method further includes (i) determining a second secondary ID based on the third ID; (j) determining that, prior to being assigned to the first battery pack, the second secondary ID is not assigned to the second battery pack or the third battery pack based on monitoring the communication bus for a predetermined time interval; and (k) assigning the second secondary ID to the first battery pack in response to determining that, prior to being assigned to the first battery pack, the second secondary ID is not assigned to the second battery pack or the third battery pack. In another example of the method, determining the second secondary ID based on the third ID includes selecting the second secondary ID from a list of selectable secondary IDs based on a rank of the third ID relative to the first ID and the second ID; and the method further includes (1) updating the list by removing the second secondary ID from the list in response to assigning the second secondary ID to the first battery pack. In another example of the method, selecting the second secondary ID from the list of selectable secondary IDs based on the rank of the third ID relative to the first ID and the second ID includes determining that the second secondary ID has a same rank relative to other selectable secondary IDs on the list as the rank of the third ID. In one example of the method, a time delay between receiving the request and sending the response is randomly selected during at least a first cycle of the plurality of cycles.
[0017] In one example, the method further includes (e) prior to assigning the first ID to the first battery pack, randomly selecting the first ID from a list of selectable IDs for assigning to the first battery pack; (f) after detecting the communication, updating the list by removing the first ID from the list; (g) detecting the list to be empty; and (h) sending an alarm signal indicating the list is empty. In one example, the method further includes (i) detecting that the second ID is released from being assigned to a third battery pack; (j) updating the list by adding the second ID to the list; and (k) prior to assigning the second ID to the first battery pack, randomly selecting the second ID from the updated list for assigning to the first battery pack. Attorney Docket No.: A2000-7825WO(2024P00762 WO)
[0018] In one example of the method, monitoring the communication bus includes a plurality of cycles, each cycle including receiving a request from the UPS for a first current ID assigned to the first battery pack; sending a response to the UPS in response to receiving the request, the response including the first current ID; and comparing the first current ID to a second current ID assigned to the second battery pack.
[0019] According to another aspect of the present disclosure, in one example, at least one non- transitory computer-readable medium storing thereon sequences of computer-executable instructions for selecting a battery-pack identifier (ID) is disclosed. The sequences of computerexecutable instructions include instructions that instruct at least one processor to (a) assign a first ID to a first battery pack; (b) monitor a communication bus associated with an uninterruptible power supply (UPS) coupled to the first battery pack and a second battery pack; (c) detect, via the communication bus, communication indicating that, prior to being assigned to the first battery pack, the first ID is assigned to the second battery pack; and (d) assign a second ID to the first battery pack in response to detecting the communication, the second ID being different from the first ID.
[0020] In one example, assigning the second ID to the first battery pack includes determining that, prior to being assigned to the first battery pack, the second ID is not assigned to any other battery pack coupled to the UPS based on monitoring the communication bus for a predetermined time interval.
[0021] In another example, the instructions further instruct the at least one processor to (e) determine a secondary ID based on the second ID; (f) assign the secondary ID to the first battery pack; (g) detect, via the communication bus, second communication indicating that, prior to being assigned to the first battery pack, the secondary ID is assigned to a third battery pack coupled to the UPS; and (h) assign a third ID to the first battery pack in response to detecting the second communication, the third ID being different from the first ID and the second ID. In one example, wherein the instructions further instruct the at least one processor to (i) determine a second secondary ID based on the third ID; (j) determine that, prior to being assigned to the first battery pack, the second secondary ID is not assigned to the second battery pack or the third battery pack based on monitoring the communication bus for a predetermined time interval; and (k) assign the second secondary ID to the first battery pack in response to determining that, prior to being assigned to the first battery pack, the second secondary ID is not assigned to the second Attorney Docket No.: A2000-7825WO(2024P00762 WO) battery pack or the third battery pack. In one example, determining the second secondary ID based on the third ID includes selecting the second secondary ID from a list of selectable secondary IDs based on a rank of the third ID relative to the first ID and the second ID; and the instructions further instruct the at least one processor to (1) update the list by removing the second secondary ID from the list in response to assigning the second secondary ID to the first battery pack. In one example, selecting the second secondary ID from the list of selectable secondary IDs based on the rank of the third ID relative to the first ID and the second ID includes determining that the second secondary ID has a same rank relative to other selectable secondary IDs on the list as the rank of the third ID.
[0022] In one example, the instructions further instruct the at least one processor to (e) prior to assigning the first ID to the first battery pack, randomly select the first ID from a list of selectable IDs for assigning to the first battery pack; (f) after detecting the communication, update the list by removing the first ID from the list; (g) detect the list to be empty; and (h) send an alarm signal indicating the list is empty.
[0023] In one example, monitoring the communication bus includes a plurality of cycles, each cycle including receiving a request from the UPS for a first current ID assigned to the first battery pack; sending a response to the UPS in response to receiving the request, the response including the first current ID; and comparing the first current ID to a second current ID assigned to the second battery pack. In one example, a time delay between receiving the request and sending the response is randomly selected during at least a first cycle of the plurality of cycles.
[0024] According to another aspect of the present disclosure, in one example, a computer system for selecting a battery-pack identifier (ID) is disclosed. The computer system includes processing circuitry coupled to a memory, the processing circuitry being configured to (a) assign a first ID to a first battery pack; (b) monitor a communication bus associated with an uninterruptible power supply (UPS) coupled to the first battery pack and a second battery pack; (c) detect, via the communication bus, communication indicating that, prior to being assigned to the first battery pack, the first ID is assigned to the second battery pack; and (d) assign a second ID to the first battery pack in response to detecting the communication, the second ID being different from the first ID.
[0025] In one example, assigning the second ID to the first battery pack includes determining that, prior to being assigned to the first battery pack, the second ID is not assigned to any other Attorney Docket No.: A2000-7825WO(2024P00762 WO) battery pack coupled to the UPS based on monitoring the communication bus for a predetermined time interval.
[0026] In another example, the processing circuitry is further configured to: (e) determine a secondary ID based on the second ID; (f) assign the secondary ID to the first battery pack; (g) detect, via the communication bus, second communication indicating that, prior to being assigned to the first battery pack, the secondary ID is assigned to a third battery pack coupled to the UPS; and (h) assign a third ID to the first battery pack in response to detecting the second communication, the third ID being different from the first ID and the second ID. In one example, the processing circuitry is further configured to (i) determine a second secondary ID based on the third ID; (j) determine that, prior to being assigned to the first battery pack, the second secondary ID is not assigned to the second battery pack or the third battery pack based on monitoring the communication bus for a predetermined time interval; and (k) assign the second secondary ID to the first battery pack in response to determining that, prior to being assigned to the first battery pack, the second secondary ID is not assigned to the second battery pack or the third battery pack. In one example, determining the second secondary ID based on the third ID includes selecting the second secondary ID from a list of selectable secondary IDs based on a rank of the third ID relative to the first ID and the second ID; and the processing circuitry is further configured to (1) update the list by removing the second secondary ID from the list in response to assigning the second secondary ID to the first battery pack. In one example, selecting the second secondary ID from the list of selectable secondary IDs based on the rank of the third ID relative to the first ID and the second ID includes determining that the second secondary ID has a same rank relative to other selectable secondary IDs on the list as the rank of the third ID.
[0027] In another example, the processing circuitry is further configured to: (e) prior to assigning the first ID to the first battery pack, randomly select the first ID from a list of selectable IDs for assigning to the first battery pack; (f) after detecting the communication, update the list by removing the first ID from the list; (g) detect the list to be empty; and (h) send an alarm signal indicating the list is empty.
[0028] In one example, monitoring the communication bus includes a plurality of cycles, each cycle including receiving a request from the UPS for a first current ID assigned to the first battery pack; sending a response to the UPS in response to receiving the request, the response including the first current ID; and comparing the first current ID to a second current ID assigned Attorney Docket No.: A2000-7825WO(2024P00762 WO) to the second battery pack. In one example, a time delay between receiving the request and sending the response is randomly selected during at least a first cycle of the plurality of cycles.
[0029] BRIEF DESCRIPTION OF THE DRAWINGS
[0030] Various aspects of at least one embodiment are discussed below with reference to the accompanying figures, which may not be drawn to scale. The figures are included to provide an illustration and a further understanding of the various aspects and embodiments, and are incorporated in and constitute a part of this specification, but are not intended as a definition of the limits of any particular embodiment. The drawings, together with the remainder of the specification, serve to explain principles and operations of the described and claimed aspects and embodiments. In the figures, each identical or substantially similar- component that is illustrated in various figures may be represented by a like numeral. For purposes of clarity, not every component may be labeled in every figure. In the figures:
[0031] FIG. 1 illustrates a block diagram of a power system including a UPS coupled to one or more battery packs to provide power according to an example;
[0032] FIG. 2 illustrates a computer system for automatically selecting a battery-pack ID according to an example;
[0033] FIG. 3 illustrates a block diagram of the external battery packs (XBPs) of FIG. 1 according to an example;
[0034] FIG. 4 illustrates a process for operating a selector of FIG. 2 to automatically select a battery-pack ID according to an example;
[0035] FIG. 5 is a table including ID definitions for the selector of FIG. 2 according to one example;
[0036] FIG. 6 illustrates a process for operating a selector of FIG. 2 to automatically select battery-pack IDs for an XBP according to one example;
[0037] FIG. 7 illustrates a process for operating the “Normal Mode” of the selector of FIG. 2 according to one example;
[0038] FIG. 8 illustrates a process for operating the “Select Random ID” of the selector of FIG. 2 according to one example;
[0039] FIG. 9 illustrates a process for operating the “Registering” of the selector of FIG. 2 according to one example; Attorney Docket No.: A2000-7825WO(2024P00762 WO)
[0040] FIG. 10 illustrates a process for operating the “Select ID” of the selector of FIG. 2 according to one example;
[0041] FIG. 11 illustrates a process for operating the “Line is Full” of the selector of FIG. 2 according to one example;
[0042] FIG. 12 illustrates a schematic diagram for operating the selector of FIG. 2 to automatically select battery-pack IDs for a registering XBP according to one example;
[0043] FIG. 13 illustrates a schematic diagram for operating the selector of FIG. 2 to concurrently select battery-pack IDs for two registering XBPs and resolve ID conflicts automatically according to an example;
[0044] FIG. 14 illustrates a schematic diagram for operating the selector of FIG. 2 to automatically select battery-pack IDs for a registering XBP while avoiding a suffix-ID-of-XBP (SIDX) conflict with a registered XBP according to an example; and
[0045] FIG. 15 illustrates a schematic diagram for operating the selector of FIG. 2 to automatically select battery-pack IDs for a registering XBP while incurring “Line is Full” according to an example.
[0046] DETAILED DESCRIPTION
[0047] Uninterruptible power supplies (UPSs) may be used to provide regulated, uninterrupted power to one or more loads. UPSs may be coupled to a primary power source, such as a utility mains supply, and a secondary power source, such as one or more external battery packs (XBPs) and / or one or more internal battery packs often installed in replacement battery cartridges (RBCs). When primary power is acceptable from the primary power source, the UPS may power the one or more loads using output power derived from the primary power source. When acceptable primary power is not available from the primary power source, the UPS may power the one or more loads using output power derived from the secondary power source.
[0048] A user may connect additional XBPs (and / or additional internal RBC battery packs) to the UPS to increase the energy capacity of the secondary power source. In some examples, a large-capacity secondary power source may have multiple XBPs connected in series. Each XBP may include multiple battery cells, such as electrochemical cells (for example, lithium-ion cells) or other cell types including mechanical or biological battery cells. Each XBP may be associated with a unique battery-pack ID. When one or more additional XBPs are connected to the UPS, a Attorney Docket No.: A2000-7825WO(2024P00762 WO) unique battery-pack ID may be selected for each additional XBP without conflicting with any other assigned battcry-pack IDs.
[0049] In some examples, selecting a battery-pack ID for a newly connected XBP (that is, an XBP that is physically connected to the UPS but not yet assigned an ID) may include manually configuring designated ID-selection hardware of the XBP by a user while personally reviewing the previously assigned battery-pack IDs to avoid conflicts. For example, a user may manually review a list of previously assigned battery-pack IDs to determine which battery-pack IDs are still available, and then use the ID-selection hardware to manually select an available ID. This approach may be inefficient and prone to human mistakes. The use of designated hardware also increases the cost of the XBPs.
[0050] It may be desirable to replace the manual method with a battery-pack- ID selector which includes software capable of automatically selecting and assigning a unique battery-pack ID to each newly connected XBP different from any battery-pack IDs previously assigned to other connected battery packs. In some examples, the battery-pack-ID selector may not use any designated hardware.
[0051] FIG. 1 illustrates a block diagram of a power system 100 including a UPS 101 coupled to one or more battery packs, including XBPs 126 (depicted as the first XBP 126A, the second XBP 126B, the third XBP 126C, ...), to provide power according to an example. The UPS 101 may include an input 102, an AC / DC converter 104, one or more DC buses 106, a DC / DC converter 108, a battery-pack interface 110, one or more internal RBC battery packs 125, at least one controller 112 (“controller 112”), a DC / AC inverter 114, an output 116, a memory and / or storage 118, one or more communication interfaces 120 (“communication interfaces 120”), which may be communicatively coupled to one or more external systems 122 (“external systems 122”), and one or more sensors 124 (“sensors 124”), which may include one or more voltage, current sensors, and / or other types of sensors.
[0052] The input 102 is coupled to the AC / DC converter 104 and to an AC power source (not illustrated), such as an AC mains power supply. The AC / DC converter 104 is coupled to the input 102 and to the one or more DC buses 106, and is communicatively coupled to the controller 112. The one or more DC buses 106 are coupled to the AC / DC converter 104, the DC / DC converter 108, and to the DC / AC inverter 114, and are communicatively coupled to the controller 112. The DC / DC converter 108 is coupled to the one or more DC buses 106 and to the Attorney Docket No.: A2000-7825WO(2024P00762 WO) battery-pack interface 1 10, and is communicatively coupled to the controller 112. The batterypack interface 110 is coupled to the DC / DC converter 108, and is configured to be coupled to one or more XBPs 126 and / or one or more RBC battery packs 125. In some examples, the battery-pack interface 110 is configured to be communicatively coupled to the controller 112.
[0053] In some examples, the DC / DC converter 108 of the UPS 101 may be coupled to the one or more XBPs 126 and the one or more RBC battery packs 125 via the battery-pack interface 110. In other examples, the DC / DC converter 108 may be coupled to the one or more RBC battery packs 125 via a different interface (not illustrated). In various examples, the UPS 101 may not include any RBC battery packs 125. The one or more XBPs 126 and the one or more RBC battery packs 125 may include one or more batteries, capacitors, flywheels, or other energy- storage devices in various examples. In one example, the one or more XBPs 126 may include ID-selecting hardware such as a selecting knob 128 coupled to a designated ID circuit (not illustrated).
[0054] The DC / AC inverter 114 is coupled to the one or more DC buses 106 and to the output 116, and is communicatively coupled to the controller 112. The output 116 is coupled to the DC / AC inverter 114, and to an external load (not illustrated). The controller 112 is communicatively coupled to the AC / DC converter 104, the one or more DC buses 106, the DC / DC converter 108, the battery-pack interface 110, the DC / AC inverter 114, the memory and / or storage 118, the communication interfaces 120, the one or more RBC battery packs 125, and the one or more XBPs 126. The sensors 124 are communicatively coupled to the controller 112 and may be coupled to one or more other components of the UPS 101, such as the input 102, the AC / DC converter 104, the one or more DC buses 106, the DC / DC converter 108, the batterpack interface 110, the DC / AC inverter 114, and / or the output 116.
[0055] The controller 112 is communicatively coupled to the XBPs 126 and / or the RBC battery packs 125 through a communication medium 130. For example, the communication medium 130 may include a controller area network (CAN) bus.
[0056] The input 102 is configured to be coupled to an AC mains power source and to receive input AC power having an input voltage level. The UPS 101 may be configured to operate in different modes of operation based on the input voltage of the AC power provided to the input 102. The controller 112 may determine a mode of operation in which to operate the UPS 100 based on whether the input voltage of the AC power is acceptable. The controller 112 may Attorney Docket No.: A2000-7825WO(2024P00762 WO) include or be coupled to one or more sensors, such as the sensors 124, configured to sense parameters of the input voltage. For example, the sensors 124 may include one or more voltage and / or current sensors coupled to the input 102 and configured to sense information indicative of a voltage at the input 102 and provide the sensed information to the controller 112.
[0057] When AC power provided to the input 102 is acceptable (for example, by having parameters, such as an input voltage value, that meet specified values, such as by falling within a range of acceptable input voltage values), the controller 112 controls components of the UPS 101 to operate in a normal mode of operation. In the normal mode of operation, AC power received at the input 102 is provided to the AC / DC converter 104. The AC / DC converter 104 converts the AC power into DC power and provides the DC power to the one or more DC buses 106. The one or more DC buses 106 distribute the DC power to the DC / DC converter 108 and to the DC / AC inverter 114. The DC / DC converter 108 converts the received DC power and provides the converted DC power to the battery-pack interface 110. The battery-pack interface 110 receives the converted DC power and provides the converted DC power to the one or more XBPs 126 to charge the one or more XBPs 126. The battery-pack interface 110 may also provide the converted DC power to charge the one or more RBC battery packs 125. The DC / AC inverter 114 receives DC power from the one or more DC buses 106, converts the DC power into regulated AC power, and provides the regulated AC power to the output 116 to be delivered to a load.
[0058] When AC power provided to the input 102 from the AC mains power source is not acceptable (for example, by having parameters, such as an input voltage value, that do not meet specified values, such as by falling outside of a range of acceptable input voltage values), the controller 112 controls components of the UPS 101 to operate in a backup mode of operation. In the backup mode of operation, DC power is discharged from the one or more XBPs 126 and / or the one or more RBC battery packs 125 to the battery-pack interface 110, and the battery-pack interface 110 provides the discharged DC power to the DC / DC converter 108. The DC / DC converter 108 converts the received DC power and distributes the DC power amongst the one or more DC buses 106. For example, the DC / DC converter 108 may evenly distribute the power amongst the one or more DC buses 106. The one or more DC buses 106 provide the received power to the DC / AC inverter 114. The DC / AC inverter 114 receives the DC power from the one or more DC buses 106, converts the DC power into regulated AC power, and provides the regulated AC power to the output 116. Attorney Docket No.: A2000-7825WO(2024P00762 WO)
[0059] In some examples, the sensors 124 may include one or more sensors coupled to one or more of the foregoing components such that a voltage and / or current of one or more of the foregoing components may be determined by the controller 112. Controller 112 may store information in, and / or retrieve information from, the memory and / or storage 118. For example, controller 112 may store information indicative of sensed parameters (for example, input- voltage values of the AC power received at the input 102) in the memory and / or storage 118. Controller 112 may further receive information from, or provide information to, the communication interfaces 120. The communication interfaces 120 may include one or more communication interfaces including, for example, user interfaces (such as display screens, touch- sensitive screens, keyboards, mice, track pads, dials, buttons, switches, sliders, light-emitting components such as light-emitting diodes, sound-emitting components such as speakers, buzzers, and so forth configured to output sound inside and / or outside of a frequency range audible to humans, and so forth), wired communication interfaces (such as wired ports), wireless communication interfaces (such as antennas), and so forth, configured to exchange information with one or more systems, such as the external systems 122, or other entities, such as human beings. The external systems 122 may include any device, component, module, and so forth, that is external to the UPS 101, such as a server, database, laptop computer, desktop computer, tablet computer, smartphone, central controller or data- aggregation system, other UPSs, and so forth.
[0060] FIG. 2 illustrates a computer system 200 for automatically selecting a battery-pack ID according to an example. In various examples, system 200 includes at least one computing device 210, which may be any kind of computing device, such as, for example, a personal computer, laptop, workstation, server, enterprise server, tablet, smartphone, router, and so forth. In one example, computing device 210 is a personal computer or laptop. In certain examples, the computer system 200 may be included in the external systems 122 of the power system 100.
[0061] In at least one example, the computing device 210 may include processing circuitry 220, user interface (UI) circuitry 230, and memory 240. The computing device 210 may also include various additional features (not illustrated) such as, for example, network interface circuitry, interconnection traces and buses, and so forth, which are not illustrated for clarity. The network interface circuitry may be configured to connect the computing device 210 to an external network (for example, the internet) with or without connecting wires for accessing a cloud server. In one example, the computing device 210 may be included in the controller 112 of the Attorney Docket No.: A2000-7825WO(2024P00762 WO)
[0062] UPS 101 . Tn some examples, the computing device 210 may be included in a controller of an XBP 126 (as discussed below with respect to FIG. 3).
[0063] The processing circuitry 220 may include any kind of processor or set of processors configured to perform operations, such as, for example, a microprocessor, a multi-core microprocessor, a digital signal processor, a field-programmable gate array (FPGA), a system on a chip (SoC), a collection of electronic circuits, a similar kind of controller, or any combination of the above.
[0064] The UI circuitry 230 may include any circuitry needed to communicate with and connect to one or more user input devices 292 and display screens 280. The UI circuitry 230 may include, for example, a keyboard controller, a mouse controller, a touch controller, a serial bus port and controller, a universal serial bus (USB) port and controller, a wireless controller and antenna (e.g., Bluetooth), a graphics adapter and port, and so forth.
[0065] The display screen 280 may be any kind of display, including, for example, a CRT, LCD screen, LED screen, OLED screen, and so forth. The input device 292 may be operated by a user 294 and may include a keyboard, keypad, mouse, trackpad, trackball, pointing stick, joystick, touchscreen (for example, embedded within display screen 280), microphone / voice controller, and so forth. In some examples, instead of being external to computing device 210, the input device 292 and / or display screen 280 may be embedded within the computing device 210 (for example, a cell phone or tablet with an embedded touchscreen).
[0066] The memory 240 may include any kind of digital system memory, such as, for example, random access memory (RAM). Memory 240 stores an operating system (OS) (not illustrated, for example, a Linux, UNIX, Windows, MacOS, or similar operating system), software modules, various drivers, and other applications including a CAN bus ID protocol 270. The software modules include the automatic ID selector for battery packs 250 (“selector 250”) and are configured to execute on processing circuitry 220 as well as various data. As indicated above, the selector 250 may be installed on the UPS 101 or any of the XBPs 126.
[0067] The selector 250 may include (or implement) various IDs 252 for selecting a battery-pack ID to be assigned to a battery pack. In one example, the selector 250 may include two types of battery-pack IDs. The first type of battery-pack IDs includes registration IDs (RGIDs) 254 and random IDs 254B. The second type of battery-pack IDs includes legal IDs (LIDs) 256 and suffix IDs 256X. The suffix IDs 256X may further include suffix IDs of RBC (SIDRs) 256B and suffix Attorney Docket No.: A2000-7825WO(2024P00762 WO)
[0068] IDs of XBP (SIDXs) 256C. The selector 250 may also include a registration base ID (RBID) 254A and a defined ID (DID) 256A.
[0069] As will be described in detail below, an RGID 254 may be determined based on the RBID 254A and a random ID 254B randomly selected from a range of different random IDs (depicted as random ID 1 254B1, random ID 2254B2, random ID 3 254B3, ...). A LID 256 may be determined based on the DID 256A and a selected suffix ID 256X (the SIDR 256B or SIDX 256C). In one example, a SIDR 256B may be selected from one or more distinct SIDRs (depicted as SIDR 1 256B1, SIDR 2256B2, SIDR 3 256B3, ...). In another example, a SIDX 256C may be selected from one or more distinct SIDXs (depicted as SIDX 1 256C1, SIDX 2 256C2, SIDX 3 256C3, ...) based on a predetermined selection rule. In various examples, at least one suffix ID 256X may include a status label (not illustrated) to indicate whether the at least one suffix ID 256X is currently assigned to a battery pack. Details of an example selection rule, which may be implemented to avoid or resolve conflicts arising from different connected XBPs 126 having the same LIDs 256 or SIDXs 256C, will be described below in association with FIG. 10.
[0070] The selector 250 may include certain operators 260 for executing operations useful for selecting a battery-pack ID. In one example, operators 260 may include “Check ID” 260A, “Select Random ID” 260B, “Registering” 260C, “Select ID” 260D, “Normal Mode” 260E, “ID Conflict” 260F, and “Line is Full” 260G. The selector 250 may also store a graphical user interface (GUI) 262 configured to display information on the display screen 280 and to interact with a user 294 via user input device(s) 292. Although only operators 260A-260G have been depicted and described, other operators may be included in the selector 250 instead of or in addition to these.
[0071] In one example of operation, the user 294 operates the input device 292 to manipulate the selector 250 to automatically select and assign a battery-pack ID to a newly connected battery pack. In some examples, the selector 250 instructs the display screen 280 to display an automatic ID selector for battery packs window 290, in which graphical and / or textual representations of an automatic ID selection process are displayed. In certain examples, when selector 250 permits an action on the selection process, the window 290 may display a certain prompt that allows user 294 to enter a command or required information. Attorney Docket No.: A2000-7825WO(2024P00762 WO)
[0072] In another example, the selector 250 is automatically initiated when the user 294 turns on the XBP 126 on which the selector 250 is installed.
[0073] Memory 240 may also store various other data (in addition to the IDs and the status labels) used by the OS, selector 250, CAN bus ID protocol 270, and / or various other applications and drivers. In some embodiments, the memory 240 may also include a persistent storage portion. The persistent storage portion of the memory 240 may be made up of one or more persistent storage devices, such as, for example, magnetic disks, flash drives, solid-state storage drives, or other types of storage drives. The persistent storage portion of the memory 240 is configured to store programs and data even while the computing device 210 is powered off. The OS, selector 250, CAN bus ID protocol 270, and / or various other applications and drivers are typically stored in this persistent storage portion of memory 240 so that they may be loaded into a system portion of memory 240 upon a system restart or as needed. The OS, selector 250, CAN bus ID protocol 270, and / or various other applications and drivers, when stored in non-transitory form either in the volatile or persistent portion of memory 240, each form a computer program product. The processing circuitry 220 running one or more applications thus forms a specialized circuit constructed and arranged to carry out the various processes described herein.
[0074] FIG. 3 illustrates a block diagram 300 of the XBPs 126 of FIG. 1 according to one example. In one example, the XBPs 126 may include individual XBPs 126A, 126B, 126C, ... connected in series. Each of the XBPs (for example, the XBP 126A) may include a set of one or more batteries (for example, 302A) and a controller (for example, controller 304A). Each of the controllers 304A, 304B, 304C, ... is communicatively coupled to the respective set of batteries 302A, 302B, 302C, ... as well as to the communication medium 130. As noted above, in various examples, the computing device 210 including the selector 250 may be included in each of the controllers 304A, 304B, 304C, ... of the XBPs 126.
[0075] In other examples, the XBPs 126 may include a primary controller (not illustrated) communicatively coupled to each of the individual XBPs 126A, 126B, 126C, ... and to the communication medium 130.
[0076] FIG. 4 illustrates a process 400 for operating the selector 250 to automatically select a battery-pack ID according to an example. In various examples, the process 400 may be executed by the controller 112 of the UPS 101 or one of the controllers 304A, 304B, 304C, ... of the Attorney Docket No.: A2000-7825WO(2024P00762 WO)
[0077] XBPs 126. In other examples, the process 400 may be executed by another controller (not illustrated) included in the power system 100 but external to the UPS 101 and XBPs 126.
[0078] At act 402, the controller (for example, controller 304A) assigns a first ID to a first battery pack. In one example, the first battery pack may be the first XBP 126A, which may be newly connected to the UPS 101. In some examples, a second battery pack (for example, the second XBP 126B) may have previously registered or begun registering on the UPS 101 via the communication medium 130 when the first battery pack begins registering. In various examples, the first ID may be a first battery-pack ID that includes, or is determined from, a random ID 254B (for example, random ID 254B1) or a SIDX 256C (for example, SIDX 256C1), which will be described below with respect to FIG. 5. In one example, the first ID is an RGID 254 determined from the random ID 254B1. In another example, the first ID is a LID 256 determined from the SIDX 256C1.
[0079] At act 404, in one example, the controller 304A monitors a communication bus (communication medium 130) associated with a UPS 101 coupled to the first battery pack (the first XBP 126A) and the second battery pack (the second XBP 126B).
[0080] At act 406, in one example, the controller 304A detects, via the communication bus (communication medium 130), communication indicating that the first ID (random ID 254B1 or SIDX 256C1) is assigned to the second battery pack (the second XBP 126B) prior to being assigned to the first battery pack (the first XBP 126A). In one example, the detected communication may be communication between the UPS 101 and the second XBP 126B via the communication medium 130, which indicates that the first ID (random ID 254B1 or SIDX 256C1) is already assigned to the XBP 2 126B. That is, the controller 304A detects an ID conflict in that both the first XBP 126A and the second XBP 126B have the same battery -pack ID.
[0081] At act 408, in one example, the controller 304A assigns a second ID to the first battery pack (XBP 1 126A) in response to detecting the communication indicative of the ID conflict. The second ID may be different from the first ID. In various examples, the second ID may be a second battery-pack ID that is determined from a different random ID 254B (random ID 254B2) or a different SIDX 256C (SIDX 256C2). In one example, the second ID is an RGID 254 determined from the random ID 254B2. In another example, the second ID is a LID 256 determined from the SIDX 256C2. Attorney Docket No.: A2000-7825WO(2024P00762 WO)
[0082] In various examples, one or both of the first and the second battery packs in the process 400 may include the internal RBC battery pack(s) 125. In those examples, the corresponding battery-pack ID(s) assigned to the RBC battery pack(s) 125 may include the SIDR(s) 256B or the LID(s) 256 determined from the SIDR(s) 256B.
[0083] FIG. 5 is a table 500 including ID definitions for the selector 250 of FIG. 2 according to one example. A first column 502 includes names of IDs. A second column 504 includes examples of the IDs. A third column 506 includes detailed descriptions of the IDs. In this example of ID definitions, an example of the RBID 254A is “0x500” and an example of the random ID 254B includes example values in the range of “0x00~0xFF” based on a hexadecimal numbering system. In one example, “FF” may be randomly determined. In another example, “FF” may be determined based on input from the user 294. Once the random ID 254B is selected, an RGID 254 is then defined by a formula (1) of “Registration ID = RBID + Random ID.” For example, when the randomly selected random ID 254B is “0x01” and the RBID 254A is “0x500,” the RGID 254 is determined to be “0x501” to be assigned to the newly connected battery pack.
[0084] In one example, only one RBC battery pack is connected to the UPS 101 and is assigned a SIDR 256B defined as “OxB” based on a hexadecimal numbering system. The SIDX 256C includes IDs in a defined range of “0xl~0xA” so that none of the SIDXs 256C conflicts with the SIDR 256B. In certain examples, “A” may be replaced with a number automatically determined based on the maximum number of XBPs 126 connectable to the UPS 101 or user input. For example, if the maximum number of connectable XBPs 126 is ten, there may be ten SIDXs 256C1-256C10 in the range of “0x1-0x10.”
[0085] In one example, the DID 256A is defined as “0x200” based on an “MDAT” definition included in a CAN bus ID protocol 270 specified by a file titled “2021-12-02- SELiionBattery.dbc.” LID 256 is defined based on the formula (2) of “Defined ID + Suffix ID” where “Suffix ID” 256X may be either a selected SIDR 256B or a selected SIDX 256C. In other examples, the DID 256A may be defined as “0x780” based on a “VDAT” definition or as “0x700” based on an “LDAT” definition specified by the protocol 270. LID 256 is then to be assigned to the newly connected battery pack.
[0086] As noted above, the selection of SIDX 256C from the example range of “0x1-0x10” above is performed based on a selection rule, an example of which will be described below in Attorney Docket No.: A2000-7825WO(2024P00762 WO) association with FIG. 10. For example, if the SIDX 256C is selected to be “0x7” following the selection rule, the LID 256 is then determined to be “0x207” based on formula (2) and assigned to the newly connected XBP 126.
[0087] FIG. 6 illustrates a process 600 for operating the selector 250 to automatically select battery-pack IDs for an XBP 126 according to one example. Although this example is directed to the XBP 126 for purposes of example, in other examples, the process 600 may be applied for the selector 250 to automatically select battery-pack IDs for an internal RBC battery pack 125.
[0088] In one example, at the start 602, the controller on which the selector 250 is installed (for example, the controller 304A) initiates the selector 250 in response to receiving an instruction from the user 294 to select and assign a battery-pack ID to an XBP 126 (for example, the first XBP 126A), which is newly connected to the UPS 101 via the battery-pack interface 110. In another example, the controller 304A may automatically initiate the selector 250 when the controller 304A detects that the first XBP 126A is turned on.
[0089] At “Check ID” 260A, in one example, the controller 304A checks whether the XBP 1 126A already has an assigned battery-pack ID in the memory 240. In one example, if the controller 304A determines that the first XBP 126A already has an assigned battery-pack ID, the controller 304A may determine that the first XBP 126A is already registered and the controller 304A proceeds to “Normal Mode” 260E via path 604. As noted above, each battery-pack ID in the memory 240 may have a respective status label indicating whether the battery -pack ID is assigned. Act 260A may include the controller 304A checking the status label of the first XBP 126A to determine whether a battery-pack ID has been assigned to the first XBP 126A. The detailed process of the “Normal Mode” 260E according to one example will be described below referring to FIG. 7. If no assigned battery-pack ID is found for the first XBP 126A at act 260A, the controller 304A recognizes the first XBP 126A as unregistered and proceeds to “Select Random ID” 260B via path 606.
[0090] At “Select Random ID” 260B, in one example, the controller 304A selects a random ID 254B for the first XBP 126A. In one example, “Select Random ID” 260B may include determining a range of selectable random IDs 254B 1 , 254B2, ... and randomly selecting the first random ID 254B1 from within the range. The detailed process of the “Select Random ID” 260B according to one example will be described below, referring to FIG. 8. Once the first random ID Attorney Docket No.: A2000-7825WO(2024P00762 WO)
[0091] 254B1 is selected for the first XBP 126A, the controller 304A proceeds to “Registering” 260C via path 608.
[0092] At “Registering” 260C, the controller 304A determines and records an RGID 254 for the XBP 1 126A. In one example, “Registering” 260C may include determining the RGID 254 (for example, the first RGID 254-1, not illustrated) from the first random ID 254B1 based on the formula (1) described above referring to FIG. 5, recording the first RGID 254-1 to the memory 240 via the communication medium 130, and checking, based on the ID records in the memory 240, whether the first RGID 254-1 is already assigned to any other XBP(s) (for example, the second XBP 126B) connected to and currently being registered with the UPS 101. In one example, if a conflict is found in which the first RGID 254-1 is already assigned to the second XBP 126B which is also registering with the UPS 101, the controller 304A proceeds to “ID Conflict” 260F via path 610 to resolve the conflict.
[0093] At “ID Conflict” 260F, in one example, the controller 304A unassigns the previously assigned RGID 254 (the first RGID 254-1) from the first XBP 126A and clears the corresponding assignment record from the memory 240. For example, the controller 304A may change the status labels of the first random ID 254B 1 and the first RGID 254- 1 from “assigned to XBP 1” to “unassigned.” The controller 304A then returns to “Select Random ID” 260B via path 620 to randomly select a new random ID 254B.
[0094] Returning to “Registering” 260C, if no conflict is found for the first RGID 1 254-1, the controller 304A proceeds to “Select ID” 260D via path 612. “Registering” 260C may also include recording LID(s) 256 of other XBP(s) 126 via the communication medium 130 to the memory 240. The detailed process of the “Registering” 260C according to one example will be described below, referring to FIG. 9.
[0095] At “Select ID” 260D, in one example, the controller 304A determines a SIDX 256C and a corresponding LID 256 for the first XBP 126A. In one example, “Select ID” 260D may include determining the SIDX 256C (the first SIDX 256C1) from the first RGID 254-1 according to a selection rule and determining the LID 256 (a first LID 256-1, not illustrated) from the first SIDX 256C1 based on the formula (2) described above referring to FIG. 5. The selection rule may ensure that no conflict exists for the first SIDX 256C1 and the first LID 256-1 at the time of their determination. However, because the selection rule may require that there is at least one selectable SIDX 256C (for example, the first SIDX 256C1) on a list of all selectable SIDXs Attorney Docket No.: A2000-7825WO(2024P00762 WO)
[0096] 256C, and because the list of all selectable SIDXs 256C may be limited by, for example, the maximum number of connectable XBPs 126 to the UPS 101, “Select ID” 260D may also include checking whether the list is empty before determining which SIDX 256C to select. If the list is found to be empty, the controller 304A proceeds to “Line is Full” 260G via path 614 to resolve the issue. The detailed process of the “Line is Full” 260G according to one example will be described below referring to FIG. 11. Once the list is no longer empty, the controller 304A returns to “Select Random ID” 260B via path 622 to randomly select a new random ID 254B.
[0097] Returning to “Select ID” 260D, once the first LID 256-1 is determined, the controller 304A proceeds to “Normal Mode” 260E via path 616. The detailed process of the “Select ID” 260D according to one example will be described below, referring to FIG. 10.
[0098] FIG. 7 illustrates a process 700 for operating the “Normal Mode” 260E of the selector 250 according to one example. As noted above, in various examples, the controller 304A may proceed to the “Normal Mode” 260E via at least two possible paths: the path 604 from the “Check ID” 260A and the path 616 from the “Select ID” 260D.
[0099] At sub-act 702 of the “Normal Mode” 260E, in one example, the controller 304A is initially in a standby state (“Standby”) and monitors the communication medium 130 to detect data packages (communications) communicated via the communication medium 130. At sub-act 704, in one example, the controller 304A determines whether to interrupt the standby state based on whether the controller 304A receives a data package 701 including a system request via the communication medium 130. If the controller 304A determines that the data package 701 includes a system request including, for example, a UPS request or an XBP response, the controller 304A proceeds to sub-act 706, interrupting the standby state. Otherwise, the controller 304A returns to the sub-act 702 without interrupting the standby state.
[0100] At sub-act 706, in one example, the controller 304A parses the system request and proceeds to sub-act 708. At sub-act 708, in one example, the controller 304A determines whether the parsed system request includes a UPS request. If, in one example, the ID (“0x80”) and data in the system request indicate that the system request includes a UPS request (“#1 UPS request”), the controller 304A proceeds to sub-act 710. At sub-act 710, in one example, the controller 304A prepares the LID 256 assigned to the first XBP 126A and other relevant data and proceeds to sub-act 712. Attorney Docket No.: A2000-7825WO(2024P00762 WO)
[0101] In one example, if the controller 304A proceeded to the “Normal Mode” 260E from the “Check ID” 260A via path 604, the controller 304A prepares the LID 256 using the LID 256 already assigned to the XBP 1 126A.
[0102] In another example, if the controller 304A proceeded to the “Normal Mode” 260E from the “Select ID” 260D via path 616, the controller 304A prepares the LID 256 using the assigned SIDX 256C and the predetermined DID 256A based on the formula (2) of FIG. 5. In other examples, preparing the LID 256 using the assigned SIDX 256C may also be included in “Select ID” 260D.
[0103] At sub-act 712, in one example, the controller 304A packages the prepared LID 256 and relevant data and sends them to UPS 101. The controller 304A then returns to the standby state at act 602. If, in another example, the ID (“0x205”) and the data in the system request indicate that the system request does not include a UPS request, the controller 304A proceeds to sub-act 714.
[0104] At sub-act 714, in one example, the controller 304A determines whether the received system request includes an XBP response from an XBP 126 connected to the UPS 101. In one example, if the ID (“0x205”) in the system request indicates that the received system request includes an XBP response (“#2 XBP response data”) from the third XBP 126C, the controller 304A proceeds to sub-act 716.
[0105] At sub-act 716, in one example, the controller 304A identifies the SIDX 256C (“0x5”) assigned to the third XBP 126C in the XBP response by recognizing the ID (“0x205”) in the XBP response to be a LID 256 as defined in the CAN bus ID protocol 270 (“2021-12-02- SELiionBattery.dbc”). The controller 304A may then compare the assigned SIDX 256C (“0x5”) to the SIDXs 256C assigned to the other XBPs 126A, 126B, ... to determine whether a conflict exists. If a conflict is found, the controller 304A proceeds to “ID Conflict” 260F via path 618. If no conflict is found, the controller 304A proceeds to ignore the data package 701 at sub-act 718 and then returns to the standby state at sub-act 702.
[0106] If, at sub-act 714, the ID in the system request indicates that the system request does not include an XBP response, the controller 304A proceeds to ignore the data package 701 at sub-act 718. The controller 304A then returns to the standby state at sub-act 702.
[0107] FIG. 8 illustrates a process 800 for operating the “Select Random ID” 260B of the selector 250 according to one example. As noted above, in various examples, the controller 304A may arrive at the “Select Random ID” 260B via at least three possible paths: the path 606 from Attorney Docket No.: A2000-7825WO(2024P00762 WO) the “Check ID” 260A, the path 620 from the “ID Conflict” 260F, and the path 622 from the “Line is Full” 260G.
[0108] At sub-act 802, in one example, the controller 304A is in a standby state (“Standby”). At sub-act 804, in one example, the controller 304A determines whether all SIDXs 256C are assigned. If so, the controller 304A sends an alarm signal to the communication medium 130 and returns to the standby state at sub-act 802. The alarm signal may result in an alert in various forms, such as LED flashes or buzzing sounds, to inform the user 294. If not all SIDXs 256C are assigned, the controller 304 cancels the alarm signal and proceeds to sub-act 806.
[0109] At sub-act 806, in one example, the controller 304A randomly selects a random ID 254B from a predetermined range of random IDs. In one example, the first random ID 254B1 is selected from a range of “0x00~0xFF” based on a randomizing algorithm. In certain examples, the predetermined range may include more random IDs 254B than the total number of suffix IDs 256X to reduce the probability of ID conflicts. Once the first random ID 254B1 is selected, the controller 304A proceeds to sub-act 808.
[0110] At sub-act 808, in one example, the controller 304 A monitors communications on the communication medium 130 to determine whether the selected random ID 254 (the first random ID 254B1) is already assigned to any other registering XBPs 126 (for example, the second XBP 126B), which may cause a conflict. If a conflict is found with the second XBP 126B, for example, the controller 304A randomly reselects a new random ID 254 (for example, the second random ID 254B2). The controller 304A may be configured to automatically modify the randomizing algorithm during the reselection process to reduce the probability of selecting the previous random ID 1 254B1. In another example, if no conflict is found at sub-act 808, the controller 304A proceeds to sub-act 810.
[0111] At sub-act 810, in one example, the controller 304A unassigns the SIDXs 256C currently assigned to the first XBP 126A (if any) and clears the corresponding assignment record in the memory 240. The controller 304A then proceeds to the “Registering” 260C via path 608, as noted above.
[0112] FIG. 9 illustrates a process 900 for operating the “Registering” 260C of the selector 250 according to one example. As noted above, in at least one example, the controller 304A may proceed to the “Registering” 260C from the “Select Random ID” 260B via path 608. Attorney Docket No.: A2000-7825WO(2024P00762 WO)
[0113] At sub-act 902, in one example, the controller 304A is in a standby state (“Standby”) and monitors the communication medium 130 to detect data packages (communications) communicated via the communication medium 130. At sub-act 904, in one example, the controller 304A determines whether to interrupt its standby state based on whether it receives a data package 901 including a system request via the communication medium 130. A system request may include, for example, a UPS request, an XBP response, or an XBP registration response. If the data package 901 is found to include a system request, the controller 304A proceeds to sub-act 906, interrupting the standby state. Otherwise, in another example, the controller 304A returns to sub-act 902 without interrupting the standby state.
[0114] At sub-act 906, in one example, the controller 304A parses the system request and proceeds to sub-act 908. At sub-act 908, in one example, the controller 304A determines whether the parsed system request includes a UPS request. If the ID (“0x80”) and data in the system request indicate that the system request includes a UPS request (“#1 UPS request”), the controller 304A proceeds to sub-act 910. If, in another example, the ID (“0x205” or “0x505”) and the data in the system request indicate that the system request does not include a UPS request, the controller 304A proceeds to sub-act 918.
[0115] At sub-act 910, in one example, the controller 304A prepares the assigned RGID 254 using the assigned random ID 254B and the predetermined RBID 254A based on the formula (1) of FIG. 5 and proceeds to sub-act 912. In other examples, preparing the assigned RGID 254 based on the formula (1) may be included in the “Select Random ID” 260B. At sub-act 912, in one example, the controller 304A packages the prepared RGID 254 and the relevant data and proceeds to sub-act 914. At sub-act 914, in one example, the controller 304A implements a random delay and then sends the prepared RGID 254 and the relevant data to UPS 101. The random delay is implemented to prevent multiple registering XBPs 126 from sending responses to the UPS 101 at the same time, which may cause undesired conflicts. The controller 304 A then proceeds to sub-act 916.
[0116] At sub-act 916, in one example, the controller 304A determines whether it is the fourth time that the controller 304A receives and responds to the same UPS request. In various examples, to lower the probability of RGID conflicts, “Registering” 260C is configured such that NRepiy (for example, NRepiy=4) cycles of receiving and responding to the same UPS request must be completed without incurring a conflict before the controller 304A may proceed to “Select ID” Attorney Docket No.: A2000-7825WO(2024P00762 WO)
[0117] 260D. If at sub-act 916, in one example, the controller 304A determines that it is the fourth time to receive and respond to the same UPS request, the controller 304A proceeds to “Select ID” 260D via path 612, as noted above. In another example, NRepiymay be three. In other examples, NRepiy may be a value other than three or four.
[0118] If at sub-act 916, in one example, the controller 304A determines that it is not yet the fourth time to receive and respond to the UPS ID request, the controller 304A returns to the standby state at sub-act 902.
[0119] At sub-act 918, in one example, the controller 304 A determines whether the received system request includes an XBP response from an XBP 126. If, at sub-act 918, the controller 304A determines that the ID (“0x205”) and data in the system request indicate that the received system request includes an XBP response (“#2 XBP response data”) from the third XBP 126C, the controller 304A proceeds to sub-act 920. At sub-act 920, in one example, the controller 304A identifies the ID (“0x205”) in the XBP response to be the LID 256 as defined in the CAN bus ID protocol 270 (“2021-12-02-SELiionBattery.dbc”) and records the LID 256 (“0x205”) as assigned to the third XBP 126C. The controller 304A then proceeds to ignore the data package 901 at subact 922.
[0120] If, at sub-act 918, the controller 304A determines that the ID in the system request indicates that the received system request does not include an XBP response, the controller 304A proceeds to sub-act 924.
[0121] Act sub-act 924, the controller 304A determines whether the received system request includes an XBP RGID registration from an XBP 126 registering with the UPS 101. If, at sub-act 924 the controller 304A determines that the ID (“0x505”) and the data in the received system request indicate that the received system request includes an XBP registration response (“#3 XBP registration data”) from the second XBP 126B registering with the UPS 101, the controller 304A proceeds to sub-act 926. At sub-act 926, in one example, the controller 304A identifies the ID (“0x505”) in the XBP RGID registration to be the RGID 254 as defined in the CAN bus ID protocol 270 (“2021-12-02-SELiionBattery.dbc”) and records the RGID 254 (“0x505”) as assigned to the second XBP 126B. The controller 304A compares the RGID 254 to each of the RGIDs 254 previously assigned to another XBP 126 (the first XBP 126A, the third XBP 126C, ...) and determines whether a conflict exists such that the same RGID 254 (“0x505”) is already assigned to another XBP 126 (the first XBP 126A, the third XBP 126C, ...). Attorney Docket No.: A2000-7825WO(2024P00762 WO)
[0122] If a conflict is found at sub-act 926, in one example, the controller 304A proceeds to “ID Conflict” 260F via path 610 to resolve the conflict, as noted above. If, in another example, no conflict is found, the controller 304A proceeds to sub-act 928. At sub-act 928, in one example, the controller 304A records the RGID 256 (“0x505”) as assigned to the second XBP 126B. The controller 304A then proceeds to ignore the data package 901 at sub-act 922.
[0123] FIG. 10 illustrates a process 1000 for operating the “Select ID” 260D of the selector 250 according to one example. As noted above, in at least one example, the controller 304A may proceed to the “Select ID” 260D from the “Registering” 260C via path 612.
[0124] At sub-act 1002, in one example, the controller 304 A determines whether all SIDXs 256C are assigned. If, in one example, the list of all selectable SIDXs 256C in the memory 240 is empty, which means that no SIDX 256C is selectable for assigning to the XBP 126 (the first XBP 126A) that includes the controller 304A, the controller 304A proceeds to “Line is Full” 260G via path 614 to resolve the issue, as noted above.
[0125] If, at sub-act 1002, the controller 304A determines that at least one SIDX 256C is selectable (that is, the list is not empty), the controller 304A proceeds to sub-act 1004. In various examples, a selection rule for selecting a SIDX 256C to be assigned to the XBP 126 that includes the controller 304A (the first XBP 126A) may be followed in sub-acts 1004, 1006, and 1008, as described below.
[0126] At sub-act 1004, in one example, the controller 304A sorts all assigned RGIDs 256 (“0x517,” “0x501,” “0x5F6,” and “0x539”) and ranks them from the smallest to the largest. For example, the controller 304A sorts the assigned RGIDs 256 as “0x501” followed by “0x517” followed by “0x539” followed by “0x5F6” based on hexadecimal numbering. The controller then proceeds to sub-act 1006.
[0127] At sub-act 1006, in one example, the controller 304A determines that the rank of the RGID 256 (for example, “0x517”) assigned to the first XBP 126A relative to the other assigned RGIDs 256 is “#2,” and subsequently determines that the rank of the first XBP 126A should also be “#2.” The controller 304A then proceeds to sub-act 1008.
[0128] At sub-act 1008, in one example, the controller 304 A selects the SIDX 256C from the list of all selectable SIDXs 256C (marked as “x”) based on the rank of the XBP 1 126A determined at sub-act 1006. For example, because the rank of the first XBP 126A is determined to be “#2” at sub-act 1006, at sub-act 1008, the controller 304A selects the selectable SIDX 256C of the Attorney Docket No.: A2000-7825WO(2024P00762 WO) second rank (“0x3”) and assigns the selectable STDX 256C to the first XBP 126A. The controller 304A then proceeds to the “Normal Mode” 260E via path 616, as noted above.
[0129] The example selection rule described above, which includes a two-tie ID selection scheme (RGID 254 followed by SIDX 256C), is configured to significantly reduce the possibility of an ID conflict between different battery packs. This example selection rule may be replaced with alternative selection rules which are within the scope of this disclosure.
[0130] FIG. 11 illustrates a process 1100 for operating the “Line is Full” 260G of the selector 250 according to one example. As noted above, in at least one example, the controller 304A may proceed to the “Line is Full” 260G from the “Select ID” 260D via path 614 when the list of all selectable SIDXs 256C is found to be empty.
[0131] Act sub-act 1102, in one example, the controller 304A clears out all assigned SIDXs 256C recorded in the memory 240 and proceeds to sub-act 1104. At sub-act 1104, in one example, the controller 304A records an updated inventory of all assigned SIDXs 256C by monitoring the communication medium 130 and proceeds to sub-act 1106. At sub-act 1106, the controller 304A determines whether the time used for recording the updated inventory of all assigned SIDXs 256C at the sub-act 1104 reaches a predetermined threshold (“TMonitoring”). If the threshold is not reached, the controller 304A returns to sub-act 1104 to continue monitoring the communication medium 130. Through this process, the controller 304A monitors the communication medium 130 for a period of the threshold (“TMonitoring”) in each cycle of recording all assigned SIDXs 256C. If the threshold is reached, the controller 304A breaks the cycle and proceeds to sub-act 1108.
[0132] Act sub-act 1108, the controller 304A determines whether all SIDXs 256C are still assigned or whether any previously assigned SIDXs 256C are released from their assignment and enter the list of selectable SIDXs 256C. If no assigned SIDX 256C is found to be released, the controller 304A proceeds to clear the record of all assigned SIDXs 256C at sub-act 1110. The controller 304A then returns to sub-act 1104 to restart the monitoring and recording.
[0133] If at least one previously assigned SIDX 256C is found to be released, the controller 304A determines that the updated list of all selectable SIDXs 256C is no longer empty and returns to “Select Random ID” 260B via path 622, as noted above.
[0134] In various examples, at “Line is Full” 260G, the controller 304A may generate an alarm signal when the list of all selectable SIDXs 256C is found empty and may cancel the alarm Attorney Docket No.: A2000-7825WO(2024P00762 WO) signal when the list is found not empty. In these examples, “Select Random ID” 260B may not include generating an alarm signal or alert.
[0135] FIG. 12 illustrates a schematic diagram 1200 for operating the selector 250 to automatically select battery-pack IDs for the first XBP 126A to register on the UPS 101 according to one example. In one example, the first XBP 126A is registering on the UPS 101, and the UPS 101 is not connected to any other XBPs 126. The selector 250 is installed on the controller 304A. Upon initiation by user input or by the user 294 turning on the XBP 1 126A, the controller 304A executes the selector 250 as described below.
[0136] In one example, the controller 304A first executes “Check ID” 260A to determine that the first XBP 126A is unregistered. The controller 304A then executes “Select Random ID” 260B to select an RGID 254 (for example, “0x5Fl”) for assigning to the first XBP 126A. Next, the controller 304A executes “Registering” 260C to receive and respond to system requests from the UPS 101 via the communication medium 130.
[0137] At “Registering” 260C, the controller 304A receives, for the first time, a UPS request 1202 identified by the ID (“0x80”) in the request. After a first random delay Di, the controller 304A sends a first XBP registration response 1204 including the RGID 254 (“0x5Fl”) to the UPS 101. Each random delay Di , D2, ... may have a maximum Dmax and a minimum Dmin (Dmin<Di<Dmax). In one example, Dmaxmay be 100 ms and Dmin may be 1 ms. The controller 304A then receives the same UPS request 1202 for the second time and sends the same XBP registration response 1204 for the second time after a second random delay D2 (Dmin<D2<Dmax). The time interval between consecutive UPS requests 1202 is IUPS. In one example, IUPS may be 1 second. In various examples, Dmax may be shorter than IUPS (Dma <Iups). The controller 304A then receives the same UPS request 1202 for the third time and sends the same XBP registration response 1204 for the third time after a third random delay D3 (Dmin<D3<Dmax). Since there is no other XBPs and all SIDXs 260D are selectable (indicated by blank squares in inset 1205), the controller 304A then executes “Select ID” 260D to select the SIDX 256C of the first rank (“0x1”) for the first XBP 126A following the selection rule. In other examples, as noted above, the controller 304A may need to receive and respond four or other times before executing “Select ID” 260D. Next, the controller 304A executes “Normal Mode” 260E.
[0138] At “Normal Mode” 260E, the controller 304A receives a UPS request 1202 and sends a series of XBP responses 1206 including the assigned LID 256 (“0x201”) to the UPS 101. The 1 Attorney Docket No.: A2000-7825WO(2024P00762 WO) assigned LID 256 (“0x201”) is prepared using the selected SIDX 256C (“0x1”) and the predetermined DID 256A (“0x200”) based on the formula (2) of FIG. 5.
[0139] FIG. 13 illustrates a schematic diagram 1300 for operating the selector 250 to concurrently select battery-pack IDs for the first XBP 126A and the first XBP 126B to register on the UPS 101 and resolve ID conflicts automatically according to an example. In one example, both the first XBP 1 126A and the second XBP 126B are registering on the UPS 101 to which they are both connected. A selector 250 is installed on both the controller 304A of the first XBP 126 A and the controller 304B of the second XBP 126B, respectively.
[0140] In one example, both controller 304A and controller 304B first execute “Check ID” 260A to determine that both the first XBP 126 A and the second XBP 126B are unregistered. Then, each of the controllers 304A and 304B executes “Select Random ID” 260B to select a respective RGID 254. In one example, incidentally, both controllers 304A, 304B randomly select the same RGID 254 (“0x5Fl”) based on the same random ID (“OxFl”), resulting in a random ID (and RGID) conflict. Next, both controllers 304A, 304B execute “Registering” 260C to receive and respond to system requests from the UPS 101 via the communication medium 130.
[0141] At “Registering” 260C, both controllers 304A, 304B monitor the communication medium 130 and receive a UPS request 1302 for the first time at moments close to each other. In one example, after a first random delay DAI, the controller 304A sends a first XBP registration response 1304 including the selected RGID (“0x5Fl”) for the first XBP 126A to the UPS 101 via the communication medium 130. Because the first random delay DBI (not illustrated) implemented by the controller 304B happens to be longer than DAI (Dmin<DAi<DBi<Dmax), the controller 304B has not sent a registration response to the UPS 101.
[0142] Nevertheless, at “Registering” 260C, the controller 304B monitors the communication medium 130 in the meantime and therefore receives the XBP registration response 1304 from the communication medium 130 via path 1306. The controller 304B records the RGID 254 (“0x5Fl”) in the XBP registration response 1304 as assigned for the first XBP 126A and determines that a conflict exists such that the same RGID 254 (“0x5Fl”) is no longer available for assigning to the second XBP 126B. Next, without sending an XBP registration response of the second XBP 126B, the controller 304B proceeds to “ID Conflict” 260F to clear the record of selecting the same RGID 254 (“0x5Fl”) for the second XBP 126B from the memory 240. The Attorney Docket No.: A2000-7825WO(2024P00762 WO) controller 304B then proceeds to “Select Random TD” 260F again to select a new RGID 254 (for example, “0x535”) before proceeding to “Registering” 260C again.
[0143] After the controller 304B proceeds to “Registering” 260C again, in one example, both controllers 304A, 304B receive, for another time and at moments close to each other, the same UPS request 1302 via the communication medium 130. In one example, the second random delay DB2 of the controller 304B happens to be shorter than the random delay DA2 of the controller 304A (Dmin<DB2<DA2<Dmax). Therefore, the controller 304B sends a first XBP registration response 1308 to the UPS 101 via the communication medium 130 before the controller 304A sends a second XBP registration response 1304.
[0144] At “Registering” 260C, the controller 304A monitors the communication medium 130 and therefore receives the first XBP registration response 1308 from the controller 304B via path 1310. The controller 304B records the RGID 254 (“0x535”) in the registration response 1308 as assigned to the XBP 2 126B. After a third round of receiving and responding to the same UPS request 1302, the controller 304A proceeds to “Select ID” 260D to select a SIDX 256C according to a selection rule.
[0145] At “Select ID” 260D, the controller 304A ranks the assigned RGID 254 (“0x5Fl”) of the first XBP 126A relative to all other assigned RGIDs 254, which only includes the assigned RGID 254 (“0x535”) of the second XBP 126B. If “F” is predetermined to be greater than 3, the controller 304A ranks the assigned RGID 254 (“0x5Fl”) of the first XBP 126A as the second. Following the selection rule, the controller 304A then selects the SIDX 256C of the second rank (“0x2”) among the list of all selectable SIDXs 256C (blank blocks in inset 1305) for the first XBP 126A. The controller 304A then proceeds to “Normal Mode” 260E.
[0146] At “Normal Mode” 260E, in one example, the controller 304A monitors the communication medium 130 and receives another UPS request 1302. The controller 304A sends a series of XBP responses 1312 including the selected LID 256 (“0x202”) for the first XBP 126A to the UPS 101 via the communication medium 130. Still at “Registering” 260C, the controller 304B monitors the communication medium 130 and therefore receives the XBP response from the controller 304A via path 1314. The controller 304B records the LID 256 (“0x202”) as assigned to the first XBP 126A and removes the selected SIDX 256C (“0x2”) from the list of all selectable SIDXs 256C (“V” occupying block “2” in insets 1315 and 1317). Attorney Docket No.: A2000-7825WO(2024P00762 WO)
[0147] At “Registering” 260C, after three cycles of receiving and responding to the same UPS request 1302 without incurring a conflict to the RGID 254 (“0x535”), the controller 304B proceeds to “Select ID” 260D to select a SIDX 256C according to the selection rule.
[0148] At “Select ID” 260D, in one example, the controller 304B ranks the assigned RGID 254 (“0x535”) of the second XBP 126B relative to all other assigned RGIDs 254, which only includes the assigned RGID 254 (“0x5Fl”) of the first XBP 126A. Again, since “F” is greater than 3 in a hexadecimal numbering system, the controller 304B ranks the assigned RGID 254 (“0x535”) of the second XBP 126B as the first. Following the selection rule, the controller 304B then selects the SIDX 256C of the first rank (“0x1”) among the list of all selectable SIDXs 256C (blank blocks in inset 1317) for the second XBP 126B. The controller 304B then proceeds to “Normal Mode” 260E.
[0149] At “Normal Mode” 260E, in one example, the controller 304B monitors the communication medium 130 and receives another UPS request 1302. The controller 304B sends a series of XBP responses 1316, including the selected LID 256 (“0x201”) for the second XBP 126B, to the UPS 101 via the communication medium 130.
[0150] FIG. 14 illustrates a schematic diagram 1400 for operating the selector 250 to automatically select battery-pack IDs for the second XBP 126B to register on the UPS 101 while avoiding a SIDX conflict with the registered first XBP 126A according to an example. In one example, both the first XBP 126A and the second XBP 126B are connected to the UPS 1. The first XBP 126A is already registered with the UPS 101, and the second XBP 126B is registering with the UPS 101. The selector 250 is installed on both the controller 304A of the first XBP 126A and the controller 304B of the second XBP 126B, respectively.
[0151] In one example, the controller 304A first executes “Check ID” 260A and determines that the first XBP 126A is already registered and has an assigned LID 256 (“0x203”). The controller 304A then executes “Normal Mode” 260E to monitor the communication medium 130.
[0152] The controller 304B also first executes “Check ID” 260A and determines that the second XBP 126B is unregistered. The controller 304B then executes “Select Random ID” 260B to select an RGID 254 (“0x551”) for the second XBP 126B. Next, the controller 304B executes “Registering” 260C to receive and respond to system requests from the UPS 101 via the communication medium 130. Attorney Docket No.: A2000-7825WO(2024P00762 WO)
[0153] Subsequently, both controllers 304A, 304B receive a UPS request 1402 for the first time at moments close to each other. In one example, the controller 304A sends a scries of XBP responses 1404, including the assigned LID 256 (“0x203”) for the first XBP 126A, to the UPS 101 via the communication medium 130, which happens to occur (after a random delay) before the controller 304B sends an XBP registration response to the UPS 101. The controller 304B receives at least one of the XBP responses 1404 from the controller 304A via path 1406 and records the corresponding SIDX 256C (“0x3”) based on the assigned LID 256 (“0x203”) for the first XBP 126A (“V” occupying block “3” in inset 1407) in the received XBP response 1404.
[0154] Following three cycles of receiving the same UPS request 1402 and sending the same XBP registration response 1408, the controller 304B executes “Select ID” 260D to select a SIDX 256C for the second XBP 126B by applying a selection rule to avoid a SIDX conflict. For example, at “Select ID” 260D, based on the selection rule, the controller 304 B ranks the assigned RGID 254 (“0x551”) of the second XBP 126B relative to all other assigned RGIDs 254, of which there is none. Then, the controller 304B selects the SIDX 256C of the first rank (“0x1”) among the list of all selectable SIDXs 256C (blank blocks in inset 1409) for the second XBP 126B. The controller 304B then proceeds to “Normal Mode” 260E.
[0155] At “Normal Mode” 260E, the controller 304B receives another UPS request 1402 and sends a series of XBP responses 1410, including the assigned LID 256 (“0x201”) for the second XBP 126B, to the UPS 101 via the communication medium 130.
[0156] FIG. 15 illustrates a schematic diagram 1500 for operating the selector 250 to automatically select battery-pack IDs for the registering eleventh XBP 126K while incurring “Line is Full” 260G according to an example. In one example, all ten applicable LIDs 256 of the UPS 101 are already assigned to the ten XBPs 126 (the first XBP 126A, the second XBP 126B, ..., and the tenth XBP 126J). The eleventh XBP 126K is still registering with the UPS 101. A selector 250 is installed on each of the eleven XBPs 126 (the first XBP 126A, the second XBP 126B, ..., the tenth XBP 126J, and the eleventh XBP 126K).
[0157] In one example, each of the controllers 304A, 304B, ..., 304J of the ten XBPs 126 (the first XBP 126A, the second XBP 126B, ..., and the tenth XBP 126J) executes “Check ID” 206A and determines that the respective XBP 126 is registered. Each controller 304A, 304B, ..., 3041 then executes “Normal Mode” 206E to monitor the communication medium 130. Attorney Docket No.: A2000-7825WO(2024P00762 WO)
[0158] The controller 304K of the eleventh XBP 126K executes “Check ID” 206 A and determines that the eleventh XBP 126K is unregistered. The controller 304K then executes “Select Random ID” 260B to select an RGID 254 (“0x551”) for the eleventh XBP 126K. Next, the controller 304K executes “Registering” 260C to receive and respond to system requests from the UPS 101 via the communication medium 130.
[0159] Subsequently, all eleven controllers 304A, 304B, ... 304K receive a UPS request 1502 for the first time at moments close to each other. In one example, the ten controllers 304A, 304B, ..., 304J send respective XBP responses 1504A, 1504B, ..., 1504J including the ten respective assigned LIDs 256 (“0x201-0x20 A”) for the ten XBPs 126 (the first XBP 126A, the second XBP 126B, ..., and the tenth XBP 126J) to the UPS 101 via the communication medium 130. The controller 304K receives the XBP responses 1504A, 1504B, ..., 1504J via path 1506 and records the corresponding SIDXs 256C (“0xl~0xA”) based on the assigned LIDs 256 (“0x201~0x20A”).
[0160] Following three cycles of receiving the same USP request 1502 and sending the same XBP registration response 1508, the controller 304K executes “Select ID” 260D to select a SIDX 256C from a list of selectable SIDXs 256C. Because all applicable SIDXs 256C are already assigned (“V”s occupying every block in inset 1509), the controller 304K determines that the list is empty and executes “Line is Full” 260G to resolve the issue.
[0161] At “Line is Full” 260G, the controller 304K monitors the communication medium 130 to determine whether any assigned SIDXs 256C are released. In one example, the user 294 realizes that no applicable LIDs 256 are available and disconnects (or unregisters) the first XBP 126A from the UPS 101. The disconnection causes the LID 256 previously assigned to the first XBP 126A to be released after a period of “T.” Upon receiving another UPS request 1502, the controllers 304B, 304C, ..., 304J of the remaining nine XBPs (the second XBP 126B, the third XBP 126C, ..., the tenth XBP 126J) send XBP responses 1504B, 1504C, ..., 1504J to the UPS 101 via the communication medium 130. In one example, the controller 304K receives the XBP responses 1504B, 1504C, ..., 1504J via path 1512 and recognizes that the XBP response 1504A is not received. Controller 304K then determines that the LID 256 previously assigned to the first XBP 126A is now released and becomes selectable, and subsequently executes “Select Random ID” 260B to continue the registration process for the eleventh XBP 126K. Attorney Docket No.: A2000-7825WO(2024P00762 WO)
[0162] Various controllers, such as the UPS controller 112 and XBP controllers 304, may execute various operations discussed above. The UPS controller 112 and / or XBP controllers 304 may also execute one or more instructions stored on one or more non-transitory computer- readable media, which the UPS controller 112 and / or XBP controllers 304 may include and / or be coupled to, which may result in manipulated data. The non-transitory computer-readable media may include memory and / or storage. In some examples, the UPS controller 112 and / or XBP controllers 304 may include one or more processors or other types of controllers. In one example, the UPS controller 112 and / or XBP controllers 304 may include at least one processor. In another example, the UPS controller 112 and / or XBP controllers 304 perform at least a portion of the operations discussed above using an application-specific integrated circuit tailored to perform particular operations in addition to, or in lieu of, a processor. As illustrated by these examples, examples in accordance with the present disclosure may perform the operations described herein using many specific combinations of hardware and software and the disclosure is not limited to any particular combination of hardware and software components. Examples of the disclosure may include a computer-program product configured to execute methods, processes, and / or operations discussed above. The computer-program product may be, or include, one or more controllers and / or processors configured to execute instructions to perform methods, processes, and / or operations discussed above.
[0163] Having thus described several aspects of at least one example, it is to be appreciated various alterations, modifications, and improvements will readily occur to those skilled in the art. Such alterations, modifications, and improvements are intended to be part of, and within the spirit and scope of, this disclosure. Accordingly, the foregoing description and drawings are by way of example only.
Claims
Attorney Docket No.: A2000-7825WO(2024P00762 WO)CLAIMSWhat is claimed is:
1. A method of selecting a battery-pack identifier (ID), the method comprising: assigning a first ID to a first battery pack; monitoring a communication bus associated with an uninterruptible power supply (UPS) coupled to the first battery pack and a second battery pack; detecting, via the communication bus, communication indicating that, prior to being assigned to the first battery pack, the first ID is assigned to the second battery pack; and assigning a second ID to the first battery pack in response to detecting the communication, the second ID being different from the first ID.
2. The method of claim 1, wherein assigning the second ID to the first battery pack includes: determining that, prior to being assigned to the first battery pack, the second ID is not assigned to any other battery pack coupled to the UPS based on monitoring the communication bus for a predetermined time interval.
3. The method of claim 1, further comprising: determining a secondary ID based on the second ID; assigning the secondary ID to the first battery pack; detecting, via the communication bus, second communication indicating that, prior to being assigned to the first battery pack, the secondary ID is assigned to a third battery pack coupled to the UPS; and assigning a third ID to the first battery pack in response to detecting the second communication, the third ID being different from the first ID and the second ID.
4. The method of claim 3, further comprising: determining a second secondary ID based on the third ID;Attorney Docket No.: A2000-7825WO(2024P00762 WO) determining that, prior to being assigned to the first battery pack, the second secondary ID is not assigned to the second battery pack or the third battery pack based on monitoring the communication bus for a predetermined time interval; and assigning the second secondary ID to the first battery pack in response to determining that, prior to being assigned to the first battery pack, the second secondary ID is not assigned to the second battery pack or the third battery pack.
5. The method of claim 4, wherein: determining the second secondary ID based on the third ID includes selecting the second secondary ID from a list of selectable secondary IDs based on a rank of the third ID relative to the first ID and the second ID; and the method further comprises updating the list by removing the second secondary ID from the list in response to assigning the second secondary ID to the first battery pack.
6. The method of claim 5, wherein selecting the second secondary ID from the list of selectable secondary IDs based on the rank of the third ID relative to the first ID and the second ID comprises: determining that the second secondary ID has a same rank relative to other selectable secondary IDs on the list as the rank of the third ID.
7. At least one non-transitory computer-readable medium storing thereon sequences of computer-executable instructions for selecting a battery-pack identifier (ID), the sequences of computer-executable instructions including instructions that instruct at least one processor to: assign a first ID to a first battery pack; monitor a communication bus associated with an uninterruptible power supply (UPS) coupled to the first battery pack and a second battery pack; detect, via the communication bus, communication indicating that, prior to being assigned to the first battery pack, the first ID is assigned to the second battery pack; and assign a second ID to the first battery pack in response to detecting the communication, the second ID being different from the first ID.Attorney Docket No.: A2000-7825WO(2024P00762 WO)8. The at least one non-transitory computer-readable medium of claim 7, wherein assigning the second ID to the first battery pack includes: determining that, prior to being assigned to the first battery pack, the second ID is not assigned to any other battery pack coupled to the UPS based on monitoring the communication bus for a predetermined time interval.
9. The at least one non-transitory computer-readable medium of claim 7, wherein the instructions further instruct the at least one processor to: determine a secondary ID based on the second ID; assign the secondary ID to the first battery pack; detect, via the communication bus, second communication indicating that, prior to being assigned to the first battery pack, the secondary ID is assigned to a third battery pack coupled to the UPS; and assign a third ID to the first battery pack in response to detecting the second communication, the third ID being different from the first ID and the second ID.
10. The at least one non-transitory computer-readable medium of claim 9, wherein the instructions further instruct the at least one processor to: determine a second secondary ID based on the third ID; determine that, prior to being assigned to the first battery pack, the second secondary ID is not assigned to the second battery pack or the third battery pack based on monitoring the communication bus for a predetermined time interval; and assign the second secondary ID to the first battery pack in response to determining that, prior to being assigned to the first battery pack, the second secondary ID is not assigned to the second battery pack or the third battery pack.
11. The at least one non-transitory computer-readable medium of claim 10, wherein: determining the second secondary ID based on the third ID includes selecting the second secondary ID from a list of selectable secondary IDs based on a rank of the third ID relative to the first ID and the second ID; andAttorney Docket No.: A2000-7825WO(2024P00762 WO) the instructions further instruct the at least one processor to update the list hy removing the second secondary ID from the list in response to assigning the second secondary ID to the first battery pack.
12. The at least one non-transitory computer-readable medium of claim 11, wherein selecting the second secondary ID from the list of selectable secondary IDs based on the rank of the third ID relative to the first ID and the second ID comprises: determining that the second secondary ID has a same rank relative to other selectable secondary IDs on the list as the rank of the third ID.
13. The at least one non-transitory computer-readable medium of claim 7, wherein the instructions further instruct the at least one processor to: prior to assigning the first ID to the first battery pack, randomly select the first ID from a list of selectable IDs for assigning to the first battery pack; after detecting the communication, update the list by removing the first ID from the list; detect the list to be empty; and send an alarm signal indicating the list is empty.
14. The at least one non-transitory computer-readable medium of claim 7, wherein monitoring the communication bus includes a plurality of cycles, each cycle including: receiving a request from the UPS for a first current ID assigned to the first battery pack; sending a response to the UPS in response to receiving the request, the response including the first current ID; and comparing the first current ID to a second current ID assigned to the second battery pack.
15. The at least one non-transitory computer-readable medium of claim 14, wherein a time delay between receiving the request and sending the response is randomly selected during at least a first cycle of the plurality of cycles.Attorney Docket No.: A2000-7825WO(2024P00762 WO)16. A computer system of selecting a battery -pack identifier (ID), the computer system comprising processing circuitry coupled to a memory, the processing circuitry being configured to: assign a first ID to a first battery pack; monitor a communication bus associated with an uninterruptible power supply (UPS) coupled to the first battery pack and a second battery pack; detect, via the communication bus, communication indicating that, prior to being assigned to the first battery pack, the first ID is assigned to the second battery pack; and assign a second ID to the first battery pack in response to detecting the communication, the second ID being different from the first ID.
17. The computer system of claim 16, wherein assigning the second ID to the first battery pack includes: determining that, prior to being assigned to the first battery pack, the second ID is not assigned to any other battery pack coupled to the UPS based on monitoring the communication bus for a predetermined time interval.
18. The computer system of claim 16, wherein the processing circuitry is further configured to: determine a secondary ID based on the second ID; assign the secondary ID to the first battery pack; detect, via the communication bus, second communication indicating that, prior to being assigned to the first battery pack, the secondary ID is assigned to a third battery pack coupled to the UPS; and assign a third ID to the first battery pack in response to detecting the second communication, the third ID being different from the first ID and the second ID.
19. The computer system of claim 18, wherein the processing circuitry is further configured to: determine a second secondary ID based on the third ID;Attorney Docket No.: A2000-7825WO(2024P00762 WO) determine that, prior to being assigned to the first battery pack, the second secondary ID is not assigned to the second battery pack or the third battery pack based on monitoring the communication bus for a predetermined time interval; and assign the second secondary ID to the first battery pack in response to determining that, prior to being assigned to the first battery pack, the second secondary ID is not assigned to the second battery pack or the third battery pack.
20. The computer system of claim 19, wherein: determining the second secondary ID based on the third ID includes selecting the second secondary ID from a list of selectable secondary IDs based on determining that the second secondary ID has a same rank relative to other selectable secondary IDs on the list as a rank of the third ID relative to the first ID and the second ID; and the processing circuitry is further configured to update the list by removing the second secondary ID from the list in response to assigning the second secondary ID to the first battery pack.
Citation Information
Patent Citations
Wireless battery management system
EP3537562B1
Methods, circuits, and computer program products for assigning identifiers to modules in uninterruptible power supply systems
US20070016312A1
Large-Format Battery Managment System
US20210376629A1