• To Search the Seeq Knowledgebase:

Search the Community

Showing results for tags 'boundaries'.

• Search By Tags

Type tags separated by commas.

Forums

• Community Technical Forums
• General Seeq Discussions
• 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

• Published
• Code
• Media

Found 6 results

1. Using Scorecard Metric to Create Monitoring Charts

Summary: Many of our users monitor process variables on some periodic frequency and are interested in a quick visual way of noting when a process variable is outside some limits. Perhaps you have multiple tiers of limits indicating violations of operating envelopes or violations of operating limits, and are interested in creating a visualization like that shown below. Solution: Method 1: Boundaries Tool One method to do this involves using the boundaries tool. This tool is discussed in Step 3 of this seeq.org post, and results in a graphic like that shown below. Some frequently asked questions around the above method are: Is there a way to make the different levels of boundaries different colors? Is there a way to color the section outside of the limits rather than inside of the limits? Method 2: Scorecard Metrics in Trend View Step 1. Load the signal you are interested in monitoring as well as the limits into the display pane. The limits can be added directly from the historian, or if they do not exist in the historian they can be created using Seeq Formula. Step 2. Open a new Scorecard Metric from the tools panel, create a simple scorecard metric on your signal of interest, with no statistic. Click the "+" icon to optionally enter thresholds, and add the threshold color limits that you are interested in visualizing. Note that the thresholds input in the boundary tool can be constant (entering a numeric value) or variable, selecting a signal or scalar.

3. How can I create and visualize statistical control limits on my signals?

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.
4. Boundaries based on mode of operation

Use Case Background Commonly, engineers are interested in calculating limits on a signal based upon the average and standard deviation. Additionally, there may be different modes of operation during which the performance - and limits - is different. This post describes how to develop mode based boundaries for a process signal to identify deviations from the normal or expected behavior. Mode Conditions In this example, I am interested in calculating boundaries on a Compressor Power signal based upon the mode of operation in a Compressor Stage Signal. (Note: These signals are from Example>Cooling Tower 1> Area A of the Example data shipped with each Seeq installation.) The first step is to identify the 3 stages of operation (Off, Running 1 Compressor, Running 2 Compressors) by performing a Value Search on the Compressor Stage signal: Average Compressor Power using Formula Next, I can use the Formula tool to calculate an Average Compressor Power signal, using the following variables and syntax: Variables Name Item Type \$Series Compressor Power Signal \$High Compressor High Condition \$Low Compressor Low Condition \$Off Compressor Off Condition Formula // Identify a reference capsule over which the statistic is calculated. You can think of this as the golden batch period or the period in time that we know that the system was operating properly. \$refPeriod = capsule("2016-04-01T00:00:00Z","2016-05-01T00:00:00Z") //Cut the single continuous time series signal (Compressor Power) into sections which correspond to the different modes of operation. This gives us three intermediate time series signals which only contain data for the three distinct modes of operation. \$highSeries = \$series.within(\$high) \$lowSeries = \$series.within(\$low) \$offSeries = \$series.within(\$off) // Create three intermediate time series signals, one for each mode of operation. Find the average value of the time series signal during the reference time period for each mode of operation, and then turn that scalar into a time series signal which only exists in the appropriate mode of operation \$highAve = \$highSeries.average(\$refPeriod).tosignal().within(\$high) \$lowAve = \$lowSeries.average(\$refPeriod).tosignal().within(\$low) \$offAve = \$offSeries.average(\$refPeriod).tosignal().within(\$off) // Splice together the three time series signals into a single signal and step interpolate the \$finalSeries \$finalSeries = \$highAve.splice(\$lowAve,\$low,false).splice(\$offAve,\$off,false).toStep() return \$finalSeries Boundaries Using Formula To start, let's calculate the upper boundary as the average + 3 std dev. I can use the Formula tool to calculate this upper boundary using the following variables and syntax. Variables Name Item Type \$Series Compressor Power Signal \$High Compressor High Condition \$Low Compressor Low Condition \$Off Compressor Off Condition Formula \$refPeriod = capsule("2016-04-01T00:00:00Z","2016-05-01T00:00:00Z") \$highSeries = \$series.within(\$high) \$lowSeries = \$series.within(\$low) \$offSeries = \$series.within(\$off) \$highAve = \$highSeries.average(\$refPeriod).tosignal().within(\$high) \$highStdDev = \$highSeries.standarddeviation(\$refPeriod).tosignal().within(\$high) \$highBoundary = \$highAve + \$highStdDev*3 \$lowAve = \$lowSeries.average(\$refPeriod).tosignal().within(\$low) \$lowStdDev = \$lowSeries.standarddeviation(\$refPeriod).tosignal().within(\$low) \$lowBoundary = \$lowAve + \$lowStdDev*3 \$offAve = \$offSeries.average(\$refPeriod).tosignal().within(\$off) \$offStdDev = \$offSeries.standarddeviation(\$refPeriod).tosignal().within(\$off) \$offBoundary = \$offAve + \$offStdDev*3 \$finalSeries = \$highBoundary.splice(\$lowBoundary,\$low,false).splice(\$offBoundary,\$off,false).toStep() return \$finalSeries Similarly, I can calculate the lower boundary as average - 3 std dev using the following variables and Formula syntax. Variables Name Item Type \$Series Compressor Power Signal \$High Compressor High Condition \$Low Compressor Low Condition \$Off Compressor Off Condition Formula \$refPeriod = capsule("2016-04-01T00:00:00Z","2016-05-01T00:00:00Z") \$highSeries = \$series.within(\$high) \$lowSeries = \$series.within(\$low) \$offSeries = \$series.within(\$off) \$highAve = \$highSeries.average(\$refPeriod).tosignal().within(\$high) \$highStdDev = \$highSeries.standarddeviation(\$refPeriod).tosignal().within(\$high) \$highBoundary = \$highAve - \$highStdDev*3 \$lowAve = \$lowSeries.average(\$refPeriod).tosignal().within(\$low) \$lowStdDev = \$lowSeries.standarddeviation(\$refPeriod).tosignal().within(\$low) \$lowBoundary = \$lowAve - \$lowStdDev*3 \$offAve = \$offSeries.average(\$refPeriod).tosignal().within(\$off) \$offStdDev = \$offSeries.standarddeviation(\$refPeriod).tosignal().within(\$off) \$offBoundary = \$offAve - \$offStdDev*3 \$finalSeries = \$highBoundary.splice(\$lowBoundary,\$low,false).splice(\$offBoundary,\$off,false).toStep() return \$finalSeries Final Results Executing these 3 formulas results in 3 new time series signals: Average Compressor Power, Compressor Power +3sd and Compressor Power -3sd. The Customize menu in the Details Pane can be used to adjust how these signals are visualized on the screen:
5. Creating Vertical Boundaries around Transitions Between Operating Modes

