Patent Description:
This disclosure relates to surface to downhole wireless communication.

Downhole communication involves communication between surface equipment disposed at or above a surface of the wellbore and downhole equipment disposed within the wellbore. For example, a signal can be transmitted from surface equipment to downhole equipment. For example, a signal can be transmitted from downhole equipment to surface equipment. The communication can be completed via a wired connection (for example, a wireline) or via a wireless connection. Downhole communication can also involve communication between two different equipment located downhole. Downhole communication can allow for safe and efficient well operations.

<CIT> describes perturbation signaling systems and methods for use in a downhole well. Such systems can include a downhole tool configured to hang from a wellbore anchoring mechanism. The tool can have or associate with an energy harvesting system, a power management system, a sensing system, and a wireless communication system. A turbine generator can encode signals into flowing fluid through electric load and related changes in hydraulic energy, transmitting information through the fluid. A receiver station positioned at another well location can decode and or relay the signals. Signals can bypass impediments such as noise zones by inducing signals in adjacent parallel well environments such as an annulus. The receiver station can accumulate energy from repeated redundant signaling over time to enhance communication and signal resolution. An additional wireless communication system can receive and/or relay data to a remote location.

<CIT> describes a digital telemetry system which can be calibrated to improve data communication. A receiver can receive a modulated signal with a predetermined sequence of transmitted symbols. A processing device can be communicatively coupled to the receiver for jointly performing carrier phase synchronization and symbol-timing recovery on the modulated signal to determine a corrective phase offset and a corrective timing offset. The receiver can be calibrated to use the corrective phase offset and the corrective timing offset for demodulating a subsequently modulated signal. In additional or alternative aspects, a demodulator can demodulate the modulated signal and determine an amount of interference introduced to the modulated signal. A transmitter can transmit data based on the amount of interference to a modem that transmitted the modulated signal for use by the modem to dynamically adjust hit allocation of the subsequently modulated signal.

<CIT> describes a downhole communication system and method for communicating between a downhole location within a wellbore and a surface location. The system preferably comprises a first and second telemetry module, a downhole tool, and an interface electrically connecting the downhole tool to the first and second telemetry modules. The first telemetry module is connected to a string and positioned downhole within the wellbore, and configured to receive communication signals via acoustic propagation or low frequency electromagnetic transmission. The second telemetry module is connected to the string and positioned downhole within the wellbore, and configured to receive communication signals via fluid pressure pulse commands. The downhole tool is operatively connected to the string. And the interface is adapted to selectively relay digital communication signals between the downhole tool and at least one of the first and second telemetry modules.

<CIT> describes a wireless communications system for a downhole drilling operation comprises surface communications equipment and a downhole telemetry tool. The surface communications equipment comprises a surface EM communications module with an EM downlink transmitter configured to transmit an EM downlink transmission at a frequency between <NUM> and <NUM>. The downhole telemetry tool is mountable to a drill string and has a downhole EM communications unit with an EM downlink receiver configured to receive the EM downlink transmission. The downhole EM communications unit can further comprise an EM uplink transmitter configured to transmit an EM uplink transmission at a frequency greater than <NUM>, in which case the surface EM communications module further comprises an EM uplink receiver configured to receive the EM uplink transmission.

The invention is defined by independent method claim <NUM> and independent system claim <NUM>. Other aspects of the invention are defined by the dependent claims. This disclosure describes technologies relating to downhole wireless communication. Certain aspects of the subject matter described can be implemented as a method (for example, a computer-implemented method). A signal wirelessly transmitted at a first frequency from a downhole controller disposed within a wellbore is received at a surface location. The received signal is demodulated to a demodulated digital value. The demodulated value is added to an end of a buffer string. The buffer string is processed to determine whether the buffer string contains a message that is valid. In response to determining that the buffer string contains the message that is valid, the message is decoded. In claimed implementations, processing the buffer string to determine whether the buffer string contains a message that is valid includes extracting a cyclic redundancy check field string and an auxiliary field string from the buffer string. In some implementations, processing the buffer string to determine whether the buffer string contains a message that is valid includes determining that the auxiliary field string translates to a first valid state of a plurality of valid states.

This, and other aspects, can include one or more of the following features.

In some implementations, a command signal is wirelessly transmitted at a second frequency different from the first frequency to the downhole controller to adjust a state of the downhole controller.

In some implementations, processing the buffer string to determine whether the buffer string contains a message that is valid includes determining a respective, predetermined bit string length associated with the first valid state in response to determining that the auxiliary field string translates to the first valid state. In some implementations, processing the buffer string to determine whether the buffer string contains a message that is valid includes calculating a checksum of a portion of the buffer string having the respective, predetermined bit string length associated with the first valid state in response to determining the respective, predetermined bit string length associated with the first valid state. In some implementations, processing the buffer string to determine whether the buffer string contains a message that is valid includes determining that the calculated checksum matches the cyclic redundancy check field string.

In some implementations, decoding the message includes, in response to determining that the calculated checksum matches the cyclic redundancy check field string, decoding the portion of the buffer string into the message. In some implementations, the message is stored in a storage medium, and the buffer string is emptied in response to decoding the message. In some implementations, the message is displayed at a surface location.

In some implementations, at least one of the plurality of valid states is a RUN IN HOLE state associated with a predetermined bit string length of <NUM> bits. In some implementations, at least one of the plurality of valid states is a TRACTOR state associated with a predetermined bit string length of <NUM> bits. In some implementations, at least one of the plurality of valid states is a CIRCULATE state associated with a predetermined bit string length of <NUM> bits.

Certain aspects of the subject matter described can be implemented as a system. The system includes a downhole controller and a surface controller. The downhole controller is configured to be disposed within a wellbore. The downhole controller includes a downhole processor and a downhole computer-readable storage medium coupled to the downhole processor. The downhole computer-readable storage medium stores programming instructions for execution by the downhole processor. The programming instructions instruct the downhole processor to perform operations including wirelessly transmitting, at a first frequency, a signal representing a state of the downhole controller. The surface controller is communicatively coupled to the downhole controller. The surface controller includes a surface processor and a surface computer-readable storage medium coupled to the surface processor. The surface computer-readable storage medium stores programming instructions for execution by the surface processor. The programming instructions instruct the surface processor to perform operations including receiving the signal from the downhole controller, demodulating the signal to a demodulated digital value, appending the demodulated digital value to a buffer string, processing the buffer string to determine whether the buffer string contains a message that is valid, and decoding the message in response to determining that the buffer string contains the message that is valid. In claimed implementations, processing the buffer string to determine whether the buffer string contains a message that is valid includes extracting a cyclic redundancy check field string and an auxiliary field string from the buffer string. In some implementations, processing the buffer string to determine whether the buffer string contains a message that is valid includes determining that the auxiliary field string translates to a first valid state of a plurality of valid states.

In some implementations, the programming instructions instruct the surface processor to perform operations including wirelessly transmitting, at a second frequency different from the first frequency, a command signal to the downhole controller to adjust the state of the downhole controller in response to determining that the buffer string contains the message that is valid.

In some implementations, the programming instructions stored by the surface computer-readable storage medium instructs the surface processor to perform operations comprising decoding the message in response to determining that the buffer string contains the message that is valid. In some implementations, decoding the message includes, in response to determining that the calculated checksum matches the cyclic redundancy check field string, decoding the portion of the buffer string into the message.

In some implementations, the programming instructions stored by the surface computer-readable storage medium instructs the surface processor to perform operations including storing the message in the surface computer-readable storage medium in response to decoding the message, displaying the message at a surface location, and/or emptying the buffer string.

Certain aspects of the subject matter described can be implemented as a system. The system includes a bottomhole assembly and a surface controller. The bottomhole assembly is configured to be disposed within a wellbore. The bottomhole assembly includes a downhole controller. The downhole controller includes a downhole processor and a downhole computer-readable storage medium coupled to the downhole processor. The downhole computer-readable storage medium stores programming instructions for execution by the downhole processor. The programming instructions instruct the downhole processor to perform operations including wirelessly transmitting, at a first frequency, a signal representing a state of the downhole controller and adjusting the state of the bottomhole assembly in response to receiving a command signal. The surface controller is communicatively coupled to the downhole controller. The surface controller includes a surface processor and a surface computer-readable storage medium coupled to the surface processor. The surface computer-readable storage medium stores programming instructions for execution by the surface processor. The programming instructions instruct the surface processor to perform operations including receiving the signal from the downhole controller, demodulating the signal to a demodulated digital value, appending the demodulated digital value to a buffer string, processing the buffer string to determine whether the buffer string contains a message that is valid, and decoding the message in response to determining that the buffer string contains the message that is valid.

