Jump to content

Sean T

Seeq Team
  • Posts

    36
  • Joined

  • Last visited

  • Days Won

    9

Everything posted by Sean T

  1. Hi Paul, This error report is generated whenever a duplication happens that results in some things not properly being duplicated. In your instance you might be fine and can just delete the error report page. In this case it looks like there is an item named "Column 2" that was deleted (archived) and thus was not properly copied? Either that or the item named column 2 is a string signal and a unitless value is trying to be replaced for any invalid periods using the replaceNotValid() function. To fix this, replace your invalid sections in the formula with another string (you can convert something to a string using the .toString() function) I would check: where the "column 2" item is used, if at all. Search in the data tab for Column 2. If it isnt used anywhere, then youre good to go! If it is used somewhere, update the formula for Column 2 with a string value that you are replacing not valid for, likely using the string funtion i mentioned above. Hope that Helps! -Sean
  2. To do this, there are a variety of tools i can use in Seeq. First off, you can use the manual condition tool to make a condition out of any time periods of interest. Here is more information on the manual condition tool: https://support.seeq.com/kb/latest/cloud/manual-condition#:~:text=The Manual Condition tool allows,by picking a time range. In this example, i also want to add custom context to each of these time periods (April 2019, quarter 1, Year to Date...) I will use the Formula tool to create a condition containing each of these periods with the associated custom context (capsule properties) Note that I assigned a property to each capsule; this text will be used as the column header in the Table: 2. Create a with the stats i am interested in, or use Scorecard metric if i cant add these statistics using the Columns button: 3. Finally, use the capsule property as the column headers: Content Verified DEC2023
  3. To create a condition for a period that is not in the periodic condition tool, we can use the periods() function in seeq formula. This allows us to not only create periods like 15 minutes, 30 minutes, 2 hours, etc, but to also have overlapping periods, like look at the last 2 hours every 15 minutes. Here is an example of creating a condition using the periods function in formula: You can see in my capsules pane that each capsule is 2 hours long, but a capsule is created every 15 minutes. To create an average for this new period, i can use this as i would any other condition. Here i am showing an example of a 2 hour average calculated every 15 minutes for a temperature: Content Verified DEC2023
  4. To calculate the mean kinetic temperature in Seeq, we need to break the formula up into several steps: 1. Start by calculating the time intervals for each of the data points (tn) i.e. the time between each data point. 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 each of those capsules: $temp.tocapsules().aggregate(totalduration(),$temp.tocapsules(),startkey()).tostep() //Calculate the time between each datapoint as a new signal In the below image i an visualizing the signal created that measures the time between each datapoint with the data points shown. Here my signal is regularly sampled so the resulting signal has a constant value 2. Next, 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) Here i have calculated the exponential relationship: 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 Manual Condition tool for a manual entry period, or can be calculated from any other condition that has been created. The desired time period can be as long or short as desired. In this screenshot i am creating a Manual Condition for my time range: 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). Here i am showing the Signal from Condition calculation for the sum of the exponential relationship: 5. Finally, the MKT calculation can be calculated with Seeq Formula, Here the Numerator is the exponential relationship and the denominator is the sum of time intervals. Of note: the resulting calculation will have units that match your original degree Unit of Measure even though the resultant units will show as otherwise, it is best to use .setUnits() to adjust your units of measure so they are accurate. Here my original units were in Farenheight but i want my output in K so i have set, then converted my units. $H = 83.14kJ/mol (($H/CONSTANT.R)/(-ln($TotalizedNumerator/$TotalizedDenominator))).setUnits('F').convertUnits('K') As an example, below is a graph showing this calculation being done over multiple time periods of interest (green capsules at top) in my Manual Condition: Content Verified DEC2023
  5. To add any properties in the capsules pane into an organizer, We simply need to replicate the capsules pane table in our Tables view. Here you can see my Capsules Pane with several properties i am interested in getting into organizer: We start by navigating to the Tables and Charts view, and selecting a condition table. From here we can build our table! To do this, Click on the columns button in the top toolbar, and either select the default properties you want or use the properties dropdown to select custom properties. Now i have my capsules table replicated in the table view! From here you can insert your content into organizer as you would with any other content! Here is a KB article that walks through inserting content into organizer if more help is needed on that topic: https://support.seeq.com/kb/latest/cloud/inserting-seeq-content#:~:text=Any Seeq content can be added to an Organizer Topic.&text=Use the Seeq icon in,pasting a URL from Seeq. Content Verified DEC2023
  6. The Question "Can i supply a list of items to search for in Seeq" occasionally pops up. Usually this is in the context of a CSV list or similar. While seeq does not support searching for a CSV list, you can use Regex to find a list of items in Seeq! To do this, all of your distinct items need to be separated by the Regex "or" operator: | for example, if i am looking for the following list of assets in the example dataset: Areas A, C G, H and I, rather than manually clicking on each of these items i can supply a search that looks like this: /Area A|Area C|Area G|Area H|Area I/ In this search, the "/ .... /" forward slashes indicate a regex search, and i can supply my list with each item separated by the vertical slash "|" An example: I want to build an asset group with 30+ assets. I have a list of all of these assets and dont want to click on each individual asset to add it to the asset group, there is no great way of identifying these assets other than the list i have. When building my asset group, i can add all the signals i am interested in for my first asset, in this case i want the signals "Optimizer, Temperature" then, using the search bar, i can pass in my regex list search that i have shown above to add all assets i am interested in at the same time! I will use the "select all" option in the search to add them all at one. NOTE: You need to scroll all the way down to the bottom of the list. The search in Seeq will not immediately load every result that matches the search, so scroll down until you hit the end of the list before selecting all items! my search: /Area A|Area C|Area G|Area H|Area I/ The easiest way to generate a list separted by the | operator is to do a find and replace in your favorite text editor: find the character separating your list currently and replace it with the | operator. This post was executed in Seeq version R63. Functionality should be accurate for seeq versions R56-63+
  7. This post is run on spy version 189.1 and should be accurate for any spy module versions prior to 189.1 This question came up recently: "I am building asset trees using Seeq Data Lab (using the Spy.trees functionality or spy.assets functionality). When i create my tree i realize that i want to update some of the metadata- maybe the Unit of Measure is wrong for signals in my tree, maybe i need to change the interpolation method or duration. Usually, when we want to mass update metadata using Data Lab, i search for my signals to update, update the cells in the dataframe that need to be updated, then push that information back using Spy.Push(). In this case the push executes without error but my metadata never updates, why? What am i doing wrong?" When a formula is created in Seeq, the only way to change certain metadata fields is through use of formulas. This specifically applies to Units of Measure (using .setUnits(), .reduceUnits(), or .convertUnits() ) Interpolation Method (.toLinear(), .toStep(), .toDiscrete(), .toPiLinear() ) Max Interpolation Period (using .setMaxInterpolation() ) for conditions, the max condition duration (using .removeLongerThan() ) Lets take a look at an example. Here i have an asset tree built based on the example data tree: Here is my Tree in Workbench: Lets say that i need to update all of the "Compressor Power" signals in my tree because the following are incorrect: Unit of Measure: the current UoM is kW, i need W Interp Method: Currently Linear, i need Step Description: i want to add a description, "test" in this case Name: i dont like the name and want to change it to Comp Power Here you can see my search to find these signals i want to update, i have underlined some of the values i want to change: Here i update my metadata in the dataframe and push: Things seem to be updated as i would like and the push worked fine. If i find one of these signals in workbench though, i see the following: Only some of my Metadata actually updated as i would like. Because Data Lab built trees use a formula to reference the original signal when building trees, we need to use the formula operators to change any metadata that can be adjusted by a formula operator. Here, in order to make my desired changes, i should update my "Formula" column instead of the "interpolation Method" and "Value Unit Of Measure" columns as follows: Change Formula from '$signal' (or whatever it was) to '$signal.toStep().setUnits("W")' or whatever the original formula was, with my metadata changing operators appended on the end. Here you can see it in Data Lab: Now when i check my signal in workbench i see that my metadata was updated as expected: In Summary: when updating Metadata for items that are calculated in Seeq (Items in from a tree made using Seeq Data Lab, for example), if the parameter can be updated by a formula operator (from the list: Value Unit Of Measure, Interpolation Method, Maximum Interpolation, Maximum Duration) then that parameter MUST be updated by using the formula operator. The easiest way to do this is to just append the formula changes to the existing formula in the "Formula" column. Updates for other Metadata parameters can be made directly in the dataframe and pushed back.
  8. As of Seeq version R49 and later, the delay function has been removed and merged with the .move() function. The functionality remains the same though. The final step in this process has changed from $CompressorPower.delay($delayFactor,24h).within($CompressorRunsN) to $CompressorPower.move($delayFactor,24h).within($CompressorRunsN)
  9. Hi david, To add to joe's comment: Besides excel export and looking at this in tables and charts, an easier way to do this would be to simply add the count as a statistic in your details pane. to do this, click on the table icon in your details, it should be right underneath the "customize" button. In the pop up, simply select "count" and the count of data points for each signal will be displayed in the details pane. Hope that helps! Thanks, Sean
  10. Hi thomas, This error can have a variety of causes- some of which are fixed by upgrading your server. Can you submit a support request with the logs to support@seeq.com so we can determine how to best resolve your issue? Thanks, Sean Tropsa
  11. HI Alba, To answer your questions: 1: Currently you can only show one property at a time in the histogram. If you would like to see the product associated with that batch you can use capsule properties to create a new property that has both the batch and the product information. Here is a forum post that shows the use of the setproperties function: 2: if you want to aggregate by average batch duration- you will first need to create a new "Signal from Condition" that calculates the total duration for each batch: From here, you can use this new calculated signal in a histogram to calculate the average batch duration by product
  12. When creating signal forecasts, especially for cyclic signals that degrade, we often use forecastLinear() in formula to easily forecast a signal out into the future to determine when a threshold is met. The methodology is often the same regardless of if we are looking at a filter, a heat exchanger, or any other equipment that fouls overtime or any equipment that needs to go through some periodic maintenance when a KPI threshold is met. A question that comes up occasionally from users is how to create a signal forecast that only uses data from the current operation cycle for signal forecasting. The forecastlinear() operator only takes into account a historical training period and does not determine if that data is coming from the current cycle or not (which results in unexpected results). Before entering the formula, you will need to define: a condition that identifies the current cycle, here i have called it "$runningCycle" a Signal to do a linear forecast on, i have called it "$signal" To forecast out into the future based on only the most recent cycle, the following code snippet can be used in formula: $training = $runningCycle.setmaximumduration(10d).toGroup(capsule(now()-2h, now())) $forecast=$Signal.predict($training, timesince(toTime('2000-01-01T00:00Z'))) $signal.forecastSplice($forecast, 1d) In this code snippet, there are a few parameters that you might want to change: .setMaximumDuration(10d): results in a longest cycle duration of 10 days, this should be changed to be longer than the longest cycle you would expect to see capsule(now-2h, now()): this creates a period during which seeq will look for the most recent cycle. In this case it is any time in the last 2 hours. If you have very frequent data (data comes in every few seconds to minutes) then 2 hours or less will work. If you have infrequent data (data that comes in once a day or less) then extend this so that it covers the last 3-4 data points. $signal.forecastSplice($forecast, 1d): When using forecastLinear(), there is an option to force the prediction through the last sample point. This date parameter (1 day in this case) does something similar- it blends the last historical data point with the forecast over the given time range. In other words, if the last data point was a value of 5, but my first forecasted datapoint had a value of 10, this parameter is the time frame over which to smooth from the historical data point to the forecast. Here is a screenshot of my formula : and the formula in action:
  13. Hi John, If i am understanding correctly- you have data with one signal having multiple values at the same timestamp. Seeq does not support multiple values existing at the same time stamp for signal based data- it will only take one of the values and display that. To get this kind of data to be workable we have 3 options: You can adjust the timestamps of the other datapoints by some small amount so you can see all samples in the same signal, just slightly offset in time You can bring each measured value in as its own signal i.e. product qulaity x measurement 1, quality x measurement 2, etc You can bring this data in as an event (condition) with properties- You can have one capsule per product sample and that capsule can have properties that contain each measurement value as well as any other information about the measurement you might be interested in. Reach out to seeq support support@seeq.com if you want help exploring some of these options further -Sean
  14. A question that comes up from time to time is how to search for a list of signals or other data items in Seeq. Typically we get a request for an ability to search based on a comma separated list. While we do not currently (as of R55) support a comma separated list, you can get around this using Regex searching simply by replacing the comma with a vertical bar "|" and encapsulate the search in forward slashes as below: Compressor Power,Temperature,Relative Humidity becomes /Compressor Power|Temperature|Relative Humidity/ In this search, the forward slashes tell Seeq that this is a Regex search, and the | is an "or" in regex. I.e. it will search for something exactly containing "Compressor Power" or something exactly containing "Temperature" etc. which in effect gives you the ability to search for a list! For very long lists, do a find and replace in a word editor to build the new search. The ability to search for a list will soon become quite handy with the "add all" feature slated to come with R56 which should be coming soon!
  15. Hi Andrew and Feng, We currently do not support importing CSV files with separate date and time columns as Andrew mentioned. There are quite a few date formats and we do not yet have support for all of them including separated date and time columd, for now please use the DateTime format that Andrew mentioned above. We do have a feature request in for supporting separate columns, if you would like, i can attach you to that item so you will be notified as it is worked on. -Sean
  16. Hi Sivaji, You are correct that data pulled/pushed in SPy will be done by default in GMT (actually, UTC). Glad you were able to find a way to specify your timezones for your case where the time zone wasnt mentioned!
  17. When generating a simple value search, using operators like .isLessThan() or using the mathematical operators in formula like <,> would generally be more efficient than specifying a Value Search. The .valueSearch() operator provides aditional benefit over other operators when some condition filtering is also required as we can also specify an entry/exit grace period, and max duration, among other possible operators that can be supplied directly into the valueSearch() operator without having to use other fucntions to accomplish condition filtering. An example where .ValueSearch() would be much simpler than using .isbetween() and other condition filtering operators would be: Create capsules where $signal becomes greater than 5 kW for at least 4 seconds and ending when $signal becomes greater than 15.0 kW for at least 3 seconds. Capsules longer than 1 day are discarded. $signal.valueSearch(1d, isGreaterThan(5.0 kW), 4s, true, isGreaterThan(15.0 kW), 3s, true)
  18. Hi Greg Since you already have a condition identifying when your signal changes, to identify the magnitude of the change all you need to do is use Signal From Condition. Here is an example of how it might look: In this case i am using "Range" because it will always give me a positive value of the change in my power signal. If i wanted to know if it was positive or negative I would use "Delta" instead. Here i am using the Duration as my timestamp so i can more easily accomplish the next step- filtering the original change condition. Since you want to count the number of instances the value changes by more than some amount, we can then filter our original condition (the one that identified the change) so it only retains the capsules where the change was over your threshold. To do this i will use Formula: In this case, i am filtering my Load Swing to keep capsules where the swing is greater than 25kW. You can see the filtered condition is shown in blue where my original Condition is shown in green. From here, you can use the Scorecard Metric to count the number of the filtered capsules. Hope this helps!
  19. Hi Thorsten, A bit more information might help me directly answer your question. Are the calculations being performed on the historian server? If so, then yes we would reference like any other signal. If the calculation is performed within seeq, then the answer is also yes, we should be able to assign that to a tree within the tree file connector depending on how it was created and the specifics of the calculations. Here is an example of the data/datasource ID and datasource name for a Seeq calculation: In general you would assign a seeq internal calculation using this information in place of the equivalent historian information. If you have a bit more information on what exactly you are trying to accomplish i will try and give you a more specific answer. Hope this helps -Sean Tropsa
  20. Can I compare signals in Formula to create conditions rather than doing a Value Search?
  21. Scenario: I have created a regression or prediction model for my process but i want to apply that same regression model to another set of signals or a different period of time. This could be helpful for comparing how one piece of equipment is operating when compared against a regression built for another system. It could be used to predict how a system will behave based on how some other similar system behaved. It could be used predict how a system will behave before you have enough information to build that system or run its own model, or any number of applications where we might want to apply a regression or prediction model built on one set of signals to another set of signals. Solution: First off, we have to build a prediction model! In this case i have modeled a Filtration system, predicting filter head loss. I took into account the time the filter has been in service, the raw water turbidity, and the Filter turbidity. Next, if i click on the information icon for my prediction signal, i am able to see the formula that was used to create this prediction. We will need to copy this formula: Next, I need to identify my new signals. In my case, i am going to apply this prediction model to Filter 12. Once i have all of my signals that will be sued to the prediction i can paste my formula into a new formula and make sure all my variables line up (or, alternately and a bit easier, just use the duplicate to formula function from the information screen shown above by clicking on the down arrow next to the duplicate button). Finally, I need to update the PREDICT section of my formula denoted by the .predict() function with the signals i will apply my prediction model to. I can do this by using the search button in the formula tool to add my new signals, and then update the .predict() section of my formula with my new variables, make sure to put them in correctly and in the right order otherwise your model will be off! Finally, i can use my prediction model that i built for Filter 1 on Filter 12 and derive further insight, in this case i might question whether my systems are truly as similar as i think they are or whether there is something causing my model to deviate from what was expected for filter 12. In my case, both prediction models are in red:
  22. Frequently asked question: How do i highlight capsules? I am looking at quite a few capsules in capsule time, is there any way i can compare or highlight a few of them against the rest to compare performance? Lets say i want to look at the most recent batch compared to all batches in the last month, look at one start up or shut down against several historical, or any number of other reasons why we might want to compare capsules in Capsule Time. Luckily, this is easy in Seeq! While in capsule time, simply select one or several capsules in the capsule pane to highlight them against the rest: Alternatively, if you do not know the date of the problem capsule but you can tell that it stands out, you can just click on it in the display pane to highlight it and it will be selected in the capsule pane for you to dig into further! If you want to un-select one of the highlighted capsules in capsule time, just click on it again and it will be dimmed. Image captured in Seeq R21.043
  23. Giovanni, You can view the prediction model coefficients in the prediction menu by clicking on the "Prediction Model" button: You mentioned that the model does not seem to fit the data? Can you elaborate on this? If you don't feel comfortable posting anything here, feel free to email support@seeq.com and we would be happy to look at your model! As for the trend line, at the moment this is not currently possible, however this is a feature that is in our current beta release R21.044! Please check with your local Seeq admin or contact us at support@seeq.com and we can look at the upgrade process. -Sean
  24. In R21+ versions of Seeq, an easier way to accomplish the up time counter would be to use the following code: 1.toSignal().integral($on) You can add on the modifier .convertUnits('h') to convert the counted time from seconds to hours (or replace 'h' with min for minutes, d for days, etc.) A side note, With the R21.043 release we no longer require a maximum duration when creating capsules, but still require it when performing certain functions like integral(), if you are getting a maximum duration error, just tack on .setMaximumDuration(7d) on to your condition like so: 1.toSignal().integral($co.setMaximumDuration(7d)).convertUnits('h') More info on the maximum duration can be found in this thread:
  25. Drew, As Thorsten said, we do not currently have a way to show the most current values in the trend view of Workbench. If you want to view the value and the trend at the same time, you could create a scorecard as Thorsten suggested, then create an Organizer Topic with both the Scorecard Metrics and the trend view on the same page. You mentioned in your PDF that you wanted to move the trend range (axis) from the left side of the Y-Axis to the right. You can currently accomplish this using the 'Align' option in the customize pane. Select R instead of L: I can submit a feature request for each of the items you show in your attached PDF (View most recent values on the trend and grid lines on the trend axes). If you would like to be attached to the feature requests, please email support@seeq.com so we can attach you. That way you will be notified as your requests get worked on!
×
×
  • Create New...