mcm4iob / iobroker.pid Goto Github PK
View Code? Open in Web Editor NEWConfigurable PID Controller for ioBroker
License: MIT License
Configurable PID Controller for ioBroker
License: MIT License
If some state is written with ack=tru the change is ignored and a warning is logged. But the state value is not reset to the correct value in use.
Activating RST should not result in reculculation if the adapter is not running or is running at fixed intervals.
Otehrwise unexpected integral calculations are calculated.
Eventually other states cause this incorrect recalculation too - to be checked.
Documentation must be finalized and translated to german once paramters are final.
Version: stable=0.0.0 (0 days old) => latest=0.0.8 (39 days old)
Installs: stable=0 (0%), latest=16 (44.44%), total=36
Click to edit
Hallo mal wieder, ich habe den nächsten Einsatz für den Regler: Wärme-/ Kälterückgewinnung über die Drehzahl der Wärmeräder in der Lüftung. Dazu muss ich den inv mit true oder false aus einem Skript beschreiben können, das geht aktuell nicht. Alternativ könnte ich kp auf einen negativen Wert setzen, der Adapter lässt aber nur positive Werte zu. Bei tn, tv, xp lassen sich negative Werte setzen.
Hintergrund: wenn die Außenluft kälter ist, als die Raumluft, kann ich über die Erhöhung der Drehzahl die Zuluft mit der Abluft erwärmen. Im Sommer ist die Außenluft wärmer, als die Raumluft, d.h. ich kann über die Erhöhung der Drehzahl die Zuluft mit der Abluft kühlen. D.h. wenn Temperatur Außenluft < Raumluft, dann inv = 0 und wenn Temperatur Außenluft > Raumluft, dann inv = 1 . Kannst du inv beschreibbar machen? Dann kannst du auch bei tn, tv, xp nur pos. Werte zulassen.
Danke vorab!
When resuming operation after pausing a controller ths output might perform big jumps even if act and set have not been chaged at all.
Reason seems to be that calculation of the integral part is not suspended during the time the controller is on-hold.
The same error occures when using manual mode.
The state DIFF should contain the true difference even if supression is active.
Suppression is marke using state supr anyway.
warn: pid.0 (15601) Read-only state "pid.0.C-1.xtra.run" has been written without ack-flag with value "false"
The controller-id should be verified to be unique within adapter startup code
Columns are to small for data to be visible.
https://forum.iobroker.net/topic/64250/test-neuer-adapter-pid-pid-regler-v0-0-1-alpha-x/96
Version: stable=0.0.0 (0 days old) => latest=0.0.8 (67 days old)
Installs: stable=0 (0%), latest=29 (69.05%), total=42
Click to edit
activate sentry once a key is provided
-) adapt io-package.json
-) adapt test-and-release.yml
The invert flag does not work as expected.
Der Offset aus der Konfiguration wird nicht in para.off übernommen, sondern ein vorhandener Wert wird bei Instanz-Start mit 0 überschrieben.
https://forum.iobroker.net/topic/64250/test-neuer-adapter-pid-pid-regler-v0-0-3-alpha-x/169
Changing the paramater Tn of a running system results in a jump of y.
It should be evaluated whether ist would be besster to integrate the wighted factor so that no jump is visible.
INT(diff) / Tn change to INT(diff/Tn) should do the magic
Check writes to states with ack=true.
If this is an input only state log a warning if value is ignored.
If this is an i/o state update state to (old) value as soon as possible
Version: stable=0.0.0 (0 days old) => latest=1.1.3 (30 days old)
Installs: stable=0 (0%), latest=35 (36.08%), total=97
Click to use developer portal
Click to edit
Do not close this issue manually as a new issue will be created if condition for update still exists.
Please drop a comment if any reason exists which blocks updating to version 1.1.3 at this time.
Note: This is an automatically generated message and not personally authored by bluefox!
@mcm1957 for evidence
Errors have been loggeed during shutdown
Release 0.0.7
cycle time 1000ms
shutdown triggered by paramater change
pid.0 | 2023-04-24 12:28:30.482 | error | DB closed
pid.0 | 2023-04-24 12:28:30.481 | error | Error: DB closed at Redis.sendCommand (/opt/iobroker/node_modules/ioredis/built/redis/index.js:636:24) at Redis.get (/opt/iobroker/node_modules/ioredis/built/commander.js:122:25) at StateRedisClient.setState (/opt/iobroker/node_modules/@iobroker/db-states-redis/lib/states/statesInRedisClient.js:657:40) at Pid.setState (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/build/lib/adapter/adapter.js:5886:35)
pid.0 | 2023-04-24 12:28:30.477 | error | unhandled promise rejection: DB closed
pid.0 | 2023-04-24 12:28:30.476 | error | Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
pid.0 | 2023-04-24 12:28:30.472 | warn | get state error: Connection is closed.
host.pi4 | 2023-04-24 12:28:29.939 | info | stopInstance system.adapter.pid.0 send kill signal
pid.0 | 2023-04-24 12:28:29.898 | info | Terminated (ADAPTER_REQUESTED_TERMINATION): Without reason
pid.0 | 2023-04-24 12:28:29.897 | info | terminating
pid.0 | 2023-04-24 12:28:29.894 | info | Got terminate signal TERMINATE_YOURSELF
host.pi4 | 2023-04-24 12:28:29.886 | info | stopInstance system.adapter.pid.0 (force=false, process=true)
pid.0 | 2023-04-24 12:27:33.387 | info | processing started for 1 controller(s)
Evaluate additional mode "I" only, i.e. by handling kp/xp == 0 specially
(Optionally ?) use a folder structure to store states.
Sobald man in den Einstellungen auf "Invertieren" drück, bekommt man keine Ausgabe mehr.
Whenever new parameters are set the cycle time is aborted and an extra calculation is performed.
https://forum.iobroker.net/topic/64250/test-neuer-adapter-pid-pid-regler-v0-0-x/224
Release 0.0.6
sup funktioniert irgendwie nur bei Instanzstart, wird sup dann verändert, verliert es seine Funktion und der Regler arbeitet weiter, auch wenn der Betrag der Abweichung< sup ist.
0.0.2-alpha.2
The q flags are set at states where they are not appropiate, i.e.
act should not be set to offline if adapter is stopped
man / man_inp should not be set to offline if adapter is stopped
review handling of all states in respect to q flag
Add a possibility to get input datat ('act') directly from another state.
Consider adding the some for output.
Optionally add offset / factor to those links to allow some scaling of values.
a) last_upd should get role date. This should reult in admin to show a textual date/time
b) IF a) works, state last_upd_str should be removed as it is obsolete
Im LIM is active no read exclamation sign should be visible.
manual mode missing
check io-package and remove/add config parameters
check io-package and check states
check controller id to be unique
check controller id for valid characters
README.md add information
write documentation (en, de)
States belonging to controller-ids which do no longer exist should be removed at startup.
This does NOT apply to controlers only disabled.
die Regler zykluszeit änderungen haben bei mir keinen Einfluss.
Ich habe gerade die Zykluszeit einmal auf 10000ms gestellt.
Der Ist wert kommt natürlich trotzdem alle 2000ms rein (in meinem Fall jetzt).
der Regler aktualisiert sich dann im 2000ms zyklus.
0.0.2-alpha.2
0.0.2-alpha.2
pid Module should check the paramaters for i.e. tn, tv, kp, xp, ... to be vslid numbers and ignore (and log) invalid input.
The descriptive text for state supr missing
Extend testing to include node 18
Hallo, echt stark, dass du da dran gehst! Mit dem PID von Philmod habe ich auch schon rumgespielt, da fehlt mir aber die Stellwert-Begrenzung, es kann nur der I-Anteil limitiert werden (Anti-Wind-Up).
Nachdem ich jetzt mit dem npm PI-Controller Erfahrung gesammelt habe und meine berufliche Heimat die Prozessleittechnik ist, würde ich hier gerne ein paar Ideen einfließen lassen - für die Punkte unten wäre jeweils ein Objekt hilfreich, das auch dynamisch aus einem anderen Skript oder vis verändert werden kann:
if (Math.abs(w - x) < 0.2 { // Regelabweichung mindestens 0.2°, um neuen Stellwert zu berechnen = Totband
var y = pi.Control(0); // Stellwert nicht verändern
}
if getState('mqtt.0.go-eCharger.modelStatus').val == 23) { // bei Phasenumschaltung Regler pausiern
var y = pi.Control(0); // Stellwert nicht verändern
}
pi.setOutputMax(100); // Begrenzung auf 100
Ist das okay, wenn ich Anforderungen, Ideen hier als "Issue" einbringe?
Danke für deine Mühe!
Version: stable=0.0.0 (0 days old) => latest=0.0.8 (67 days old)
Installs: stable=0 (0%), latest=29 (69.05%), total=42
Click to use developer portal
Click to edit
Note: This is an automatically generated message and not personally authored by bluefox!
New roles have been accepted.
Check whether adaptsion should be done
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.