In some implementations, processing the buffer string to determine whether the buffer string contains a message that is valid includes extracting a cyclic redundancy check field string and an auxiliary field string from the buffer string. In some implementations, processing the buffer string to determine whether the buffer string contains a message that is valid includes determining that the auxiliary field string translates to a first valid state of a plurality of valid states. In some implementations, processing the buffer string to determine whether the buffer string contains a message that is valid includes determining a respective, predetermined bit string length associated with the first valid state in response to determining that the auxiliary field string translates to the first valid state. In some implementations, processing the buffer string to determine whether the buffer string contains a message that is valid includes calculating a checksum of a portion of the buffer string having the respective, predetermined bit string length associated with the first valid state in response to determining the respective, predetermined bit string length associated with the first valid state. In some implementations, processing the buffer string to determine whether the buffer string contains a message that is valid includes determining that the calculated checksum matches the cyclic redundancy check field string.

In some implementations, the programming instructions stored by the surface computer-readable storage medium instructs the surface processor to perform operations including, in response to determining that the calculated checksum matches the cyclic redundancy check field string, decoding the portion of the buffer string into the message.

In some implementations, the programming instructions stored by the surface computer-readable storage medium instructs the surface processor to perform operations including wirelessly transmitting, at a second frequency different from the first frequency, the command signal to the downhole controller to control the bottomhole assembly in response to determining that the buffer string contains the message that is valid.

The details of one or more implementations of the subject matter of this disclosure are set forth in the accompanying drawings and the description.

This disclosure describes downhole wireless communication. Some well operations, such as well intervention, require data (sometimes in the form of command signals) to be communicated downhole to a tool string disposed within a wellbore. Some examples of methods of such downhole communication include the use of a wired connection, pressure of flow fluctuations in a circulation fluid, and pulling or pushing of coiled tubing. Wireless communication can be preferred in some cases, such as acid stimulation in multilateral wells. The systems and methods described in this disclosure include a surface controller and a downhole controller that communicate wirelessly with each other. The surface and downhole controllers operate at different frequencies to establish a duplex communication link. The downhole controller actively transmits signals to the surface controller, while the surface controller normally operates at an idle (waiting) state until it receives a valid message from the downhole controller. In response to receiving a valid message from the downhole controller, the surface controller transmits a command signal to the downhole controller to adjust a state of the downhole controller to perform a well operation, such as running a tool in hole, circulate fluid in a well, or actuating a tractor in the well.

The subject matter described in this disclosure can be implemented in particular implementations, so as to realize one or more of the following advantages. The systems and methods described are non-intrusive and do not negatively interfere with well operations, such as well intervention. The systems and methods described can be implemented to perform wireless communication from surface equipment to downhole equipment over long distances, for example, distances of greater than <NUM> (<NUM>,<NUM> feet). The systems and methods described can be implemented to optimize the available bandwidth for wireless communication between downhole and surface equipment. In well intervention operations, various information may be needed at the surface to safely and successfully perform a job, depending on the steps in the job program. In conventional downhole communication schemes (for example, wired communication) sensor data would be transmitted continuously at a desired communication rate. However, as wireless communication methods can be inherently slower, it can be desirable to be more selective on what data is transmitted in order to achieve the desired communication rate. By implementing various downhole states, such as run in hole (RIH), TRACTOR, and CIRCULATE, communication bandwidth and speed can be optimized. The systems and methods described can be implemented to continuously demodulate the messages at the surface for all known valid states to be able to determine the current state of downhole equipment.

<FIG> depicts an example well <NUM> constructed in accordance with the concepts herein. The well <NUM> extends from the surface <NUM> through the Earth <NUM> to one more subterranean zones of interest <NUM> (one shown). The well <NUM> enables access to the subterranean zones of interest <NUM> to allow recovery (that is, production) of fluids to the surface <NUM> (represented by flow arrows in <FIG>) and, in some implementations, additionally or alternatively allows fluids to be placed in the Earth <NUM>. In some implementations, the subterranean zone <NUM> is a formation within the Earth <NUM> defining a reservoir, but in other instances, the zone <NUM> can be multiple formations or a portion of a formation. The subterranean zone can include, for example, a formation, a portion of a formation, or multiple formations in a hydrocarbon-bearing reservoir from which recovery operations can be practiced to recover trapped hydrocarbons. In some implementations, the subterranean zone includes an underground formation of naturally fractured or porous rock containing hydrocarbons (for example, oil, gas, or both). In some implementations, the well can intersect other types of formations, including reservoirs that are not naturally fractured. For simplicity's sake, the well <NUM> is shown as a vertical well, but in other instances, the well <NUM> can be a deviated well with a wellbore deviated from vertical (for example, horizontal or slanted), the well <NUM> can include multiple bores forming a multilateral well (that is, a well having multiple lateral wells branching off another well or wells), or both.

