The present inventive concept relates to a system and method for streaming data. In particular, the present inventive concept concerns a system and method related to outputting a continuous data stream irrespective of a number of data streams entering the system or differences in dataflow rates between the data streams.
Conventional drilling rig systems process data received from sensors to control and monitor drilling operations. The data is received from the sensors via multiple data streams, which presents a number of challenges. For instance, the multiple data streams may provide sensor data at different dataflow rates, which may translate to disjointed control and monitoring of the drilling rig during drilling operations.
Accordingly, there is a need for a system and method to improve dataflow that improves real-time control and monitoring during drilling operations.
The present inventive concept provides a system and method for receiving a plurality of data streams and outputting a continuous data stream regardless of a number of data streams entering the system or differences in dataflow rates between the data streams.
The aforementioned may be achieved in an aspect of the present inventive concept by providing a system configured to conform data flow. The system may include a queue configured to receive at least one data stream. The at least one data stream may include a plurality of data streams. The queue may include a plurality of enqueues and/or a dequeue. Each of the plurality of data streams may be received via a respective one of the plurality of enqueues. Each of the plurality of data streams may be received in real time and/or at different rates.
The system may also include a processor configured to convert the at least one data stream to a continuous data stream. The queue may also be configured to output the continuous data stream at a constant rate and/or in real time via the dequeue. The constant rate may be selectively determined via a clock. The constant rate may be selectively determined to be 100 Hz (100 packets per second). The constant rate may be independent from or unrelated to each rate at which each of the plurality of data streams are received via the respective one of the plurality of enqueues.
The system may be configured to maintain the constant rate by introducing one or more new data packets into the continuous data stream. Each of the one or more new data packets may be a copy of one or more previous data packets. Each of the one or more new data packets may be one or more empty data packets. Each of the one or more new data packets may be a copy of one or more previous data packets and one or more empty data packets. The system may be configured to indicate a change in data received via the at least one data stream by introducing one or more new data packets into the continuous data stream. The system may be configured to indicate a change in data received via the at least one data stream by removing one or more new data packets from the continuous data stream. The new data packet may be introduced into the continuous data stream if a data point is not received by the queue via the at least one data stream or the at least one stream is missing a data point.
The aforementioned may be achieved in another aspect of the present inventive concept by providing a method to conform data flow. The method may be executed utilizing the system. The method may include the step of receiving, via a queue, at least one data stream. The at least one data stream may include a plurality of data streams. The queue may include a plurality of enqueues and/or a dequeue. Each of the plurality of data streams may be received via a respective one of the plurality of enqueues. Each of the plurality of data streams may be received in real time and at different rates.
The method may also include the step of converting, via a processor of the system, the at least one data stream to a continuous data stream. The method may also include the step of outputting, from the queue, via the processor of the system, the continuous data stream at a constant rate. The constant rate may be selectively determined via a clock. The constant rate may be, via the clock, is 100 Hz (100 packets per second). The constant rate may be independent from each rate at which each of the plurality of data streams are received via the respective one of the plurality of enqueues. The system, via the processor and/or the queue, may be configured to maintain the constant rate by introducing one or more new data packets into the continuous data stream. The system, via the processor and/or the queue, may be configured to indicate a change in data received via the at least one data stream by introducing one or more new data packets into the continuous data stream. Each of the one or more new data packets may be a copy of one or more previous data packets. Each of the one or more new data packets may be one or more empty data packets. Each of the one or more new data packets may be a copy of one or more previous data packets and one or more empty data packets. Each of the one or more new data packets may be introduced into the continuous data stream if one or more data points are not received by the queue via the at least one data stream.
The foregoing is intended to be illustrative and is not meant in a limiting sense. Many features of the embodiments may be employed with or without reference to other features of any of the embodiments. Additional aspects, advantages, and/or utilities of the present inventive concept will be set forth in part in the description that follows and, in part, will be apparent from the description, or may be learned by practice of the present inventive concept.
The foregoing summary, as well as the following detailed description, will be better understood when read in conjunction with the appended drawings. For the purpose of illustration, there is shown in the drawings certain embodiments of the present inventive concept. It should be understood, however, that the present inventive concept is not limited to the precise embodiments and features shown. The accompanying drawings, which are incorporated in and constitutes a part of this specification, illustrates an implementation of apparatuses consistent with the present inventive concept and, together with the description, serves to explain advantages and principles consistent with the present inventive concept, in which:
The following detailed description references the accompanying drawings that illustrate various embodiments of the present inventive concept. The illustration and description are intended to describe aspects and embodiments of the present inventive concept in sufficient detail to enable those skilled in the art to practice the present inventive concept. Other components can be utilized and changes can be made without departing from the scope of the present inventive concept. The following detailed description is, therefore, not to be taken in a limiting sense. The scope of the present inventive concept is defined only by the appended claims, along with the full scope of equivalents to which such claims are entitled.
In the description, phraseology and terminology are employed for the purpose of description and should not be regarded as limiting. For example, the use of a singular term, such as “a”, is not intended as limiting of the number of items. Also, any one of the features of the present inventive concept may be used separately or in combination with any other feature. For example, references to the term “embodiment” means that the feature or features being referred to are included in at least one aspect of the present inventive concept. Separate references to the term “embodiment” in this description do not necessarily refer to the same embodiment and are also not mutually exclusive unless so stated and/or except as will be readily apparent to those skilled in the art from the description. For example, a feature, structure, process, step, action, or the like described in one embodiment may also be included in other embodiments, but is not necessarily included. Thus, the present inventive concept may include a variety of combinations and/or integrations of the embodiments described herein. Additionally, all aspects of the present inventive concept as described herein are not essential for its practice.
Further, in certain situations, the term “logic” refers to hardware, firmware, software, and/or a combination thereof that is configured to perform one or more functions including, but not limited to, those functions of the present inventive concept specifically described herein or are readily apparent to those skilled in the art in view of the description. Such logic may include circuitry having data processing and/or storage functionality. Examples of such circuitry may include, but are not limited to, a microprocessor, one or more processors, e.g., processor cores, a programmable gate array, a microcontroller, an application specific integrated circuit, a wireless receiver, transmitter and/or transceiver circuitry, semiconductor memory, or combinatorial logic. Logic may be in the form of one or more software modules, such as executable code in the form of an executable application, an application programming interface (API), a subroutine, a function, a procedure, an applet, a servlet, a routine, source code, object code, a shared library/dynamic load library, or one or more instructions. These software modules may be stored in any type of a suitable non-transitory storage medium, or transitory storage medium, e.g., electrical, optical, acoustical or other form of propagated signals such as carrier waves, infrared signals, or digital signals. Examples of non-transitory storage medium may include, but are not limited or restricted to a programmable circuit, a semiconductor memory, non-persistent storage such as volatile memory, e.g., any type of random access memory “RAM”, persistent storage such as non-volatile memory, e.g., read-only memory “ROM”, power-backed RAM, flash memory, phase-change memory, etc., a solid-state drive, hard disk drive, an optical disc drive, or a portable memory device. As firmware, the executable code is stored in persistent storage.
The term “operator” is generally used herein to represent a user of the system and/or method of the present inventive concept. For purposes herein, the user may be an administrator of the system, a drilling engineer, or a team of engineers.
Lastly, the terms “or” and “and/or” as used herein are to be interpreted as inclusive or meaning any one or any combination. Therefore, “A, B or C” or “A, B and/or C” mean any of the following: “A”; “B”; “C”; “A and B”; “A and C”; “B and C”; or “A, B and C.” An exception to this definition will occur only when a combination of elements, functions, steps or acts are in some way inherently mutually exclusive.
Turning to
A drilling mud or a drilling fluid 114 can be continuously circulated within the wellbore 108 via a pump to facilitate operation of the BHA 112, e.g., drilling. The drilling fluid 114 can be introduced into the drill string 110 via an opening of the drill string 110 and pumped down the drill string 110 via the pump. The drilling fluid 114 exits the drill string 110 through the drill bit 106 and circulates upwards through an annulus of the wellbore 108. The drilling fluid 114 has multiple functions including, but not limited to, cooling the drill bit 106, lubricating the drill bit 106, and/or transporting debris generated by the drill bit 106 away from the drill bit 106, e.g., up the annulus of the wellbore 108 and to the surface of the wellbore 108. The drilling fluid 114 may be water, oil, a synthetic based composition, gas, or a combination thereof, and may include one or more additives and/or particles.
Each of the one or more surface sensors 102 are configured to measure drilling data, for example, a surface torque of the drill string 110 may yield a data stream of the drill string torque. It is foreseen that the surface sensors 102 may be configured to measure vibration, weight on bit (WOB), lateral acceleration, rotations per minute (RPM), tension, flow rate, temperature, pressure, or any other suitable data related to the drill string 110 during drilling that can be measured from the surface without deviating from the scope of the present inventive concept. It is foreseen that the one or more surface sensors 102 may be, or include, a strain gauge, accelerometer, gyroscope, and/or seismometer without deviating from the scope of the present inventive concept. It is foreseen that the one or more surface sensors 102 may be configured to measure same or different data relative to each other.
In the exemplary embodiment, the one or more surface sensors 102 are positioned on the drill string 110, at or adjacent to the top of the drill string 110 at the surface of the wellbore 108, but it is foreseen that the one or more surface sensors 102 can be positioned along any portion of the drill string 110 proximate to or above the surface of the wellbore 108 without deviating from the scope of the present inventive concept. For instance, it is foreseen that the one or more surface sensors 102 can be in a sub positioned under the top drive motor 120 and above the drill string 110 without deviating from the scope of the present inventive concept.
The supporting facilities 104, as illustrated in
The processor 122 is configured to process the plurality of data streams by executing program logic, which is also stored by the non-transitory storage medium 124. Using the program logic, the processor 122 is configured to convert the plurality of data streams to a continuous data stream.
The manner in which the present inventive concept receives and processes each of the plurality of data streams is comparable to an old-fashioned water wheel positioned along a flowing stream. The water wheel includes a plurality of buckets that can be sequentially filled with water from the flowing stream and dumped. As each bucket of the water wheel consecutively fills with water, the water wheel is caused to rotate. The rate at which the water wheel rotates is dictated by a flow rate of the flowing stream. Turning to
Turning to
The queue 300 includes a plurality of enqueues 302A, 302B. Each of the plurality of data streams 204A, 204B are received by the queue 300 via a respective one of the plurality of enqueues 302A, 302B. Upon receipt of data from the plurality of data streams 204A, 204B by the queue 300 and processing of the data by the processor 122, the data may be stored in the non-transitory storage medium 124, a cache, or the like, which may be open ended or limited in capacity. The processor 122, via the queue 300, may be configured to order the data in a first-in-first-out manner, a last in-last-out manner, by priority, by a circular queue, or by other like manner of ordering data.
The queue 300 includes a dequeue 304, wherein one or more data points from each of the plurality of data streams 204A, 204B are converted, via the processor 122, to yield the continuous data stream 208, which is output from the queue 300 via the dequeue 304. During conversion, the processor 122 may aggregate each of the one or more data points from each of the plurality of data streams 204A, 204B to generate a current data point of the continuous data stream 208. It is foreseen that other forms of data organization may be used by the processor 122 such as, but not limited to, lists and/or stacks. It is foreseen that if one or both of the plurality of data streams 204A, 204B provide an amount of data, e.g., data points, that is too high to be processed by the processor 122, the processor 122 may be configured to discard data over a predetermined threshold and/or be configured to reduce the amount of data points entering the dequeue 304 from the queue 300, e.g., using a down sampling method.
The queue 300 is configured to output the continuous data stream 208 at a constant rate via the dequeue 304. The constant rate is selectively determined using a clock 126 of the computing device 128. For instance, the constant rate may be selectively determined by an operator of the system 100 by setting the clock 126. It is foreseen, however, that the constant rate may be selectively determined with or without the clock 126, e.g., as desired by the operator, and/or with or without the operator, e.g., automatically set by the clock 126 based on one or more factors associated with data received from one or more of the one or more surface sensors 102, without deviating from the scope of the present inventive concept.
The clock 126 is configured to continuously rotate the plurality of virtual buckets 202 and deliver each virtual bucket of data of the plurality of virtual buckets 202 at the constant rate. For instance, the constant rate, as determined or set via the clock, may be 100 Hz (100 packets per second). In the exemplary embodiment, the constant rate is not based on any of the flow rates at which each of the plurality of data streams 204A, 204B are received via the plurality of enqueues 302A, 302B. As such, the constant rate of the continuous data stream 208 is independent from the flow rates of the plurality of data streams 204A, 204B. For example, the processor 122 of the system 100 may receive a first data stream of the plurality of data streams 204A, 204B at a first data stream rate, receive a second data stream of the plurality of data streams 204A, 204B at a second data stream rate, and output the continuous data stream 208 at a continuous, third data stream rate via the dequeue 304. Each of the first data stream rate, the second data stream rate, and the third data stream rate may be different. As such, the third data stream is not determined by, based on, or otherwise affected by the first data stream rate or the second data stream rate.
The system 100, via the processor 122 and the queue 300, is configured to maintain the constant rate of the continuous data stream 208 by selectively introducing one or more new data packets into the continuous data stream 208 upon occurrence of a predetermined event. The one or more new data packets may be one or more empty data packets and/or one or more copies of one or more prior data packets. Each of the one or more new data packets may include one or more data points. In the exemplary embodiment, the predetermined event is a determination by the processor 122 that one of the plurality of data streams 204A, 204B is missing a data point of the one or more data points. There are a number of scenarios that may result in a missing data point. For instance, one of the plurality of data streams 204A, 204B may be experiencing a problem, e.g. a communication problem, a power problem, a connectivity/transmission problem, a disconnected data cable, a dead sensor, and/or a malfunctioning device. Or, a missing data point may indicate that there is no new data from the data source associated with the one of the plurality of data streams 204A, 204B with the missing data point. By selectively introducing the one or more new data packets into the continuous data stream 208 when a data point is not received by the processor 122, the system 100 is able to maintain an uninterrupted and continuous flow of the continuous data stream 208 at the constant rate.
It is foreseen that the system 100 may be configured to introduce the one or more new data packets into the continuous data stream 208 when one of the plurality of data streams 204A, 204B has a data flow rate that is faster than a data flow rate of another one of the one of the plurality of data streams 204A, 204B. In such a scenario, introduction of the one or more new data packets allow the system 100 to balance the plurality of data streams 204A, 204B, thereby allowing the system 100 to maintain the continuous data flow irrespective of any missing data points in the plurality of data streams 204A, 204B. It is also foreseen that the system 100 may be configured to introduce the one or more empty data packets and/or the one or more new data packets into the continuous data stream 208 when both of the plurality of data streams 204A, 204B have data flow rates that are slower than a data flow rate of the continuous data stream 208. In such a scenario, introduction of the one or more new data packets allows the system 100 to balance the plurality of data streams 204A, 204B with the continuous data stream 208, thereby allowing the system 100 to maintain the continuous data flow irrespective of a flow rate of any of the plurality of data streams 204A, 204B.
The continuous data stream 208 of the system 100 advantageously provides heightened control, monitoring, and visualization of the drilling operation. For instance, if the system 100 has introduced the one or more new data packets into the continuous data stream 208, the one or more new data packets can be interpreted to mean, e.g., determined via a control system of the computing device 128, that no new data is being received from one or more of the plurality of data streams 204A, 204B, e.g., that nothing has changed in the drilling operation, and/or that one or more of the plurality of data streams 204A, 204B is experiencing a problem, e.g. a communication problem, a power problem, a connectivity/transmission problem, a disconnected data cable, a dead sensor, and/or a malfunctioning device. In such a scenario, the system 100 of the present inventive concept may be configured to trigger an alarm or send a notification to the operator of the system 100 to indicate the presence of the one or more new data packets.
Introduction of the one or more new data packets into the continuous data stream 208 allow outputting of the continuous data stream 208 at the constant rate, which allows the data flow into the control system of the computing device 128 to remain continuous and not disjointed. In other words, the control system is not required to analyze multiple data streams received at different rates, which can be time intensive and complex. Rather, the control system can receive and analyze the continuous data stream 208, resulting in smoother controls of the drilling operation. The continuous data stream 208 can also provide monitoring of the drilling operation and can alert the operator or a monitoring system of the supporting facilities 104 to an issue associated with the drilling operation. Furthermore, the continuous data stream 208 can be displayed visually on a display of the supporting facilities 104 for the operator of the system 100 to manually observe, monitor, and/or control the drilling operation. For example, an uninterrupted and continuous stream of data facilitates an ability of the operator to maintain real-time control of a speed of a top drive of the drill string 110. Conversely, a disjointed stream of data impairs an ability of the operator to control the speed of the top drive. For example, the disjointed stream of data may result in the top drive continuously shutting off and turning on, which may be harmful to the drill string 110 and adversely affect efficiency of the drilling operation.
The continuous data stream 208 provided by the system 100 may be processed by the computing device 128 to facilitate smooth control of the drill string 110, for example, via regularization of data using an interpolation process, with or without the new data packets.
Turning to
In the graph 600, each of the one or more water wheel points W1, W2, W3, W4 is interpolated, via the processor 122, from the raw data points P1, P2, P3 and/or assigned a copy of one of the raw data points P1, P2, P3 generated, via the processor 122, at a 10 ms interval such that the one or more water wheel points W1, W2, W3, W4 are evenly spaced apart from each other. As previously discussed, it is foreseen that a time interval less than 10 ms or larger than 10 ms can be used without deviating from the scope of the present inventive concept. In the example, the raw data point P1 occurs before the first 10 ms increment of the clock 126. As such, the system 100, via the processor 122, has generated the water wheel point W1 by making a copy of a prior raw data point, i.e., the raw data point P1, via the processor 122, in Bucket 1 at a first increment, e.g., the first 10 ms increment. In this manner, the system 100 anticipates that a value of data at the first 10 ms increment is equal to a value of the raw data point P1 and lower than a value of the regularized point R1. Next, the water wheel point W2 is generated at a next increment, e.g., the second 10 ms increment in Bucket 2, based on the raw data points P1, P2. Next, the water wheel point W3 is generated at a next increment, e.g., a third 10 ms increment in Bucket 3, based on the raw data points P2, P3. In the example, a data point was not received between a fourth 10 ms increment and a fifth 10 ms increment. As such, the system 100, via the processor 122, has generated the water wheel point W4 by making a copy of a prior raw data point, i.e., the raw data point P3, via the processor 122, in Bucket 4 at the fourth increment.
In the example, the water wheel points W2, W3, W4 are similar in value to the regularized data points R2, R3, R4 and, therefore, overlap the regularized data points R2, R3, R4. Yet, given the use of the one or more water wheel points W1, W2, W3, W4 generated to account for the gap in data, lines extending between the one or more water wheel points W1, W2, W3, W4 are likely to be a more accurate representation of the raw data points P1, P2, P3 than lines extending between the regularized data points R1, R2, R3, R4. As a result, a curve between the water wheel points W1, W2, W3, W4 matches and/or is similar to a curve between the raw data points P1, P2, P3, but avoids incurring latency in the system 100, which advantageously enables control of the system 100 with increased timeliness. For illustrative purposes, the broken line extending between the water wheel points W3, W4 and the broken line extending beyond the raw data point P3 illustrate future data, e.g., data not yet received by the system 100. In this manner, the continuous line extending between the one or more water wheel points W1, W2, W3, W4, which represents the continuous data stream 208, provides an improved regularization of the raw data points P1, P2, P3 at each time increment because the one or more water wheel points W1, W2, W3, W4 account for possible gaps in the data received from the data stream 204A and/or 204B at each time increment.
A time alignment may be used on each of the plurality of data streams 204A and 204B to force alignment of each data stream entering the system 100. As illustrated by
Turning to
In this manner, the system 100 of the present inventive concept advantageously conforms data flow by receiving and converting at least one data stream to a continuous data stream and outputting the continuous data stream at a constant rate, thereby improving controls of a drill string.
It will be appreciated by those skilled in the art that changes could be made to the embodiments described above without departing from the broad inventive concept thereof. It is understood, therefore, that the present inventive concept disclosed herein is not limited to the particular embodiments disclosed, and is intended to cover modifications within the spirit and scope of the present inventive concept.
This application claims the benefit of U.S. Provisional Application Ser. No. 62/648,123, filed Mar. 26, 2018, which is incorporated herein by reference in its entirety.
Number | Name | Date | Kind |
---|---|---|---|
20090224941 | Kansal et al. | Sep 2009 | A1 |
20120290266 | Jain et al. | Nov 2012 | A1 |
20130106615 | Prammer | May 2013 | A1 |
20130279714 | Mammone | Oct 2013 | A1 |
20160043957 | Mendez | Feb 2016 | A1 |
Number | Date | Country |
---|---|---|
3136652 | Mar 2017 | EP |
WO-2018029454 | Feb 2018 | WO |
Entry |
---|
International Preliminary Report on Patentability for International Application No. PCT/US2019/023978 dated Sep. 29, 2020, 6 pages. |
International Search Report and Written Opinion for International Application No. PCT/US2019/23978 dated Jun. 10, 2019, 8 pages. |
Supplementary European Search Report for Application No. EP 19 77 7723 dated Sep. 9, 2021 (8 pages). |
Number | Date | Country | |
---|---|---|---|
20190292895 A1 | Sep 2019 | US |
Number | Date | Country | |
---|---|---|---|
62648123 | Mar 2018 | US |