Post by canplum on Codesys 3.5.21 fails to copy file to USB
    
    
       CODESYS Forge
    
    
      talk
    
    (Post)
    
    
      Although I have set in /etc/codesyscontrol/CODESYSControl_User.cfg the [SysFile] PlaceholderFilePath.1=/media/pi, $usb$ PlaceholderFilePath.1.View=1 PlaceholderFilePath.1.Volatile=1 I am not able to copy a file to this directory defined by the placeholder. Neither SysProcess.SysProcessExecuteCommand2 nor SysFileCopy nor FileCopy is working. If I try to copy the same file to /home/pi all is working fine. I also can create and open a different file by using SysFileOpen. I don't understand why the system allows to open (create) and write files into that directory but doesn't allow to copy into it. Obviously there is a rights problem with the USB drive. I have already set the permissions to drwxr-xr-x 2 and the user to pi but without any success. With 3.5.16 I never had such an issue. Is there anybody with some hints how to solve that problem? Cheers, canplum
    
    Last updated: 2025-05-23
    
    
      
        Post by canplum on Codesys 3.5.21 kann Datei nicht auf USB kopieren
    
    
       CODESYS Forge
    
    
      talk
    
    (Post)
    
    
      Obwohl ich in der Datei /etc/codesyscontrol/CODESYSControl_User.cfg eingestellt habe die [SysFile] PlatzhalterDateipfad.1=/media/pi, $usb$ PlatzhalterDateipfad.1.Ansicht=1 PlatzhalterDateipfad.1.Flüchtig=1 Ich bin nicht in der Lage, eine Datei in dieses durch den Platzhalter definierte Verzeichnis zu kopieren. Weder SysProcess.SysProcessExecuteCommand2 noch SysFileCopy oder FileCopy funktionieren. Wenn ich versuche, die gleiche Datei nach /home/pi zu kopieren, funktioniert alles einwandfrei. Ich kann auch eine andere Datei mit SysFileOpen erstellen und öffnen. Ich verstehe nicht, warum das System das Öffnen (Erstellen) und Schreiben von Dateien in dieses Verzeichnis erlaubt, aber das Kopieren in dieses Verzeichnis nicht zulässt. Offensichtlich gibt es ein Rechteproblem mit dem USB-Laufwerk. Ich habe bereits die Berechtigungen auf drwxr-xr-x 2 und den Benutzer auf pi gesetzt, aber ohne Erfolg. Mit 3.5.16 hatte ich nie ein solches Problem. Hat jemand einen Tipp, wie man dieses Problem lösen kann? Vielen Dank! canplum
    
    Last updated: 2025-05-23
    
    
      
        Post by pernockham on AC Persistence - values are not read from file during start?
    
    
       CODESYS Forge
    
    
      talk
    
    (Post)
    
    
      Im struggling with the AC Persistence. AC persistence seems to work for any variable that is changed online and values are kept during reboot. However, if I try to edit the persistence files offline or replace the persistence files with a previously downloaded older persistence file (with modified values), the online value will not follow, as if the system did not at all read the file at boot? My testing sequence. - Edit a the value of a persistenced variable (with xSaveOnChange = True) - Save/download the associated persistence file, (and confirm the value has changed). - Edit the value online for a second time . - Stop runtime - Replace (upload) the persistence file with my previously downloaded file . - Coldstart/Warmstart/Start runtime - Whatever Im trying the value of my persistence variable will always be equal to that of my second edit as if the file is not read/considered during boot. What am I doing wrong?
    
    Last updated: 2025-09-02
    
    
      
        Post by gunstr on CODESYS control on RPi starts, shortly runs, then exits
    
    
       CODESYS Forge
    
    
      talk
    
    (Post)
    
    
      We have been using the Codesys Control for Rasberry Pi for several years in many installations without any major issues. But during summer the problem mentioned above has blocked further deliveries. We have made some minor upgrades to the application but I do not really see why that should have any impact. HW is Raspberry Pi 4B, 2GB OS is Booworm Lite Codesys control is version 4.15 (have just installed a few systems lately with this version) The system boots OK but after exactly 30 seconds Codesys is shut down and becomes unreachable. We have tested several different combinations: Upgrade of the Codeys Control to 4.16 Loading different Codesys applications Changing to 4GB version of the Raspberry Pi One of the test applications together with the 4GB HW seems to be stable, but all other combinations fails. Any suggestion what we can do to resolve is appreciated - this is a real business blocker now. Rgds
    
    Last updated: 2025-09-02
    
    
      
        Post by beavel on Feature Request: Text List Formatting 
    
    
       CODESYS Forge
    
    
      talk
    
    (Post)
    
    
      Hi everyone, I'm working on a multilingual help system within a CODESYS visualization project and have run into a limitation with the current text list (.tlx) functionality. Right now, text list entries only support plain text, which makes it very difficult to format longer help texts in a readable way. For example, I’d like to: Use bold headers and larger font sizes for section titles Display variable names or keywords in italics Avoid having to split content into dozens of separate entries just to apply different styles This becomes especially unmanageable when supporting multiple languages — duplicating layout logic across languages is not scalable. Would it be possible to implement a Markdown text functionality for text list entries ? For example: #Header ##Sub-header 1.ordered 2.list 3.fun 4.times Alternatively, is there any existing workaround or planned feature that allows for styled text blocks without fragmenting the content? Thank you in advance and have a nice day :)
    
    Last updated: 2025-09-23
    
    
      
        Post by cihangur on C0138: No matching 'FB_Init' method found for instantiation of VisuClientObjectMgr
    
    
       CODESYS Forge
    
    
      talk
    
    (Post)
    
    
      This "FB_Init" error has become very annoying lately. It's usually related to webvisu and is resolved by deleting all objects and related libraries. Of course, you need to re-add the deleted objects. Lately, we've generally been managing by not upgrading, but this problem persists in every version since SP20 and should be resolved. I updated a project from SP 19 to SP 21 and found 116 similar errors. [ERROR] alarmmanager, 4.7.0.0 (intern): ReplaceAlarmPlaceholdersConverted: C0138: No matching 'FB_Init' method found for instantiation of CharBufferString [ERROR] visuelemsalarm, 4.7.0.0 (system): protDrawRowHeader [VisuFbElemAlarmTable]: C0138: No matching 'FB_Init' method found for instantiation of CharBufferString [ERROR] alarmmanager, 4.7.0.0 (intern): AnalyzePlaceholders2 [Alarm]: C0138: No matching 'FB_Init' method found for instantiation of CharBufferString If you have an ERROR related VisuClientObjectMgr you can try to disable "Visualization Manager - Settings - Support client animations and overlay of native elements " selection "C0138: No matching 'FB_Init' method found for instantiation of VisuClientObjectMgr" etc
    
    Last updated: 2025-10-10
    
    
      
        Post by aseitzinger on CODESYS Control for Linux SL on virtual machine?
    
    
       CODESYS Forge
    
    
      talk
    
    (Post)
    
    
      Hello, there in different information available regarding the possibility to run CODESYS Control for Linux SL on a virtual machine. https://forge.codesys.com/trg/linux-sl/home/Home/ says CODESYS Control for Linux SL is a runtime system, which can run on any Debian based X86 PC, VM or Cloud container... https://store.codesys.com/media/n98_media_assets/files/2302000005/3/CODESYS%20Control%20for%20Linux%20SL_de.pdf says CODESYS Control for Linux SL can not be used on virtual hardware Currently I run the package mentioned on a virtualized debian machine running in PROXMOX Virtual Environment 7.4-17 and apart from huge jitter it runs without problems. The CODESYS key is passed as a USB defice to the VM. I wonder why there are different statements regarding the suitability in virtual machines and if the jitter would be reduced by installing CODESYS runtime on the host installing CDS runtime on the host and using a preemptive kernel (if available for the PROXMOX installation leaving CDS runtime where it is (on the virtualized debian machine) and install a preemptive kernel on the host and on the guest... Any advice is appreciated. Greets Arno
    
    Last updated: 2024-01-08
    
    
      
        Post by alexgooi on Codesys OPC DA server requires more then 2 GB of ram
    
    
       CODESYS Forge
    
    
      talk
    
    (Post)
    
    
      Dear Forum, We are currently running into a problem that the CODESYS OPC DA server is running out of RAM (larger than 2 GB). We have a setup of 10 Codesys controllers which features around 300.000 discoverable tags per controller. We are only interested in 10 percent of the tags to be communicated to the OPC-server, this is due to the fact the program consists of arrays of objects which on their part implements arrays of objects, simply reducing the number of discoverable tags is not an option The OPC-DA server loads all the discoverable tags, is it possible to: 1 let the OPC-DA server only load the tags that are requested by the SCADA/MES system. 2 let the OPC-DA server claim more memory. 3 run 2 OPC-DA servers in parallel? Thank you in advance
    
    Last updated: 2024-01-25
    
    
      
        Post by fredsta on Unable to load dynamic modules (Download failed: Application=Application)
    
    
       CODESYS Forge
    
    
      talk
    
    (Post)
    
    
      Hey there, I am currently trying to find a good solution for the communication between CODESYS Control on Raspberry Pi and "the rest of the world", i. e. the things apart from CODESYS on my linux. My first approach was to use the c-integration. So I created a lib, defined extern fbs, compiled the code on my Pi using the SDK and put the .so into my lib project. When I try to log into the Pi and load the program, I get the error message which you can see in the attached picture. "Die dynamischen Module der C-Integration konnten nicht auf das Laufzeitsystem geladen werden" is german and means roughly "the modules from the c-integration could not be loaded onto the runtime system." Is this normal? Am I doing something wrong? I will have a look at the unix domain socket thing next, as I am still in the process of finding the best solution for the communication.
    
    Last updated: 2024-02-15
    
    
      
        Post by alex00 on DCS / Central Engineering with Codesys support
    
    
       CODESYS Forge
    
    
      talk
    
    (Post)
    
    
      Hello together I'm currently investing in possibilities to have a central engineering software / system for Codesys based controllers. Something like a DCS / SCADA depending on where you see the functionality. We plan to use more or less vanilla codesys. The tool should support the following: - Connect to multiple PLC's in a project to see its variables and debug it. - Central Engineering capabilities (for example shared libraries in a project). - Download the new code / binaries to the plc. - Maybe have functionality to combine visualization elements and logic together. - See the live status variables on all the systems (crosscommunication). I see that codesys theoretically supports engineering of multiple PLC's, but I couldnt find to much functionality for a DCS type of operation, but that could be lack of knowledge. Any tips from you? Is Codesys good enough for this and maybe there are some manufacturers which build around it? Or are there good tools on the market with Codesys support (and the engineering is separate, but download to codesys possible). The use case is distributed energy installations like Heating pumps, Photovoltaics, etc. All these installations should have a PLC with codesys installed and run in one larger network, the PLC's are connected via VPN. Thanks for your inputs Greetings
    
    Last updated: 2024-02-19
    
    
      
        Post by alex00 on DCS / Central Engineering for Codesys
    
    
       CODESYS Forge
    
    
      talk
    
    (Post)
    
    
      Hello together I'm currently investing in possibilities to have a central engineering software / system for Codesys based controllers. Something like a DCS / SCADA depending on where you see the functionality. We plan to use more or less vanilla codesys. The tool should support the following: - Connect to multiple PLC's in a project to see its variables and debug it. - Central Engineering capabilities (for example shared libraries in a project). - Download the new code / binaries to the plc. - Maybe have functionality to combine visualization elements and logic together. - See the live status variables on all the systems (crosscommunication). I see that codesys theoretically supports engineering of multiple PLC's, but I couldnt find to much functionality for a DCS type of operation, but that could be lack of knowledge. Any tips from you? Is Codesys good enough for this and maybe there are some manufacturers which build around it? Or are there good tools on the market with Codesys support (and the engineering is separate, but download to codesys possible). The use case is distributed energy installations like Heating pumps, Photovoltaics, etc. All these installations should have a PLC with codesys installed and run in one larger network, the PLC's are connected via VPN. Thanks for your inputs Greetings
    
    Last updated: 2024-02-19
    
    
      
        Post by manuknecht on High Cycle Times for SoftMotion_PlanningTask when using AxisGroup
    
    
       CODESYS Forge
    
    
      talk
    
    (Post)
    
    
      Hello all I am using an AxisGroup with the Gantry2 Kinematics to move a 2D-Gantry system. When creating the AxisGroup, the SoftMotion_PlanningTask is created automatically with a cycle time of 2 ms in my case. I realized that the maximum cycle time of this task can spike to very high values (up to 60 ms) at lower speeds of the motion, leading to synchronization issues and errors on the axes. The same behaviour - though not as drastic - can be observed with virtual axes too. Is this behaviour intended or to be expected? Can the cycle time or type of the SoftMotion_PlanningTask be changed to prevent these errors? Or is there another fix for this issue? I tried changing the cycle type to Freewheeling, which solved the synchronization issues, but caused an error on the AxisGroup after a while, reading SMC_CP_QUEUE_UNDERRUN. Thanks in advance and best regards Manuel
    
    Last updated: 2024-03-07
    
    
      
        Post by acc00 on Main Task cycle too long leading to PLC Fail
    
    
       CODESYS Forge
    
    
      talk
    
    (Post)
    
    
      I have 2 Wago PFC200 PLC, running with Runtime SP19 Patch 5, with the Redundant application. The PLC communicates as Modbus Master with at this moment 15 Modbus Slaves -later there will be 28 in total- (Drives, Power management units,...). These devices are connected in 2 rings (1 ring of Drives, 1 ring of Power Management units), with 2 Managed Moxa Switches being part of the ring. Each PLC is connected to one of these switches. The issue I'm encountering is that the Cycle time of the Active PLC goes very high when I'm closing the Drive ring (simulating an issue on one Cabinet supply, resulting in that one Drive shut down, which can happen on field quite often). As a result of this long cycle, the PLC fails and goes to Exception, and the Passive PLC does not take control of the system. A normal cycle is around 30ms for the Main task, and a few ms for the Ethercat task. When I monitor with Profiler, I see that in this Maximum Cycle, the main Task is only taking 13ms, so I'm not sure where the PLC is hanging for so long. Is the remaining cycle time the Redundant management/sync or something else? Thank you in advance.
    
    Last updated: 2024-03-08
    
    
      
        Post by rmaas on Fieldbus has lost synchronicity
    
    
       CODESYS Forge
    
    
      talk
    
    (Post)
    
    
      Hi, On a gantry system with 2 axis i am getting the following error: SMC_DI_FIELDBUS_LOST_SYNCRONICITY This happens random, sometimes it happens every 5 minutes and sometimes no error for 2 hours... The Setup: - Using codesys 3.5 SP20 with all latest libs... - Kontron AL Pi-Tron CM4 with Preempt realtime patch (Raspberry Pi 4) - Codesys runtime 4.11.0.0 (single core) - CODESYS Control for Raspberry Pi SL licensed - Softmotion + CNC + Robotics licensed - 2x Leadshine EL8-EC400 servo drives - Axis group for a 2-axis T-Gantry Ethercat network wiring: Ethercat master softmotion -> Beckhoff EK1100 -> Servo drive #1 -> Servo drive #2 Ethercat Cycle time = 4ms Max Jitter = 140~150 What i have tried so far: - changed the sync offset from 20% to 30% - changed ethercat task priority from 1 to 0 Running tasks: - Ethercat tast: Prio = 0, Interval = 4ms - Main task: Prio = 1, Interval = 8ms - Visu task: Prio = 31, Interval = 100ms - Softmotion planning task: Prio = 15, Freewheeling - 3 other default tasks that were created by AC_Persist Motion fb's are called in the ethercat task... Does anyone have an idea how to fix this? Any help is greatly appreciated!
    
    Last updated: 2024-04-11
    
    
      
        Post by fontrap on cmDongle Raspberry Pi issue
    
    
       CODESYS Forge
    
    
      talk
    
    (Post)
    
    
      Hello mates, I'm working with CODESYS V3.5 SP20 on a Raspberry Pi and I use "Raspberry Pi MC SL" as device on the project. I've installed the Control Standard L (multicore) license on a Wibu System usb-Dongle (cmStick/4.50) that already had another license from another vendor. I follow the online activation procedure from CODESYS documentation. Raspberry Pi has already CodeMeter installed for the other license. When I plugin the dongle on Raspberry and start the Runtime from Raspberry Pi Update in CODESYS I receive the message that I'm on Demo mode because the license is missing. I double checked that the license is activated in the dongle, through the WebAdmin of CodeMeter and the second license runs properly without any issue. I have already try to change the dongle from HID to MSD device and backward but the the Runtime cannot recognize the Dongle. I have also try to stop and start the Runtime through CODESYS without success. Is there anything else I can do to fix this issue?
    
    Last updated: 2024-04-22
    
    
      
        Post by timvh on Toradex and CODESYS and licensing
    
    
       CODESYS Forge
    
    
      talk
    
    (Post)
    
    
      For the Virtual Control you need to use a "Network license". The Virtual Control has parameters of which one is the reference to the license server. This can be the device itself, but you need to activate the license on the host system (not in the container). For this, CODESYS has a Network License server with WBM (web based management). See for the Network License configuration: https://content.helpme-codesys.com/en/CODESYS%20Control/_rtsl_license_controller_linux.html If it is only for evaluation, I would advise to use a CODESYS (USB) key and activate the license on the key. Then you still have to install the CODESYS Network License server on the host, but you don't have to activate the license as soft license on the device. The benefit is that you can easily move your license to another device when needed. Off course your device must have a free USB port available to be able to do this.
    
    Last updated: 2025-10-20
    
    
      
        Post by george32 on CSV file and string manipulation.
    
    
       CODESYS Forge
    
    
      talk
    
    (Post)
    
    
      Dear folks, I think I have a rather simple question but I could not find the right answer to my question: I have made with Excel a CSV file where I would like to have some general data regarding my program variables. I have made an program what let me read the file. The string I am currently get is at follows: 'IP_Adres;192.168.45.12$R$NPort_number;2000$R$NCycle_time;43$R$NStart_Standard_IO;20$R$N' Now I want to split the string in multiple part, which I later would connect to the right variable. By Google and experimenting I have reached to the following code for the first part of the splitting proces: // Splitting the BOM of the string: Received_string := FileReadString; IF LEFT(STR:=New_string,3)= '' THEN Received_string_without_BOM :=RIGHT(STR:= Received_string,SIZE:= (LEN(STR:= Received_string))-3); END_IF //Splitting the remaining string in part for later declaration. WHILE index = 0 DO index_split_part := FIND(STR1:= Received_string_without_BOM,STR2:= '$R$N'); Part_of_String[index]:=LEFT(STR:=Received_string_without_BOM, SIZE:= index_split_part); index := index + 1; END_WHILE However in the splitting proces I could not understand what is really happening. I understand that the Find() function returns the first value the $R$N in the Received_string_without_BOM. This would mean that the index_split_part := 23 I|P| _ |A |d|r|e|s|;|1_|9 |2 |. |1 |6 |8 |. |4 |5 |. |1 |2 |$ |R |$ |N |P | 1|2| 3 |4 |5|6|7|0|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27| So the next part is to read the first 23 characters of the Received_string_without_BOM with the LEFT() function. I expected that the outcome the following was: 'IP_Adres;192.168.45.12$'. However the outcome is: 'IP_Adres;192.168.45.12$R'. I do not understand where the R after the $ sign comes from, because its place is 24 so it would not be added to the part_of the_string[index]. If I hard coded value 24 for the size it gives me the following return: 'IP_Adres;192.168.45.12$R$N'. I would expect everything till the R but the code adds the $N also to the string. I hope someone could explain to my what I am seeing wrong in my point of view? With kind regards, George
    
    Last updated: 2024-09-27
    
    
      
        Post by ara32 on CODESYS 4 Linux: 
    
    
       CODESYS Forge
    
    
      talk
    
    (Post)
    
    
      Hello! I managed to correctly launch CODESYS Developer Studio 3.5.17, almost all functionality works. The only issue remaining is that when connecting to a device and obtaining its public key, the NCryptEncrypt function is called, which is not fully implemented in the DLL source code, resulting in the connection not being established. Currently, the code of this function in the Wine repository looks like this: SECURITY_STATUS WINAPI NCryptEncrypt(NCRYPT_KEY_HANDLE key, BYTE *input, DWORD insize, void *padding, BYTE *output, DWORD outsize, DWORD *result, DWORD flags) { struct object *key_object = (struct object *)key; TRACE("(%#Ix, %p, %lu, %p, %p, %lu, %p, %#lx)\n", key, input, insize, padding, output, outsize, result, flags); if (flags & ~(NCRYPT_NO_PADDING_FLAG | NCRYPT_PAD_OAEP_FLAG | NCRYPT_PAD_PKCS1_FLAG | NCRYPT_SILENT_FLAG)) { FIXME("Flags %lx not supported\n", flags); return NTE_BAD_FLAGS; } if (flags & NCRYPT_NO_PADDING_FLAG || flags & NCRYPT_PAD_OAEP_FLAG) { FIXME("No padding and oaep padding not supported\n"); return NTE_NOT_SUPPORTED; } if (key_object->type != KEY) return NTE_INVALID_HANDLE; return map_ntstatus(BCryptEncrypt(key_object->key.bcrypt_key, input, insize, padding, NULL, 0, output, outsize, result, flags)); } The program crashes due to the NCRYPT_PAD_OAEP_FLAG flag. I'm not proficient in C++, but I attempted to add handling myself, and here's the result: SECURITY_STATUS WINAPI NCryptEncrypt(NCRYPT_KEY_HANDLE key, BYTE *input, DWORD insize, void *padding, BYTE *output, DWORD outsize, DWORD *result, DWORD flags) { struct object *key_object = (struct object *)key; TRACE("(%#Ix, %p, %lu, %p, %p, %lu, %p, %#lx)\n", key, input, insize, padding, output, outsize, result, flags); if (flags & ~(NCRYPT_NO_PADDING_FLAG | NCRYPT_PAD_OAEP_FLAG | NCRYPT_PAD_PKCS1_FLAG | NCRYPT_SILENT_FLAG)) { FIXME("Flags %lx not supported\n", flags); return NTE_BAD_FLAGS; } if (flags & NCRYPT_NO_PADDING_FLAG) { FIXME("No padding not supported\n"); return NTE_NOT_SUPPORTED; } BCRYPT_OAEP_PADDING_INFO oaepInfo = { 0 }; oaepInfo.pszAlgId = BCRYPT_SHA1_ALGORITHM; NTSTATUS status = BCryptEncrypt(key_object->key.bcrypt_key, input, insize, &oaepInfo, NULL, 0, output, outsize, result, flags); if (key_object->type != KEY) return NTE_INVALID_HANDLE; return map_ntstatus(BCryptEncrypt(key_object->key.bcrypt_key, input, insize, padding, NULL, 0, output, outsize, result, flags)); } Now, when calling the connection, it crashes with the error "bcrypt:BCryptEncrypt flags 0x4 not implemented." Can anyone help with enhancing this functionality or at least point me in the right direction?
    
    Last updated: 2024-03-22
    
    
      
        Post by rcaponi on Codesys Control RTE V3. Remote Control
    
    
       CODESYS Forge
    
    
      talk
    
    (Post)
    
    
      Hello, I would like to have, if possible, some clarification on this function. That is, I would like to understand if it is useful for managing, fom my development PC, the RTE runtime executed on a remote control. This is what the help says: Remote PLC: Opens the Remote Configuration dialog. By enabling or disabling the Control remote PC, not local option, you determine whether a PLC is used that is on a remote or local PC. Accordingly, the menu commands Start PLC, Stop PLC, and PLC Configuration refer to the local PC or a PC reached on the network. For the remote PC, specify the Target PC address, Port number, and a Timeout value (in ms) for the connection (Remote Timeout [ms]). But does this mean that I also need to install the RTE runtime on my development PC? Is it possible to have some more information? Best regards Roberto Caponi
    
    Last updated: 2023-09-22
    
    
      
        Post by timvh on VisuElems.CurrentUserGroupId is not stable
    
    
       CODESYS Forge
    
    
      talk
    
    (Post)
    
    
      I'm not sure what you are trying to do, but getting the CurrentUserGroupID like this will not work, because there could be multiple Visualization Clients and each can have a different user that is logged in. Also when you go online with CODESYS and open an Visualization, this is counted as a client. Probably this is the reason you see it changing. What you can to is "iterate" over all clients and then see which user is logged in on which visualization Client. For this you need to add the Visu Utils library to the project and call the FbIterateClients. See https://content.helpme-codesys.com/en/libs/Visu%20Utils/4.4.0.0/VisuUtils/VisuActionUtilities/Function-Blocks/FbIterateClients.html fbClientIteration( xExecute := x_Execute, itfClientFilter := VU.Globals.AllClients, itfIterationCallback := fbIterator, xDone => x_Done, xBusy => x_Busy, xError => x_Error, eError => e_Error); The fbIterator, in the example above, should be an instance of an FB which you have created yourself and this must implement VU.IVisualizationClientIteration. For example: FUNCTION_BLOCK FB_ITERATOR IMPLEMENTS VU.IVisualizationClientIteration Then automatically the corresponding methods will be called. In the HandleClient Method, you will get an interface to the client(s) and then you can get the current user through this interface: itfClient.UserGroupId You can also get the UserName: itfClient.UserName
    
    Last updated: 2023-11-14
    
    
      
        Post by user3000 on Can't find an Extended Pulse Timer (TP and LTP)
    
    
       CODESYS Forge
    
    
      talk
    
    (Post)
    
    
      Hello, For my program I need an extended pulse timer, which can be referred to as a retriggerable pulse timer. Where every rising edge of the input resets the elapsed time zero, extending the lenght of the output pulse. The Codesys pulse timer (TP) is a one-shot timer and only resets the elapsed time with the falling edge of the input. There is also a pulse timer (LTP) in codesys, but in my simulation it was also functioning as a one-shot even though the description sounds like LTP should be retriggerable. I have uploaded some timing plots from another PLC program for reference. I am looking for a timer equivalent to the "TEP" diagram. Is there an Extended Pulse Timer in Codesys? Maybe there is a way to manipulate the input so it resets the elapsed time outside the function block?
    
    Last updated: 2023-12-06
    
    
      
        Post by abinvest579 on TCP Client 
    
    
       CODESYS Forge
    
    
      talk
    
    (Post)
    
    
      Hi All, I am using codesys based plc to read and control magna power DC supply over LXI protocol using SCPI command. To connect device required socket programming for that i am using Net base service library function block TCP_Client to establish connection over TCP/IP , TCP_Write to write SCPI commands and TCP_Read to read data from Magna power DC supply. I have attached screenshot for logic developed. I am able to connect and write commands to device but i not receiving any information from device. For writing Commands i also tried various end of line character like \n,<nl>, A, D, 10, 13, 0x0A, 0x0D but not received any status from device. For testing purpose i am using simple command '*IDN?' to read data. Also if tried to check on hercules software what data actually plc read, first it read correct data after that is read wrong data as see in screen shot. 'Hello World' was correct read and after that Codesys in replaced with 'Codesysorld' that is not correct way. Same issue also appeared for send data. Any one have face same issue how i can read data directly from device correctly and send data please suggest solution on this.</nl>
    
    Last updated: 2024-07-01
    
    
      
        Post by timvh on How to implement an interface (IElement)?
    
    
       CODESYS Forge
    
    
      talk
    
    (Post)
    
    
      See: https://forge.codesys.com/prj/codesys-example/element-collect/home/Home/ This contains an application "OnlineChangeSafeLinkedListExample". What you should do is create a new interface which has your "Priority" property. Then your FB should extend the base element function block and implement your own interface: E.g. FUNCTION_BLOCK MyElement EXTENDS COL.LinkedListElementBase IMPLEMENTS I_MyInterface Then the __QUERYINTERFACE does the magic to check if your "element" also implements your interface. Something like this: // Compares this element with itfElement. // Returns 0 if the elements are equal, < 0 if the element is less than itfElement, // > 0 if the element is greater than itfElement. // This method will be called from sorted collections (e.g. |COL.SortedList|) to sort the elements. // IMPORTANT: The underlying value to be compared with MUST NOT be changed during the lifecycle of the object. METHOD ElementCompareTo : INT VAR_INPUT (* The element to compare*) itfElement : COL.IElement; END_VAR VAR itfIntElement : I_MyInterface; xResult : BOOL; END_VAR // We use integer iInt1 for sorting. xResult := __QUERYINTERFACE(itfElement, itfIntElement); IF xResult THEN IF iInt1 < itfIntElement.Priority THEN ElementCompareTo := -1; ELSIF iInt1 > itfIntElement.Priority THEN ElementCompareTo := 1; ELSE ElementCompareTo := 0; END_IF ELSE ElementCompareTo := -1; END_IF
    
    Last updated: 2024-07-22
    
    
      
        Post by ruobian on Analog Input Delay Timer
    
    
       CODESYS Forge
    
    
      talk
    
    (Post)
    
    
      Hello there, I am new here and in programming. I need help with the basics. I am trying to do what I mentioned in the title. I have an analog input. So I have a real or integer data type value. I want to delay it. TON and TOF only work with bool. I think there is a function block that has two inputs, 1 for real or int and 1 for bool. And if bool is true, it will give the output as real or int. I don't know but I need something like this. Actually, it is not exactly like that. In other words, it will not show the real value at the input at the output after a certain period of time. I want it to show the real value from 2 seconds ago continuously. The purpose of doing this is to compare the real value I received with the value from 2 seconds ago and find out whether it went up or down. I am using only FBD. Please help me with this. Thanks in advance.
    
    Last updated: 2024-08-20
    
    
      
        Post by ellocco on XOR with four Inputs with OR-, NON- and AND-Operators
    
    
       CODESYS Forge
    
    
      talk
    
    (Post)
    
    
      My topic is more of academic nature, I would like to implement an XOR-operation with four inputs on my own (without the predefined XOR-operator) in a function block diagram (FBD). I have two proposals. One works fine and the other one is just an idea, but I do not know, if it is possible to code it in CODESYS V3.5 SP18 in form of a FBD. Here the one that works: And here an idea, which I have not managed to code it as an FBD: Any ideas? Is the 2nd diagram a correct interpretation of the coding task? And is there a way to implement it in form of an FBD in CODESYS V3.5 SP18? Followup (08-Nov-2024): Also in the current version of CODESYS (V3.5SP20Patch3) I have not managed to connect the existing blocks. In the alternative SPS-IDE PLCnext Engineer it is possible.
    
    Last updated: 2024-11-08
    
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.