In some implementations, the well <NUM> is a gas well that is used in producing hydrocarbon gas (such as natural gas) from the subterranean zones of interest <NUM> to the surface <NUM>. While termed a "gas well," the well need not produce only dry gas, and may incidentally or in much smaller quantities, produce liquid including oil, water, or both. In some implementations, the well <NUM> is an oil well that is used in producing hydrocarbon liquid (such as crude oil) from the subterranean zones of interest <NUM> to the surface <NUM>. While termed an "oil well," the well not need produce only hydrocarbon liquid, and may incidentally or in much smaller quantities, produce gas, water, or both. In some implementations, the production from the well <NUM> can be multiphase in any ratio. In some implementations, the production from the well <NUM> can produce mostly or entirely liquid at certain times and mostly or entirely gas at other times. For example, in certain types of wells it is common to produce water for a period of time to gain access to the gas in the subterranean zone. The concepts herein, though, are not limited in applicability to gas wells, oil wells, or even production wells, and could be used in wells for producing other gas or liquid resources or could be used in injection wells, disposal wells, or other types of wells used in placing fluids into the Earth.

As shown in <FIG>, system <NUM> can be implemented to establish downhole wireless communication. The system <NUM> includes a surface controller <NUM> and a downhole controller <NUM> disposed within the well <NUM>. The surface controller <NUM> and the downhole controller <NUM> communicate wirelessly with each other. The system <NUM> is described in more detail later. The wellbore of the well <NUM> is typically, although not necessarily, cylindrical. All or a portion of the wellbore is lined with a tubing, such as casing <NUM>. The casing <NUM> connects with a wellhead at the surface <NUM> and extends downhole into the wellbore. The casing <NUM> operates to isolate the bore of the well <NUM>, defined in the cased portion of the well <NUM> by the inner bore <NUM> of the casing <NUM>, from the surrounding Earth <NUM>. The casing <NUM> can be formed of a single continuous tubing or multiple lengths of tubing joined (for example, threadedly) end-to-end. In <FIG>, the casing <NUM> is perforated in the subterranean zone of interest <NUM> to allow fluid communication between the subterranean zone of interest <NUM> and the bore <NUM> of the casing <NUM>. In some implementations, the casing <NUM> is omitted or ceases in the region of the subterranean zone of interest <NUM>. This portion of the well <NUM> without casing is often referred to as "open hole.

The wellhead defines an attachment point for other equipment to be attached to the well <NUM>. For example, <FIG> shows well <NUM> being produced with a Christmas tree attached to the wellhead. The Christmas tree includes valves used to regulate flow into or out of the well <NUM>. In particular, casing <NUM> is commercially produced in a number of common sizes specified by the American Petroleum Institute (the "API"), including <NUM> (<NUM>-<NUM>/<NUM>), <NUM> (<NUM>), <NUM> (<NUM>-<NUM>/<NUM>), <NUM> (<NUM>), <NUM> (<NUM>-<NUM>/<NUM>), <NUM> (<NUM>), <NUM> (<NUM>-<NUM>/<NUM>), <NUM> (<NUM>-<NUM>/<NUM>), <NUM> (<NUM>-<NUM>/<NUM>), <NUM> (<NUM>-<NUM>/<NUM>), <NUM> (<NUM>-<NUM>/<NUM>), <NUM> (<NUM>-<NUM>/<NUM>), <NUM> (<NUM>-<NUM>/<NUM>), <NUM> (<NUM>-<NUM>/<NUM>), <NUM> (<NUM>-<NUM>/<NUM>), <NUM> (<NUM>-<NUM>/<NUM>), <NUM> (<NUM>-<NUM>/<NUM>), <NUM> (<NUM>-<NUM>/<NUM>), <NUM> (<NUM>-<NUM>/<NUM>), <NUM> (<NUM>), <NUM> (<NUM>-<NUM>/<NUM>), and <NUM> (<NUM> inches), and the API specifies internal diameters for each casing size.

<FIG> is a schematic diagram of an example system <NUM> for wireless communication between surface and downhole equipment. The system <NUM> can be implemented in relation to the well <NUM>. In some implementations, the system <NUM> includes a bottomhole assembly <NUM> which includes the downhole controller <NUM>. The system <NUM> includes the surface controller <NUM> that is communicatively coupled to the downhole controller <NUM>. In some implementations, the surface controller <NUM> is connected to the downhole controller <NUM> by a coiled tubing. In some implementations, the surface controller <NUM> and the downhole controller <NUM> communicate with each other, for example, via low frequency electromagnetic telemetry or pressure pulses (such as fluidic communication).

