Post by k2saki on CNC / G-Code streaming processing ( to start quickly in long G-Code File )
CODESYS Forge
talk
(Post)
Is it possible like G-Code streaming processing (like FANUC or SIEMENS DNC Function )? Or Does anyone know the tips for CODESYS Motion to start moving long Long G-Code File quickly? I have to wait long time after "Start" button to start moving, I have to wait finishing interpreting whole G-Code file, ( and I have to prepare huge buffer to store. ) Now, I'm working on my CNC Project using SMC_ReadNCFile2, and SMC_NcInterpreter to preprocess G-Code. I tried to set SMC_Interpolator.xExecute to true to Start while after SMC_NcInterpreter processed more 50-line of G-Code, but that not worked, I had to wait SMC_NcInterpreter processed all lines to start SMC_Interpolator. G-Code have about 2000 lines of XY of G01 (or more over.. ) of short segment that a CAM software has exploded from NURBS Curve.
Last updated: 2024-05-03
Post by sbrauns on Codemeter log error: API Error 200 (ENTRY NOT FOUND) occurred!
CODESYS Forge
talk
(Post)
Hi, I am using Codesyscontrol for linux 4.11 with an USB dongle with license. The log file from codemeter shows a constant error message which repeats every minute: Entry (6000437:8755) not found - Event WB0200 (ENTRY NOT FOUND), Request IP-Address local(IPV4) with UserLimit API Error 200 (ENTRY NOT FOUND) occurred! The log file from Codesyscontrol itself shows runtime licensed and I experience no other issues. But I am still concerned about the error message in the log file. Does anybody know what this is and how to fix it? thanks
Last updated: 2024-05-08
Post by timl on Application has invalid license metrics
CODESYS Forge
talk
(Post)
Hallo, ich habe eine Control for Linux SL auf der ich einen TCP Modbus Master anlege, mit dem ich einen Slave auslesen möchte. Das Anlegen funktioniert soweit alles, sobald ich beim ModbusTCPSlaveE/A-Abbild in den Channel eine Variable einfüge, damit ich den Channel auslesen kann, kommt es beim übertragen auf die SPS zu einem Ausnahmefehler. Im Anhang noch eine Bilder der Fehlermeldung und der installierten Lizenzen. CODESYS Version ist V3.5 SP19 Patch 4 Meinem Verständnis nach ist die Modbus Lizenz mit in der Control Standard L inbegriffen und auch in der Lizensierten Softwaremetrik sehe ich keine überschreitung meiner Lizenzbegrenzungen. Daher verstehe ich nicht wieso ich diesen Fehler bekomme und eine auslesung via Modbus nicht möglich ist. Gruß Tim
Last updated: 2024-05-08
Post by k2saki on CNC Open Source Project / Can I convert my project to text-files ?
CODESYS Forge
talk
(Post)
Hi. I published My CODESYS-CNC Project to GitHub and I set it Open Source Software. Here https://github.com/k-s-saki/RPi_CODESYS_CNC My CNC Project is binary file , using FBD for IPO , so I found it is a little bit hard to work with people on GitHub. (diff / merge ) My question is 1) Is it possible to convert my project ( only POUs is also fine ) into text file ? How? 2) Would it be better to rewrite all FBD/LD into ST and copy them manually to text files? Thanks.
Last updated: 2024-05-16
Post by fpawlak on KNX SL on stock PFC200 firmware
CODESYS Forge
talk
(Post)
Hi All. Is it possible to use CODESYS KNX SL on stock Wago firmware (Codesys version, not e!Cockpit). I have Wago 750-8212 with firmware 0.4.04.03(26). When I tried to run 'KNX SL' or even 'Device Reader', I have got [FATAL ERROR] Unresolved reference: 'CODEMGETCONTENTBYFIRMCODE3' [FATAL ERROR] Unresolved reference: 'CODEMGETCONTENTBYFIRMCODE2' [FATAL ERROR] Unresolved reference: 'CODEMGETCONTENTBYFIRMCODE2' What probbalby means that there is no running CodeMeter component on PLC. I have checked /etc/codesys3.d/CODESYSControl.cfg [CmpWebServer] WebServerPortNr=58080 [CmpSecureChannel] CertificateHash=86ccf31839a098ee32067179e26600f1bd6b36f8 [CmpUserMgr] AsymmetricAuthKey=a9d38381e75bbf1bbfc8749e97f536f68238a2ce So the question is if I can somehow add Codemeter to stock firmware? Or should I switched to CODDESYS Control for PFC200 SL or application-base runtime licence?
Last updated: 2024-05-23
Post by dhumphries on Rounding error in simple addition
CODESYS Forge
talk
(Post)
Thanks for the response, as I've thought about this problem over the last month I began to suspect this was a problem with not being able to exactly represent .1 as a 32 bit binary number. I think I've found a work around by making the number an integer, then dividing it by 10 and storing that value as a floating point number. There is still an issue with the value not being exact somewhere in the 8th or 9th decimal place, but because I'm incrementing an integer value then dividing it, the error doesn't compound.
Last updated: 2024-05-25
Post by damian177 on CM4S GPIO's in Codesys
CODESYS Forge
talk
(Post)
Hi, I am running my application on device based on Compute Module 4S (Cortex-A72 (ARMv8) 64-bit ). On this device I installed RPi Runtime in 4.11.0.0 version. In my project I use device: Codesys Control for Raspberry Pi 64SL and my project works, but I actually do not have acces to all GPIO's , because GPIOs Compute Module is available only in 3.5.16.0 version and it doesn't work. Properly work GPIOs B+/Pi2 but using this device I do not have acces to all GPIO's in CM4S. Anyone of can tell me how add GPIOs Compute Module 4.11.0.0 to my project ?
Last updated: 2024-05-28
Post by jaspergain on Non-existing identifiers
CODESYS Forge
talk
(Post)
Hello, I got a bit of a weird issue going on which is kind of annoying. So recently we switched a lot of Modbus IO to EtherCAT, as we were having issues with stability. All works fine, which is great. But sometimes when I change the program I get errors claiming that identifiers are not defined. Meaning I can't go online. See the picture below. I believe this is because some of these identifiers were used with Modbus, and they weren't properly removed/deleted? A clean all temporary fixes the issue, but it comes back again after a while of changing the code, and building. Any way to fix these non-existing required identifiers, or even find out where they are required? Thanks for the help in advance. Jasper.
Last updated: 2024-05-29
Post by spice on WebVisu Recipe Save/Load
CODESYS Forge
talk
(Post)
I'm currently reworking the controls on a cnc press brake and wanted to load various recipes as programs to run. I'm using a 2d array of REALs to store the X and Y coordinates as well as some other program parameters in a recipe. I'd like to store all of the recipes on a computer used as the HMI that way the text files can be edited and uploaded offline. I'm using Automation Directs P2CDS-622 Can this be done through webvisu? If not would a license for Codesys HMI SL on the computer allow me to accomplish this? I've attached the Project File Thanks, Spice
Last updated: 2024-05-31
Post by fajean on CODESYS control on RPi starts, shortly runs, then exits
CODESYS Forge
talk
(Post)
4.11 appears to solve the problem. Thanks for your help. I had first installed the 64-bit version of RPiOS, but looking at various posts and the product's page on the store which only lists 32-bit compatibility, I downgraded to the 32-bit version. I did this before trying 4.11, and it did not solve the problem. Thus my working system is 32-bit, and I am wondering if I can go back to 64-bit or not. An 64-bit OS is not listed as compatible on the store's web page, but when installing there actually is a 64-bit version listed (automatically chosen when installing on 64-bit, but otherwise greyed out). Is 64-bit supported and the website is out-of-date, or is that some kind of work-in-progress?
Last updated: 2024-06-13
Post by gatto on Modbus tcp - channel
CODESYS Forge
talk
(Post)
Hi can you give more details? Are you talking about a danfoss? wich model? Can post the configuration of channel' I used, on the past, serial modbus with danfoss fc280 I remember ((id x 10)-1) I remember that you couldn't use continuous reading/writing of the directors but you had to use them one at a time. it seemed that reading empty registers (caused by x10) was not accepted by danfoss. So I had created a scan that used just one register, then the next etc etc with a timed interval. But this was for the serial, I don't know if it's the same thing with ethernet. I currently use Ethernet TCP/IP interface with FC280.
Last updated: 2024-06-13
Post by kthomas on Cant login to Rpi4 but can see it in codesys communications settings.
CODESYS Forge
talk
(Post)
I have been struggling for over a week to program my rapspberry pi 4 with codesys. I purchased the license. I installed the runtime and the gateway, and I can see the pi in the communication settings. But cannot log in. I have checked the status of the pi with sudo systemctl status codesyscontrol and it is running. I have enabled traffic to and from the pi with iptables and checked the logs and all looks good. I just cannot connect through the codesys ide. Can anyone help me before I lose my mind?
Last updated: 2024-06-22
Post by kthomas on Cant login to Rpi4 but can see it in codesys communications settings.
CODESYS Forge
talk
(Post)
I have been struggling for over a week to program my rapspberry pi 4 with codesys. I purchased the license. I installed the runtime and the gateway, and I can see the pi in the communication settings. But cannot log in. I have checked the status of the pi with sudo systemctl status codesyscontrol and it is running. I have enabled traffic to and from the pi with iptables and checked the logs and all looks good. I just cannot connect through the codesys ide. Can anyone help me before I lose my mind?
Last updated: 2024-06-22
Post by etalp on Eaton XC303 firmware update via USB
CODESYS Forge
talk
(Post)
Hi, I'm struggling with updating my xc303 to firmware 3.5.17. It is possible only via USB port. I've installed proper update files on the USB then plug it into the PLC's USB port and restarted the device. Shortly after LED's on the PLC started to blink, so updating process has started. But after 10 minutes the PLC LED turned off and after all I could't serach for this PLC in Codesys, but could ping it. Could someone eplain to me proper procedure of updating the fimrware in XC303 via USB? Is it neccesary to STOP the PLC switch after pluging the USB?
Last updated: 2025-10-15
Post by msegon on OPC UA Client failed to connect
CODESYS Forge
talk
(Post)
Hi everyone, I would appreciate your help with a problem I've been working on for a few days but haven't been able to resolve. I'm trying to read data from Tridium Niagara 4.15 OPC UA Server, but I get the error BadCertificateInvalid. As far as I understand, you need to add a CA certificate somewhere to establish a secure connection, but I don't know where. 2025-10-27T09:06:43.247Z, 0x0000008d, 4, 0, 0, * ERROR: OpcUa_Channel_BeginConnect: Cannot create secure channel without certificates! 2025-10-27T09:06:43.247Z, 0x00001090, 4, 0, 0, * ERROR: Datasource: Error Failed (268468242) in state Connecting I tried communicating without encryption, but it doesn't find the point. Has anyone managed to establish encrypted OPC UA communication?
Last updated: 2025-10-28
Post by malte on OPC UA multiple Endpoints
CODESYS Forge
talk
(Post)
My CODESYS OPC UA server provides endpoints using both the hostname and the IP address. Connecting via the IP address works fine, but connecting via the hostname does not. The endpoint list shows both opc.tcp://<hostname>:4840 and opc.tcp://<ip>:4840. When using the hostname, the OPC UA client (UA Expert) fails to connect. Using the IP address connects without issues. Main goal is to conect via Python but opcua-asyncio seems to prefer the hostname. How can I configure CODESYS or my system so that the OPC UA connection via hostname also works properly or disable it completly? Running Codesys for PFC200 sl 4.18.0.0
Last updated: 2025-10-28
Post by thommy54 on CODESYSControl_User cfg richtig konfigurieren
CODESYS Forge
talk
(Post)
Hallo, nach Erwerb eines neueren Raspberry pi 4 (V1.5) musste ich zwangsläufig von Codesys 3.5.16 hochwechseln - ich habe auf 3.5.20.1 geupdated. Da schlugen mir plötzlich ne Menge Einschränkungen entgegen, deren Behebung einige Zeit dauerte. Eine davon ist, das ein SysFile.SysFileOpen nicht mehr funktioniert. Ich habe das Problem mit Einträgen in der /etc/CODESYSControl.cfg behoben: [SysFile] FilePath.1=/etc/, 3S.dat IecFilePath.1=/proc/, cpuinfo IecFilePath.2=/proc/, iomem PlaceholderFilePath.1=/sys/devices/w1_bus_master1, $OneWire$ PlcLogicPrefix=1 ; ; ---------------------- ; selbst eingefügt PlaceholderFilePath.2=/home/root, $my_home_root$ PlaceholderFilePath.3=/etc/init.d, $my_conf$ PlaceholderFilePath.4=/var/lib/mpd, $my_music$ PlaceholderFilePath.5=/root/Rasp_SPS_Filesystem, $my_Rasp$ Ob die Einträge sich etwas überlappen, kann mir gern jemand sagen, das ist aber nicht das Problem. Ich habe bei den vielen Versuchen, das Teil zum Laufen zu bringen, bemerkt, daß die Einträge auch ganz schnell mal verschwinden. Das ist ja auch so beschrieben, wenn die nächste Version kommt, sind meine Einträge weg. Da ich ähnliche Probleme mit dem Funktionieren von "SysProcessExecuteCommand2()" hatte, die ich ebenfalls mit Einträgen in die /etc/CODESYSControl.cfg hätte beheben können, habe ich gelesen, das man "private" Einträge lieber in die Datei /etc/CODESYSControl_User.cfg machen soll. Gesagt getan und "SysProcessExecuteCommand2()" lief: [SysProcess] Command=AllowAll Command.0=shutdown Aber auch irgendwo stand, das so ein Beteichner wie [SysFile] oder [SysProcess] nur einmal in den beiden Files /etc/CODESYSControl.cfg oder(!) /etc/CODESYSControl_User.cfg vorkommen darf. Das ist nun die eigentliche Frage! Ist das so ? Bei [SysProcess] ist das kein Problem, das gibt es in /etc/CODESYSControl.cfg nicht. Aber bei [SysFile] sieht das anders aus. Da sind 5 Zeilen schon in /etc/CODESYSControl.cfg drin. Würde ich diese in die User-Datei rüberschieben, könnte beim nächsten Update was fehlen oder, oder... Lasse ich es so wie es ist, sind meine Einträge beim Update weg - das sollte ja verhindert werden. Kann da jemand genaue Auskunft geben ?? Vielen Dank Thomas
Last updated: 2024-06-28
Post by youness on No source code available (cip object)
CODESYS Forge
talk
(Post)
Hi yotaro, hope your problem was resolved. I had the same, but with an other library title. This exception is not detected during compilation, but rather at a given position in the program (when switching to a given visualization). Although the exception is generated at this point, it does not involve the visualization in question. This error is due to one of 3 reasons: 1) A division by zero somewhere: The program is able to detect divisions by zero at compile time. But in the case of a variable, which takes a valid value at init and changes to 0 at a later stage. 2) An invalid pointer: (either because it has a value of 0, or because it points outside the memory reserved for the program) is being dereferenced. Locate any pointers or interfaces you have in the code and check them - you should also be wary of mixing inline modifications and pointers. 3) Array overflow: Generally when a processing operation is executed outside the array's definition range. Example: a write loop with n iterations is executed on an array of dimmension n-1. On the other hand, the error message may not appear. In the latter case, the error may have fatal consequences, as the overflow has induced writing to potentially forbidden memory areas. This problem can be explained by the fact that it's not always the adjacent memory areas of PLC_PRG that are overwritten, but the memory areas that are randomly allocated to the array during compilation. In this case, however, there is no entry in the log, so you need to integrate the "Implicit Check function", which checks the line of code generating the error. To integrate this functions, click on Application --> POU for implicit controls Regards,
Last updated: 2024-07-16
Post by tk096 on Some 'pathetic' errors in SoftMotion program
CODESYS Forge
talk
(Post)
Meanwhile, I would like to understand why the motion FB instances must still be called even after the Execute is set to FALSE, especially in view of the fact that the next instruction is programmed to abort the previous one, with BufferMode set to 'Aborting'. All these unnecessary FB calls are an unnecessary overhead on the CPU anyway. Is there any precise rule about when to cease calling the various instances? (It should precisely be the 'done' status that says this one has finished its work). In general: - Motion function blocks have to be called until they report 'Done', 'Error', 'CommandAborted' or a subsequent motion FB with BufferMode=Aborting is started in the current cycle. - Setting the Execute input to FALSE will not abort any ongoing motion of the motion function block. For example, one case that is often problematic is the execution of the Axis Halt instruction. When, after a MoveAbosulte instruction this returns the event as 'done' and indeed the axis is in standstill, the state machine first sets the move instruction to FALSE, and the next cycle sets the Halt request to TRUE. Some of the time everything works out fine. Occasionally, however, in this exchange, the axis goes into fault, also losing the OPERATIONAL state. I think the error SMC_FB_WASNT_CALLED_DURING_MOTION is only a follow-up (and misleading) error that results from the axis not being in operational state anymore (bus problems). Is there an error 'regulator or start not set' in the device log before the error 'motion generating FB wasn't called for at least one cycle'? Which error does the respective function block (Halt.ErrorId) report?
Last updated: 2024-07-22
Post by clarenced on Multiple applications on one device sharing variables.
CODESYS Forge
talk
(Post)
I am looking for an example of how to run 2 applications on 1 device that would have global variables shared between the two apps. In this case what I am trying to do is to have the main program logic run as one application and then have the visualization run as a second application. I find this https://us.store.codesys.com/media/n98_media_assets/files/000013-F/0/Multiple%20Applications_en.pdf, that talks about exactly what I want to do, but I can't find the download. The main reason I want to do this is for download speed. Right now it takes at least a minute to download our application to the PLC. A simple program downloads to the PLC in a very short time, but add visualization and the download time gets much longer. If I could download the program separately from the visualization I think that a simple program change would take very little time to download. I have tried create a GVL in the POUs view. This partly works in that both applications can see the GVL, but they each create their own instance of it and the variables are not shared between the two apps. There are ideas of using OPCUA but this raises problems with licensing and having to move any variable that needs to be shared into the Symbol Configuration. This adds a lot of management to keep this up to date. Any ideas would be appreciated thanks.
Last updated: 2025-02-20
Post by laurits on Max lines of code, codesys CNC ?
CODESYS Forge
talk
(Post)
Hi, yes now its working, to get "QUEUE.bFull" to work, I've had to set the "QUEUE.nNumReservedEntries" to 3. (I tried different values here, only effect for larger values i can see is the the queue capacity gets smaller.) I've noticed the movement is slowing down when it reaches the end of the "fill Up", must be because of the "checkVelocity" can only see the current "QUEUE". Any way of solving this ? BUF : ARRAY[0..20000] OF SMC_GEOINFO; xp : ARRAY[1..100000] OF REAL; yp : ARRAY[1..100000] OF REAL; CASE iState OF 000: IF R_TRIG_bStart.Q THEN iState := iState + 1; END_IF bReady := FALSE; //initialize Queue GEO.dT1:=0; GEO.dT2:=1; GEO.dToolRadius := 0; GEO.dVel := 15000; GEO.dVelEnd := 15000; GEO.dAccel := 2000; GEO.dDecel := 2000; GEO.iObjNo := 0; GEO.piDestPos.dX := 0; GEO.piDestPos.dY := 0; QUEUE.bEndOfList := FALSE; QUEUE.nPastMarker := -1; QUEUE.nWritePos := 0; QUEUE.pbyBuffer := ADR(BUF[0]); n := 0; sMC_CheckVelocities(bExecute:= FALSE); SM3_CNC.SMC_SetQueueCapacity(ADR(QUEUE), SIZEOF(BUF)); QUEUE.nNumReservedEntries := 3; 001: FOR i := 1 TO SIZEOF(xp)/SIZEOF(xp[1]) DO xp[i] := UDINT_TO_REAL(i) * 0.01; yp[i] := UDINT_TO_REAL(i) * 0.01; END_FOR iState := iState + 1; 002: WHILE NOT QUEUE.bFull DO // when the Queue is full, wait until it has been processed by the following FBs n := n + 1; GEO.iSourceLine_No := n; GEO.piStartPos := GEO.piDestPos; // copy last destination GEO.iMoveType := LIN; // generate linear movement GEO.iObjNo := GEO.iObjNo + 1; // calculate number GEO.piDestPos.dX := xp[n]; // generate position GEO.piDestPos.dY := yp[n]; SMC_CalcLengthGeo(pg := ADR(GEO)); // calculate length of object with the help of the standard function SMC_AppendObj(poq:=ADR(QUEUE), pgi:=ADR(GEO)); //append object to queue IF n = UDINT_TO_DINT( SIZEOF(xp)/SIZEOF(xp[1])) THEN // all target positions processed QUEUE.bEndOfList := TRUE; iState := iState + 1; EXIT; END_IF END_WHILE sMC_CheckVelocities(bExecute:= TRUE, poqDataIn:= ADR(QUEUE)); bReady := TRUE; // Send message to smc_interpolator to start 003:
Last updated: 2025-06-04
Post by jeindhoven on Deploying to raspberry pi 5 hangs
CODESYS Forge
talk
(Post)
Hi CoDeSys support forum, hope that this is the correct place to ask this. Might be double as i am new to Codesys and dont know all terminology. I am trying to test Codesys with a virtual plc on a raspberry pi 5. Already figured that i need Tools -> Deploy Control SL, enter Communication parameters. Codesys says "Connected". Then tab "Deployment", there i select "CODESYS Control for Raspberri Pi SL" and "4.16.0.0 (all)". Click "Install" and the gui turns grey and unresponsive. The titlebar says "Untitled1.project - CODESYS (Not Responding)" as well. Restarting Codesys and checking shows no package was installed. How to deploy the runtime? Thank you in advance for your time. Edit: After some patience, an error showed up: "Error when sending ssh heartbeat: Session operation has timed out" "Error installing codesyscontrol" Any pointers to what remote command might have failed, or log of some sort, would be welcome. Software versions: Codesys version 3.5.21.10 Raspberry pi 5 (deployment machine): $ uname -a Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr 3 17:24:16 BST 2023 aarch64 GNU/Linux $ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 11 (bullseye) Release: 11 Codename: bullseye $ apt list --installed | grep openssh-server openssh-server/oldstable,now 1:8.4p1-5+deb11u3 arm64 Development machine: $ uname -a Linux 2B 6.1.0-35-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.137-1 (2025-05-07) x86_64 GNU/Linux $ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 12 (bookworm) Release: 12 Codename: bookworm VirtualBox Version 7.0.26 r168464 (Qt5.15.8) Virtual OS: Windows 10 Pro 64-bit (10.0, Build 19045) .NET version 4.0.30319.42000
Last updated: 2025-06-22
Post by dnordenberg on BOOL variable in OPC UA and modbus simultaneously
CODESYS Forge
talk
(Post)
How can I have an BOOL variable that is read/write in both modbus TCP server and from OPC UA at the same time? Variables with %MX.n %QX.n addressing which is used for BOOL/coils in modbus server is not allowed in OPC UA symbol list on Schneider M251 controllers. I have already asked on Schneiders forum but there are not a lot of codesys experts over there :( So OPC symbols can't have a address and the modbus TCP server needs a address. So how should I do it then? It seems like an impossible combination. Since I want read/write access from both ways I can't just simply make a second variable and assign it the value of another since it would be a one way assignment. I also tried using VAR_CONFIG which then makes the address syntax %Q or %M in my main variable list and that fools OPC UA Symbol Configuration to allow it and then I add the complete %MX.n address of it in the VAR_CONFIG list. This semi works, I can toggle the BOOL from modbus but the OPC UA symbol seems to be read only. It displays symbol status but nothing happens when I toogle it. I think I need another way to have the variables and symbols pointing to the same bits in memory... My plan B is to write a BOOL array compare FB that saves a history bit from previous cycle and if that does not match current status at next cycle for either the OPC symbol or the modbus variable then it copies the new status over to the other. Maybe ugly but it's like my last alternative. Kind regards David
Last updated: 2025-07-14
Post by john-robinson on Limiting Memory Access of an Array to Within its Bounds
CODESYS Forge
talk
(Post)
Recently we had an issue regarding some simple code to calculate a rolling average. The code indexes from zero to 199 to properly store the current input into a circular buffer which then allows us to calculate a rolling average: VAR input_5s : REAL; outs_arr : ARRAY[0..199] OF REAL; i : USINT := 0; END_VAR ___ //this code runs every five seconds, calculating a rolling average outs_arr[i] := input_5s; i := i + 1; output := OSCAT_BASIC.ARRAY_AVG(ADR(outs_arr), SIZEOF(outs_arr)); IF i >= SIZEOF(outs_arr) THEN i := 0; END_IF There is a simple bug in this code where the index will be set to 0 when it has surpassed the length of the array in bytes (800 in this case) rather than larger than the number of reals in the array (200). The solution here is simple, replacing i >= SIZEOF(outs_arr) with i >= SIZEOF(outs_arr)/SIZEOF(outs_arr[0]). In this example when the index increased to 201 and the line outs_arr[201] := input_5s was called, codesys arbitrarily wrote to the address in memory that is where outs_arr[201] would be if the array was that long. I would like to find a way to wrap the codesys array inside of a wrapper class that checks if an input is within the bounds of an array before writing to that value. I know how I would implement that for a specific array, I could create a method or class that takes an input of an array of variable length, ie. ARRAY[*] OF REAL, but I don't know how to make this for any data type. I am wondering if anyone has ever done anything similar to this, or has any better suggestions to ensure that none of the programmers on this application accidentally create code that can arbitrarily write to other locations in memory.
Last updated: 2024-03-05
Post by superjojo2002 on Licensing info not available.
CODESYS Forge
talk
(Post)
I updated the docker container runtime to version 4.11.0.0. and build the container with this "Dockerfile" FROM arm64v8/debian:11.6 RUN apt-get update RUN apt-get install -y wget sudo unzip libusb-1.0-0-dev procps ENV CDS_VERSION "4.11.0.0" ENV EDGE_VERSION "4.11.0.0" ENV URL "https://store-archive.codesys.com/ftp_download/3S/LinuxARM64/2302000039/$CDS_VERSION/CODESYS%20Control%20for%20Linux%20ARM64%20SL%20$CDS_VERSION.package" ENV EDGE_URL "https://store-archive.codesys.com/ftp_download/3S/EdgeGatewayLinux/000120/$EDGE_VERSION/CODESYS%20Edge%20Gateway%20for%20Linux%20$EDGE_VERSION.package" RUN wget --output-document=/tmp/codesys.package $URL && \ unzip -p /tmp/codesys.package '*codemeter*.deb' > /tmp/codemeter.deb && dpkg -i /tmp/codemeter.deb && \ unzip -p /tmp/codesys.package '*codesyscontrol*.deb' > /tmp/codesys.deb && dpkg -i /tmp/codesys.deb RUN wget --output-document=/tmp/edge.package $EDGE_URL && \ unzip -p /tmp/edge.package '*arm64.deb' > /tmp/edge.deb && dpkg -i /tmp/edge.deb EXPOSE 11740 1217 11743 ENTRYPOINT ["/bin/sh", "-c" , "/etc/init.d/codemeter start && /etc/init.d/codemeter-webadmin start && /etc/init.d/codesyscontrol start && /etc/init.d/codesysedge start && tail -f /dev/null"] Now cmu -x" returns root@sensoredge-field-netfield-produktmanagment:/# cmu -x cmu - CodeMeter Universal Support Tool. Version 8.00 of 2023-Nov-28 (Build 5967) for Linux/ARMHF 64-Bit Copyright (C) 2007-2023 by WIBU-SYSTEMS AG. All rights reserved. But still CODESYS development system reports that it needs a dongle and when I click install that "value cannot be null. Parameter name: containerToLicenses" It seems that Codemeter is forced to look for a dongle instead of a CMsoftcontainer. Can you confirm that CODESYS licensing works also when CODESYS is installed in a Docker container?
Last updated: 2024-03-21
To search for an exact phrase, put it in quotes. Example: "getting started docs"
To exclude a word or phrase, put a dash in front of it. Example: docs -help
To search on specific fields, use these field names instead of a general text search. You can group with AND or OR.