This disclosure relates to control system code and, in particular, to the installation and upgrade of code within the control system.
Control systems can have a variety of components, each with its own associated code. For example, a lighting control system can include switches, sensors, power packs, or the like, located at both central and distributed locations. Such components can be installed in relatively inaccessible locations, such as within walls. To upgrade any code within these components, the component must be uninstalled and returned to the manufacturer.
Some of the inventive principles of this patent disclosure relate to the installation and upgrade of control system code.
The devices are coupled together through a variety of communication links. In this embodiment, the control system 10 includes a network 14. Devices 16 and 18 are coupled to the network 14. Devices 16 and 18 can be configured to communicate with each other through the network 14. As will be described in further detail below other devices of the control system 10 can be configured to communicate in other ways.
In this embodiment, the network 14 is coupled to a server 12. The server 12 can be part of the control system 10, or can be separate, such as a server of a manufacturer, distributor, retailer, or the like. At least one device is coupled to the server 12. In this embodiment, devices 16 and 18 are coupled to the server 12 through the network 14.
The communication interface 54 can include any variety of interfaces. For example, the communication interface 54 can include a serial interface, a parallel interface, a wired or wireless interface, a radio frequency interface, an optical interface, or the like. The communication interface 54 can include an Ethernet interface, a Bluetooth interface, a controller area network interface, or any other interface.
The memory 56 can include any variety of memory. For example, the memory can include dynamic memory, static memory, random access memory, flash memory, or the like.
Any memory that can be written to more than once can be used. However, in an embodiment, other memory, such as read only memories, can also be included in the memory 56.
In an embodiment, the memory 56 can be configured to store code 58. As used here, code can include any instructions in any format, whether machine or human readable, compiled or interpreted, or the like. For example, the code 58 can include source code, machine code, object code, or any combination of such code. The code 58 can enable the device 50 to perform particular functions. As will be described in further detail below, the code 58 can be updated. However, the code 58 can include portions that are stored in read only memories, hardcoded, or the like. Moreover, within a device 50, the code can be distributed in various circuitry. For example, a device can include both a general purpose processor with associated code and a digital signal processor with different associated code. The code for the circuitry can be stored in one location, but can still be referred to as the code 58 or part of the code 58.
The device 50 can also include circuitry 60. For example, if the device 50 is a relay module for controlling a lighting load, a relay can be part of the circuitry 60. In another example, if the device 50 is a sensor, such as an occupancy sensor, the circuitry 60 can include the sensing circuitry.
Regardless of the type of circuitry 60, the code 58 can enable functionality of the device 50 when the processor interacts with the circuitry 60. For example, the code 58 can include instructions that manipulate sensed data from an occupancy sensor to make a determination of whether an occupant is present. In another example, the code 58 can include instructions that control the action of a relay.
Referring to
In an embodiment, the device 16 can be configured to transmit the updated code to the other devices. For example, the device 16 can transmit the updated code, whether the entire update or a corresponding portion, to the device 18 through the network 14.
As described above, a server 12 can be coupled to the network 14. In an embodiment, the device 16 can receive the updated code from the server 12. The server 12 can provide the updated code in a variety of ways. For example, the server 12 can be a file transfer protocol (FTP) server from which the device 16 can retrieve the updated code. In another example, the server 12 can provide a web interface through which the device 16 can obtain the updated code.
In an embodiment, the code can be obtained by request. For example, the device 16 can communicate with the server 12 requesting the updated code. In response, the server 12 can transmit the updated code to the device 16. The device 16 can be configured to periodically check for updates from the server 12.
In another embodiment, the updated code can be delivered to the device 16 without a request. For example, the server 12 can periodically communicate with the device 16 to provide updates. In another example, the server 12 can identify updated code, whether for one device or multiple devices of the control system 10, and deliver that update to the device 16. In yet another example, the server 12 can be instructed to deliver the updated code to the device 16. Although the updated code has been described as being received from the server 12, as will be described in further detail below, the updated code can be obtained in other ways.
Regardless of how obtained, the device 16 can then distribute the updated code to the other devices, such as device 18. In an embodiment, the device 16 can be configured to receive the updated code for each device in the control system 10. Within the control system 10, the device 16 can be a single point of contact for updates for the entire control system 10. The other device, such as device 18, can, but need not, be capable of communicating with the server 12, or having other ways of obtaining the updated code. As the devices can include communication interfaces coupled to the device 16, whether directly or indirectly, the updated code can be communicated to the various other devices from the device 16.
In an embodiment, the device 50 can be substantially encapsulated within a housing 62. For example, the housing 62 can be a cabinet. In another embodiment, the housing can be an electrical wall box. In another embodiment, the housing 62 can be a case.
As described above, the device 18 can receive the updated code from the device 16 through the network 14. That is, the device 18 received the updated code through the same network 14 as device 16, albeit from a different source. In an embodiment, the device 18 could have received the updated code directly from the server 12, similar to device 16. However, in an embodiment, devices 22 and 24 may not be capable of communication with the server 12. However, the devices 22 and 24 can still receive the updated code through the device 16.
In an embodiment, the device 70 can have circuitry 80 similar to circuitry 60 described above. However, in another embodiment, the device 70 may not have such circuitry 80. For example, the device 70 could span communication networks. The bridge 26 is an example of such a device. The bridge 26 spans the network 20 and a wireless network coupling the bridge 26 and devices 32 and 34. The bridge 26 can also include code that can be updated, just as other devices in the control system 10. Although a wireless network has been described as a network associated with the bridge 26, the networks can be any variety as described above.
Moreover, the devices 34 and 36 illustrate that the devices can be coupled with a variety of communications links. The updated code can be transmitted along these links, through various intervening devices, or the like. For example, updated code from device 16 can be transmitted through network 20 and bridge 26 to device 34. Device 34 can then transmit the updated code to the device 36.
In an embodiment, a device may be a master device coupled to one or more slave devices. For example, device 22 can be a master device for slave devices 28 and 30. The updated code can include code for both the device 22 and the slave devices 28 and 30. The master device 22 can be responsible for distributing the adapted code to the slave devices 28 and 30.
In an embodiment, the device 90 can receive the updated code through the removable storage interface 102. For example, a USB storage device can be coupled to the device 90. The device 90 can detect the attachment of the USB storage device. In response, the device 90 can examine the USB storage device to determine if an update is available. For example, updated code can be stored in a particular predefined location, directory, or the like in the USB storage device. The device 90 can search that location for updated code.
In another embodiment, the device 90 can be controlled to retrieve the updated code. For example, a user can indicate where on the USB storage device the updated code is stored. A user can activate a user interface, such as a button, keypad, or the like, to instruct the device 90. In another embodiment, the device 90 can be instructed by a user through the communication interface 94. Regardless, the device 90 can receive the updated code from an attached storage media.
In particular, in an embodiment, a server 12 described above is not needed. That is, the control system 10 can be a stand alone system without access to a server 12. Updated code can be provided on a removable storage medium to the control system 10.
In 122 the device can transmit the updated code to other devices within the control system. In an embodiment, the entire updated code can be transmitted to each device. Each device can then use the updated code, a portion of the updated code, or the like as appropriate.
In another embodiment, the device can transmit the appropriate portions of the updated code to the devices. For example, the device can communicate directly with the other devices to supply the updated code. In another example, the device can forward the updated code or an appropriate portion to another device. The other device can deliver the corresponding updated code to its associated devices.
Referring to
In another embodiment, the device can transmit the updated code to a subset of devices. For example, the device can transmit the updated code using a multicast or broadcast address. For example, the device 16 of
In another embodiment, a multicast address can be used that is associated with a group of devices. For example, devices 22 and 24 can be similar devices. Thus, devices 22 and 24 can form a group. This group can be distinct from the bridge 26. Devices 22 and 24 can be associated with a particular multicast address associated with the group. Accordingly, the code can be transmitted to the devices of the group substantially simultaneously using the multicast address. Other groups of devices can be configured to listen on different multicast addresses to receive their corresponding portion of the updated code. By transmitting the code over the multicast address, the entire updated code need not be delivered to each device. Although multicast and broadcast have been described above, broadcast can be used to refer to a multicast transmission as the transmission is broadcast to the associated group.
Referring to
In an embodiment, a single device can receive the updated code. The updated code can include updated code for that particular device. The device can update itself in response to the updated code. The updated device can then update the other devices in the control system, the devices in its local group, or the like.
As described above, a master device can include multiple slave devices. The master device can receive the updated code. The master device can then transmit the updated code to the slave devices. Such a hierarchy can be repeated with the slave devices acting as master devices for associated slave devices.
Once the configuration is stored, the devices can be placed in an update mode in 142. In the update mode, the functionality of the devices can be limited. In a particular example, the update mode can be substantially similar to an emergency mode as if the control system had lost power. For example, relays for emergency circuits can be closed while other relays can be opened. In another example, all circuits can be activated. In another example, particular circuits or functionality can be disabled. The functionality of the devices in the update mode can be selected as desired.
While in the update mode, the code on the devices can be updated in 144. As described above, the code can be delivered and updated in a variety of ways. Accordingly, the update of the code in 144 can be similarly as varied.
Once the update is complete, the configuration of the devices can be restored in 146. For example, the stored configuration can be read from a database and used to reconfigure the devices. In another example, each device can retrieve its own stored configuration and configure itself.
As part of the update process, the previous version of the code can be stored as a backup. In addition, other information concerning the update process can be recorded, logged, or the like. For example, a number of attempts at updating a device can be recorded. Such a record or the logging can be preformed by individual devices, a device that receives the updated code, or the like.
Such code can be referred to as basecode. In an embodiment, the basecode can allow a processor of a device to communicate through a communication interface, identify the device, and perform some limited operations. For example, the basecode can allow the device to receive updated code and update itself.
Accordingly, after being installed, the devices can establish communication with each other in 162. As a result, the infrastructure to distribute updated code is installed. However, the updated code that can implement the system need not be present and can be installed at a later time.
In 164, updated coded can be received and the devices updated in 166. For example, immediately after completing installation, the code for the devices can be updated. In another example, the code can be updated when the control system is to be activated. As a result, the control system can be configured when desired and with the desired code.
In an embodiment, devices with the basecode can be shipped and installed. Such installation can occur at any time before, during or after operational code is available. Thus the devices can be manufactured and installed without having the operational code. The time taken for manufacturing and installation can be used in parallel to develop the operational code, develop more features, or the like.
Even if updated code has become available, the manufacturing of the devices need not change, version numbers need not be updated, and other code related tracking need not be performed. That is, devices manufactured before operational code was even available need not be restocked as the basecode allows the device to be updated when desired.
In an embodiment, the limited functionality of the basecode can establish communication with other devices. For example, the basecode can establish a unique address for the device. This can be hardcoded into the device, dynamically assigned, discovered from the environment, or the like. In an embodiment, the address can be unique among the devices, unique among groups of devices, or the like. That is, the basecode may only respond to a multicast address and not have a unique address that distinguishes it from another device. However, after an update, the updated code can cause the device to acquire a unique address or communicate differently as desired.
In addition, the basecode can identify the device. In an embodiment, the basecode can be configured to allow the device to identify itself. Accordingly, the device can be interrogated by another device, such as a device that as received the updated code, and can receive the appropriate updated code from that device. In another embodiment, the identification can be implicit within the associated multicast address. That is, without knowing what devices are available, a device can receive the updated code, then broadcast the code on the appropriate multicast addresses. A device with basecode associated with a particular multicast address can then receive that updated code.
In an embodiment, the basecode can have no functionality beyond the amount needed to communicate and update the code. Thus, other operations that a device may be configurable to perform cannot be performed with the basecode alone. In an embodiment, the updating of code in the devices can be a multi-stage process. That is, one level of devices may not be configured to be aware of associated, yet existing devices. Once updated, the devices may be capable of recognizing the associated devices and updating their corresponding basecode.
In another embodiment, the basecode can provide some limited functionality. For example, the basecode can place the device in the update mode, an emergency mode, or the like as described above.
Each relay cabinet 204 can include a cabinet controller 210. The relay cabinets 204 can be coupled to a network 212 that can be coupled to the Internet 202, or another network. A manufacturer server 200 is also coupled to the Internet 202 or other network.
In this embodiment, one relay cabinet 204 is coupled to an occupancy sensor 216 and a switch 218 through a communication network 214. The lighting control system 220 can include other cabinets, sensors, loads, switches, or the like beyond those illustrated.
The cabinet controller 210, relay modules 208 occupancy sensor 216, switch 218, and any other devices can be the devices described above. That is, each can include a processor and memory that establishes some functionality for the device. The code for those devices can be updated as described above. Moreover, some or all of the lighting control system 220 can be installed with devices having the basecode as described above. That is, the installation of the lighting control system 220 need not wait until the operational code for the devices in the lighting control system 220 is available.
The inventive principles of this patent disclosure have been described above with reference to some specific example embodiments, but these embodiments can be modified in arrangement and detail without departing from the inventive concepts. For example, some of the embodiments have been described in the context of lighting control systems, but the inventive principles apply to other types of control systems as well. Any of the circuitry and logic described herein may be implemented in analog and/or digital hardware, software, firmware, etc., or any combination thereof. Such changes and modifications are considered to fall within the scope of the following claims.