The surface controller <NUM> includes a surface processor and a surface computer-readable storage medium coupled to the surface processor. The surface computer-readable storage medium stores programming instructions for execution by the surface processor, and the programming instructions instruct the surface processor to perform operations. In some implementations, the surface controller <NUM> is coupled to a display <NUM> at a surface location. The downhole controller <NUM> can be disposed in a wellbore (such as the wellbore of well <NUM>) and includes a downhole processor and a downhole computer-readable storage medium coupled to the downhole processor. The downhole computer-readable storage medium stores programming instructions for execution by the downhole processor, and the programming instructions instruct the downhole processor to perform operations. An example of the surface controller <NUM> and the downhole controller <NUM> is provided in <FIG> and is described in more detail later.

<FIG> is a flow chart of an example method <NUM> for wireless communication between surface and downhole equipment. The method <NUM> can be implemented, for example, by the system <NUM>. At step <NUM>, a status signal wirelessly transmitted at a first frequency from a downhole controller (such as the downhole controller <NUM>) disposed within a wellbore (such as that of well <NUM>) is received at a surface location (for example, by the surface controller <NUM> located at the surface <NUM>). In some implementations, the first frequency is in a range of from about <NUM> hertz (Hz) to about <NUM>.

At step <NUM>, the status signal (received at step <NUM>) is demodulated to a demodulated digital value. For example, at step <NUM>, the status signal is demodulated to a bit (<NUM> or <NUM>).

At step <NUM>, the demodulated value by is added to an end of a buffer string.

At step <NUM>, the buffer string is processed to determine whether the buffer string contains a message that is valid. In some implementations, processing the buffer string at step <NUM> includes extracting a cyclic redundancy check (CRC) field string and an auxiliary field string from the buffer string. The cyclic redundancy check field string and the auxiliary field string each are associated with a known, predetermined bit string lengths. In some implementations, the known, predetermined bit string lengths associated with the cyclic redundancy check field string and the auxiliary field string are the same bit string length. In some implementations, the known, predetermined bit string lengths associated with the cyclic redundancy check field string and the auxiliary field string are different bit string lengths. For example, the cyclic redundancy check field string is an <NUM>-bit CRC associated with a first, predetermined bit string length of <NUM> bits, and the auxiliary field string is associated with a second, predetermined bit string length of <NUM> bits. The first, predetermined bit string length (associated with the cyclic redundancy check field string) determines the bit string length of the checksum, which can be converted to a decimal value. The cyclic redundancy check field string can be any typical CRC, such as an <NUM>-bit CRC, <NUM>-bit CRC, <NUM>-bit CRC, or <NUM>-bit CRC. A CRC is called an n-bit CRC when its checksum value is n-bits (first, predetermined bit string length).

In some implementations, a remaining portion of the buffer string (excluding the cyclic redundancy check field string and the auxiliary field string) is considered the data string. In some implementations, the buffer string comprises, in order from right to left, the cyclic redundancy check field string, the auxiliary field string, and the data string. For example, for a buffer string that is <NUM> bits in length, starting from the right: the first <NUM> bits are attributed to the cyclic redundancy check field string, the subsequent <NUM> bits are attributed to the auxiliary field string, and the remaining <NUM> bits are attributed to the data string. In some implementations, the buffer string comprises, in order from right to left, the cyclic redundancy check field string, the data string, and the auxiliary field string. For example, for a buffer string that is <NUM> bits in length, starting from the right: the first <NUM> bits are attributed to the cyclic redundancy check field string, the subsequent <NUM> bits are attributed to the data string, and the remaining <NUM> bits are attributed to the auxiliary field string.

