Hallo, ich habe eine Frage zu den init-functions: kann man irgendwie verhindern, dass bei einer Installation der Runtime (normal Update per CODESYS Linux Dialog) die init-functions unter /opt/codesys/scripts/init-functions immer überschrieben werden? Dort habe ich einige CPU/IRQ Anweisungen die ausgeführt werden müssen, aber nach jedem Runtime Update ist die Datei wieder auf Werkseinstellung. Danke!
Hi, ja genau so mache ich das im Moment. Dachte mir aber, vielleicht gibt es noch elegantere Lösungen (wie eben bei Properties Get/Set). Auch wenn dieses Beispiel nicht wirklich komplex ist, habe ich Strukturen mit weit über 100 Variablen (diverse Datentypen). Meine Hardware (Linux IPC mit Codesys Runtime) packt das locker, aber ich habe immer zwei komplette Strukturen im Speicher (alt und aktuell) um vergleichen zu können. Vom Aufwand aber eh total überschaubar. Danke trotzdem für die Hilfe!
Hallo, ich wende mich mit der doch nicht so trivialen Frage an euch: wie fange ich am besten Änderungen an Variablen von einer Struktur in einem Funktionsblock ab? Beispiel DUT: TYPE DUT_Test : STRUCT index: INT := -1; interval: INT := 10; state: INT := 0; enable: BOOL := FALSE; END_STRUCT END_TYPE Beispiel FB: FUNCTION_BLOCK TestFb VAR_INPUT CFG: DUT_Test; END_VAR VAR_OUTPUT OUT_RUN: BOOL; END_VAR IF CFG.enable THEN IF CFG.state > 0 AND CFG.index > -1 THEN OUT_RUN:=TRUE; ELSE OUT_RUN:=FALSE; END_IF...
Hallo, ich wende mich mit der doch nicht so trivialen Frage an euch: wie fange ich am besten Änderungen an Variablen von einer Struktur in einem Funktionsblock ab? Beispiel DUT: TYPE DUT_Test : STRUCT index: INT := -1; interval: INT := 10; state: INT := 0; enable: BOOL := FALSE; END_STRUCT END_TYPE Beispiel FB: FUNCTION_BLOCK TestFb VAR_INPUT CFG: DUT_Test; END_VAR VAR_OUTPUT OUT_RUN: BOOL; END_VAR IF CFG.enable THEN IF state > 0 AND index > -1 THEN OUT_RUN:=TRUE; ELSE OUT_RUN:=FALSE; END_IF ELSE...
Hey ignat, thank you - that was a good one. You gave my brain a little kick with the STRUCT. Instead of writing the configuration variables of my function blocks directly in the VAR_INPUT, i've created a DUT for every FB with just the configuration variables declared. With the recipe manager i just had to insert the DUT (lets say the name of FB is "machine" and the configuration is "config" => PLC_PRG.machine.config) and everything was good :) With RecipeManCommands i can read and save the recipes....
Currently on Debian 11, but somehow i've managed to get it working with the steps you suggested. On a i5-11th Gen. iEi DRPC industrial PC it's working for a few weeks without any problems. The cores 2+3 are isolated from the rest and there is no conflict on the CODESYS runtime with the NodeJS/MongoDB server, also on heavy load. This thread should be official included to the CODESYS FAQ, because of the rare infos about the Linux runtime. Thanks to everyone here, especially @mondinmr
Hallo, aktuell arbeite ich mit Codesys 3.5 SP18 und zum ersten mal mit der Rezepturverwaltung. Speichern funktioniert, laden funktioniert. Jetzt habe ich aber umfangreichere Funktionsblöcke, welche Ein/Ausgänge, Einstellwerte und auch interne Werte (für Regler usw.) besitzen. Es sollen nur die Einstellwerte in das Rezept gespeichert werden. Aber für jeden Funktionsblock von dem es mehrfach Instanzen gibt händisch jede notwendige Variable hinzufügen ist sehr mühsam (vor allem, wenn sich die Blöcke...
Hi again, i did everything that mondinmr wrote in his tutorial above. If i'm starting the codesyscontrol and let my program run, there is a max. jitter with ~15us. If i let the program run for lets say a few hours over night, there is a max. jitter with 300us. Is this because you cannot remove all IRQs from the two isolated cores and something is blocking the cycle? I switched yesterday from Debian 10 to Debian 11 with RT patch (with all the tweaks from above) and except from that i think the IEC-Tasks...