Telemetry coding and surface detection for a mud pulser
09797242 · 2017-10-24
Assignee
Inventors
Cpc classification
H03M7/30
ELECTRICITY
International classification
E21B47/18
FIXED CONSTRUCTIONS
H03M7/30
ELECTRICITY
Abstract
A method for receiving an encoded integer includes acquiring a digitized waveform including a first plurality of pulses distributed among a second plurality of time slots, locating each of the pulses in the digitized waveform, computing a confidence value for each of the pulses, selecting a subset of the plurality of pulses, the subset including pulses having low confidence values computed, generating a set of unique waveforms corresponding to various combinations of the subset of pulses selected, computing a cross-correlation between each of the waveforms generated and the digitized waveform acquired, and selecting the waveform having the highest cross-correlation computed.
Claims
1. A method for receiving a mud pulse telemetry signal at a surface location, an encoded integer, the method comprising: (a) receiving an analog pressure waveform at the surface location; (b) digitizing the analog pressure waveform to obtain acquiring a digitized waveform including a first plurality of pulses distributed among a second plurality of time slots; (c) locating each of the pulses of the first plurality of pulses in the digitized waveform; (d) computing a confidence value for said each of the pulses of the first plurality of pulses; (e) selecting a subset of the first plurality of pulses, the subset including pulses having low confidence values computed in (d); (f) generating a set of unique waveforms from the digitized waveform, the set of unique waveforms corresponding to various combinations of the subset of the first plurality pulses selected in (e); (g) computing corresponding cross-correlations between each of the unique waveforms generated in (f) and the digitized waveform acquired in (b); and (h) selecting a second waveform of the unique waveforms generated in (f) having the highest cross-correlation computed in (g).
2. The method of claim 1, further comprising: (i) decoding the second waveform selected in (h).
3. The method of claim 1, wherein (d) further comprises computing C.sub.0.sup.i, C.sub.−1.sup.i, and C.sub.+1.sup.i for said each of the pulses of the first plurality of pulses, wherein C.sub.0.sup.i represents a confidence value for the i-th pulse located in the time slot in which it was detected, C.sub.−1.sup.i represents a confidence value for the i-th pulse offset one time slot earlier, and C.sub.+1.sup.i represents a confidence value for the i-th pulse offset one time slot later.
4. The method of claim 3, wherein (e) further comprises: (i) selecting a subset of the plurality of pulses having the lowest confidence values C.sub.0.sup.i; and (ii) further selecting an offset for said each pulse of the plurality of pulses selected in (i), the offset being −1 when C.sub.−1.sup.Si >C.sub.+1.sup.Si or +1 when C.sub.+1.sup.Si. >=C.sub.−1.sup.Si.
5. The method of claim 4, wherein the subset of the first plurality of pulses selected in (e) further includes S pulses and (f) further comprises generating a set of 2.sup.S unique waveforms.
6. The method of claim 3, wherein (e) further comprises selecting a predetermined number of pulses having the lowest confidence values C.sub.0.sup.i.
7. The method of claim 3, wherein (e) further comprises selecting a subset of the plurality of pulses having confidence values C.sub.0.sup.i less than a predetermined threshold.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) For a more complete understanding of the present invention, and the advantages thereof, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which:
(2)
(3)
(4)
(5)
(6)
(7)
(8)
DETAILED DESCRIPTION
(9)
(10) It will be understood by those of ordinary skill in the art that the deployment illustrated on
(11) Referring now to
(12) MWD/LWD data is encoded downhole (e.g., via a conventional downhole controller). A transmission device 50, such as a conventional electromechanical mud pulser, produces an acoustic pressure wave 85 (a “waveform” that includes the encoded data). This pressure wave 85 travels towards the surface at approximately the speed of sound (typically in the range of about 2000 to 4000 feet per second) through the downward traveling mud 83. It will be appreciated that the signal may also be transmitted through and received from the upward traveling mud flow 84 in the annulus 46.
(13) The transmitted pressure wave 85 may be received (detected) at transducer 87 and decoded and analyzed via signal processor 89 (for example a conventional data acquisition computer or DSP board). Substantially any suitable transducer arrangement may be utilized. For example, the use of a single transducer, as depicted on
(14) Methods in accordance with the present invention pertain to downhole encoding and surface decoding of the MWD/LWD data. Methods in accordance with the present invention also relate to windowing methodology for synchronizing the downhole encoder with the surface decoder and a matched filtering detection scheme for reconstructing the transmitted bit sequence. These methods are described in more detail below under appropriate headings.
(15) Turning now to
Fibonacci Encoding and Decoding
(16) As described above with respect to
F.sup.0(i)=F.sup.0(i−1)+F.sup.0(i−2) Equation 1
(17) where F.sup.0(i) represents the i-th element of the Fibonacci sequence such that i≧3 and F.sup.0(1)=1 and F.sup.0(2)=2. The novel Fibonacci derived sequences may be represented mathematically as follows:
F.sup.k(j)=F.sup.k(j−1)+F.sup.k−1(j) Equation 2
(18) where F.sup.k(j) represents the j-th element of the k-th order Fibonacci derived sequence such that j≧2 and k≧1 and F.sup.k(1)=1. As is evident from Equation 2, the higher order Fibonacci derived sequences may be thought of as being derived from the conventional Fibonacci sequence. For example, the first order Fibonacci derived sequence may be derived from the conventional Fibonacci sequence (the zero-th order sequence). The second order Fibonacci derived sequence may be derived from the first order sequence (which may be derived from the conventional sequence). And so on.
(19) The Fibonacci derived sequences may be represented in alternative mathematical form as follows:
F.sup.k(j)=F.sup.k(j−1)+F.sup.k(j−2)+2; k=1
F.sup.k(j)=F.sup.k(j−1)+F.sup.k(j−2)+B.sup.k−1(j); k>1 Equation 3
(20) where B represents an auxiliary arithmetic sequence given as follows
(21)
(22) where column B.sup.1 is an arithmetic sequence with constant 2 of order 1. Column B.sup.2 may be thought of as being an arithmetic sequence with constant 2 of order 2, since B.sup.2(j)−B.sup.2(j−1)=B.sup.1(j). Column B.sup.3 may be thought of as being an arithmetic sequence with constant 2 of order 3 since B.sup.3(j)−B.sup.3(j−1)=B.sup.2(j). And so on.
(23) The above defined Fibonacci sequence and Fibonacci derived sequences may be advantageously used in accordance with the present invention to encode any non-negative integer. Those of skill in the mathematical and signal processing arts will recognize that any non-negative integer x may be encoded using the conventional Fibonacci sequence (i.e., column F.sup.0 in
(24) Step (1): Initialize
(25) Step (2): Search F.sup.0 for the biggest element smaller than x (the i-th element where i=0 for x=0) and then set the (i+2)-th bit and the (i+1)-th bit of
(26) Step (3): Repeat the following steps until x=0: (a) search F.sup.0 for the biggest element smaller than x (the j-th element), (b) set the (j+1)-th bit of
(27) Step (4): Output bits from the least significant bit (LSB) to the most significant bit (MSB) of the encoded value.
(28) Such Fibonacci encoding is advantageous in that any non-negative integer may be encoded without the use of consecutive 1s. As a result, the string ‘11’ only appears at the end of an encoded integer and therefore serves as a separator between two consecutively encoded integers. To decode a bit sequence generated by Algorithm I, a controller merely searches for the next ‘11’ and decodes the bit stream between consecutive ‘11’ strings.
(29) While conventional Fibonacci encoding may provide for self-synchronization, it tends to be somewhat inefficient in encoding the large integer values that are commonly utilized to encode various MWD/LWD data. Given the severe bandwidth constraints of conventional mud pulse telemetry, efficiency improvements are desired.
(30) Non-negative integers (particularly large integers) may be more efficiently encoded in accordance with the present invention using the Fibonacci derived sequences (i.e., the higher order Fibonacci sequences described above) while still retaining the advantages of Fibonacci encoding. A suitable algorithm, in accordance with the present invention, for such derived Fibonacci encoding (also referred to herein as higher order Fibonacci encoding) may be given in Algorithm II as follows:
(31) Step (1): Initialize
(32) Step (2): Execute the following steps iteratively from F.sup.n to F.sup.1: (a) search in F.sup.k(1≦k≦n) for the biggest element smaller than x (the k.sub.i-th element where k.sub.i=0 for x=0), (b) set the (k.sub.i+k+2)-th bit of
(33) Step (3): Apply Algorithm 1 to the remainder of x after the completion of Step 2 and set these k.sub.1+2 least significant bits of
(34) Step (4): Output bits from the LSB to the MSB of the encoded value.
(35) The above-described derived Fibonacci encoding method in accordance with the present invention may be utilized to encode any non-negative integer for any given order: n≧1. Moreover, such derived Fibonacci encoding retains the self-synchronization feature of conventional Fibonacci encoding in which each integer is identified by the string ‘11’. However, unlike conventional Fibonacci encoding, the string ‘11’ is located in the middle of the encoded integer, between a first portion of the integer that is encoded in Step (2) and a second portion of the integer encoded in Step (3).
(36) With reference again to
(37) When n=4, the value 193,015 is selected from column F.sup.4 (row 18), the value 1424 is selected from column F.sup.3 (row 10), the value 72 is selected from column F.sup.2 (row 6), and the value 32 is selected from column F.sup.1 (row 6), leaving a remainder of 16. This results in the following bit stream: ‘1000000001000011’ for columns F.sup.4 through F.sup.1. The remaining 16 may then be encoded as ‘11001000’ via conventional Fibonacci encoding (selecting the values of 13 and 3 in rows 6 and 3 of column F.sup.0). Combining the results from columns F.sup.4 through F.sup.1 and column F.sup.0 yields: ‘100000000100001111001000’. In this example, the integer 194,559 is encoded using seven pulses distributed among 24 bits.
(38) When n=7, the value 109,357 is selected from column F.sup.7 (row 12), the value 50,779 is selected from column F.sup.6 (row 12), the value 22,596 is selected from column F.sup.5 (row 12), the value 9,638 is selected from column F.sup.4 (row 12), the value 1424 is selected from column F.sup.3 (row 10), the value 585 is selected from column F.sup.2 (row 10), the value 142 is selected from column F.sup.1 (row 9), leaving a remainder of 38. This results in the following bit stream: ‘1111001101’ for columns F.sup.7 through F.sup.1. The remaining 38 may then be encoded as ‘1100001010’ via conventional Fibonacci encoding (selecting the values of 34, 3, and 1 in rows 8, 3, and 1 of column F.sup.0). Combining the results from columns F.sup.7 through F.sup.1 and column F.sup.0 yields: ‘111100110101100001010’. Note that a single ‘0’ was introduced between these results since the value selected in F.sup.1 (142) is one row below the highest value selected in F.sup.0 (row 9 vs. row 8). In this example, the integer 194,559 is encoded using eleven pulses distributed among 21 bits.
(39) When encoded using conventional Fibonacci encoding, the integer 194,559 requires ten pulses distributed among 27 bits (‘110101010010100010010010000’). The above examples illustrate potential efficiency improvements that may be realized using the derived Fibonacci encoding scheme of the present invention. In this example a savings of 6 bits was realized when n=7 at the expense of only one additional pulse. A savings of 3 bits and 3 pulses was realized when n=4. These pulse savings can significantly improve efficiency depending upon the particular de-normalization scheme utilized (as described in more detail below) and accuracy (depending on the particular surface detection algorithm utilized). A pulse savings also tends to save energy downhole at the MOP (in mud pulse telemetry embodiments). In practice, the use of higher order derived Fibonacci sequences (e.g., n=7 as opposed to n=4) often enables an integer (particular a large integer) to be encoded using fewer bits, however, the use of fewer bits sometimes comes at the expense of requiring additional pulses (as illustrated in the example given above). It will thus be appreciated that there is often a tradeoff between reducing the number of required bits versus reducing the number of required pulses when selecting a particular coding matrix via changing the allowable Fibonacci derived sequence order (note that, for an order n, the coding matrix is unique). It will also be appreciated that the invention is not limited to the use of a coding matrix having any particular number of columns or any particular number of higher order Fibonacci derived sequences. In practice, the coding matrix may be pre-selected so as to optimize efficiency for a given set (or range) of non-negative integers.
(40) Non-negative integers encoded using the methodology described above in Algorithm II may be readily decoded. A suitable methodology for such derived Fibonacci decoding may be given in Algorithm III as follows:
(41) Step (1): Search for the first ‘11’
(42) Step (2): Initialize x to 0.
(43) Step (3): Record the positions of each of the n ‘1’ bits after the first ‘11’. Then decode for the value of each ‘1’ using the corresponding F.sup.k (1≦k≦n) and add values to x.
(44) Step (4): Remove the second ‘1’ from the first ‘11’ and record the positions of each ‘1’ before the first ‘11’ (including the first ‘1’ in the first ‘11’). Then decode for the value of each ‘1’ using F.sup.0 and add values to x.
(45) Step (5): Search for next ‘11’ to decode successive integers and repeat steps (2), (3), and (4).
(46) Note that the number of bits used to encode any given non-negative integer is unknown at the decoder prior to decoding. Note also that the number of ‘1’ bits between the ‘11’ identifier in successively encoded integers must be greater than or equal to n. This is guaranteed by the encoding methodology.
(47) By way of example, the previously encoded integer 194,559, encoded above using n=4 higher order Fibonacci derived sequences, is now decoded using Algorithm III. At step (1), the first ‘11’ is identified (moving from right to left), as underlined in the encoded bit stream: ‘100000000100001111001000’. Each of the (n=4) ‘1’ bits following the ‘11’ identifier is assigned a value in step (3) based on its position after (to the left of) the underlined ‘11’. These values are then added to x. The values added to x in this example are 193,015 (selected from column F.sup.4), 1424 (F.sup.3), 72 (F.sup.2), and 32 (F.sup.1). At step (4), the string ‘1001000’ (which remains after the second ‘1’ is dropped from the underlined ‘11’) is decoded using F.sup.0 and the appropriate value (16) is added to x. The resultant integer is 194,559.
(48) In order to output a bit sequence generated by Algorithm II to the telemetry channel (the column of drilling fluid), a pressure pulse or a specifically modulated waveform may be generated for each ‘1’ in the bit sequence. Each ‘0’ may be represented by an idle time slot of predetermined duration or a differently modulated waveform. In practical applications, pulses are advantageously separated in time by a sufficiently long duration to accommodate the extremely noise communication channel, (or for bits going through a modulation scheme, bit symbols can be advantageously separated by the difference of phase (and/or amplitude, frequency) offsets in a continuous waveform). Such separation may optionally be accomplished by a denormalization process (step 108 in
(49) In this example, Q represents the number of idle slots used to separate two consecutive pulses. As described above, the coded bit sequence generated by Algorithm II includes first and second coded portions that come after (to the left of) and before (to the right of) the ‘11’ identifier. Each portion includes at least one pulse (at least one ‘1’). Since the ‘1’ bits in the second portion (encoded using F.sup.0) are already separated by at least one idle slot (at least one ‘0’), it is sufficient to insert Q−1 idle slots either before or after each pulse. In the first portion (encoded using F.sup.k), the ‘1’ bits are not necessarily separated, so Q idle slots may be inserted either before or after each pulse. The two ‘1’ bits in the ‘11’ identifier may be separated by Q−1 idle slots so as to create a unique (and therefore recognizable) pattern. In one advantageous implementation a word tag (the denormalized ‘11’ identifier) may be defined as being 3Q−1 denormalized slots: Q−1 idle slots between the pulses in the ‘11’ pattern and Q−1 leading idle slots and Q−1 trailing idle slots. In practice this word tag is often easier to identify during surface detection than an individual pulse (e.g., using a matched filtering algorithm as described in more detail below). A suitable denormalization process may be given in Algorithm IV as follows:
(50) Step (1): Convert a bit sequence to a normalized slot sequence by a one-to-one mapping in which ‘1’ is a pulse slot and ‘0’ is an idle slot.
(51) Step (2): Insert Q−1 idle slots immediately before each ‘1’ before ‘11’.
(52) Step (3): Insert Q−1 idle slots immediately before and immediately after the first ‘1’ in ‘11’.
(53) Step (4): Insert Q idle slots immediately before each of the ‘1’ slots (those after ‘11’). After step (4), the output is ready for pulsing.
(54) By way of example, the previously encoded integer 194,559, encoded above using n=4 higher order Fibonacci derived sequences, is now denormalized using Algorithm IV. In this example a denormalization constant Q=3 is used. The invention is, of course, not limited to the use of any particular denormalization constant or even to the use of denormalization. At step (2) Q−1 idle slots are inserted as indicated (the inserted slots are underlined): ‘10000000010000111100100000’. At step (3) Q−1 idle slots are inserted before and after the first ‘1’ in the ‘11’ to obtain: ‘100000000100001110010000100000’. At step (4) Q idle slots are then inserted before each ‘1’ after the ‘11’ as follows: ‘100000000000100000001000100010010000100000’. In this exemplary denormalized string, the word tag is identified as: ‘00100100’.
Slot Sequencing Windowing
(55) It will be appreciated that in exemplary embodiments of the above described encoding methodology the ‘11’ identifier establishes synchronization between the surface and downhole systems. Given the noisy communication channel, there is some likelihood that the ‘11’ identifier may be falsely received at the service or that a transmitted ‘11’ may degrade to a single pulse. In such instances, successively encoded integers may be decoded in error, especially when successive integers are encoded using varying values of n. In exemplary embodiments of the present invention, these types of synchronization losses may be resolved in a cost effective manner using a windowing technique.
(56) In such embodiments a window is defined to include a fixed number of non-negative integers. The window is typically preceded (or followed) by a window tag as described in more detail below. While such a window may include substantially any number of integers, it preferably includes enough integers so that the overhead associated with the window tag does not significantly degrade transmissions efficiency, but not so many integers as to require an excessively long time to resynchronize in the event of a missed or falsely received ‘11’ identifier. Mud pulse telemetry embodiments may advantageously include a window length, for example, in a range from about 10 to about 50 integers. The invention is, of course, not limited in these regards. Nor is the invention limited to the use of a window tag. Such an implementation is purely optional.
(57) In one exemplary embodiment in accordance with the present invention, a window tag may include the normalized string ‘111’. When denormalized, the window tag may advantageously include three pulses distributed in 4Q−1 slots. For example, one advantageous window tag includes Q−1 idle slots before the first pulse, Q−1 idle slots between the first and second pulses, Q−1 idle slots between the second and third pulses, and Q−1 idle slots after the third pulse. Between successive windows, the window tag may be advantageously combined with one of the above described word tags since the slot sequence for a word tag has a common prefix and the same number of idle slots between pulses as long as there are at least Q idle slots before the very first pulse of a number which is to ensure the window tag uniqueness. Such a scheme advantageously reduces overhead. Again, the invention is expressly not limited in these regards.
Surface Detection and Matched Filtering
(58) Proper signal detection is critical to any communication system. Proper signal detection at the surface prior to decoding is especially important in mud pulse telemetry operations, in part due to the extremely noisy communication channel. Signal attenuation and drilling noise (as well as other sources of noise) can cause reception errors and a loss of synchronization between the downhole encoder and the surface decoder. The frequency of these errors may be reduced via surface detection and decoding techniques.
(59) Turning now to
(60) With continued reference to
(61) One exemplary embodiment of matched filtering step 156 is depicted in flow chart form on
(62)
(63) where R.sub.12(t) represents the cross correlation of the two waveforms, G.sub.12(ω) represents the cross spectrum of the two waveforms w.sub.1 and w.sub.2 and is defined as H.sub.1(ω)H*.sub.2(ω), where H.sub.1(ω) is the Fourier Transform of w.sub.1 and H*.sub.2(ω) is the complex conjugate of the Fourier Transform of w.sub.2. In step 156 (
(64) With continued reference to
(f.sub.r.sup.2(k)+f.sub.i.sup.2(k))(r.sub.r(k)s.sub.r(k)+s.sub.i(k)r.sub.i(k))
(f.sub.r.sup.2(k)+f.sub.i.sup.2(k))(r.sub.i(k)s.sub.r(k)−s.sub.i(k)r.sub.r(k)) Equation 6
(65) where s.sub.r(k)+s.sub.i(k)j represent the FFT coefficients of w.sub.1, r.sub.r(k)+r.sub.i(k)j represent the FFT coefficients of w.sub.2, f.sub.r(k)+f.sub.i(k)j represent the FFT coefficients of the impulse response of the bandpass filter, and (0≦k≦L−1) with L being the sample length of waveform w.sub.1. After spectral weighting, an inverse FFT (IFFT) may be applied to inverse transform the spectrally weighted result back into the time domain. The word tag (or tags) or window tag (or tags) may be identified where the cross correlation is a maximum (or greater than a predetermined threshold).
(66) Individual words (identified as described above) may be further processed as depicted at 158, 160, and 162 in
(67) In one exemplary embodiment of the invention, the certainty of the detected word may be improved via applying a second matched filtering (cross-correlation) algorithm at 160. With reference now to
(68) Given that each pulse may be theoretically located in one of three slots, there are a total of 3.sup.M combinations for a given word (where M represents the number of pulses in the word). Each of the 3.sup.M combinations represents a unique potential waveform. In order to obtain the most likely waveform, each of these potential waveforms may be cross correlated with the decimated waveform w.sub.1 using the matched filtering technique described above with respect to
(69) With continued reference to
(70) Step (1): Seek S pulses having indices {S.sub.i|1≦i≦S} which correspond to S least confidence values in {C.sub.0.sup.i|1≦i≦M}.
(71) Step (2): For each pulse in {S.sub.i|1≦i≦s}, select the offset ‘−1’ when C.sub.−1.sup.Si>C.sub.+1.sup.Si or ‘+1’ when C.sub.+1.sup.Si≧C.sub.−1.sup.Si. Steps (1) and (2) may be executed at 184 in
(72) Step (3): Generate a 2.sup.S unique waveforms at 186 based on the 2.sup.S combinations of {S.sub.i|1≦i≦S} and the M−S pulses (the “most confident pulses”) that have fixed positions.
(73) Step (4): Apply the matched filtering algorithm depicted in
(74) Step (5): Select the wave form having the highest cross-correlation with the reference waveform (the decimated waveform) at 188.
(75) Although the present invention and its advantages have been described in detail, it should be understood that various changes, substitutions and alternations can be made herein without departing from the spirit and scope of the invention as defined by the appended claims.