In some implementations, processing the buffer string at step <NUM> includes determining that the auxiliary field string translates to one of multiple valid states. The second, predetermined bit string length (associated with the auxiliary field string) determines the total number of states that can be represented by the auxiliary field string. For example, if the second, predetermined bit string length is <NUM> bits, then the auxiliary field string can be converted to a decimal (integer) value in a range of from <NUM> to <NUM>, meaning there are a total of <NUM> possible states that can be represented by the auxiliary field string. In some cases, only a portion of the total possible states are considered "valid" states while the remaining portion are considered "invalid" states. For example, auxiliary field strings that convert to decimal values of <NUM>, <NUM>, <NUM>, and <NUM> are valid states while the remaining states (that convert to <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, and <NUM>) are invalid states. In some implementations, each of the valid states is associated with a respective, predetermined bit string length. In some implementations, the predetermined bit string lengths associated with the valid states are all different, such that each of the valid states can be uniquely identified. For example, one of the valid states is the auxiliary field string converted to a decimal value of <NUM> for a RUN IN HOLE state associated with a predetermined bit string length of <NUM> bits. For example, another one of the valid states is the auxiliary field string converted to a decimal value of <NUM> for a TRACTOR state associated with a predetermined bit string length of <NUM> bits. For example, another one of the valid states is the auxiliary field string converted to a decimal value of <NUM> for a CIRCULATE state associated with a predetermined bit string length of <NUM> bits. For example, another one of the valid states is the auxiliary field string converted to a decimal value of <NUM> for an AUX state associated with a predetermined bit string length of <NUM> bits. Each of the valid states (for example, RUN IN HOLE) have a unique structure of bits, whereas a main downhole parameter of interest, for example, can be a tension and compression measurement on a tool string of a downhole portion of the system <NUM> (for example, the bottomhole assembly <NUM>). In some implementations, the target resolution of the measurement is <NUM> bits, resulting in a total bit string length (including the cyclic redundancy check field string of <NUM> bits and the auxiliary field string of <NUM> bits) is <NUM> bits. The valid states can include additional states that are typically encountered in well operations. Some additional examples of valid states include SETTING for setting downhole equipment, RELEASING for releasing downhole equipment, SHIFT for sliding sleeve valves, FRAC for fracturing operations, LOGGING for logging reservoir conditions, PERFORATING for perforating casing and/or tubing for enabling fluid communication, and CLEAN OUT for cleaning out of hole. An example of the received buffer string and some examples of the buffer string identified as having valid states are shown in <FIG>. As shown in <FIG>, the message can include downhole measurement data, such as pressure data, temperature data, tension data, and compression data. The CT pressure can be a pressure measured within a coiled tubing. The BH pressure can be a pressure measured within a borehole of a well (for example, a bottomhole pressure of the well <NUM>).

Referring back to <FIG>, in some implementations, processing the buffer string at step <NUM> includes, in response to determining that the auxiliary field string translates to one of the valid states, determining the predetermined bit string length associated with the respective valid state. For example, processing the buffer string at step <NUM> includes, in response to determining that the auxiliary field string translates to the TRATOR state, determining the predetermined bit string length of <NUM> bits associated with the TRACTOR state.

In some implementations, processing the buffer string at step <NUM> includes calculating a checksum of a portion of the buffer string having the predetermined bit string length of the respective valid state in response to determining the predetermined bit string length associated with the respective valid state. For example, processing the buffer string at step <NUM> includes, in response to determining the predetermined bit string length of <NUM> bits associated with the TRACTOR state, calculating a checksum of a portion of the buffer string (such as the data string) having the predetermined bit string length of <NUM> bits associated with the TRACTOR state.

In some implementations, processing the buffer string at step <NUM> includes determining that the calculated checksum matches the cyclic redundancy check field string. In some implementations, the downhole controller <NUM> takes a message payload (for example, the data string) as a number, performs a polynomic division on the number, converts a remainder resulting from the division to the cyclic redundancy check field string, and transmits the cyclic redundancy check field string along with the data string to the surface controller <NUM>. In some implementations, the surface controller <NUM> performs the same polynomic division on the information received from the downhole controller <NUM> and compares the remainder with the received cyclic redundancy check field string. If the remainder calculated by the surface controller <NUM> matches the decimal value of the cyclic redundancy check field string (transmitted from the downhole controller <NUM>), then the buffer string contains a valid message. If it is determined at step <NUM> that the buffer string contains a valid message, the method <NUM> proceeds to step <NUM>. If it is determined at step <NUM> that the buffer string does not contain a valid message, the method <NUM> cycles back to step <NUM>.

In response to determining that the buffer string contains a valid message at step <NUM>, the message is decoded at step <NUM>. For example, the message decoded at step <NUM> is a message representing the current state of the downhole system (for example, including the bottomhole assembly <NUM>) in relation to actuating a tractor, running a tool in hole, or circulating fluids in the wellbore. In some implementations, the decoded message is stored in a storage medium (for example, the storage medium of the surface controller <NUM>). In some implementations, the decoded message is displayed at a surface location. In some implementations, the buffer string is emptied in response to decoding the message at step <NUM>.

In some implementations, a command signal is wirelessly transmitted at a second frequency that is different from the first frequency to the downhole controller <NUM> to adjust a state of the downhole controller <NUM>. For example, the command signal is wirelessly transmitted at the second frequency by the surface controller <NUM> to the downhole controller <NUM>. In some implementations, the second frequency is in a range of from about <NUM> to about <NUM>. For example, the command signal instructs the downhole controller <NUM> to perform a downhole operation in relation to actuating a tractor, running a tool in hole, or circulating fluids in the wellbore, depending on the decoded message including one of the valid states. For example, the command signal instructs the downhole controller <NUM> to change a state of the downhole controller <NUM> in relation to actuating a tractor, running a tool in hole, or circulating fluids in the wellbore, depending on the decoded message. In some implementations, steps <NUM>, <NUM>, <NUM>, <NUM>, and <NUM> are implemented by the surface controller <NUM>. Some of the steps (for example, step <NUM>) can involve interaction with the downhole controller <NUM>.

