-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Document units #29
Comments
In PID there are no defaults! The values are the bases of the PID system, and it's value is the part that they take on the system. I'm working on a auto runner, that should be OK for determination of the bases of the values. It's still a work in progress. |
Are the i and d seconds as in the example or measurement points? |
Hi, I think @hannut has a legitimate question here, I was asking myself. As I want to control my central heating, the P and Ds are more in the range of an hour or two. So I tried to set them as seconds here and did not connect the output to my target flow temperature (I hope that's the correct english word for the German "Vorlauftemperatur"). So the controller does not actually set the value. Then this happened: Those are my settings: platform: pid_controller
name: ETA PID Vorlauf Controller
set_point: "{{state_attr('climate.wohnzimmer_master', 'temperature') | float}}"
entity_id: sensor.ts_wohnzimmer_temperature
precision: 1
sample_time: 60
maximum: 70
unit_of_measurement: °C
p: 2
i: 10800 // Seconds
d: 2700 // Seconds So I will now convert them to multiples of the ´sample_time´ value and see what happens. |
The P, I and D, are fractions of the output value! They are the parts that are incremented or decreased when the value is processed! P is incremented based on the difference between the input value and the reference value, I and D are related with the delta of the error. All 3 summed give the output! |
Hi, thanks for the fast response. My knowledge is very limited on that regard, as it is about ten years I had cybernetics. So I took your manual readme and tried to reproduce everything. This is what I understood: So I figured the fist chart is the head (25 °C) So in the case the target value was 25, the overshoot (difference between peak (30) and target value) 5. Then I took the time from the peak until the system goes back down to the target value (I called it Calculate P: Next to i: From the documentation:
So to me: Then to d:
So the x units in the chart are seconds. So when reading my chart I calculate from hours to seconds. Is that correct? |
I get that the
To use a temperate set point and a duty cycle PWM output example it would substitute to be
Since these coefficients are unit mirrors of each error component they are often left off because they can be deduced from the following form
Another way to ask the question is: is this acting in time domain or sample domain. What is the sample window for I, what is the sample window for D, and what is the acting window for both? |
Short answer from the sources: it is in the time domain using: https://www.geeksforgeeks.org/python-time-monotonic-method/ So basically in seconds with a millisecond part, like 15.23 s |
It would be very helpful if we could document the units of P/I/D and also what the defaults are (P of 0 appears to be ∞, not 0 for example)
https://www.youtube.com/watch?v=IB1Ir4oCP5k
The text was updated successfully, but these errors were encountered: