From 359ba0c5f9f86aeceb9dc2cd40df0dc835306741 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anian=20B=C3=BChler?= <anian.buehler@reutlingen-university.de> Date: Wed, 24 Apr 2024 11:26:44 +0200 Subject: [PATCH] Fixed bug in pidBlock --- .../ardublock/translator/block/operators/PidBlock.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/ardublock/translator/block/operators/PidBlock.java b/src/main/java/com/ardublock/translator/block/operators/PidBlock.java index 8433fa7..3bc2443 100644 --- a/src/main/java/com/ardublock/translator/block/operators/PidBlock.java +++ b/src/main/java/com/ardublock/translator/block/operators/PidBlock.java @@ -73,15 +73,15 @@ public class PidBlock extends TranslatorBlock + " long error = setpoint - input; // get error\n" + " out = kp * error; //P output\n\n"; if(integrative) { - functionCode +=" cumError = cumError + error; // compute integral\n"; + functionCode +=" cumError = cumError + (error * intervalSecond); // compute integral\n"; if(limited) { functionCode += " cumError = constrain(cumError, limitLow * 100.0, limitHigh * 100.0); //limit integral against windup\n"; } - functionCode += " out = out + (ki * intervalSecond) * cumError; //I output\n\n"; + functionCode += " out = out + (ki * cumError); //I output\n\n"; } if(derivative) { - functionCode +=" long rateError = error - lastError; // compute derivative\n" - + " out = out - (kd / intervalSecond) * rateError; //D output\n\n"; + functionCode +=" long rateError = (error - lastError) / intervalSecond; // compute derivative\n" + + " out = out + kd * rateError; //D output\n\n"; } if(limited) { functionCode +=" out = constrain(out, limitLow, limitHigh); //limit output\n\n"; -- GitLab