{"id":18005727,"url":"https://github.com/andre-dietrich/tutorial_regelungstechnik","last_synced_at":"2026-01-19T10:33:18.152Z","repository":{"id":86328206,"uuid":"160538037","full_name":"andre-dietrich/Tutorial_Regelungstechnik","owner":"andre-dietrich","description":"Regelungstutorial in LiaScript","archived":false,"fork":false,"pushed_at":"2019-11-23T22:23:23.000Z","size":269,"stargazers_count":0,"open_issues_count":0,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-04T10:47:12.355Z","etag":null,"topics":["liascript","liascript-course"],"latest_commit_sha":null,"homepage":"https://liascript.github.io/course/?https://raw.githubusercontent.com/andre-dietrich/Tutorial_Regelungstechnik/refs/heads/master/README.md","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andre-dietrich.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-12-05T15:23:19.000Z","updated_at":"2024-10-29T15:45:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"1024908e-f172-4b21-bbf9-db6b81b8aabd","html_url":"https://github.com/andre-dietrich/Tutorial_Regelungstechnik","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/andre-dietrich/Tutorial_Regelungstechnik","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andre-dietrich%2FTutorial_Regelungstechnik","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andre-dietrich%2FTutorial_Regelungstechnik/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andre-dietrich%2FTutorial_Regelungstechnik/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andre-dietrich%2FTutorial_Regelungstechnik/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andre-dietrich","download_url":"https://codeload.github.com/andre-dietrich/Tutorial_Regelungstechnik/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andre-dietrich%2FTutorial_Regelungstechnik/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28565559,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T08:53:44.001Z","status":"ssl_error","status_checked_at":"2026-01-19T08:52:40.245Z","response_time":67,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["liascript","liascript-course"],"created_at":"2024-10-30T00:21:20.264Z","updated_at":"2026-01-19T10:33:18.135Z","avatar_url":"https://github.com/andre-dietrich.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\nauthor:   André Dietrich\n\nemail:    andre.dietrich@ovgu.de\n\nversion:  1.0.1\n\nlanguage: de\n\nnarrator: Deutsch Male\n\nlogo:     https://upload.wikimedia.org/wikipedia/commons/thumb/b/b3/Einfacher_Regelkreis_n.svg/500px-Einfacher_Regelkreis_n.svg.png\n\ncomment:  Dies soll eine kleine interaktive Einführung in die Grundlagen der\n          Regelungstechnik sein.\n\nscript:   https://canvasjs.com/assets/script/canvasjs.min.js\n\n\n@eval\n\u003cscript\u003e\nfunction frmt(x, n) {\n    return Number.parseFloat(x).toFixed(n);\n}\n\nfunction reportError(error) {\n   let line = getLineNumber(error);\n   let details = [];\n   let msg = \"An error occured\";\n\n  if (line) {\n    details = [[{ row : line-1,\n               column : 0,\n                 text : error.message,\n                 type : \"error\" }]];\n\n    msg += \" on line \" + line;\n  }\n  send.lia(\"eval\", msg + \"\\n\" + error.message, details, false);\n};\n\nasync function eeval(code) {\n  function update(t, w, ist) {\n      dps_ist.push({x: t, y: ist});\n      dps_soll.push({x: t, y: w});\n      chart.render();\n  }\n\n  document.getElementById(\"container@0\").hidden = false;\n\n  let dps_ist  = [];  // dataPoints\n  let dps_soll = []; // dps2\n\n  let chart = new CanvasJS.Chart(\"container@0\", {\n      title :{ text: \"@0\"   },\n      axisY: { includeZero: false },\n      data: [{ name: \"Ist-Wert\",\n               showInLegend: true,\n               type: \"line\",\n               dataPoints: dps_ist },\n             { name: \"Soll-Wert\",\n               showInLegend: true,\n               type: \"line\",\n               dataPoints: dps_soll }]\n  });\n\n  function print(e) {\n      console.log(e);\n  }\n\n  const sleep = (milliseconds) =\u003e {\n      return new Promise(resolve =\u003e setTimeout(resolve, milliseconds))\n  }\n\n  try {\n    code = code.replace(\"wait\", \"await sleep\");\n    const evalString = '(async function runner() { try { ' + code + '} catch (e) { reportError(e) } })()';\n\n    await eval(evalString).catch(function(e) {\n      reportError(e);\n    });\n    send.lia(\"LIA: stop\");\n  }\n  catch(e) {\n    reportError(e);\n  }\n};\nsetTimeout(function(e){ eeval(`@input`+\"\\n\") }, 100);\n\n\"LIA: wait\";\n\u003c/script\u003e\n\n\u003cdiv id=\"container@0\" class=\"persitent\" style=\"height: 370px; width:100%;\" hidden=\"true\"\u003e\u003c/div\u003e\n\n@end\n\n--\u003e\n\n# Regelungstechnik eine Einführung\n\n                               --{{0}}--\nAuch wenn es sich vielleicht technisch anhört und sehr oft kompliziert\nbeschrieben wird, so ist eine Regelung ein sehr altes Konzept, das schon weit\nvor dem Menschen von Mutter-Natur genutzt wurde, damit ihre Organismen sich auf\nÄnderungen der Umgebung anpassen können.\n\n                               --{{1}}--\nDamit ist hier jedoch nicht die Evolution gemeint, sondern die vielen kleinen\nAbläufe, die im inneren eines jeden Organismus stattfinden, wie die\nKonstanthaltung der Körpertemperatur oder des Blutzuckerspiegels, die Anpassung\nder Pupille and Helligkeitsänderungen, das Halten den Gleichgewichts, bei\neinfachen Organismen können sogar deren Verhaltensweisen leicht mit\nregelungstechnischen Mechanismen erklärt werden.\n\n{{1-2}}\n![Pupilar-Reflex](https://upload.wikimedia.org/wikipedia/commons/f/f0/Eye_dilate-thumb_300px.gif)\n\n                               --{{2}}--\nDie ersten Menschen, die dieses Prinzip nachweislich, erkannten und nutzten\nwaren, nicht wie so oft erwähnt, die Ingenieure des 17. und 18. Jahrhunderts wie\nzum Beispiel James Watt[^1] mit seinem Fliehkraftregler, sondern Mechaniker der\ngriechischen Antike, wie Ktesibios, Philon und Heron, die Schwimmerregelungen\nerdachten, wobei die ursprüngliche Anwendung im Bau von Wasseruhren lag.\n\n{{2}} ![Fliehkraftregler](https://upload.wikimedia.org/wikipedia/commons/3/33/WattReg.jpg) \u003c!--width=\"100%\"--\u003e\n\n\n[^1]: James Watt wird oft auch fälschlicherweise die Erfindung der Dampfmaschine\n      angedichtet, dieser erkannte jedoch nur deren wirtschaftliches und\n      industrielles Potential und verbesserte die von Thomas Newcomen 1712\n      konstruierte Dampfmaschine.\n\n## 1. Gundlagen\n\n**Also was ist nun eine Regelung?**\n\n                             --{{1}}--\nDie Abbildung zeigt den typischen Aufbau eines einschleifigen Regelkreises,\nhierbei wird im Gegensatz zu einer Steuerung (die hier nicht behandelt werden\nsoll) mit dem Prinzip der Rückkopplung (Feedback) gearbeitet. Dabie wird die zu\nregelnde Größe (Ist-Wert) fortwährend überwacht und mit einer anderen Größe, der\nFührungsgröße (Soll-Wert), verglichen. Die Regelgröße kann durch verschiedene\nexterne Kräfte (Regelstrecke) gestört werden und damit von der Führungsgröße\nabweichen.\n\n                             --{{2}}--\nEin Vorteil gegenüber der Steuerung ist, dass diese störenden Kräfte nicht im\nEinzelnen erfasst werden müssen (eventuell ist dies gar nicht möglich), vielmehr\nwird nur der Unterschied zwischen Regel- und Führungsgröße (Ist- und Soll-Wert)\nals Gesamtfehler (oder Regelabweichung) betrachtet. In Abhängigkeit dieses\nGesamtfehlers wird versucht, eine dritte Größe (Stellgröße) in geeigneter Weise\nzu beeinflussen, um die Regelabweichung zu minimieren.\n\n                            --{{3}}--\nWas hier noch nicht erläutert wurde, das ist die Regeleinrichtung. Dabei handelt\nes sich um den eigentlichen Regler, also P, I, D und die die Kombinationen\ndaraus, sowie weiter Arten. In den folgenden Abschnitten werden wir die\nverschieden Reglerarten noch näher erläutern.\n\n````````````\n                                                        Störgröße -+\n                                                           d(t)    |\n Führungsgröße     Regelabweichung           Stellgröße            v\n          w(t)     e(t)   +------------------+  u(t)  +--------------+\n     ---------\u003e o ------\u003e | Regeleinrichtung |-------\u003e| Regelstrecke |----- o -----\u003e\n                          +------------------+        +--------------+      |\n                ^                                                           |\n                |___________________________________________________________|\n                                (Rückführung der Messgröße)\n````````````\n\n                                 --{{4}}--\nBetrachten wir das Beispiel nochmal kurz aus den Blickwinkel eines Autofahrers\nauf der Autobahn (ohne Abstandsautomatik, CruiseControl, etc.). Der Fahrer muss\ndie Geschwindigkeit seines PKWs ständig an die verschiedenen\nRichtgeschwindigkeiten und die aktuelle Verkehrssituation anpassen. Die\nFührungsgröße steht hier für die vorgegebene Richtgeschwindigkeit, die\nRegelgröße steht für die Geschwindigkeit des Fahrzeugs. Über das Tachometer kann\nder Autofahrer ständig vergleichen, wie sich seine aktuelle Geschwindigkeit von\nder Richtgeschwindigkeit unterscheidet (Rückkopplung). Ausgehend von diesem\nGeschwindigkeitsunterschied beschleunigt oder bremst der Autofahrer, die\nStellgröße, mit der er auf die Geschwindigkeit einwirkt, ist sein Fuß auf dem\nGaspedal. Störkräfte könnten in diesem Beispiel die verschiedenen Anstiege oder\nKurven der Fahrstrecke, aber auch andere Autofahrer sein. Aufgrund der Störungen\noder der Änderung der Richtgeschwindigkeit ist der Fahrer immer wieder\ngezwungen, seine Geschwindigkeit anzupassen (Regeln).\nWie jeder Fahrer auf das Gaspedal tritt, eher langsam und zaghaft oder schnell\nund ruppig, wird durch seine Art und Regelparameter bestimmt.\n\n## 2. Arten von Regelungen\n\n                           --{{0}}--\nJe nach Regelungsaufgabe gibt es eine Vielzahl verschiedener Typen von\nRegelungen, die ihrerseits spezifische Vor- und Nachteile besitzen. Durch die\nKombination verschiedener Regler lassen sich wiederum andere Regler finden mit\nwieder anderen Eigenschaften (in diesem Zusammenhang spricht man auch Reglern,\nbestehend aus Regelgliedern). Welcher der ideale Regler für eine gegebene\nRegelungsaufgabe ist, lässt sich meist nur schwer ermitteln. Man benötigt zum\nTeil genaue Kenntnis der Regelstrecke, erschwerend können noch\nGüteforderungen[^1] hinzukommen und wurde schließlich ein Regler gefunden, so\nmüssen noch dessen Parameter angepasst werden.\n\n\n````````````\n\n    +-----\u003e Prozess (Aufgabe) -----+\n    |                              |\n    |                              v\n\n Aktuatoren                    Sensoren\n\n    ^                              |\n    |                              |\n    +---------- Regler??? \u003c--------+\n````````````\n\n                           --{{1}}--\nDie wichtigsten klassischen Regler sollen im Folgenden kurz vorgestellt werden.\nDazu zählen Proportional-, Integral- und Differenzialregler.\n\n\n[^1]: Güteforderungen können u. a.die Stabilität, die Störkompensation und\n      Sollwertfolge, sowie die Robustheit der Regler betreffen.\n\n### 2.1 Proportionalregler\n\n                               --{{0}}--\nIn ihrer einfachsten Form spricht man von einem verzögerungsfreien P-Regler,\ndabei verändert sich der Wert der Stellgröße $u(t)$ proportional zur\nRegelabweichung $e(t)$:\n\n$$ u(t) = K_{P} * e(t) $$\n\n                               --{{1}}--\nDer statische Faktor $K_{P}$ gibt die Stärke an, mit der der P-Regler auf die\nRegelabweichung reagiert. Bei dem hier vorgestellten Regler handelt es sich des\nWeiteren um einen Regler mit Proportionalglied 0ter Ordnung (PT0). Die Ordnung\neines Gliedes gibt dessen Verzögerung an.\n\n                               --{{2}}--\nDer Vorteil des P-Reglers liegt in der schnellen Reaktion auf Änderungen der\nRegelgröße. Des Weiteren neigen P-Regler bei einem zu hohen Wert für $K_P$ zu\nSchwingungen, was mitunter zu einer bleibenden Regeldifferenz führen kann. Eine\nbleibende Regeldifferenz tritt zum Teil auch bei einem zu klein gewählten $K_P$\nauf, der Regler findet zwar einen statischen Endwert, dieser liegt dann jedoch\nweit unter dem Optimum.\n\n### 2.2 Integralregler\n\n                                 --{{0}}--\nBeim integralwirkenden Regler (I-Regler) wird die Stellgröße $u(t)$ durch\nIntegration der Regeldifferenz $e(t)$ gebildet. Die Stellgröße strebt dabei\nnur einem konstanten Wert zu, wenn die Regeldifferenz mit fortschreitender Zeit\n$t$ gegen null geht.\n\n$$ T_{I} \\dot{u}(t) = e(t), u(0) = u_{0} $$\n\n                                 --{{1}}--\nDas verzögerungsfreie I-Glied wird durch die Differenzialgleichung mit $T_I$ als\nIntegrationskonstanten, beschrieben. Nach dem Hauptsatz der Differenzial- und\nIntegralgleichung erhält man für den Anfangswert $u(0) = u_0$ die eindeutige\nLösung:\n\n{{1}} $$ u(t) = \\frac{1}{T_I} * \\int_{0}^{t} e(t) dt + u_{0} $$\n\n\n                                  --{{2}}--\nIntegralwirkende Regel sind im Vergleich zu anderen Reglern zwar langsamer,\nhaben jedoch den Vorteil, dass sie eine Abweichung von Soll- zu Regelgröße\nvollständig eliminieren können.\n\n### 2.3 Differenzialregler\n\n                                --{{0}}--\nBei differenzialwirkenden Regelungsgliedern (D-Regler) bestimmt die Änderung der\nRegelabweichung die der Stellgröße. Ein verzögerungsfreies D-Glied ist wie folgt\ndefiniert:\n\n$$ u(t) = T_D \\frac{de(t)}{dt} $$\n\n                                --{{1}}--\nReale physikalische Systeme lassen sich praktisch nicht mit Reglern, bestehend\naus einem verzögerungsfreien D-Glied, regeln, da die Stellgröße hier nur mit\neinem Diracimpuls antwortet. Das heißt, die Stellgröße steigt zu Beginn\nunverhältnismäßig stark und geht dann bei konstanter Regeldifferenz gegen null.\nAus diesem Grund müssen D-Glieder auch mit anderen Regelgliedern kombiniert\nwerden, vorzugsweise mit P-Reglern, sie werden aber auch zur Stabilisierung von\nI-Reglern höherer Ordnung eingesetzt. Ein Nachteil aller Regler mit D-Anteil ist\ndie Unruhe bei verrauschtem Eingangssignal. Das Rauschen wird verstärkt und über\ndie Stellgröße wieder in den Regelkreis, was unter anderem auch zu starken\nSchwingungen der Stellgröße führen kann.\n\n## 3. Digital-/Software-Regeler\n\n                                --{{0}}--\nDie folgenden Seiten sollen den Schrecken etwas mindern und zeigen, wie einfach\nman Regler in einem Programm implementieren kann.\n\n\n### 3.1 Diskretisierung\n\n                                --{{0}}--\nAuch wenn die Formeln auf den vorhergehenden Seiten etwas kompliziert aussahen,\nist, deren Diskretisierung um ein Vielfaches einfacher und man benötigt kein\nCAS[^1](Computer Algebra System) um diese in Software auszudrücken.\n\n                                --{{1}}--\nDie Diskretisierung eines P-Reglers sollte trivial sein und für jeden\nersichtlich.\n\n{{1}} $$ u(t) = K_P * e(t) $$\n\n\n                                --{{2}}--\nDie Gleichung für den Integral-Regler sieht schon etwas komplizierter aus, für\nden Anfang. Wenn wir von einer konstanten Abtastzeit ausgehen, die nicht gegen\nnull strebt, dann das Integral auch durch eine einfache Summe ausgedrück werden.\nWenn wir von dem Startpunkt $u(0) = 0$ ausgehen, dann können wir diesen Term\nauch weglassen. Die Darstellung in Software ist sogar noch um einiges\ntrivialter.\n\n                  {{2}}\n$$ u(t) = K_I * \\sum^{t}_{t = 0} e(t) + u(0) ,\n\n   \\text{mit } K_I = \\frac{1}{T_I}\n$$\n\n                               --{{3}}--\nZu guter Letzt, die diskrete Formel für den D-Regler. Um das ganze noch ein\nwenig zu vereinfachen, setzen wir im Folgenden $T = 1$.\n\n{{3}} $$ u(t) = K_D \\frac{e(t) - e(t-1)}{T} $$\n\n### 3.1 Kombination\n\n                               --{{0}}--\nEin PID-Regler kann einfach durch Addition der einzelnen Regelglieder gebildet\nwerden und die unterschiedlichen Faktoren ($K_P$, $K_I$, $K_D$) sind die\nStellschräubchen an denen der Regler eingestellt werden kann. Mit einem Wert\ngleich 0 kann das jeweilige Regelglied auch ausgeschaltet werden.\n\n$$ u(t) = \\underbrace{K_P * e(t)}_{\\text{Proportionalteil}}\n        + \\overbrace{K_I * \\sum^{t}_{t = 0} e(t) + u(0)}^{\\text{Integralteil}}\n        + \\underbrace{K_D * (e(t) - e(t-1))}_{\\text{Differenzialteil}}\n$$\n\n                              --{{1}}--\nÜblicherweise und wie der Name schon sagt, geht man bei einem PID-Regler davon\naus, dass der P-Anteil am höchsten ist, somit wird schnell auf den Fehler\nreagiert. Den zweithöchsten Einfluss hat der I-Anteil, der dafür sorgt, dass der\nRegler nicht schwingt und den Soll-Wert auch exakt erreicht. Das schwächste\nGlied im Bunde ist der D-Anteil, der bei starken Änderungen des Fehlers für eine\nschnelle Reaktion sorgen soll, jedoch mit Rauschen sehr viele Probleme hat.\n\n{{1}} $$ K_P \\gt K_I \\gt K_D $$\n\n### 3.2 Simulation\n\n\n                                 --{{0}}--\nDas folgende Programm soll demonstrieren wie einfach man selber eine Regelung\nsamt Regelstrecke implementieren kann. Alle wichtigen Paramter sind im Kopf des\nProgramms gesetzt, wobei zu beachten ist, das die integral (`Ki`) und\ndifferenzial (`Kd`) hier noch ausgeschaltet sind. Wenn ihr ein wenig mit den\nWert für `Kp` experimentiert, dann werdet ihr schnell merken, dass dieser Regler\nallein sehr unbrauchbar ist und für große Werte schnell Überschwingt und bei\nallen kleineren Werten sein Soll niemals erreicht. Er ist deshalb nur in einigen\nSpezialfällen nützlich. Versucht deshalb auch den I-Anteil langsam zu erhöhen\nund nehmt dann den D-Anteil hinzu. Beachtet, wie sich die unterschiedlichen\nRegler einem festen Wert annähern.\n\n\n```javascript PID-Regler.js\nlet w  = 1;   // Führungsgröße (Sollwert)\nlet u  = 0;   // Stellgröße (Druck auf das Gaspedal)\n\nlet Kp = 0.6; // proportional Faktor\nlet Ki = 0;   // integral     Faktor (ausgeschaltet)\nlet Kd = 0;   // differenzial Faktor (ausgeschaltet)\n\nlet e_now  = 0;  // Regelabweichung e(t)\nlet e_old  = 0;  // Regelabweichung e(t-1)\nlet e_sum  = 0;  // Summe über allen Fehlern\n\n\n// Speicher für den ist-Wert als Ergebnis der Regelstrecke\nlet ist = 0;\n\n// eine einfache (konstante) Regelstrecke für den Anfang\nfunction Regelstrecke(t, u) {\n    if (t \u003c 50)\n      return 0 + u;\n    else\n      return 1 + u\n}\n\n// Taktgeber\nfor(let t = 0; t \u003c 100; t++) {\n    ist = Regelstrecke(t, u);\n\n    let e = w - ist;  // Feedback ... Berechnung des Gesamtfehlers\n    e_old = e_now;\n    e_now = e;\n    e_sum = e_sum + e_now;\n\n    // Bestimmung der neuen direkten Stellgröße\n    u = Kp * e_now + Ki * e_sum + Kd * (e_now - e_old) ;  \n\n    print(\"t: \"+t+\" soll:\"+w+\" ist:\"+frmt(ist,12)+\" e:\"+frmt(e,12));\n\n    update(t, w, ist);  // plotten der Ergebnisse im Diagram\n    wait(50);           // verzögert den Schleifendurchlauf um 50ms\n}\n```\n@eval(PID-Regler)\n\n\n                                 --{{1}}--\nWenn ihr ein wenig mit unterschiedlichen Regelstrecken experimentiert, dann\nwerdet ihr schnell herausfinden, dass ein richtig eingestellter PID ein sehr\nallgemeiner und robuster Regler ist. Ihr könnt aber auch versuchen eine Funktion\nfür den Soll-Wert `w` zu definieren, der sich in Abhängigkeit von `t` auch\nverändert.\n\n    {{1}}\n``` javascript\nfunction Regelstrecke(t, u) {\n  if(t \u003c 33)\n    return 0 + u;\n  else if(t \u003c 66)\n    return t + u;\n  else\n    return t * 0.1 + u;\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandre-dietrich%2Ftutorial_regelungstechnik","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandre-dietrich%2Ftutorial_regelungstechnik","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandre-dietrich%2Ftutorial_regelungstechnik/lists"}