Jump to content
  • To Search the Seeq Knowledgebase:


Search the Community

Showing results for tags 'signal'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • 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


  • Seeq FAQs
  • Online Manual
    • General Information

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start



About Me



Level of Seeq User

Found 14 results

  1. FAQ: I've got a signal with drop-outs and I want to filter my signal to only visualize samples with values above a threshold. Is there a quick way to do this in Seeq? Solution: We can use Seeq's Signal Filtering capabilities to break down a signal into individual samples and create a new signal that keeps the samples only above your specified threshold. 1. Visualize your signal with drop-outs and determine the threshold value. For this example, we will filter out all samples with a value of less than or equal to 40F. 2. Open a new Seeq Formula window and use the search documentation to look for information on filtering a signal. When we begin to type filter, we see right away an option "filter() Signal". Open the documentation to get an understanding of what the function is doing and example syntax. The first example below is taking a string signal and breaking it down into samples, then keeping samples only if their string value is not equal to 'T4A' (note single or double quotes are required for string inputs). The second example is filtering to remove infinite values or NaN values. The first logical statement "$sample.getValue().isValid()" is keeping only the samples with valid values, removing NaN or other invalid values. The second logical statement "$sample.getValue().isFinite()" is keeping only the samples with finite values. Note that we can string as many logical criteria together as we want here using the && operator. In our case, we want to filter our temperature signal to show only samples with values above 40F. The syntax in the formula input window below "$Temp.filter($sample -> ($sample.getValue().isGreaterThan(40)))" shows how we are able to take our temperature signal, break it down into individual samples, and then only keep samples whose value is greater than 40F. The new filtered signal appears nearly exactly the same as the original, but with the drop-outs removed.
  2. Hi lots, Is there a functionality of "If...then...else" statements in formulars. Or is there at least a workaround? Thanks for your answer in advance!
  3. Hello there, In my worksheet, I used formula function to create a signal used in my boundary. i.e, 0.tosignal(). I found this signal only shows in the worksheet I created, not the others. if there a way to pin this signal? so that i can reuse the signal i have created. Thank you
  4. It is often useful to create a scorecard metric that displays a signal name for use in Organzier Topics. This is relatively simple using Formula and the toSignal() function. This Formula creates a string signal that has a value of "Signal Name" for all of time. After I have my string signal, I can use a simple scorecard metric with no statistics to create a scorecard that just displays the value of this string. I have changed the header to only display the end time. Now, I can use this scorecard in an auto-updating Organizer Topic that will always show "Signal Name". This functionality is very useful if you want to create a string signal that has more than one value. For example, say that I have three signals. I want to create a scorecard metric that tells me which of these three signals is the largest at any point in time. I will start by creating conditions for when each signal is larger than the other two. First, I use Deviation Search to find when Signal 1 > Signal 2 and for when Signal 1 > Signal 3. Then I use Composite Condition (logic: intersection), to find when Signal 1 is max. I repeat this process for Signal 2 - Deviation Search to find Signal 2 > Signal 1 and Signal 2 > Signal 3 + composite condition. Finally, I use Formula to find when Signal 3 is max by using union() and inverse() to find when Signal 1 or 2 are not max : $1max.union($2max).inverse(). Now I have 3 conditions which should cover the whole time series, which are true when each Signal is the maximum of the 3 at any point! I'm now ready to create the string signal. Just like I did for a single string, I will essentially be creating new signals with toString(), but this time, I will use splice() to splice in the different strings ("1 is max", "2 is max", or "3 is max") when each condition is present. This works because my "X is max" conditions will never overlap. The result is a string signal that equals whatever signal is the maximum at every point in time! Finally, I'll use Simple Scorecard again to create a metric that displays this Max Signal for use in Organizer Topics.
  5. Overview Often times two (or more) units that the same products and unit procedures. This is common in continuous processes that are running a specific "grade"; also in batch processes that are manufacturing the same product ID. Since they are identical pieces of equipment or units, the “profiles” of critical process parameters are similar and we want to use profiles from multiple units for our reference profile. In this example we will create a profile from 2 units - the same process can be applied for additional units ad infinitum. Then we will apply this profile to a running batch to look for deviations in near real-time. Step 1: Add Signals and Conditions to Display Add the signals for profiling. Then specify the modes of operation, or unit procedures, using Seeq's Condition logic to create capsules - there are various ways to do this using Seeq's Capsule logic Formula, Value Search, Custom Condition, Composite Condition, etc. Shown below are temperature signals for two units R-401 and R-402, along with their corresponding unit operations. Note that some capsules are overlapping in time, but don't worry, Seeq will handle this just fine. Step 2: View the signals in Capsule Time Here we use the Seeq trending tools to examine the profiles. Capsule Time is a great way to do this. The 'Group' button in the menu can select the appropriate capsules to overlay the signals - and handle those pesky overlapping capsules on the different units. We can filter out additional capsules if we want; but let's use them all in this example. Here are the profiles we’ll use to make our reference profile: Step 3: Build the Reference Profiles The key to building a reference profile with multiple signals and conditions is to use the Formula Tool. The Reference Profile Tool in the Tools Pane provides a nice user experience for a single signal with a single condition - that approach won't work for us here. We will create two unique profiles, upper and lower, but we’ll need 4 formulas so we can repeat the profile over both the R-401 unit procedures and the R-402 unit procedures. We “selected” each capsule in the formula by creating a bunch of capsule groups that just contained a single capsule. This approach works in all cases including overlapped capsules. Here’s the formula for the upper profile, +3 Standard Deviation, repeated over R-401 and we plotted the reference profile in capsule view. Below is the Formula that we used, for easy cutting/pasting. *Pro Tip* - Use the Start and End times from the Capsules Pane to define the capsule() times in the toGroup() function. The times do not have to match the exact times of the capsule - they only need to fully enclose the single capsule. Usually this gives us a little wiggle-room on the times. This formula uses the referenceTable() function to build the profile across the 2 units and 2 signals. We specified each capsule and each corresponding signal in each capsule then added them using addRows() to the referenceTable(). Then we told Seeq which condition to draw the reference profile using repeatOver() along with the statistic to calculate, +3 StdDev, in this case. Important! The referenceTable() function must include Bounded Capsules, i.e. those with specified maxDurations, otherwise you will get an error suggesting to use the removeLongerThan() function. Make sure that the $c401 and $c402 conditions are either bounded or were created with the removeLongerThan() function. $R401_1 = $c401.toGroup(capsule('2019-10-07T05:00-06:00', '2019-10-07T07:00-06:00')) $R401_2 = $c401.toGroup(capsule('2019-10-07T09:00-06:00', '2019-10-07T11:00-06:00')) $R401_3 = $c401.toGroup(capsule('2019-10-07T15:00-06:00', '2019-10-07T16:30-06:00')) $R401_4 = $c401.toGroup(capsule('2019-10-07T16:30-06:00', '2019-10-07T18:00-06:00')) $R401_5 = $c401.toGroup(capsule('2019-10-08T00:00-06:00', '2019-10-08T02:00-06:00')) $R402_1 = $c402.toGroup(capsule('2019-10-07T05:30-06:00', '2019-10-07T07:30-06:00')) $R402_2 = $c402.toGroup(capsule('2019-10-07T11:00-06:00', '2019-10-07T13:30-06:00')) $R402_3 = $c402.toGroup(capsule('2019-10-07T14:00-06:00', '2019-10-07T15:15-06:00')) $R402_4 = $c402.toGroup(capsule('2019-10-07T15:20-06:00', '2019-10-07T16:40-06:00')) $R402_5 = $c402.toGroup(capsule('2019-10-08T00:30-06:00', '2019-10-08T02:30-06:00')) $rt = referenceTable (2min) .addRows ($t401, $R401_1) .addRows ($t401, $R401_2) .addRows ($t401, $R401_3) .addRows ($t401, $R401_4) .addRows ($t401, $R401_5) .addRows($t402, $R402_1) .addRows($t402, $R402_2) .addRows($t402, $R402_3) .addRows($t402, $R402_4) .addRows($t402, $R402_5) .repeatOver($c401 , ReferenceTableStat.StdDev, 3 ) $rt Repeat the above process for the R-401 lower profile. *Pro Tip* - Use the 'Duplicate' functionality by clicking on the 'Item Properties' i-icon in the Details Pane. Then we only need to change the "3" to a "-3" at toward the end of the formula to do a -3 Standard Deviation. Repeat this process 2 more times for the R-402 upper and lower profiles. We only need to change the parameter in the repeatOver() function from $c401 to $c402. Here is everything plotted in Calendar Time as Reference Profiles and then as Boundaries after using the Boundary Tool. And now with Boundaries: Step 4: Apply Boundary to Running Unit Lastly, let's apply this boundary to a currently running mode of operation or batch. Let's focus on unit R-401 at the moment. All that we need to do is add the currently running capsule to the existing 'R-401 Unit Procedure - Product X' Condition. This can be done in a variety of ways using Seeq's Formula functions for modifying conditions. Here I'll simply add a Capsule by drawing it using the Custom Condition tool. Note, the result is a capsule that shows the boundary of the running batch, projected into the future. This same approach can be applied to unit R-402. Seeq is able to handle any arbitrary amount of units, signals, overlapping or not to create your reference/golden profiles.
  6. Summary There are many use cases where the user wants to do an aggregation over a periodic time frame, but only include certain values. Examples abound: for cement calculate the average daily clinker production only when the kiln is running, for biotech pharma the standard deviation of dissolved oxygen only when the batch is running, etc. Here our user is looking into equipment reliability for compressors. She wants to calculate the average daily compressor power to examine its performance over time. Steps 1. Add the signal into Seeq. 2. Use the 'Periodic Condition' or 'Formula' Tool to add a condition for days. This doesn't have to be days, it can be any arbitrary time, but it is usually periodic in nature. To use a custom periodic Condition, consider using the periods() function. For example to do this for days, the formula is: periods(1day) As an example, to change this to 5-minute time periods the formula is: periods(5min) Here are how the days and statistics in the Capsule Pane look for her: 3. Find only the desired values to be used in the aggregate (e.g. Average) statistic. From the values in the Capsule Pane she sees that the average compressor powers results are too low. This is because all the time when the compressor was OFF, near 0, are included in this calculation. She wants to only include times when the compressor is running because that will provide a true picture of how much energy is going into the equipment - and can indicate potential problems. To do this, she creates a 'Value Search' for times to include in this calculation, in this case when the Compressor is ON or > 0.5kW. 4. Create a new signal to only have values *within* the 'Compressor ON' condition. Use the aptly named 'within' function in the 'Formula' Tool. Notice how the resulting Signal in the bottom lane only has values within the 'Compressor ON' condition. Now she can use this because all those 0's that were causing the time-weighted Average to be low... are now gone. 5. Examine the resulting statistical values. She now sees that the calculations are correct and can use this resulting 'Compressor Power only when ON' Signal in other calculations using 'Signal from Condition', 'Scorecard Metric', and other Seeq Tools!
  7. Background: I have a sensor that shows a step change in the amplitude of the signal noise a couple of days prior to instrument failure. It would be useful to be able to identify that step change in the amplitude of the noise so that preventative maintenance can be scheduled rather than running the instrument to failure and causing an unplanned shutdown or production loss event. Solution: Use a combination of Formula and the Value Search tool to identify when this increased signal noise is occurring. Starting signal: 1. Use Seeq Formula and the runningDelta() and Abs() functions to calculate the absolute value of the running delta of the signal of interest. The formula code to achieve this is: //calculates absolute value of running delta of signal $signal .runningDelta() .abs() 2. Use the Value Search tool to identify the periods of time when this absolute value of running delta signal is above some threshold. In this example we use the remove short capsules/gaps functionality to remove capsules and gaps shorter than 1 hour to capture a single event each time the instrument noise increases.
  8. Background: Sensors or calculated tags that totalize a value over time often need to be reset due to maxing out the range of the sensor or the number of available digits in the calculation database. This can create a saw-tooth signal that resets every time this range maximum is reached. In actuality, the signal is constantly increasing rather than building up to the range max and then stepping down to zero to begin counting back up towards the max. Solution: Use Seeq Formula to convert the saw-tooth signal into a continuously increasing signal bounded in time by some reset period determined by the Subject Matter Expert. 1. In this example we begin with a saw-tooth counter signal that resets every time the sensor reaches its range max of 100. 2. Use Seeq Formula to convert the sawtooth signal into a continuous, increasing signal. Note that in order for Seeq to do this calculation, a bounding condition is required. This can either be a repeating periodic condition, or a condition created using the custom condition tool. This can be done in one step using the following code: //creates a bounding condition for running sum calculation $reset = years() //calculates running delta of signal between each sample, compares to zero to ignore negative running delta values, //calculates the running sum of the running delta signal over the bounding condition $signal .runningDelta() .max(0) .runningAggregate(sum(),$reset)
  9. I'm trying to display large values with more significant figures. For instance, annual reporting of large quantities via scorecard only display scientific notation rather than the actual value received within our historian database.I need to be able to display at lease nine significant figures within the score card and be able to view the trend line with the same number of significant figures. Anyone have any thoughts as to how this can be accomplished? Thank you,
  10. Hi all, I have created a workbench with three temperature signals (x, y, z) and I have added six value search conditions (x Hi, x Lo, y Hi, y Lo, z Hi, z Lo). A High and Low condition for each signal. This has created a list of 95 capsules for the six conditions. I am exporting the summary data to excel. The information tab contains a list of my 95 capsules. However, the Capsule Summary tab contains a list of 285 line items. I am seeing the information for all three signals against each capsule ID, rather than just the signal that capsules condition was configured against. I have tried only selecting one signal and its two conditions and exporting. But I still get all 95 capsules and 285 line items. Not sure if I am doing something incorrectly? I expected the Capsule Summary tab to list just the 95 capsules with the relevant stats? I would like to avoid having to create a workbench for each signal and its conditions. Is there another work around? Also the time stamps in the excel export appear as EST despite my profile and workbench being set to GMT? TIA
  11. A common analytics need is to create a signal with numerical values that are based on an existing condition. Users often want to translate a condition (on/off, good data/bad data, running/down, etc.) to a numerical value to be used in calculations. For example, a user may want to multiply a process signal by a 0/1 value based on when the process is down/running. This technique can also be used to replicate "if" logic or "if / else" logic, where different values are returned depending on if the condition is true/false. Converting a condition to a signal value can be easily accomplished in Seeq using the Formula Tool and the splice function. Here is an example where we convert a condition to a signal of 0s and 1s: 1. Use the Value Search Tool to create a HOT condition for time periods when the Temperature signal is > 90 degrees F: 2. Use the Formula Tool to convert the HOT condition to a 1 (when condition is true) and a 0 (when condition is false): 3. View the results in the trend. The new signal in lane 2 has a value of 1 when the HOT condition is true. Otherwise the signal is 0. Additional Information Using Conditions and the Splice Function to Replace If Statements
  12. 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).
  13. FAQ: I want to create a condition where a trend is within a specific range of slope so as to identify instances where it falls inside and outside these ranges. Is this possible? Solution: This can be easily done using a combination of the Formula and Value Search tools in the sequence below. Use formula to calculate a new signal that is the derivative of the original signal. Formula code is: $signal.derivative() Note - if the original signal is step interpolated, the derivative returned may have infinite values. If it is step interpolated, it is best to first change the interpolation method to linear, then take the derivative. Formula code for this method is: $signal.toLinear().derivative() Use the value search tool on your new derivative signal to create a condition when your derivative is above or below a particular value, or in a specified range.
  14. Hello, Using Seeq Tools, are there ways to easily calculate the change in value from one sample to the next, as well as the corresponding sample time? These types of calculations can be useful in a variety of applications (e.g., tank fill/drain, irregularly spaced process samples, equipment status transitions, etc.). Ted Williams
  • Create New...