glunord tiller manisha

0 views
Skip to first unread message

Lorri Dent

unread,
Aug 3, 2024, 1:12:13 AM8/3/24
to noncirewal

Thanks for visiting the Klaviyo Community Forum. To create your Community account, please first log into your Klaviyo account with this link. Once logged in, you will be automatically redirected back to this page to finish setting up your new account.

Above is a screenshot of a flow I'm building for a customer survey we'd like to launch.

The functionality is meant to allow us to gauge the success of the email against half of the survey population. That way we can update the email/campaign for the other half.

I created a time delay of 30 days to keep people not in the split in the flow. However, we may not necessarily want to wait the full 30 days if the first half is successful.

If I changed that to 1 day after the flow is turned on, will everyone caught in that time delay be moved on after 1 day?

Thank you!

I think you have a great start for an idea for testing an email by creating a 50% random split and waiting. However, the thing about Flows and time delays is that customer who are already in the Flow will not be affected by you changing the time from 30 days to 1 day.

When you change a delay, this will only impact new individuals entering your flow and individuals that haven't yet reached this step in your sequence. If you update the Time Delay before an email, those already scheduled in the Waiting bucket will not be rescheduled.

The only way to "reschedule" these profiles would be to export the profiles that are waiting, cancel the profiles that are waiting and send them that email as a campaign. There's no way to re-route the profiles that are already scheduled within a flow:

Additionally, if you wanted to test two different emails in general I would recommend A/B testing! An A/B test allows you to show different copywriting and creative work to a subset of your audience to test what makes them more likely to complete the call-to-action (CTA) of your form or email. Feel free to check out this great community post for more info!

My goal is to control a temperature via a valve and heat exchanger. I have process variable (temperature) measured from a pipe. This temperature needs to be raised a few degrees with a heat exchanger. So basically I need to control a valve that allows water to flow through this heat exchanger in order to raise the measured temperature to a desired level.

My original plan was to use a basic PID control to operate the valve. However there is about 0.5-1 minute time delay in the temperature sensor after I open the valve thus raising the temperature. This induces a situation where the PID control has the valve fully open during this time delay (trying to get the temperature raising). Then once the temperature starts raising it raises pretty fast. The PID starts closing the valve almost immediately but because of the time delay in the sensor, the temperature overshoots severely. This leads to severe oscillation and in worst scenario to unstable process. I have tried to tune the PID control to "predict" the time delay in order to close the valve well in advance to minimize overshoot but haven't been successful.

I would really appreciate if someone has any ideas how to achieve this type of control with Labview PID functions. I am also wondering if there is a better type of control procedure for this scenario than a PID control?

This is a very common situation in heater control, and usually PID can be tuned to make it work. How are you doing the tuning? If you're doing it through trial and error, you're unlikely to be successful. For a slow process with time delay I like to use the Cohen-Coon method, or the similar Ziegler-Nichols open-loop method. The idea is that you temporarily remove or disable the PID. Set the valve at a fixed position and wait for the temperature to stabilize. Then, change the valve setting and record temperature data at regular intervals until the temperature is again stable at a new value. Use this data to get initial PID values from the equations provided by the tuning method you choose.

If you need better performance than you can get from a well tuned PID controller for a system with a long time delay - then using a model-based control like a Smith Predictor may help. Feedforward can also help in time delay systems if you problem has changing setpoints or measured disturbances.

Use a conditional split containing a 50% random sample and insert the two different time-delays below this split. Lastly, clone the flow email in question and insert it under the other time delay. The final product will look something like the following image:

I am new to Klaviyo and blown away by the features and support! I appreciate the answer supplied but would suggest this as a feature in the future. The simplicity of designing a flow and then having someone else ask what is the best time delay (when I should have thought to ask)...simply turning that branch into an A/B - with your ability to let the A/B decide the better outcome, set a deadline to end the test and have the best result implemented. Set it and forget it :-) Just a suggestion!

Glad to hear that the answer was helpful. Of course, I certainly understand how a defined feature would be helpful for collecting data more effectively. I have submitted a feature proposal on your behalf. If there is enough widespread interest, the team will start developing the feature but for now this workaround is the best way to effectively run an A/B test for splits :)

I am trying to create a stop button to control multiple vi's at once. A problem is that my subvi has a time delay. To solve that problem the time delay is divided into multiple time delays so that I can interrupt it with a stop button.I am building off of Al S's example on the forums found here. I tried adding a global variable but it is not working.

Greg McKaskle's idea in the last post of that thread seems a better way to do this. Use the timeout of an occurrence (or similar labview feature with a timeout) as your timer, and set the occurrence if you want to stop early.

To drjdpowell, I really do not understand notifiers and occurrences. I have tried to read up on them, but I am confused. I wanted to understand global variables and how they work before I moved on to harder things. If you have any good documents to on the subject I would love to read them.

To aeastet, this is going to be part of a bigger application. All of the timing is not in upper loop because for my project I have a main vi and 3 levels of subvis that I am trying to stop at the same time.

I highly recommend that you take some time and learn how to use notifiers. They are not that difficult to use and they are far superior to global variables. Dependence on local and global variables is a good way to find yourself running into race conditions in your code. Much better to use constructs (notifiers for example) that are intended to message other parts of your program.

Like Mark, I would suggest you are better off learning notifiers and in fact skipping ever using a global variable at all (otherwise you'll just end up having to learn not to use global variables). But in this case, the details don't matter. There are several functions in LabVIEW that allow a process to wait for an event to occur, and they all have a timeout option in case the event never occurs. By using one of these functions as your "wait", you can end the wait early by calling whatever the event is from some other part of your program. "Occurrences" are the simplest. I don't have any documents, as learned most of my early LabVIEW through "Help>Find Examples...".

I wanted to thank everyone for their incouragement to learn notifiers. So I finally did and notifier were the solution I was looking for. I found help from DianeS with her 1st post here and from WayneS1234 with their 1st post here.

i have a little time problem. i've wrote a program which creates in an area a specific numbers of rectangles ... so it begins in the left buttom corner, creates rectangles on the buttom to the right until the end of the area(with a while loop). after this, with an other while loop i jump up one line. in this line the first while loop makes his work again. and so on until the area is full of rectangles.
so this works in principle. but when the procedure jump in the second line it starts to become extremly slowley. and it doesn't matter how many rectangles are created.

c01484d022
Reply all
Reply to author
Forward
0 new messages