The invention relates to a communications and control system for use with a Powered Rail of a weapon to provide communications and control signals as well as electric power to power-consuming accessories mounted on the Powered Rail.
It is a problem to distribute command and control signals to power-consuming accessories, which are operationally associated with a weapon and attached to the weapon's Powered Rail, that electrically connects the power-consuming accessories to a centrally located power source. A weapon used in military applications may have a plurality of accessories that can be attached to the weapon, with each accessory having a need for electric power. In order to reduce the weight of these power-consuming accessories, as well as the proliferation of batteries used to power these power-consuming accessories, a common power source is used to power whatever power-consuming accessory is attached to the weapon. A Powered Rail provides a point of mechanical and electrical interconnection for the power-consuming accessories to provide quick connect mounting and dismounting of the power-consuming accessory, absent the use of connectors with their tethering cables, which are susceptible to entanglement.
However, a Powered Rail by itself fails to provide a user with control over the operation of the power-consuming accessories, since it simply provides an electrical connection to the power source and must rely on a power switch mounted on each power-consuming accessory to enable the user to apply power in a binary, on/off manner to that power-consuming accessory. The need to operate such a switch on a power-consuming accessory is inconvenient and prevents the user from having the ability to rapidly power-up and power-down the power-consuming accessory. In the case of a plurality of power-consuming accessories being mounted on the weapon, such a power control method is cumbersome at best.
In addition to providing an accessory on/off function, there is a need to support control signal distribution from a centrally located control apparatus to the accessories as well as intra-accessory communications absent the presence of a centrally located control apparatus. With a limited amount of power available from the power source and the ability of the user to connect and disconnect accessories to the Powered Rail, any communications and control distribution system must be simple, efficient, and adaptable to account for new types of accessories being developed and deployed on the weapon.
The above-described problems are solved and a technical advance achieved by the present Communication And Control Of Accessories Mounted On The Powered Rail Of A Weapon (termed “Weapon Accessory Control System” herein) which is adapted for use in weapons, such as military weapons, that are equipped with a Powered Rail. The Powered Rail is electrically interconnected with a power source, and the Weapon Accessory Control System is provided to enable the user to control the activation of a power-consuming accessory from a centrally located control interface. In addition, the control and communication architecture enables communications not only between the user and the power-consuming accessories but also among power-consuming accessories, independent of the presence of a centrally located control apparatus.
The use of a Powered Rail on a weapon serves multiple types of power-consuming accessories such as: tactical lights, laser aiming modules, night vision devices, and reflex sights. The Powered Rail can be incorporated on the top, bottom, or sides of the rifle barrel, the underside of semi-automatic pistol frames, and even on weapon grips. Regardless of the location and implementation of the Powered Rail, the problem of control and communication with and among the power-consuming accessories is a universal issue.
The existing military-style weapon 2 includes in well-known fashion an upper receiver 101, lower receiver 102, barrel 103, muzzle 104, grip 105, and front sight 106. While a military-style weapon is described herein, the teachings of this application are equally applicable to other firearms, such as handguns, fixed-mount machine guns, as well as non-weapon based systems, such as air-soft (paint ball) systems. The Weapon Accessory Power Distribution System is added to this standard military-style weapon 2 as described herein.
The Handguard 23 performs the barrel shielding function as in the Picatinny Rail noted above, but has been modified, as shown in
As noted above, the Handguard 23 was developed to shroud the barrel 103 of a rapid fire weapon 2 to enable the person firing the weapon 2 to grip the forward portion of the weapon 2 while mitigating the possibility of burning the hand of the person firing the weapon 2, yet also providing adequate cooling for the barrel 103 of the weapon. Handguards find application in rifles, carbines, and fixed mount weapons, such as machine guns. However, the Weapon Accessory Control System can also be used in modified form for handguns, as an accessory mounting platform and as an accessory power source.
One or more of the Powered Rail subassemblies (typically Printed Circuit Boards) 60-1 to 60-4 can be inserted into the respective slots formed in the Powered Rail 24 (on the corresponding facets F1-F4 of the Handguard 23) thereby to enable power-consuming accessories to be attached to the Handguard 23 of the weapon 2 via the Powered Rail 24 on any facet F1-F4 of the Handguard 23 and to be powered by the corresponding power conductors 62-P and 62-N activated by switch 62-S formed on Printed Circuit Board 60-1 to 60-4 which are installed in the Powered Rail 24 on the respective facets.
The Battery Pack can be implemented in a number of assemblies and mounted on various portions of the weapon (such as on the Powered Rail, or in a pistol grip, or in a remote power source, and the like) as described in U.S. patent application Ser. No. 12/689,438 filed on Jan. 19, 2010, titled “Rifle Accessory Rail, Communication, And Power Transfer System—Battery Pack.” For the purpose of this description,
The Power Distribution System 22 is shown in
An electric wire is routed from the Battery Pack 33 in the Butt Stock 21 to the Powered Rail 24. The external wiring is housed inside a durable and impact-resistant polymer shroud 108 that conforms to the lower receiver 102. The shroud is securely retained by a quick connect/disconnect pivot and takedown pin 111, as well as the bolt release roll pin 109 in the trigger/hammer pins 110. The shrouded power cable runs from the Battery Power Connector 107 at the Battery Pack 33 to the Power Rail Connector 202. This design provides an easy access for replacing or repairing the cable assembly, eliminates snag hazards or interferences with the rifle operation, and requires no modifications to the rifle lower receiver 102 housing.
The Powered Rail 24 is used to electrically interconnect a power source (Battery Pack 33) with the various power-consuming accessories 7, 8 mounted on the Powered Rail 24, such that the Powered Rail 24 of the Handguard 23 provides the mechanical support for the power-consuming accessories 7, 8; and the Powered Rail 24 also provides the electrical interconnection. In this example, the Powered Rail 24 is attached to and coextensive with the Handguard 23 sections, such that the mounting of a Power-Consuming Accessory 7, 8 on the Powered Rail 24 results in simultaneous mechanical and electrical interconnection.
The Weapon Accessory Control System User Interface 1201 is shown in both the horizontal (juxtaposed to and substantially parallel to the barrel of the weapon) and vertical grip (extending in a downward direction and substantially perpendicular to the barrel of the weapon) designs in
As shown in
Furthermore, the Weapon Accessory Control System 1300 is typically equipped with a plurality of switches 1211-1214 in the user interface 1201, each of which typically controls a different power-consuming accessory 7, 8 via the use of a predetermined signaling paradigm. As an example, if the user wanted to momentarily power a target illuminator 8, they would hold down switch 1211, which would power the target illuminator 8 via the Powered Control Module 700 resident in target illuminator 8 (part of circuitry 1311) as long as the switch 1211 was operated. If they wanted to maintain power to the target illuminator 8, they would press and release switch 1211. To turn off the target illuminator 8, they would press switch 1211 again. Alternatively, different combinations of switches and switch activation sequences could activate functions on any number of power-consuming accessories 7, 8.
In order to implement this signal paradigm, each of switches 1211-1214 (and their mode of operation) would result in a uniquely coded signal being impressed on the Powered Rail 24. The Powered Control Module 700 generates the predetermined unique signal (for example, different frequency signals) which is associated with the operated switch 1211. This unique signal is impressed on the Powered Rail 24 via Front End Circuit 802 of the Powered Control Module 700. Since both the power-consuming accessories 7, 8 and the Weapon Accessory Control System 1300 are equipped with respective Powered Control Modules 700, bidirectional communications between the power-consuming accessories 7, 8 and the Weapon Accessory Control System 1300 is possible, as well as between the power-consuming accessories 7,8.
The management of the power-consuming accessories is accomplished by the operation of Weapon Accessory Control System 1300, which implements various functions including, but not limited to:
The small footprint of the Weapon Accessory Control System 1300, and the number of power-consuming accessories 7, 8 which may be attached to the Powered Rail 24, mandates that the power consumption of Weapon Accessory Control System 1300 must be minimized. This is accomplished through a combination of lowering the clock rate, and/or entering sleep modes, depending on the role of the Weapon Accessory Control System 1300, after idle time is detected.
The software which executes on Powered Control Module 700 must also be capable of operating reliably in the presence of noise on the Powered Rail 24, via the operation of Loop Filter 808. In this context, noise is any event that interferes with the successful transmission and reception of a packet, such as the attachment of a new power-consuming accessory 7, 8 to the Powered Rail 24. Because power-consuming accessories 7, 8 can be attached to or removed from the Powered Rail 24 at any time, the software which executes in the Powered Control Module 700 must dynamically detect the installation of a new power-consuming accessory 7, 8, and the removal of a power-consuming accessory 7, 8, and adjust accordingly. Communications with power-consuming accessories 7, 8 is provided through a Front-End Circuit 802 which uses a high-speed Serial Peripheral Interface 803 to communicate with Microcontroller 801. A Crystal 805 and Tank Circuit 807 are provided to generate the various specific frequency clock signals. The Microcontroller 801 does not have an operating system, and the software is interrupt-driven, with a simple dispatching loop. The interrupts are received from the associated power-consuming accessory on lead(s) inputs and handled by Interrupt Generator 804. Responses, such as Pulse Width Modulation control signals, are returned to the power-consuming accessories 7, 8 via output lead Out.
The Weapon Accessory Control System 1300 also allows various power-consuming accessories 7, 8, attached to a common Powered Rail 24, to communicate with each other, using the Powered Rail power conductors 62-P, 62-N as a wired connection for low-power signals, typically in the 800+ MHz region of the spectrum. The associated communications software is a single module, having multiple software components (as shown in
The heart of the Powered Control Module 700 is the Microcontroller 801 which includes a predetermined amount of memory 806 which stores an executable program, tables of data, and variable storage. Communications with other Powered Control Modules 700 are implemented via the Front End Device 802, and the Serial Peripheral Interface 803 enables the Microcontroller 801 and the Front End Circuit to communicate.
The Serial Peripheral Interface 803 is a synchronous serial data link that operates in full duplex mode. Devices communicate in master/slave mode where the master device initiates the data frame. Multiple slave devices are allowed with individual slave select (chip select) lines. The Serial Peripheral Interface 803 specifies four logic signals:
The Serial Peripheral Interface 803 as shown herein can operate with a single master device and with one or more slave devices. If a single slave device is used, the Slave Select pin may be fixed to logic low if the slave permits it. Some slaves require the falling edge (high→low transition) of the chip select to initiate an action such as conversion on said transition. With multiple slave devices, an independent Slave Select signal is required from the master for each slave device. Most slave devices have tri-state outputs so their Master Input, Slave Out signal becomes high impedance (“disconnected”) when the device is not selected. Devices without tri-state outputs cannot share Serial Peripheral Interface 803 segments with other devices; only one such slave could talk to the master, and only its chip select could be activated.
To begin a communication, the master first configures the clock, using a frequency less than or equal to the maximum frequency the slave device supports. The master then pulls the chip select low for the desired chip. If a waiting period is required (such as for analog-to-digital conversion), then the master must wait for at least that period of time before starting to issue clock cycles.
During each Serial Peripheral Interface 803 clock cycle, a full duplex data transmission occurs:
Transmissions normally involve two shift registers of some given word size, such as eight bits, one in the master and one in the slave; they are connected in a ring. Data usually are shifted out with the most significant bit first, while shifting a new least significant bit into the same register. After that register has been shifted out, the master and slave have exchanged register values. Each device then takes that value and does something with it, such as writing it to memory. If there are more data to exchange, the shift registers are loaded with new data and the process repeats. Transmissions may involve any number of clock cycles. When there are no more data to be transmitted, the master stops toggling its clock. Normally, it then deselects the slave.
Transmissions often consist of 8-bit words, and a master can initiate multiple such transmissions if it wishes/needs. However, other word sizes are also common, such as 16-bit words for touchscreen controllers or audio codes; or 12-bit words for many digital-to-analog or analog-to-digital converters. Every slave on the bus that hasn't been activated using its chip select line must disregard the input clock and Master Output, Slave Input signals, and must not drive Master Input, Slave Output. The master must select only one slave at a time.
In addition to setting the clock frequency, the master must also configure the clock polarity and phase with respect to the data. The timing diagram is shown in
That is, CPHA=0 means sample on the leading (first) clock edge, while CPHA=1 means sample on the trailing (second) clock edge, regardless of whether that clock edge is rising or falling. Note that with CPHA=0, the data must be stable for a half cycle before the first clock cycle. For all CPOL and CPHA modes, the initial clock value must be stable before the chip select line goes active.
Device initialization:
Communications Initialization:
During Main Loop 902 execution, the Microcontroller 801 services interrupts that are received from the Front End Chip 802, timers, and external discrete signals (e.g., buttons 921 via debounce process 903), as well as the associated power-consuming accessory via lead Input. The interrupts result in changes of state within data structures (such as connection tables 9014, button status variables). The Main Loop 902 within Microcontroller 801 services input messages (by calling connectPoll) and queued button events. If the Main Loop 902 determines that no activity has occurred, it places the Microcontroller 801 in a low-power (idle) state. An interrupt from any of the Serial Peripheral Interface 803 (indicating a message receive), a timer, or a button press, awakens the Microcontroller 801, and the debounce software 903 places an entry in a debounce FIFO as a result of a button press. The Main Loop 902 calls the Device Controller software 904, which retrieves translation data from Device Type Table 9012. A message process 906 is activated to initiate a connection via Connection Process 907 and Connections Table 9014 (as described in more detail below). Microcontroller 801 routes the event by RF Driver process 908 and Serial Peripheral Interface Driver process 909 to output the control signals over the Powered Rail 24 (via Front End Chip 802 and Serial Peripheral Interface 803) to an appropriate power-consuming accessory using the button rules table 9013.
For a Powered Control Module 700 located in a power-consuming device, the connect functions place an entry in the debounce FIFO; therefore, the device “sees” button requests from the Microcontroller 801. The Main loop 902 services the debounce FIFO and calls the device specific function, such as Pulse Width Modulation Control 905, which acts on the button event, usually by adjusting the Pulse Width Modulation output 922.
When a power-consuming accessory is attached to the Powered Rail 24, the Powered Control Module 700 located in the power-consuming accessory executes power-up reset software. The software determines the device type (from internal flash parameters) and sends an unprotocolled “hello” message to destination address 0x01 (the controller). The Powered Control Module 700 waits for a response message. If no response message is received within 500 mSec, the Powered Control Module 700 resends the message. The discovery message contains device-specific information, including the device type and sub-type, and capabilities and options.
The Powered Control Module 700 located in the receiving power-consuming accessory, upon receiving a hello message, performs the following processing:
The remote power-consuming accessory, upon receiving the response, initializes its connection data structures, and programs its RF interface to recognize its unique address.
Before sending a button event message to a device, the Microcontroller 801 translates the button event from a physical button event to a virtual button event. Consider the case where a power-consuming device 701 located in the power-consuming accessory 8 is controlled by two buttons. For example, suppose a power-consuming accessory 8 uses button one to turn the tactical light 701 on or off, and button two to strobe the tactical light 701. If the tactical light 701 and Weapon Accessory Control System 1300 are the only devices on the Powered Rail 24, then buttons one and two control the tactical light 701.
Suppose now that a second device 7 is attached to the Powered Rail 24, and that the button rules assign button one to this new device 7, and buttons two and three to the tactical light 701. When buttons two or three are pressed, the tactical light 701 receives a button-event message showing that buttons one or two were pressed. The button rules software maps buttons so that each device “thinks” it starts with button one.
Packet transfers between the Microcontroller 801 and the Front End Circuit 802 are accomplished by placing the Front End Circuit 802 in standby mode and transferring the packet over the Serial Peripheral Interface 803. A send packet function interrogates the Front End Circuit 802 to determine if signals are active on the Powered Rail 24. This is accomplished by reading the Receive Signal Strength Indicator where, if its value is above a fixed threshold, the function returns a status indicating that the signal initiator should retry. Otherwise, the function places the Front End Circuit 802 into standby mode, loads the packet into the Front End Circuit FIFO, and then places the Front End Circuit into transmit mode. The function then polls for completion of transmission by interrogating the INT1 input from the Front End Circuit 802. After the Front End Circuit 802 indicates the last bit is in progress, the software sends a Serial Peripheral Interface command to place the Front End Circuit 802 back into receive mode.
The packet receive function examines the INT1 input signal to determine if it is asserted. The Front End Circuit 802 asserts this signal when a packet, qualified as having a good CRC and either a broadcast address or a matching node address, is in the FIFO. This function places the Front End Circuit 802 into standby mode, empties the Front End Circuit FIFO into a local buffer, and returns the Front End Circuit to receive mode. This function then posts the received message into a receive packet queue.
The packet receive function moves a packet from the Front End Circuit 802 into the packet receive FIFO. The user (in this case, the connection functions) calls the packetGet function to retrieve a packet from the FIFO. This approach provides a modest amount of buffering, and it removes the packet from the Front End Circuit 802 as soon as possible, freeing the Front End Circuit and allowing it to receive additional messages.
The Serial Peripheral Interface 803 provides functions to set and clear the node address. This address is an 8-bit value; the Front End Circuit 802 receives packets destined for either broadcast addresses or for the address specified within this register. During RF interface initialization, this register is set to the broadcast address. Subsequent software sets this register to 0x01 (the grip, or controller address) or to another value (for other devices) determined during enumeration.
The Connection Functions 907 form the core of the Serial Peripheral Interface protocol. These functions move packets between upper level applications and the RF driver. These functions manage serial numbers and provide acknowledges and retries. These functions also support connection establishment and teardown. A connection is torn down after a node fails to acknowledge a message multiple times. Whenever a new node connects, or whenever a connection is torn down, the connection unit updates a list of connected devices. This list is made available to the button rules unit, which re-computes the relationship between buttons and remote nodes.
The Connection Table 9014 is a local table managed by the connection software 907. For each active connection, a table entry includes serial number information, a send buffer and a receive buffer, and timer information to manage retries. Device information, gleaned from the “hello” message, is also stored within the connection table 9014.
The initialization function 901 is called during reset. It clears connection data structures and creates a connection entry in Connection Table 9014 for the “broadcast address.” This entry has a fixed node address of 0x00. The caller passes a node address to this function. If the node is the Weapon Accessory Control System 1300, then this function calls the RF set node address function to program the Front End Circuit 802 to receive messages destined for this node. If the node is not Weapon Accessory Control System 1300 node, the caller passes 0. In this case, the initialization function creates an entry with address 0x01 for the purpose of communicating with the Weapon Accessory Control System 1300 node.
The “connect connect” function processes “hello” messages from other (remote) nodes. This function is normally used on the controller function. This function searches for a matching entry within the Connection Table 9014 based on device type, subtype, and serial number. A matching entry is reset, but its node address is re-used. (This scenario occurs when a node retries its hello message because the prior hello message was processed but the response was lost.) If no matching entry exists, this function finds an unused entry in the Connection Table 9014, and populates it with information from the hello message, marking the entry as “used.” The sequence numbers for the next transmit and receive serial numbers are set to the lowest serial number. Unless this function is re-using the node address from a matching entry, it assigns a new node address, confirming that the new address is not in use within other Connection Table 9014 entries.
This function returns the node address to the caller. If no connect entry is available, this function returns 0 to the caller. For a nonzero response, the caller normally sends a “hello response” message to the initiating node.
This function implements the main state machinery for the Serial Peripheral Interface protocol. The connect poll function is called from the main loop 902 for each loop iteration. The poll function is divided into two phases. The first phase performs the following processing:
The second phase performs transmit processing. For each active connection in the Connection Table 9014, the second phase performs the following processing:
The connect poll function returns a status indicating whether or not any message activity has occurred. The main loop 902 uses this information to determine when it is appropriate to transition to an idle state.
The connect send functions send protocolled or unprotocolled messages to another node. These functions check the message length and validate that the destination address is either a broadcast address or the address of a connected node. If the transmit buffer within the connect data structure is empty, these functions copy the message data into the buffer and mark the buffer “full.” The protocolled message send function also assigns the next serial number to the message. Subsequent calls to the Connect Poll function transmits the pending message. Connect Poll retries protocolled messages until an acknowledge is received or until the maximum number of retries has been reached.
Connect Sort is an internal function, called whenever a device connects or disconnects (indicated by excessive retries). The connect sort function creates a sorted list of connected devices; the list is sorted in ascending order by device type, subtype, and serial number. After sorting the list, this function calls the button rule reset function, which determines the mapping of buttons to target devices.
Protocolled messages use a sliding window protocol having a window length of one message. Once a connection is established, connected nodes obey a strict set of rules for sending and receiving messages:
The Powered Rail 24 is a single bus, where multiple units can transmit data at any time. This invites the possibility of a collision, where multiple units transmit at the same time. This will destroy the integrity of the packets from both senders, and no receivers will see a resulting packet with a good CRC. In order to avoid collisions, the software resident in the Powered Control Modules 700 employs the following safeguards:
The Button Rules Table 9013 is a static table used by the Weapon Accessory Control System 1300 node. This table determines the power-consuming accessories to which messages are sent when a button event occurs. This table contains multiple rows: each entry has a list of power-consuming accessories in ascending order. When a power-consuming accessory is attached or removed, the Weapon Accessory Control System 1300 node updates the Device Types Table 9012, and then scans the Button Rules Table 9013 for an entry matching the new configuration. Therefore, the Button Rules Table 9013 is searched only when a power-consuming accessory is added to or removed from the Powered Rail 24.
An entry in the Button Rules Table 9013 looks like this:
The “type” is a 16-bit value indicating, for example, a flashlight device 8. The “rules” field is a 4-byte entry; each position in the 4-byte string corresponds to a button. When a button event occurs, the control software examines the entry in Button Rules Table 9013 that was selected when a power-consuming accessory was last attached to or removed from the Powered Rail 24. The software finds the rule for the corresponding button. The entry is an index into the Device Table 9012. Therefore, the index tells the software that the button should be routed to the nth entry in the Devices Table 9012: for example, button 2 may be routed to the 3rd entry in the array, which may be an optical device 7.
Since the types array in the Button Rules 9013 entry matches the Device Types Table 9012, the software uses the address within the Device Types Table 9012 in order to determine the destination address of the flashlight 8. The software then constructs and sends a message reporting the button press event. A type of “0” indicates no power-consuming accessory is connected. A rule value of “x” is a don't care value. The software described as an example herein supports three types of devices: handgrip, flashlight, and optics. Therefore, example entries are:
Before sending a button event message to a power-consuming accessory, the Weapon Accessory Control System 1300 node translates the physical button number to a virtual button number. This power-consuming accessory needing two buttons receives messages indicating that the first and second buttons were pressed, even if the Weapon Accessory Control System 1300 node assigned buttons three and four to the power-consuming accessory. In this case, button three is the “first” button pertaining to the power-consuming accessory, and button four is the “second” button pertaining to the power-consuming accessory.
Each Powered Control Module 700 maintains a table containing connection information. The Weapon Accessory Control System 1300 node has connections to and from all power-consuming accessories. Any power-consuming accessory has a connection to and from the Weapon Accessory Control System 1300 node. For some power-consuming accessories, the Powered Control Module 700 software may also establish connections to other power-consuming accessories (peer-to-peer connections). An entry in the connection table has the following information:
There has been described a Weapon Accessory Control System. It should be understood that the particular embodiments shown in the drawings and described within this specification are for purposes of example and should not be construed to limit the invention, which is described in the claims below. Further, it is evident that those skilled in the art may make numerous uses and modifications of the specific embodiment described without departing from the inventive concepts. Equivalent structures and processes may be substituted for the various structures and processes described; the subprocesses of the inventive method may, in some instances, be performed in a different order; or a variety of different materials and elements may be used. Consequently, the invention is to be construed as embracing each and every novel feature and novel combination of features present in and/or possessed by the apparatus and methods described.
This application is sponsored by the US Department of Defense under Contract Numbers W15QKN-08-C-0072 and W15QKN-09-C-0045.