Jump to content
  • To Search the Seeq Knowledgebase:

    button_seeq-knowledgebase.png.ec0acc75c6f5b14c9e2e09a6e4fc8d12.png.4643472239090d47c54cbcd358bd485f.png

Search the Community

Showing results for tags 'signal from condition'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Community Technical Forums
    • General Seeq Discussions
    • Seeq Admin Forum
    • Training Resources
    • Product Suggestions
    • Seeq Data Lab
  • Community News
    • Seeq Blog Posts
    • News Articles
    • Press Releases
    • Upcoming Events
    • Resources

Categories

  • Seeq FAQs
  • Online Manual
    • General Information

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me


Company


Title


Level of Seeq User

  1. Background: Seeq has functions in Formula to remove outliers based on different algorithms, but sometimes it is desired to identify and remove outliers that falls outside of the interquartile range. Solution: The approach we can take to solve this data cleansing problem in Seeq is to determine the periods over which we want to calculate the quartiles, calculate new signals from the 25th and 75th percentiles during each of those periods, identify deviations from those percentiles, and remove data outside of the IQR from our original signal. 1. The first step is to decide what type of periods you would like to use to calculate your percentiles. Some periodic choices might include: hourly, daily, or a rolling window of 24 hours each hour. Other choices could be the current production run, the time since the equipment was last maintained, etc. In this example we will use an hourly periodic condition in our quartile calculations. 2. Next, use the signal from condition tool to calculate the 25th percentile during each of the capsules defined above. 3. Use the same method to calculate the 75th percentile during each of the capsules defined above. 4. Use Seeq's Formula tool to calculate the IQR. $UpperQ - $LowerQ 5. Now use Formula to calculate the upper and lower limits as for outlier removal as: $upperQ + n*$IQR (where n is a scalar multiplier, 1.5 in this example) $lowerQ - n*$IQR 6. Search for deviations from the Upper and Lower limits using Deviation Search. 7. Then use Formula to remove data during the identified outlier capsules. $signal.remove($outliers)
  2. I have a condition with several capsules of various lengths; how do I determine the time period or length of each capsule? For example, my first capsule is 24 hours long, and then the next capsule is only about 3 hours. I'm looking for a way where I can get this information for all of my capsules.
  3. There are times when we'd like to view histograms in a monthly view ordered chronologically by the starting month in the display range. This post reviews the results of 3 different methods of utilizing Histogram vs Signal from Condition. All 3 examples show the same results but differ in how the results are displayed. Example 1: This method displays histograms by order of Month, thus, January will show first with December showing last, even though the display range is set from 7/26/2017 - 7/26/2018. As a result, we are not always looking at data in chronological order with this method. Simply goto your Histogram tool, select your signal/condition & statistic, then select Time as aggregation type --> Month of Year. Continue to Execute. Example 2: This method will ensure your Histogram is in chronological order, first ordered by year, then by month. The caveat to this is the spacing of all bars in the display window is not held constant (a gap between years will be observed). Go back to the Histogram tool, select your signal/condition & statistic, then select Time as aggregation type --> Year. After this, select Add grouping. Again, select Time as aggregation type --> Month of Year. Continue to Execute. The color gradient can be changed by changing the main color in the histogram. Individual bar colors can also be changed by clicking the respective color box in the legend (top right of histogram). Example 3: This method will produce equally spaced bars in chronological order with no color gradient. To achieve this, we will use Signal from Condition. First, we need to create our condition. Because we are interested in a Monthly view, we can navigate to our Periodic Condition tool under Identify; Duration-->Monthly (All). Timezone can be specified and any shifts to the resulting capsules can be applied under Advanced. Now that we have our condition, we can proceed to our Signal from Condition tool under Quantify. As with the other examples, select your signal/condition & statistic. The bounding condition will be the Monthly condition we just created. For this use case, we will want our timestamp to be at the start of each capsule (month), and the interpolation method to be Discrete so that bars will be the resulting output. The output may have skinny bars and non-ideal axis min/max. This can be adjusted by clicking Customize in the Details pane. For this example, I used a width of 50, and axis min/max of 0/1.25.
  4. This question came in through the support channel today and I thought it was a good opportunity to explain some of the nuances in the Scorecard tool and give a couple of potential work arounds. Question: In this example we are using two simple Value Searches on the Example -> Area A dataset Running -> Compressor Stage !~ "off" Stage 2 Running -> Compressor Stage ~ "stage 2" Unfortunately in Seeq there is not an easy way to directly perform Math or formula like operations on Scorecard Metrics created using the "Simple" option like you see here above. The "Simple" metrics are reactive to your display range and so have more limitations as compared to the "Condition" and "Continuous" options. In order to create this calculation we need to first decide on a calculation range that matches our engineering or business need. In this case we want to calculate this value per month. Option 1 - Convert to Signal from Condition Calculations Create a Monthly condition using the Periodic Condition tool Create Monthly Total duration in each mode calculations using the Signal from Condition Tool Use Formula to Create your % Time running calculation ($Stage2Duration/$RunningDuration).convertUnits("%") Create Scorecard using Condition Option Option 2 - Create Continuous Calculation Signal The main downside of Option 1 is that you cant see at any given point in time how the last running 30 days have been performing like you could with the original simple scorecard metrics. The following formula will build a calculation of the % Time in Stage 2 of total running time for the trailing 30 days calculated every hour $aggPeriods = periods(30days,1h) $RunningDuration = $Running.removeLongerThan(1d).aggregate(totalduration(),$aggPeriods,endkey()) $stage2Duration = $Stage2Running.removeLongerThan(1d).aggregate(totalduration(),$aggPeriods,endkey()) ($stage2Duration/$RunningDuration).convertUnits("%") This calculation can be added in a simple scorecard metric as well and as long as the simple scorecard duration is 30 days it will give you the desired results.
  5. FAQ: I have a condition for events of variable duration. I would like to create a new condition that comprises the first third of the time (or 4th, or 10th) of the original condition. Solution: A stepwise approach can be taken to achieve this functionality. 1. Begin with your condition loaded in the display pane. 2. Create a new Signal using Signal from Condition that calculates the total duration of each of your event capsules, interpolated as a step signal. 3. Create a new signal that is your total event duration multiplied by the proportion of the event that you would like to capture. e.g. for the first 1/3 of the event, divide your total duration signal by 3, as shown below. 4. Create an arbitrary discrete signal with a sample at the start of each of your event capsules. 5. Shift the arbitrary discrete signal in time by the value of your signal calculated in step 3. In this example, the 1/3 duration signal. Note, depending on your version of Seeq, the function to do this may be called move() or delay(). 6. Use the toCapsules() function in Formula to create a tiny (zero duration) capsule at each of your shifted, discrete samples. 7. Join the start of your original condition with the capsules created in step 6 using the composite condition tool.
  6. Hey there, My question splits into two parts: Firstly, I want to create a condition based on multiple criteria: if signal A equal to 3, B equal to 4, C is greater than 5 than condition is valid. I know i could create 3 individual capsule and overlap them. Is there a simple way to use formula to do so? Secondly, in my analysis i have 10 signals and associated conditions(alert), then I want to know in the past 7 days how many alert in total(repeated instance or capsule doesnt count) ? and How long is the total alert time? Thank you
  7. Background: When looking to identify trends or step changes in a signal, we typically recommend an approach of smoothing the signal, taking the first derivative, then identifying when that derivative is positive or negative. This method works well most of the time, but employing this technique in combination with others can be more effective at capturing trends/step changes when the value change in the signal is more subtle. Solution: When looking for step changes, we can use a technique of calculating a range of the signal on a rolling periodic basis and search for when the range exceeds some limit. We can then combine this condition with when the derivative is positive (increasing step changes) or negative (decreasing step changes) to capture our final condition. 1. Create a rolling window over which you will look at the range (max-min value) of the signal. In my example I used a 4h window every 30 minutes, because my tank draining events were typically never longer than 4h. Select the smallest time period that you can that is still longer than your longest draining event. 2. Use Signal from Condition to calculate the range (max-min) of your signal over each of the rolling windows. Make sure to place the time stamp of the statistic at the end of each rolling capsule. 3. Identify time periods when that range calculation is above some threshold. In this example we used a threshold of 2 based looking at the trend output of our step 2. If we zoom in on a smaller range of time, we see that our capsules for when the range value is high actually extend beyond the completion of our decreasing signal. 4. We can intersect this condition that we have identified for high range in the signal with a condition for when the derivative of the signal is negative to capture our desired events. First calculate the first derivative of the signal. We apply a smoothing agileFilter in this step as well to remove signal noise. 5. Identify when that derivative value is less than zero using the value search tool. 6. Now take the intersection of the condition for negative derivative of the level and the condition for high range. The final view of the original signal and the events identified: Use chain view to validate your calculations:
  8. Hello Everyone, I hope you are doing well. I need some help with creating a function. I have multiple conditions that I have created that tell me if the equipment is stopped, lag, standby, or other attributes. I want to be able to be able to: ADD Durations for when equipment is stopped and in lag OR when the equipment is stopped or standby. ADD Durations for when equipment is stopped but not in lag or standby. The example variables are in hours. Stopped ($i5) Standby($i6) Lag ($i) I would appreciate the help.
  9. FAQ: I have various conditions that I've created and I am trying to capture the minimum value of a signal during 1 condition and the maximum value of the same signal during another condition. I want these values displayed in a scorecard where the headers are the exact time stamps when the max or min value occurred. Solution: Let's take an example where we have two conditions for when a signal is increasing in value and when a signal is decreasing in value. We want to know the max ROC during the time periods when the signal is increasing, the min ROC when the signal is decreasing and I want them all summarized in a single scorecard metric for "max ROC". 1) Begin with the signals of interest in the display pane and conditions of interest identified. In this case we have a temperature signal, its derivative, and two conditions for when the temperature signal is increasing or decreasing in value. 2) We can use Signal from Condition to calculate the maximum ROC during each increasing time period. Make sure to specify that the time stamp of the statistic be placed at the point of max value. This will be important for displaying an accurate time header in our scorecard. 3) Use Signal from Condition again to calculate the min ROC during the decreasing time periods. This time place the time stamp of the statistic at the point of min value. 4) Use the CombineWith function in Formula to create a new signal combined of the min and max ROC value signals. 5) Use Formula to create a new condition comprised of tiny capsules for each data point in your combined min and max condition. This is done by doing a value search for when the combined ROC signal has valid data. You will notice that these capsules are so short in length that they do not render in the display pane, but you can see their start and end times, as well as the value of the combined signal during each event in the capsules pane. 6) Now switch to Scorecard view and pull the value of the combined min/max ROC signal into a condition based scorecard during the condition for when that signal has valid data. There is no need to calculate a statistic, as there is only one sample during each of these capsules. Adjust the date headers in the scorecard to display only the start or end time (as they are the same).
  10. In many industries (pharmaceuticals, food and beverage, etc.), mean kinetic temperature (MKT) is used to measure the temperature fluctuations of a material during storage and shipment. Mean Kinetic Temperature is a non-linear weighted average temperature that is set up to provide an impact on product stability. In general, product stability follows an exponential trend with temperature as it is inherently a decomposition reaction of the desired product. Therefore, the mean kinetic temperature takes into account the exponential reaction rate to determine the average temperature weighted by the kinetics of the reaction over time. The formula for mean kinetic temperature is: Where: is the mean kinetic temperature in Kelvin is the activation energy (in kJ mol−1) is the gas constant (in J mol−1 K−1) to are the temperatures at each of the sample points in kelvins to are time intervals at each of the sample points This formula can be inserted into Seeq through a couple of steps: 1. Calculate the time intervals for each of the data points (tn). In many cases these are evenly spaced and the formula simplifies, but in case they are not, this can be calculated in Seeq Formula by creating capsules for each data point and then aggregating the duration of those capsules: $temp.tocapsules().aggregate(totalduration(),$temp.tocapsules(),startkey()).tostep() 2. Calculate the exponential relationship for each sample point (t*exp(-deltaH/RTn)) using Seeq Formula. For this example, delta H was set to 83.14 kJ/mol: $H = 83.14kJ/mol $TimeInterval*CONSTANT.E^(-$H/CONSTANT.R/$temp) 3. At this point, the desired time period to perform the MKT calculation over must be selected. This can be done by creating a capsule with the Custom Condition tool. The desired time period can be as long or short as desired. 4. The next step is to sum the numerator and denominator of the natural log portion of the MKT calculation. These summations across the time period signified in step 3 can be performed with the Signal from Condition tool by selecting the sum statistic, the time period from step 3, and the aggregation at the middle timestamp of the condition. This step should be performed for both calculated signals from steps 1 (time intervals for denominator) and 2 (exponential rates for numerator). 5. Finally, the MKT calculation can be calculated with Seeq Formula: $H = 83.14kJ/mol (($H/CONSTANT.R)/(-ln($TotalizedNumerator/$TotalizedDenominator))) .convertUnits('K') As an example, below is a graph showing this calculation being done over multiple time periods of interest (green capsules at top):
  11. FAQ: I would like to capture the value of a signal at the exact center of each capsule within a condition. Is there a way to do this with Seeq? Solution: 1. Begin with your signal and the condition over which you want the middle value in the display pane. 2. Open a new formula window and use the getMiddles() function to create a zero length capsule at the center of each capsule within your condition of interest. $myCondition.getMiddles() Note, depending on which tool what used to create the red condition shown in your screenshot, you may need to add a max capsule duration during this step as well. If you receive an error saying that the condition needs a maximum duration, try instead: $myCondition.removelongerthan(1d).getMiddles() the 1d in the removelongerthan() function above applies a max capsule duration of 1d to $mycondition. Ensure your max capsule duration is longer than the longest capsule in your condition. 3. Now you can use the Signal from Condition tool to calculate the value of your signal during each capsule of your "middle of each capsule" condition. Note: The statistic you select is not important here because the capsule is infinitesimally small so Average, Median, Value at End, etc will return the same value. The final result in chain view:
  12. Hi- I'm looking for some help. How do I calculate the total amount of time that my line is running per day? Thanks! Sam
  13. Overview This method will provide a simple visualization of externally determined control limits or help you accurately calculate new control limits for a signal. Using these limits we will also create a boundary and find excursions for how many times and for how long a signal deviates from the limits.These created signals can be used in follow-on analysis search for periods of abnormal system behavior. In this example we will be creating average, +3 Std Deviation and -3 Standard Deviation boundaries on a Temperature Signal. Setup Signals In the Data tab, select the following: Asset → Example → Cooling Tower 1 → Area A Signal → Temperature Option 1: Manually Define Simple Control Limits From the Tools tab, navigate to the Formula tool. The Formula can be used to easily plot simple scalar values. If you already have calculated values for the upper and lower limit just enter them in the formula editor with their units as shown in the screenshot below. Formula - Simple Upper Limit 103F Formula - Simple Lower Limit 70F Option 2: Calculate The Control Limits From the Tools tab, navigate to the Formula tool. In formula we are going to define the time period over which we want to calculate our control limits as well as the math behind those limits. Step 1 - Calculate the upper limit Variables Name Item Type $Series Temperature Signal Formula $calcPeriod = capsule("2018-01-01T00:00:00-06:00","2018-05-01T00:00:00-06:00") $tempAve = $Series.average($calcPeriod) $tempStdDev = $Series.standardDeviation($calcPeriod) $tempAve + 3*$tempStdDev Description of Code $calcPeriod → This is the time range over which we are going to calculate the average and standard deviation of our signal. The start and end time of our period must be written in ISO8601 format (Year - Month - Day "T" Hour : Minutes : Seconds . Fractional Seconds -/+ Timezone) $tempAve → Intermediate variable calculating the average of the temperature signal over our calculation period $tempStdDev → Intermediate variable calculating the standard deviation of the temperature signal over our calculation period $tempAve + 3*$tempStdDev → Example control limit calculation Step 2 - Duplicate your formula to calculate the lower limits Click the info icon in the details pane next to your calculated upper limit signal. From the info panel select duplicate to create a copy of the formula. With this copy simply edit the formula to calculate the lower limit. $calcPeriod = capsule("2018-01-01T00:00:00-06:00","2018-05-01T00:00:00-06:00") $tempAve = $Series.average($calcPeriod) $tempStdDev = $Series.standardDeviation($calcPeriod) $tempAve - 3*$tempStdDev **Alternate method number three -- if you wanted $calcperiod to actually changed based on the previous month or week of operation you could use signal from condition based off a periodic condition to achieve this solution. Step 3 - Visualize Limits as a Boundary Using the Boundary Tool to connect the process variable and upper and lower limits. Select Temperature as your primary signal and select "New" Select Boundary under relation type, name your new boundary and select the signals for your upper and lower limit. Click save to visualize the boundary on the trend. Using this same method you can create and visualize multiple boundaries (simple and calculated) at the same time Step 4 - Create Capsules when Outside the Boundary Using the Deviation Search tool create a condition for when the signal crosses the boundary. Name your new condition, select temperature as the input signal, select outside a boundary pair and the upper and lower signals. Estimate the maximum time you would expect any one out of boundary event to last and input that time in the max capsule duration field. Step 5 - Create a Scorecard to Quantify How Often and How Long Boundary Excursions Occur Create a Scorecard to count how many and how long and what % of total time these excursions are occurring. Create each metric using the Scorecard Metric tool and the Count, Total Duration and Percent Duration statistics. Use a Condition Based scorecard to get weekly or monthly metrics. Step 6 - Plot how these KPIs are Changing Over Time By creating a signal which plots these KPIs over time we can quantify how our process variable is changing relative to these limits. To begin, determine how often you would like to calculate the KPI per Hour/Day/Week/Month and create a condition for those time segments using the Periodic Condition tool. In the screenshot below we are creating a weekly condition with capsules every week. Using the Signal from Condition Tool count the number of Outside Simple Boundary capsules which occur within each weekly capsule. This same methodology can be used to create signals for total duration and % duration just like in the scorecard section above. For each week the tool will create a single sample. The timestamp placement and interpolation method selections will determine how those samples are placed within the week and visualized on the chart. The scorecard metrics that you created above can also be trended over time by switching from Scorecard View to Trend View.
  14. Hi All, I'm dealing with batch data ,where in i need to get a batch duration ( which is not fixed for all the batches data). Do we have any ways to get a capsule for each of the batches duration to distinguish all the batches separately. Regards, Jitesh Vachheta
  15. FAQ: I've got a signal for which the average and standard deviation are believed to be drifting over time. When I view the average and standard deviation in calendar time, it isn't helpful because they are highly dependent upon the production grade that I am running. Is there a better way that I could be viewing my data to get a sense of the drift of the average and standard deviation by production grade over time? Solution 1: Histogram 1. Add your signal of interest and your production grade code signal to the display. 2. Create a condition for all production grades using formula: $gradeCode.toCondition() 3. Use the Histogram tool to calculate the average reactor temperature during each grade campaign and display them aggregated over production grade, and time. The same methods from step 3 can be applied to get a second histogram of the distribution of the standard deviation of the signal of interest by grade over time. Solution 2: Chain View 1. Add your signal of interest and your operating state signal to the display. 2. Use Formula to create a condition for all operating states: $stateSignal.toCondition() 3. Use the Signal from Condition tool to calculate the average temperature over the all operating states condition. 4. Use the Signal from Condition tool to calculate the standard deviation of temperature over the all operating states condition. 5. Use Formula to calculate two new signals for “Avg + 2 SD” and “Avg – 2 SD”. 6. Filter your all operating states condition for only the state that you are interested in viewing. In this example we want to view only the capsules during which the compressor is in stage 2, for which the syntax is: $AllOperatingStates.removeLongerThan(7d).removeShorterThan(4h).filter($capsule -> $capsule.getProperty('Value').isEqualTo('STAGE 2')) This formula is taking our condition for all operating states, keeping only capsules that are between 4h and 7d in length, then filtering those capsules to include only those for which the value is equal to stage 2. 7. Swap to chain view and view a longer time range.
  16. A common analytics need is to calculate changes in a signal's value over different time periods (such as hourly or daily). One example is calculating the change in a tank level signal as a way to infer flow rates, production, amount transferred, etc. While the Seeq Formula derivative() function is often useful in these situations, in some cases the user may want to simply calculate the signal change over a specified time period (perhaps once/hour). While there are many ways to do this in Seeq, two efficient ways are: 1) using the Delta statistic in Signal from Condition and 2) using $signal-$signal.delay() in Formula. Here is an example to illustrate: We have a tank level signal shown in lane 1 and we have calculated the hourly change in the tank level by two different methods (the results are shown in lane 2): The first method to calculate the level change per hour uses an Hourly condition (created using the Periodic Condition tool to generate the green capsules). Then, Signal from Condition is used to generate the Hourly Level Change (Signal from Condition) in lane 2, by selecting the Delta statistic over the Hourly bounding condition: The second method uses the delay() function in Formula, subtracting the one hour delayed level from the current value of the level signal. This generates the Hourly Level Change (Formula Delay Function) in lane 2 Note that this approach creates an hourly level difference for each sample point, where the first approach generates a level difference result once per hour. Also note that the user could choose to filter (smooth) the level signal and then apply the level difference calculations, if they desire a more smoothed calculation result. There are several filtering options in Seeq. The agileFilter() function would work well for the level signal in the example.
  17. I have a Boolean signal and would like to count the number of events over a specified time period. How can this be accomplished in Seeq? Thanks, Sam
  18. Overview: This technique example explores two methods for assessing equipment operating conditions per unit of time (i.e. total operating hours per week in this example) using Signal from Conditions (Presented as a Bar Graph) and Histogram. The Signal from Condition approach transforms a condition into a new signal using an equation or statistical function (in this case we will use an equation and the “TotalDuration” function). The approach using the Histogram tool allows transforming a signal into a "value" domain. For example, for a given segment of time, plot the distribution of values. For these examples, we will use “Compressor Power (Area A)” from the Seeq demo data and asset framework, which has routine ON/OFF operating cycles. The objective in this example is to create Derived Data signals to indicate when a compressor is running and calculate operating hours per week. The signals are then presented in two formats - bar graph and histogram. Applications: Similar types of duration analysis of signals from conditions can add value for Seeq users in comparative analysis for batch processes, calculating and monitoring equipment operating hours and tracking target operating envelope deviations. Workflow: 1. Add target signal --Find and add the target signal. In this analysis we will use Compressor Power (Area A) 2. Complete a Value Search to determine when the equipment is running. In this example, I searched the compressor power signal for when it is above 5 kW which indicates it is running. 3. Using Periodic Condition, create a Weekly Signal. This will be used in our Signal from condition Calculation 4. Create a Signal from Condition. Create a new signal Compressor Run Hours Per Week using Signal from Condition Tool. 5. Plot the Signal from Condition as a Bar Graph -- in order to show the derived signal for Compressor Run Hours Per Week as a bar graph, simply click the Customize button in the Details Pane and select the Bar Chart Icon under the Samples column. The result is shown below. Each bar represents the total operating hours of the compressor each week. 6. Histogram Aggregated by Calendar Week- The Histogram Tool can also be used to generate a similar graphical analysis for Compressor Run Hours per Week. However, this tool is currently applicable for performing statistical functions on signals. In this example, we have created a Histogram, Avg Compressor Run Hours per Week, which calculates the average value of the derived-signal, Compressor Run Hours per Week, aggregated by calendar week (Week of Year). The Bar Graph and Histogram are shown on the same display below.
  19. Use Case Background In this Use case, we have 2 signals: Signal 1 and Signal 2. We'd like to use Seeq to calculate the offset (in time) of the peaks in the two signals. The following steps can be used to perform this calculation. Analysis Steps 1. Use the Value Search tool to create a condition for the peaks. 2. Use the Signal from Condition tool (twice) to calculate the maximum value of each signal during the Peaks condition. Be sure to place the timestamp of the statistic at the point of maximum value. 3. Finally, use the following syntax in Formula to calculate the offset between each set of peaks. The result of this Formula is a new time series signal with a sample reporting the offset for each pair of peaks.
  20. Use case: A piece of equipment has a start-up sequence in which it goes through different discrete states sequentially before completing the sequence and reaching steady state. When the equipment is off, the state is 0. When the equipment enters the start-up sequence it cycles through states 1-6 in the pattern "1-2-3-4-5-6". A successful start-up sequence will have all 6 states in the pattern "1-2-3-4-5-6." If a disruption occurs at any point in the start-up sequence the state number will read as state 7, thus a failed start-up sequence could have the pattern "1-7", "1-2-7", 1-2-3-7", etc. This use case describes methods to identify only the successful start-up sequences. Approach 1: If the signal for the state is numeric (e.g. with discrete numeric values of 0-7) 1. Create a new signal that is the running delta of the STATENUMBER signal. Use Seeq Formula and syntax: $statenumbersignal.runningDelta() 2. Create a new condition for all start-up sequences using value search for when the runningDelta signal just created is greater than zero. 3. Calculate the delta in your STATENUMBER signal over each start-up sequence. This value should always be equal to 6 or 7 as the sequence will either complete successfully (go to 6) or fail and end with a value of 7. Use the signal from condition tool to calculate this. 4. Create a new condition for when this delta in the STATENUMBER signal just created is equal to 6. This must be done in Seeq formula (there is a known issue in using value search for this operation) with the following syntax: $deltaInSTATENUMBERsignal.valueSearch(isEqualTo(6)) Approach 2: If the signal for the state is a string that is easily convertible to a numeric signal. This example is a string with discrete values "STAGE0", "STAGE6", etc. 1. In Seeq formula, use the replace() function with the following syntax: $StringSignalForStateNumber.replace('STATE','') 2. In a new Seeq Formula Window apply the toNumber() function to the signal created in step 1 with the following syntax: $SignalFromStep1.toNumber() - this will create a numeric signal with discrete values of 0-7. Approach 3: If the signal for the state is a string value, not easily converted to a numeric signal or if you wish to proceed using the string signal. 1. Use Value Search to identify STATE6 2. Use Value Search to identify STATE7 3. Use Composite Condition (union operator) to create a combined condition "finalStateinSequence" for the final state in sequence, either STATE6 or STATE7. 4. Use formula to create a condition for all start-up sequences (successful and failed). Syntax: $FinalStateInSequence.inverse().move(0,1h) This formula code is identifying all of the time when the final state in sequence condition is not true and extending those capsules by a short amount of time so that the final state value is contained within the "all start-up sequences" capsules. 5. Use Signal from Condition to identify the ending STATENUMBER value for each of the start-up sequences. 6. Identify your successful start-up sequences by doing a valueSearch in Formula to identify when the ending STATENUMBER is equal to STATE7. Formula syntax: $endingSTATENUMBERsignal.valueSearch(isEqualTo("STATE7"))
  21. FAQ: I want to identify the change in value of my signal after a change has occurred. My signal is generally constant (with typical noise) aside from when an event occurs during which there is a step change in the value of the signal. Solution: In order to compare the actual value of the signal before and after some event, you must first identify the event. Method 1: Running Delta. Note: an approach using the running delta function can be preferred to the derivative function (Method 2) when step changes are present as the derivative is infinite during these steps. Using the derivative function works best if the signal is first cleansed/filtered and the interpolation method changed to linear. Use Seeq Formula to create a new signal that is the running delta of the original signal. Use the syntax: $OrigianlSignal.runningdelta() Use the “Search Documentation” bar on the right side of the Formula window to learn more about the running delta function and syntax Once the new running delta signal has been created, do a value search on when it exceeds some threshold to identify the time periods over which you would like to know the start and end values. Note: if the step changes are occurring in both the increasing and decreasing directions, you can still identify all events by using Seeq Formula to take the absolute value of your running delta function ($runningDeltaSignal.abs()) and applying the value search tool to the absolute value signal. The time periods identified using value search can be further manipulated to yield exactly the time periods that you are interested in using Seeq formula and the grow(), shrink(), and/or move() functions. Once the events during which the step change occurs have been identified, you can calculate statistics on them using the Signal from Condition tool. The inputs to the tool will be your original signal and the new condition that you’ve created to identify the events. A few statistics that you may be interested in: Delta: the end value minus the start value of the signal. This would give you the value drop (or gain) during one of these events. Value at start: this will grab the value of the original signal at the start of the event Value at end: this will grab the value of the original signal at the end of the event Method 2: Derivative. Best approach for most rate of change problems, excluding step changes. Use Low Pass Filter tool or Seeq Formula agileFilter() function to cleanse the original signal to remove typical noise from signal. Use Seeq Formula to create a new signal that is the derivative of the cleansed signal. Use the syntax: $CleansedSignal.derivative() Use the “Search Documentation” bar on the right side of the Formula window to learn more about the derivative() function and syntax Once the new derivative signal has been created, do a value search on when it exceeds some threshold to identify the time periods over which you would like to know the start and end values. Note: if the value changes are occurring in both the increasing and decreasing directions, you can still identify all events by using Seeq Formula to take the absolute value of your derivative function ($derivativeSignal.abs()) and applying the value search tool to the absolute value signal. The time periods identified using value search can be further manipulated to yield exactly the time periods that you are interested in using Seeq formula and the grow(), shrink(), and/or move() functions. Once the events during which the value change occurs have been identified, you can calculate statistics on them using the Signal from Condition tool. The inputs to the tool will be your original signal and the new condition that you’ve created to identify the events. A few statistics that you may be interested in: Delta: the end value minus the start value of the signal. This would give you the value drop (or gain) during one of these events. Value at start: this will grab the value of the original signal at the start of the event Value at end: this will grab the value of the original signal at the end of the event
  22. Upstream O&G Customer Use Case: I have created a condition for when my well is shut-in based on a value search on the down hole pressure. I've created another condition for the first hour after the well is shut-in. I would like to create another condition that runs from the end of my 1-hour after shut-in condition until the down hold pressure returns to within 10% of it's pre-shut-in value. Once I have isolated this period of time I would like to calculate an hourly rolling average over only that time period and do the same for my 1 hour after shut-in condition. Solution: To address your first question of creating the t>1 hr after shut-in capsule. One method to do this is below: 1. Create a condition for ~5 min before shut-in and shift it by ~5 min to make sure you have the Steady state DHP prior to shut-in. This is done using Formula. The syntax (quotes not part of code) is "$ShutinCondition.beforeStart(5min).move(-5min)". The beforeStart(5 min) creates a new 5 minute long capsule directly preceding your shut-in capsule. The move(-5 min) function shifts this new beforeStart capsule backwards in time by 5 minutes. 2. Calculate a new signal that represents the average DHP over the condition created in step 1. Use signal from Condition with the following inputs: Signal or condition = DHP Summary Statistic = Average Bounding Condition = condition from step 1 Where to place timestamp = Start Interpolation Method = step Max interpolation = a duration longer than the time between shut-in events 3. Calculate a new signal that is the signal created in step 2 (DHP right before shut-in) + 10%. Use Formula and the syntax "$signalFromStep2*(1.10)". 4. Calculate a new signal that is the delta between the DHP and this initial + 10% signal. Use Formula and the syntax "$DHPsignal-$signalFromstep3". 5. Create a condition for when this delta signal created in step 4 drops below zero. Use value search and <0 as inputs. 6. Create a composite condition that joins the end of your existing capsules t<1 hr after shut-in to the start of your condition created in step 5. The inputs to this composite condition will be: Condition A = t<1 hour after shut in Condition B = Delta signal drops below zero Logic = join Not inclusive of A Not inclusive of B Max capsule duration = long enough to capture the time back down to initial DHP. For each of the two new signals you want to create, you can use formula and the following syntax, where $ChooseCondition will be your t<1 hr and t>1 hr conditions in each formula. "$DHP.within($ChooseCondition).runningAggregate(average(),hours())" This will give you a new signal of the 1-hr rolling average of DHP only during the specified condition.
  23. FAQ: I've calculated a scorecard metric that I want to use in a calculation of a condition. While the scorecard metric is visible in trend view, it is not provided as a signal choice in the drop-downs on the tools or in the Seeq formula window. Can my scorecard metric be used in calculations of other signals/conditions? Answer: In the versions of Seeq currently available (R21.0.41 or earlier), the scorecard metric tool does not actually create a signal despite being able to be viewed in trend view. The signal from condition tool requires the same input arguments and produces the same outputs, but as a signal rather than a metric, which can then be used in the calculation of further signals and conditions using Seeq tools or Seeq formula. If there is a desire to use the calculated parameter (via either scorecard metric or signal from condition) in further calculations AND in view it in a scorecard, we recommend first using signal from condition to do the calculation of the parameter, then referencing your signal from condition in the scorecard metric tool (without actually calculating the metric).
  24. Hi All, Suppose I have created a capsule with a trend which looks like this. a) I would like to select a capsule in these capsules and make it my "Standard Trend". b) Also I would like to find out find out which trends are NOT at least 90% of my reference trend. Basically trying to find out outlier amongst the capsules. c) Using that outlier result in an table format as (% duration out of bound/ Number of capsules which are not atleast 90% of my standard trend) etc would be my next step. Any help or direction for this path would be appreciated.
  25. This use case came up while working with a customer last week, and I thought it was worth sharing on the forum, since other users may be interested. The user I was working with was interested in creating limits for a signal. The limits would be calculated based upon the average and standard deviation of the previous 4 hours of operation; essentially the user wanted to create a rolling 4 hour boundary. We worked out the following solution: 1. Create a periodic condition for the time period that you would like to use for this rolling window. Here I created 4 hour periods: 2. Next, use signal from condition to calculate the average of the signal during each of these 4 hours periods: 3. Use signal from condition again to calculate the standard deviation of the signal during each of these 4 periods. 4. Now use Formula to calculate the upper and lower boundaries based on the average and standard deviation. Here I’m creating boundaries that are +/- 2 standard deviations. Note that the ‘.delay(4h)’ is needed to shift the boundary signals so that the PV signal is being compared to the upper and lower boundaries calculated in the previous 4 hours. 5. Once the upper and lower boundaries are identified, use Deviation Search to determine when the signal is outside of these boundaries.
×
×
  • Create New...