<FIG> is a flow chart of an example method <NUM> for wireless communication between surface and downhole equipment. The method <NUM> can be implemented, for example, by the system <NUM>. At step <NUM> a bit (for example, transmitted by the downhole controller <NUM> at a first frequency) is received (for example, by the surface controller <NUM>). In some implementations, step <NUM> of method <NUM> corresponds to steps <NUM> and <NUM> of method <NUM>.

At step <NUM>, the bit received at step <NUM> is added to an end of a buffer. In some implementations, step <NUM> of method <NUM> corresponds to step <NUM> of method <NUM>.

At step <NUM>, an auxiliary field string and a cyclic redundancy check field string are extracted from the buffer. At step <NUM>, it is determined whether the auxiliary field string translates to a valid state. If the auxiliary field string translates to a valid state at step <NUM>, the method <NUM> proceeds to step <NUM>, where the bit string length associated with the valid state (determined at step <NUM>) is determined. If the auxiliary field string does not translate to a valid state at step <NUM>, the method <NUM> proceeds to step <NUM>, where the method <NUM> cycles back to step <NUM>. At step <NUM>, a checksum value is calculated from a portion of the bit string length in the buffer determined at step <NUM> following the auxiliary field string. At step <NUM>, it is determined whether the cyclic redundancy check field string matches the checksum value calculated at step <NUM>. If the cyclic redundancy check field string matches the checksum value (calculated at step <NUM>) at step <NUM>, the method <NUM> proceeds to step <NUM>, where the message is processed from the portion of the bit string length in the buffer determined at step <NUM> following the auxiliary field string. In some implementations, steps <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, and <NUM> correspond to steps <NUM> and <NUM> of method <NUM>.

If the cyclic redundancy check field string does not match the checksum value (calculated at step <NUM>) at step <NUM>, the method <NUM> proceeds to step <NUM>, where the method <NUM> cycles back to step <NUM>. In some implementations, steps <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, and <NUM> are implemented by the surface controller <NUM>. Some of the steps (for example, steps <NUM> and <NUM>) involve interaction with the downhole controller <NUM>. In some implementations, step(s) of method <NUM> can be combined with step(s) of method <NUM>. For example, the system <NUM> (surface controller <NUM> and downhole controller <NUM> communicating with each other) can implement any combination of steps of method <NUM> and steps of method <NUM>.

<FIG> is a block diagram of an example controller <NUM> used to provide computational functionalities associated with described algorithms, methods, functions, processes, flows, and procedures, as described in this specification, according to an implementation. For example, each of the surface controller <NUM> and the downhole controller <NUM> can be implementations of the controller <NUM>. The illustrated controller <NUM> is intended to encompass any computing device such as a server, desktop computer, laptop/notebook computer, one or more processors within these devices, or any other processing device, including physical or virtual instances (or both) of the computing device. Additionally, the controller <NUM> can include a computer that includes an input device, such as a keypad, keyboard, touch screen, or other device that can accept user information, and an output device that conveys information associated with the operation of the computer <NUM>, including digital data, visual, audio information, or a combination of information.

The controller <NUM> includes a processor <NUM>. Although illustrated as a single processor <NUM> in <FIG>, two or more processors may be used according to particular needs, desires, or particular implementations of the controller <NUM>. Generally, the processor <NUM> executes instructions and manipulates data to perform the operations of the controller <NUM> and any algorithms, methods, functions, processes, flows, and procedures as described in this specification.

The controller <NUM> can also include a database <NUM> that can hold data for the controller <NUM> or other components (or a combination of both) that can be connected to the network. Although illustrated as a single database <NUM> in <FIG>, two or more databases (of the same or combination of types) can be used according to particular needs, desires, or particular implementations of the controller <NUM> and the described functionality. While database <NUM> is illustrated as an integral component of the controller <NUM>, database <NUM> can be external to the controller <NUM>.

The controller <NUM> includes a memory <NUM> that can hold data for the controller <NUM> or other components (or a combination of both) that can be connected to the network. Although illustrated as a single memory <NUM> in <FIG>, two or more memories <NUM> (of the same or combination of types) can be used according to particular needs, desires, or particular implementations of the controller <NUM> and the described functionality. While memory <NUM> is illustrated as an integral component of the controller <NUM>, memory <NUM> can be external to the controller <NUM>. The memory <NUM> can be a transitory or non-transitory storage medium.

