Hello, I am seeking advice on how to achieve a specific task related to customers' requirements for an analogue output (0 - 5V) with adjustable output and ramp time controlled by a recipe system. The challenge is that the output may not always start from 0V. For instance, one recipe may begin with a valve set at a pilot flow rate of 0.5V, which then needs to ramp up to the full flow rate of 4.5V over a specified time period. However, these values vary depending on the selected recipe. I am struggling to figure out how to dynamically calculate the difference in output values and ramp time for each recipe. I initially attempted to calculate the difference between the two flow rates, divide it by the ramp time, and use timers and counters to increment the output value. However, I feel this approach may be overly complex and exceeding my PLC programming knowledge. The equipment being used includes an FX5UC PLC and FX5-4DA analogue output card, along with GX Works 3 and GT Designer software. The variables involved in the recipes are the pilot flow rate, full flow rate, and ramp time. Any guidance or solutions on this matter would be greatly appreciated.
An important step is to accurately scale the raw data into a meaningful range, such as 0-100% or 0-100 ltrs/s, before proceeding with the recipe calculations. Utilize the recipe's start and end variables, as well as the time in seconds, to ensure accurate results. Let's consider a scenario where we are using a % scale from 0.0 to 100.0%. The recipe parameters are as follows: Start % = 20.5, End % = 100.0, Time = 6 seconds. To execute the recipe, set the analogue variable to the recipe start value, which is 20.5 in this case. Calculate the difference between the start and end values, which equals 79.5. Divide this by the time duration of 6.0 seconds to determine the ramp rate (using floating-point calculations is recommended). If needed, you can convert the time into tenths of seconds. IEC timers measure time in multiples of 10ms or 100ms, with conversion functions available to convert integers to time values. Depending on your specific requirements, you may choose to increment the value every second or every tenth of a second. For further exploration of this concept using GXworks3 on an FX5 controller, stay tuned for future updates.
Hello parky, I wanted to thank you for your assistance. The method you suggested seems much simpler than what I was attempting before. I will now try to implement it and see if it works. If you have a moment, I would greatly appreciate it if you could provide an example. Thank you.
Are there specific voltage levels the system will reach, such as a range from 2v to 4v or 1v to 4.5v, or will it always max out at 5v? I have experience with analog signals on FX3 but need to see if FX5 analog signals have scaling parameters or if adjustments need to be made in the PLC code. One potential solution could be dividing the range from 20% to 60% into 100ms intervals, resulting in increments of 0.4% every 10th of a second. For even finer adjustments, a 10ms interval could be considered.
The full output range may vary, starting at 1v and increasing to 4.5v, rather than always going from minimum to maximum. The ramp rate is the rate at which the output changes over time, with a somewhat linear progression but with stepping increments at each time point. A 10ms time base allows for finer control. The analogue output card can be configured in either direction, currently set at 0 - 5V / 0 - 32000 digitally, with the option to adjust the 0 - 32000 range as needed.
I have successfully implemented a system using floating point values ranging from 0-100%. I typically use real units such as liters, percentages, and kilograms as floats, and then utilize a custom scaling block to convert these values back to raw integers. It is necessary to convert integers to real values for calculations and then back to integers for output to the analog system. This system is designed with a 100ms increment, providing a smooth and responsive outcome. I carried out this project using an FX3U in GXWorks2, but it can easily be adapted for FX5 as the functions are similar. In the future, I may attempt to replicate this in FX5 using integers. Please note that I have used decimal points for time measurements (e.g. 0.0 to x.x minutes), but using whole minutes can simplify the process. Adding seconds to the calculation may require slightly more processing power.
You're on the right track starting with calculating the differences between flow rates and ramp times, but perhaps you're making it more complicated than it needs to be. What if you consider each "move" from a lower voltage to a higher voltage as a standalone ramp? You can use the built-in ramp function in the PLC programming environment for this. You define the start and end point (lower and higher voltages) and the ramp time dictated by the recipe. With this setup, you don't have to worry about where you are starting from, each ramp is independent and you just have to wait until one completes before starting the next. I've used this method with success on similar types of tasks using GX Works3. Hope this helps!
Hey there! I'd recommend creating a function within your PLC program that calculates your ramp rate as the difference between your full and pilot flow rates divided by your desired ramp time. This function could be applied differently in each recipe, dependent on the set values. Just ensure your PLC program is set up to read your recipe inputs, whether they are programmed in the HMI or some other means. To handle cases where the starting voltage isn't 0V, you might need to create additional logic that factors in the initial starting voltage prior to ramping. I'd suggest using GX Work’s built-in RAMP function, which allows you to control the starting value, target value and ramp time. Hope this helps!
It seems like you're tackling multiple complexities at once, which I totally understand can be overwhelming. I have a couple of thoughts that may help. Firstly, it sounds like you're on the right track with calculating the difference between your flow rates and dividing by ramp time — this essentially gives you the rate of change. From there, each cycle (or scan time depending on how your PLC is configured) you could increase the value by this rate. This should eventually get you to your desired output over the specified ramp time. What you'll also need to account for is the starting point (the pilot flow rate). You can do this by adding the pilot flow rate to your calculated increment — that's your starting point. To streamline the whole process, consider using built-in function blocks or ladder logic timers provided by GX Works 3. Timers could simplify the continuously incremental action needed, and a function block could encapsulate the whole process for reusability across recipes. Remember that you're not alone and seeking help online or in PLC programming communities is a great step to grow your knowledge! Also, practicing in a simulation environment could help you solidify your understanding. I hope this helps and do keep us updated on your progress!
It sounds like you're on the right track with your approach, but I can see how the complexity can be overwhelming. One way to simplify your ramping logic is to create a function or subroutine that takes the start and end values along with the ramp time as inputs. You could then calculate the step increment based on the total number of intervals you want within the ramp time. This way, your code remains clean, and you can easily reuse this function for different recipes. Additionally, using a state machine approach might help keep everything organized and make managing the different phases of your output more straightforward. If you're familiar with ladder logic, consider breaking it down into smaller, manageable pieces that trigger based on specific conditions. Don't hesitate to lean on documentation or community forums specific to your PLC as well; they can be a great resource!
It sounds like you're facing a classic challenge with ramping output values in PLC programming! Instead of manually calculating the differences and using timers, you might want to consider using a simple linear interpolation approach. Start by defining the current output and target output values based on the selected recipe. You can then calculate the step value by dividing the difference by the total number of increments you'll make over your ramp time (perhaps based on a fixed update rate). This can simplify your logic, allowing you to just increment your analog output value in a loop until you reach the target. Using standard function blocks in GX Works 3 like the 'MOVE' or 'SET' commands can help streamline this further. Don't hesitate to leverage the built-in documentation and forums for FX5UC-specific functions or even simulation tools to test your logic before implementing it!
It sounds like you're on the right track with your approach! Instead of focusing solely on timers and counters, you might consider using a linear interpolation function that can simplify the calculations for your output ramping. You could calculate the difference once when the recipe is selected, and then use that calculated value in your loop to update the output at intervals that correspond to your ramp time. If your PLC supports it, implementing a function block could streamline the process by handling the calculations for you. Additionally, setting up a state machine for each recipe may help manage the flow rates and timings without adding too much complexity. Don’t hesitate to leverage community resources or forums dedicated to FX5UC PLC users for specific programming snippets that could come in handy!
It sounds like you're tackling a pretty interesting challenge with those varying recipe requirements! Instead of manually calculating the increments for your analogue output, you might consider implementing a simple state machine or using a PID control loop if the ramping needs to be smoother. Another approach could be to use a more structured timing method with your PLC, like creating a function block that automatically adjusts based on the input flow rates and ramp time. This way, you can set your start and end points dynamically without complex calculations for each recipe. Also, exploring any pre-built libraries or functions in GX Works 3 that might simplify this process could save you time and headaches. Good luck, and I hope this helps you get on the right path!
✅ Work Order Management
✅ Asset Tracking
✅ Preventive Maintenance
✅ Inspection Report
We have received your information. We will share Schedule Demo details on your Mail Id.
Answer: Answer: To achieve this, you can use a recipe system to control the output voltage (0-5V) with adjustable output and ramp time. You will need to calculate the difference in output values and ramp time for each recipe dynamically.
Answer: Answer: One challenge is ensuring that the output does not always start from 0V, as different recipes may require starting at varying voltage levels. Calculating the difference between flow rates, dividing it by ramp time, and implementing timers and counters can be complex.
Answer: Answer: The equipment required includes an FX5UC PLC, FX5-4DA analogue output card, along with software such as GX Works 3 and GT Designer. The variables involved in the recipes are the pilot flow rate, full flow rate, and ramp time.
Answer: Answer: You can simplify this process by exploring different programming approaches within the PLC environment, seeking guidance on more efficient methods, or potentially utilizing built-in functions or libraries specific to the Mitsubishi platform.
Join hundreds of satisfied customers who have transformed their maintenance processes.
Sign up today and start optimizing your workflow.