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