I am currently using a L33ER Compact Logix Controller with RSLogix 5000 version 20 control logic and implementing a PID block for control purposes. I have encountered situations where I need to set the maximum output of the PID block to a value other than 100% and the minimum output to something other than 0%. Despite my attempts to write to the .MAXO and .MINO tags of the PID controller, I have not been successful in affecting the control variable. I am seeking advice on how to clamp the output of the PID block without relying on a compare function that sets limits at the physical analog output. Any suggestions would be greatly appreciated. Thank you for your assistance.
When setting up PID controllers, it is common practice to run them with a standard output range of 0 to 100%. However, it may be necessary to scale the output externally to meet specific requirements. Adjusting the clamp value is a straightforward process - simply multiply the output by a different value. For example, to achieve a range of 0 to 80%, multiply the output by 0.8, and for 0 to 20%, multiply by 0.2. It is important to note that different tuning may be required for various scalers, especially when dealing with tight loops and varying scaling factors. In such cases, tuning to the midpoint of the target range is recommended. For a wider input range of -100 to +100%, a simple calculation can be applied by subtracting 50 from the output and then multiplying the result by 2. To ensure accurate results, initialize the PID to 50 when starting from 0 trim. This approach also works effectively for adjustments outside the standard 0 to 100% range.
Incorporating the clamp logic outside of the PID block based on your input. Appreciate the feedback.
I am attempting to replicate nmontev's approach, but with the added requirement of clamping the output of the PID (or the control variable) within a specific range. Despite my attempts to update the MINCV and MAXCV values, the PID does not seem to incorporate these changes once it is enabled. Furthermore, I aim to maintain the PID's previous accumulated output when adjusting the range, ruling out external scaling as a solution. Ideally, if the output exceeds the new range, it should be clamped and resume from that point, similar to the behavior when switching from manual to automatic mode. While I understand this may be a challenging task, I am hopeful that there is a method to achieve this. Any assistance you can provide would be highly valued!
In order to optimize your PID control system, it is recommended to adjust the output scaling within the range of 0 to 100% and then apply external scaling as needed. By multiplying the output by a specific value, such as 0.8 for 0 to 80% or 0.2 for 0 to 20%, you can easily customize the clamp value. Keep in mind that fine-tuning may be required for different scaling factors, especially if there is a substantial variance in scaling. It is advisable to set the PID loop to the midpoint of the target range for optimal performance. If you require a wider range, such as -100 to +100%, you can achieve this by subtracting 50 from the output and then multiplying the result by 2. Make sure to initialize the PID with a starting value of 50 for 0 trim. By properly adjusting the output scaling, you can effectively "detune" the PID response and ensure consistent feedback for improved control system performance. Consider implementing limit values to .MAXO for a more streamlined approach to managing output clamp settings.
Upon reviewing the documentation, it is unclear why MaxO and MinO are not functioning as expected. Have you considered utilizing a PIDE instruction instead? By doing so, you can easily establish the windup lo and hi limit flags to prevent the output from exceeding specified conditions.
While it can indeed be frustrating to encounter restrictions with the default .MINO and .MAXO values in the PID, there might be a workaround here that could serve your needs. An option could be to map the actual PID output value to the range you want. You can create this map based on the percent output from the PID. For instance, if you were looking for an output of 50% to 150%, a PID output of 0% would map to 50%, and a PID output of 100% would map to 150%. This may require some trial and error to fine-tune, but it will provide you a level of flexibility with your output ranges.
It seems like you've done quite a bit of troubleshooting already. Here's a possible solution: Are you aware of the .OUT.ENG_HIGH and .OUT.ENG_LOW tags related to the PID block? It appears that you are trying to change the maximum and minimum values using the .MAXO and .MINO tags directly which should work in theory. However, those tags merely constrain the limits - they don't affect the actual output ranges. Try modifying the .OUT.ENG_HIGH (for the max value) and .OUT.ENG_LOW (for the min value) of the PID block instead. This should allow you to set specific output constraints without binding the entire system between 0 and 100%.
✅ 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: - To set output limits in RSLogix 5000 PID Controller, you can write to the .MAXO and .MINO tags of the PID controller. However, if this method is not affecting the control variable, there are other approaches to consider.
Answer: - Yes, it is possible to set a maximum output value other than 100% in RSLogix 5000 PID Controller by adjusting the .MAXO tag of the PID block.
Answer: - To set a minimum output value other than 0% in RSLogix 5000 PID Controller, you can modify the .MINO tag of the PID block.
Answer: - If writing to the .MAXO and .MINO tags of the PID controller does not affect the control variable, consider alternative methods such as implementing a compare function or exploring other techniques within RSLogix 5000.
Join hundreds of satisfied customers who have transformed their maintenance processes.
Sign up today and start optimizing your workflow.