Objective: Take a signal for which you have pre-defined upper and lower limits that are determined by an operating mode or production grade. We want to create a vertical boundary around the transition region between the two operating modes that has the greater of the two upper limits and the lower of the two lower limits. Assumptions: A signal for operating mode, product grade, etc exists that can be used to create a condition for all operating modes. The signal can be string or numeric and will be referred to in the solution as \$mode. A signal for the maximum (and minimum) limit by operating mode is available. These will be referred to in the solution as \$maximumAllModes and \$minimumAllModes. If a signal does not exist for these limits, one can be created so long as the maximum and minimum limit are known (can be constant or variable) for each operating mode. This can be done in Seeq Formula using the splice() function. Solution: Use Seeq Formula and the following syntax to create a condition (\$allModes) for all operating modes. In R.21.0.41 or greater, \$mode.toString.toCondition() In versions prior to R.21.0.41, \$mode.toString().toCapsules(max capsule duration) Create a new condition (\$transitionRegion) using Seeq Formula that captures the time for some period before and after the transition between capsules occurs. The following syntax grabs a three hour window after the start of each capsule and shifts it backwards by 0.5 hours to capture a small amount of time before and a larger chunk of time following the transition. \$allModes.afterStart(3h).move(-0.5h) Calculate the minimum limit during the transition region. Use Seeq Formula and the following syntax to find the minimum value of the \$minimumAllModes signal and create a new signal (\$minimumTransitionRegion) that apply that value over the condition \$transitionRegion. \$minimumAllModes.aggregate(minvalue(),\$transitionRegion,durationkey()) Calculate the maximum limit during the transition region. Use Seeq Formula and the following syntax to find the maximum value of the \$maximumAllModes signal and create a new signal (\$maximumTransitionRegion) that apply that value over the condition \$transitionRegion. \$maximumAllModes.aggregate(maxvalue(),\$transitionRegion,durationkey()) Use the boundaries tool to create a new boundary on the original signal with the upper and lower limits. Inputs into the boundaries tool are: Primary signal = the original signal Relationship type = boundary Name = [anything you want] we use transition boundary Upper signal = \$maximumTransitionRegion Lower signal = \$minimumTransitionRegion The output is a boundary around the transition region like shown in the attached screenshot. vertical boundaries.pdf
6. Rolling Limits

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.
×