The memory <NUM> stores controller-readable instructions executable by the processor <NUM> that, when executed, cause the processor <NUM> to perform operations, such as processing the buffer string at step <NUM> of method <NUM> to determine whether the buffer string contains a message that is valid. The controller <NUM> can also include a power supply <NUM>. The power supply <NUM> can be hard-wired. There may be any number of controllers <NUM> associated with, or external to, a computer system containing controller <NUM>, each controller <NUM> communicating over the network. Further, the term "client," "user," "operator," and other appropriate terminology may be used interchangeably, as appropriate, without departing from this specification. Moreover, this specification contemplates that many users may use one controller <NUM>, or that one user may use multiple controllers <NUM>.

While this specification contains many specific implementation details, these should not be construed as limitations on the scope of what may be claimed, but rather as descriptions of features that may be specific to particular implementations. Certain features that are described in this specification in the context of separate implementations can also be implemented, in combination, in a single implementation. Conversely, various features that are described in the context of a single implementation can also be implemented in multiple implementations, separately, or in any sub-combination. Moreover, although previously described features may be described as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can, in some cases, be excised from the combination, and the claimed combination may be directed to a sub-combination or variation of a sub-combination.

As used in this disclosure, the terms "a," "an," or "the" are used to include one or more than one unless the context clearly dictates otherwise. The term "or" is used to refer to a nonexclusive "or" unless otherwise indicated. The statement "at least one of A and B" has the same meaning as "A, B, or A and B. " In addition, it is to be understood that the phraseology or terminology employed in this disclosure, and not otherwise defined, is for the purpose of description only and not of limitation. Any use of section headings is intended to aid reading of the document and is not to be interpreted as limiting; information that is relevant to a section heading may occur within or outside of that particular section.

As used in this disclosure, the term "about" or "approximately" can allow for a degree of variability in a value or range, for example, within <NUM>%, within <NUM>%, or within <NUM>% of a stated value or of a stated limit of a range.

As used in this disclosure, the term "substantially" refers to a majority of, or mostly, as in at least about <NUM>%, <NUM>%, <NUM>%, <NUM>%, <NUM>%, <NUM>%, <NUM>%, <NUM>%, <NUM>%, <NUM>%, <NUM>%, <NUM>%, <NUM>%, or at least about <NUM>% or more.

Values expressed in a range format should be interpreted in a flexible manner to include not only the numerical values explicitly recited as the limits of the range, but also to include all the individual numerical values or sub-ranges encompassed within that range as if each numerical value and sub-range is explicitly recited. For example, a range of "<NUM>% to about <NUM>%" or "<NUM>% to <NUM>%" should be interpreted to include about <NUM>% to about <NUM>%, as well as the individual values (for example, <NUM>%, <NUM>%, <NUM>%, and <NUM>%) and the sub-ranges (for example, <NUM>% to <NUM>%, <NUM>% to <NUM>%, <NUM>% to <NUM>%) within the indicated range. The statement "X to Y" has the same meaning as "about X to about Y," unless indicated otherwise. Likewise, the statement "X, Y, or Z" has the same meaning as "about X, about Y, or about Z," unless indicated otherwise.

Moreover, the separation or integration of various system modules and components in the previously described implementations should not be understood as requiring such separation or integration in all implementations, and it should be understood that the described components and systems can generally be integrated together or packaged into multiple products.

Claim 1:
A method comprising:
receiving (<NUM>), at a surface location, a signal wirelessly transmitted at a first frequency from a downhole controller (<NUM>, <NUM>) disposed within a wellbore;
demodulating (<NUM>) the received signal to a demodulated digital value;
adding (<NUM>) the demodulated value to an end of a buffer string;
processing (<NUM>) the buffer string to determine whether the buffer string contains a message that is valid, wherein processing the buffer string to determine whether the buffer string contains a message that is valid comprises
extracting a cyclic redundancy check field string and an auxiliary field string from the buffer string,
determining that the auxiliary field string translates to a first valid state of a plurality of valid states, wherein the valid states are states of downhole equipment encountered in well operations,
in response to determining that the auxiliary field string translates to the first valid state, determining (<NUM>) a respective, predetermined bit string length associated with the first valid state,
in response to determining the respective, predetermined bit string length associated with the first valid state, calculating (<NUM>) a checksum of a portion of the buffer string having the respective, predetermined bit string length associated with the first valid state, and
determining (<NUM>) that the calculated checksum matches the cyclic redundancy check field string; and
in response to determining that the buffer string contains the message that is valid, decoding (<NUM>) the message.