Post by bruno-roth on Parker Compax3 controlled by Schneider LMC 201
CODESYS Forge
talk
(Post)
Hello, You could not run EtherCAT-Softmotion drives with LMC201 PLC. This Controller has an EtherCAT master but only to run simple I/O devices. You could not use this EtherCAT master on the LMC201 for Motion. Schneider PACdrive Controller use SERCOS and only own drives (LXM62 with Sercos) for motion.
Last updated: 2026-01-13
Post by reinier-geers on Compare applications in one project
CODESYS Forge
talk
(Post)
Ive copied slave 3 to slave 1. Runs without a problem. Then i copied 1 to 3. It hangs/freeze immediatly. not even a screen. Only thing that is diverend is the network variable. What is the problem with version 20.5 / 21.0 ? Not even my dealer knows whats the problem
Last updated: 2026-03-19
Post by manuknecht on Persistence Manager does not save alphabetically first value
CODESYS Forge
talk
(Post)
I have several libraries which contain values that should be saved on a PLC. As apparently no Persistent Variable List is available within Libraries, I use the Persistence Manager to create a Persistence Channel in the Project which imports the library. I then specify the persistence channel in the library using the {attribute 'ac_persist':='PersistenceChannel_CT'} specifier. This generally works very well and gives me exactly the properties I require. However, it came to my attention that the (alphabetially) first value from the library is not saved in the created ASCII file. When checking the content of the Persistence Channel, it shows all the variables as defined in the library. But the created file does not contain the first value and it is not restored after restart or reset. (see attached picture) I disabled Periodic Saving and set xSaveOnChange to TRUE and so the file usually updates immediately after changing one of the values. When changing the first value, it does not update which is consistent with this value not being saved. I also created a sample project and library from scratch which shows the same issue both using a Raspberry Pi and using a Linux machine. Does someone know what the reason for this could be or did someone make similar experiences? Looking forward to hearing your suggestions. Thanks in advance and best wishes Manuel
Last updated: 2023-10-17
Post by aott33 on Webvisu NO load
CODESYS Forge
talk
(Post)
Thanks, I will check the PLC Log when the PLC is connected again. I will update my findings here. Since I don't have access to the Linux Panel PC at the moment, I tested inside my development VM with the same Linux OS. I have no issues or delays connecting to the WebVisu using my Linux VM. Two main differences: 1. My host Computer has a faster processor compared to the panel PC. 2. There are no devices connected in my dev environment. I will continue testing when I have connection to the panel PC.
Last updated: 2023-09-23
Post by andre-luis on Check if Codesys runtime is on 'Running' or 'Stopped' state?
CODESYS Forge
talk
(Post)
Just to share, for those who as me are seeking for this and had found no information anywhere in this World: Every time I stop/start the PLC runtime ( turning into 'Stopped' or 'Running' state ) the 'CODESYSControlService' appears at the Taskmanager list, which could suggest a straight correlation. I was expecting a clever solution, but this one solves for while.
Last updated: 2024-07-02
Post by andre-luis on Check if Codesys runtime is on 'Running' or 'Stopped' state?
CODESYS Forge
talk
(Post)
It's already there, the service get started as default. I missed to say that sometimes it happens w/o even the system get restarted. Anyway, the main issue here is to know the state of the runtime. We collect a lot of informations about the whole system, and it would be nice to have a way to detect the runtime state.
Last updated: 2024-07-02
Post by dkugler on TargetVisu Freezing
CODESYS Forge
talk
(Post)
The only weird situation i remeber with particular or complete frozen target visu was after the rtc clock was fallen or set back to the past. It looked like after running a while the alarm history database crashed during writing entries at a date lot of years in the past. After setting the rtc clock to actual date/time and deleting the alarm db every thing worked fine. I don't know, if this is/was a problem of our PLC hardware/firmware? Maybe check date/time at your system?
Last updated: 2024-09-13
Post by pixsys on Webvisu cliƫnt responsiveness
CODESYS Forge
talk
(Post)
Hi, please check if "Support client animations and overlay of native elements" option is enabled. This option is very heavy to manage for the Webclients. I'm using the Pixsys srl "TC series" HMI with the code "P3" (so a 4+4 cores CPU) that runs very well also with this option active. The same CPU is mounted also in their WebPanel "WP" series, so you can try one of them if you want.
Last updated: 2024-11-06
Post by pmanuele on Beckhoff AS1060 and EL7041 configuration
CODESYS Forge
talk
(Post)
Hello everyone, i'm having some problems commanding AS1060 step motor with EL7041 (rev22) drive. With motor i've also the incremental encoder (05.2420.1230.0200.5009). I can correctly move the motor in "Position controller" operating mode with the internal counter. The problems start when i set the Encoder in feedback type or i change the operating mode. Does anyone have experience with these two terminals and can give me some advice of main parameters to check or change? Thanks everyone
Last updated: 2024-12-11
Post by bruno-roth on Read "Homed" status from EtherCAT drive
CODESYS Forge
talk
(Post)
Hello, the information if your axis is already homed you could only find out direct from your Slave. In DS402 status there is no Bit defined. But some manufacturer of Drives use some optional bits or status. E.g. if you have Schneider Electric LXM32 Servo you will find this information in Bit 15. You have to check the manual of your used Servo-Drive f this information is provided in any object and then read it out with SDO.
Last updated: 2025-01-08
Post by mondinmr on Something of strange in the trace
CODESYS Forge
talk
(Post)
I noticed something strange in the trace: one of the variables (specifically parts.servoFeeder.m_pathGen.m_acPos) is showing an absurd or unrealistic valueāsomething around 4E+18. However, when I check the same variable in the watch window, it shows a normal and expected value (around 506). Do you know why there is this discrepancy between the trace and the watch? Could it be a bug in the trace tool? Thanks in advance!
Last updated: 2025-05-16
Post by marcolim on RPC failed 0x16c9a085
CODESYS Forge
talk
(Post)
Hello Matteo, I think the problem is about configuration of firewall (windows firewall usually). You can disable temporary the firewall to check if the communication works. Eventually you can: Go to the control panel -> Windows Defender Firewall -> Allow an app or feature Enable the options to change the settings. Scroll down in the application list to CODESYS and CODESYS ControlService. If you donāt see this application add it to the list. Make sure that all the checkboxes are checked (Domain, Private and public).
Last updated: 2024-04-01
Post by gseidel on Scara3 kinematic robot error
CODESYS Forge
talk
(Post)
Hi aniket-b, the maximum cycle time of the EtherCAT_Task is very high, ca. 35 ms. Could you please check if this is just the first cycle after starting the application or if it happens during motion? (You can reset the times in the task configuration by right-clicking in the "monitoring" tab.) Another thing to try: put the SoftMotion_Planning task on a different core. Best regards, Georg
Last updated: 2026-01-07
Post by timvh on KeyPad Function in Visualization to fill a table
CODESYS Forge
talk
(Post)
Create an array of STRING and 1 INT variable, e.g.: asMyString : ARRAY[0..9] OF STRING; iIndex : INT; Then place a "Table" object in the visualization: - link this to the string array variable. - Check the option "Use Template" - Then in the Input Configuration - add the "Write Variable" command Somewhere else add a "Combobox, array" - link this to the same array. - And link the index to the INT variable. In the Combobox, you can then select one of the strings from the array. The index variable will indicate which selection has been made.
Last updated: 2026-01-08
Post by winki on Error in licence activation
CODESYS Forge
talk
(Post)
Hello, Despite receiving an activation message after entering the license number, I donāt have any license installed on my gateway. I went to check in /var/opt/codesys/ and there is no License file. I searched the entire gateway for a .lic file and found no license. Iām really stuckāhow can I fix this, please? When I am using the licence tools I got this picture: But nothing that have been activated. Loic,
Last updated: 2026-02-03
Post by winki on Error in licence activation
CODESYS Forge
talk
(Post)
Hello, Despite receiving an activation message after entering the license number, I donāt have any license installed on my gateway. I went to check in /var/opt/codesys/ and there is no License file. I searched the entire gateway for a .lic file and found no license. Iām really stuckāhow can I fix this, please? When I am using the licence tools I got this picture: But nothing that have been activated. Loic,
Last updated: 2026-02-03
Post by yannickasselin on Lenze i950 Servo and WAGO PFC200
CODESYS Forge
talk
(Post)
I don't have time to go through the whole manual but as I said earlier, the servo drive does not support any of the modes needed for SoftMotion Light to work. If you want to use the full SoftMotion, you could use SMC_Homing function block to do the homing. This function block does not use the Homing Mode. It still uses the CSP mode and does the logic in Codesys runtime instead of in the servo drive. Read the documentation about it to see if it fits your needs. But if your controller only supports SoftMotion Light, I am afraid you will not be able to use the i950. I do a lot of motion stuff with different servo brands. Some support all the modes needed for SoftMotion Light and some don't. You really need to make sure the modes are supported before choosing a brand over another. I tend not to use brand specific controllers in order not to be limited by their supported features. I usually choose a PC (Linux or Windows) and install the Codesys runtime and licences myself. This is the most flexible way to use Codesys in my opinion. Depending on how many axes are needed in your project, a full SoftMotion license may not be more expensive than SoftMotion Light because SoftMotion is available as Application based license whereas SoftMotion Light is not. But of course, SoftMotion is harder on the CPU than SoftMotion Light.
Last updated: 2026-02-13
Post by struccc on Inheritence of struct,
CODESYS Forge
talk
(Post)
Strangely reminds me to my struggles... Want to do something "Elegant", reusable, universal, practical... In CODESYS??? š First of all, before you get too deep into this: If you could find a way, to make a "universal" log entry object, containing the variable length data itself, you wouldn't be able to store them in an array, or access them like an array, or pass them by value as a type. (please correct me, if I'm wrong, incorrect, or not precise). Because... Basically you can't declare a type with variable memory footprint. This is a very deeply embedded characteristic of CODESYS, and all IEC 61131-3 systems, and it has many reasons behind. And yes, it is a very common trap / mistake, to forget about. So, with a log entry - I guess - it's pretty much the purpose: store data and metadata together, and then handle it in a uniform way. There are ways to handle this, really depends on what is the purpose. For example: 1. Entries with fixed length (Maybe it is not as evil as it looks for the first time. Depends on the situation, but definitely the fastest and easiest code) You can have your base object, with an internal, fixed length string or byte array variable. I would go with a string, and call it _Data.; And then you can make properties, like As_Bool, As_Int, As_Real... In the 'set' accessors, you can do like: pReal := ADR(_Data); // POINTER TO REAL As_Real := pReal^; In the 'get' accessors, evidently: pReal := ADR(_Data); // POINTER TO REAL pReal^ := AS_Real; Or, can use ANY type, if you are not obsessed with variable / property like access: 2. Fixed length, but nicer First, some disadvantage to any values: - You can only assign values with write access. No literals, constants, etc... - Can only be used as input variable of function or function_block - Therefore, stg you could reach: LogEntry.Initialize (stVariable|rVariable|iVariable|xVariable); Just a quick example (it's funny to play with ANY): Be careful it was not tested. I'm sure can be done better, please feel free to comment FUNCTION_BLOCK FB_LogEntry VAR_INPUT MsgClass : UDINT; // Like DEBUG, WARN, ERR... MsgCode : UDINT; // Like Errors.ERR_FAILED MsgTS : DT; // The timestamp END_VAR VAR _Data : STRING(80); // Our data container... _Descr : __SYSTEM.AnyType; // A standard descriptor for our data, containing TYPE_CLASS, address and size END_VAR METHOD SET_Value : BOOL VAR_INPUT anyValue : ANY; END_VAR VAR I : DINT; diSize : DINT; pStr : POINTER TO STRING; END_VAR // Check what did we receive in anyValue. diSize := anyValue.diSize; // We use constant __SYSTEM.TYPE_CLASS to identify the received data type CASE anyValue.TypeClass OF // Maybe we don't want to store references, pointers... and who knows what else... __SYSTEM.TYPE_CLASS.TYPE_REFERENCE, __SYSTEM.TYPE_CLASS.TYPE_POINTER : SET_Value := FALSE; // For the planned types we will be just fine. TYPE_CLASS.TYPE_BOOL, TYPE_CLASS.TYPE_INT, TYPE_CLASS.TYPE_REAL : SET_Value := TRUE; // Optionally string can be handled separately, maybe we have received STRING(255), but practically it is shorter than 80 bytes... TYPE_CLASS.TYPE_STRING : pStr := anyValue.pValue; diSize := MIN(anyValue.diSize, LEN(pStr^) + 1); // Get the actual size, and rewrite the received structure member diSize := MIN(SIZEOF(_Data), diSize); // Can chop down the received string to our length... SET_Value := TRUE; // Maybe want to play a little bit more here, to narrow down or convert datatypes, etc... // Or just reject any other datatype ELSE SET_Value := FALSE; RETURN; END_CASE // Fail, if the received value is still larger than our container... IF diSize > SIZEOF(_Data) THEN SET_Value := FALSE; END_IF // Here we should be ok, just set up the _DataType structure, and copy store the data IF SET_Value THEN THIS^._Descr.TypeClass := anyValue.TypeClass; // The typeclass is already filtered THIS^._Descr.diSize := diSize; // Set the (adjusted) size THIS^._Descr.pValue := ADR(_Data); // This will not change, just to be sure {IF defined (pou:SysMem.SysMemCpy)} SysMem.SysMemCpy(_DataType.pValue, anyValue.pValue, TO_UDINT(anyValue.diSize)); {ELSE} // An ugly replacement MemCpy FOR I:=0 TO diSize - 1 DO _Descr.pValue[I] := anyValue.pValue[i]; END_FOR {END_IF} // Otherwise, in case of failure maybe better set an empty value (overwrite the former data descriptor) ELSE THIS^._Descr.TypeClass := TYPE_CLASS.TYPE_NONE; THIS^._Descr.pValue := ADR(_Data); THIS^._Descr.diSize := 0; END_IF METHOD GET_Value : BOOL VAR_INPUT anyValue : ANY; END_VAR VAR I : DINT; END_VAR // We just have to serve the data, using the __System.AnyType structure received // Roughly we can say: IF anyValue.TypeClass = _Descr.TypeClass AND anyValue.pValue <> 0 // This should not be possible, already taken care of by Codesys (?) THEN {IF defined (pou:SysMem.SysMemCpy)} SysMem.SysMemCpy(anyValue.pValue, _DataType.pValue, TO_UDINT(MIN(anyValue.diSize, _Descr.diSize))); {ELSE} // An ugly replacement MemCpy FOR I:=0 TO MIN(anyValue.diSize -1, _Descr.diSize - 1) DO anyValue.pValue[I] := _Descr.pValue[I]; END_FOR {END_IF} // Just to make sure, that our string is terminated... IF anyValue.TypeClass = TYPE_CLASS.TYPE_STRING THEN anyValue.pValue[anyValue.diSize -1] := 0; END_IF GET_Value := TRUE; RETURN; END_IF // ... But can play more CASE anyValue.TypeClass OF TYPE_CLASS.TYPE_WSTRING : ; // Could do conversion TYPE_CLASS.TYPE_XSTRING : ; // Wow, I have to figure this out TYPE_CLASS.TYPE_PARAMS : ; // BTW, what is this, how to use? TYPE_CLASS.TYPE_ANYNUM : ; // ... END_CASE Be careful it was not tested. I'm sure can be done better, please feel free to comment 3. If you really want to do entries with variable size In a standard environment, it would be similar to the previous, except you dont have the container variable _Data, just use a pointer, practically _Descr.pValue At Initialize (SET_Value), you have to allocate the memory, would be easy with SysMem.SysMemAlloc - nowadays with SysMem.SysMemAllocData -, and you make sure to release it after use with SysMem.SysMemFreeData... SysMemAlloc was already hidden. The problem with this, that sooner or later your application will totally fragment the dynamic memory, and fail... So should look for some form of dynMaybe MemUtils.MemoryManager (I am not sure what is the status and the future of it). 4. You will end up by a LogEntry Factory ... 5. You could still have a look at this IEC Snippets BTW, Standard Codesys Logger is not a bad choice either. If you are really interested, I share some more code / library.
Last updated: 2025-03-09
Post by drbuzz on Communication Error (#0) for IFM controller
CODESYS Forge
talk
(Post)
Hi Folks, Every time I use an IFM controller I always seem to run into a problem connecting to it. I get the Communications Error (#0). So I thought I would share some tips and tricks. Once the CANfox Cable (EC2112) cable driver is installed, you can use the yellow app in the sys tray to blink the lights on the cable. Confirm the cable works in the IFM maintenance software by connecting to the controller and reading the information on it. Make sure to download an OS into the controller (the light will go from a fast blink to solid green). In Codesys V2.3, the communication settings for the CR0401 is 250kBaud by default and Node ID 127. What got me, was I needed to reboot the computer after the cable driver install. Also if your application has canbus settings in it which are changed from default, after the controller is power cycled, the new Node ID and Baud will be in effect. I made a handy guide because too much time has been wasted on this. Programming IFM CR0401 Serial/Can Programming Cable ⢠Connect IFM EC2112 CanFox programming cable with connector adapter. ⢠Make sure cable is linked to VM (if using VM). ⢠Install drivers for cable if not installed. o Download from IFM EC2112 site. https://www.ifm.com/ca/en/product/EC2112 ⢠Once Installed, reboot computer. ⢠In system tray, there should be a yellow icon that you can open and check on programming cable. Select the cable in the list and flash the lights to confirm it is working. Maintenance Software ⢠Install IFM Maintenance Tool Software. o Download from IFM Site. https://www.ifm.com/ca/en/download/eco100_MaintenanceTool ⢠Open IFM Maintenance software ⢠Select Basic System ⢠Select CAN cable ⢠It will tell you if you donāt have a cable connected. ⢠Use Wizard if needed. ⢠Read Channel Parameter on the Settings page, or get Identity in the System Information > Identity. ⢠Default Node is 127 on a new unit. Baud is 250kBaud (bits/sec) ⢠Controller information should populate. ⢠Controller green light should be blinking at 5hz (meaning OK but no OS, just bootloader). ⢠Click Software > Load. ⢠Open the OS file. Should match Codesys version selection (for CR0401 this is version 3). o Download OS file from IFM Website. https://www.ifm.com/ca/en/product/CR0401 o It is located at the top of the download under āsoftware for CR0401ā. o Select the file and load it⦠this will take a minute. ⢠Once completed the unit should now have a solid green light o Solid green means the controller has an OS but no application is running. Codesys V2.3 Application ⢠Codesys needs to be downloaded and installed from the IFM website as it has the IFM libraries and license to use the software. o Download from the IFM CR0401 page. o https://www.ifm.com/ca/en/product/CR0401 ⢠Create new application with the correct IFM controller or Open Codesys application. ⢠Keep in mind that the PLC Configuration on the Resources tab can be changed for the CAN communication interface⦠so changes to node and baud will take effect after the first download and reboot of the controller. ⢠Go to āOnlineā in the top menu and change āCommunication Parametersā o The Local dropdown shows the last configuration used. All other interfaces will show below it and need to be updated when changed or used. o Confirm Node ID is 127 for the first download. ļ§ The NodeID will change to whatever the program has after (in my case 125). ļ§ Node Send Offset should be default at 1536 ļ§ Node Recv Offset should be default at 1408 ļ§ Can bus Baudrate should be 250 kbaud. ļ§ Yes to Motorola Byte Order ļ§ Block Transfer should be false and note used (60 is default setting). ļ§ Can Card Driver should match the systray item which is Sie_USB. ⢠If the system populated the other one, just update and relay the communication parameters. The software will usually bring up the available cable and driver. ⢠Go to āOnlineā and Login to download. o Press Yes to Download Application. I hope this helps!
Last updated: 2025-03-21
Post by sushela on Temu Promo Code [acq615756] for Existing Customers 2024
CODESYS Forge
talk
(Post)
Temu Promo Code acq615756 for Existing Customers in 2024 Temu is known for offering unbeatable deals across a wide range of products. In 2024, existing customers can enjoy even greater savings with the Temu promo code acq615756. Whether you're a loyal shopper or returning for a second purchase, this code opens up exciting opportunities for discounts. In this article, weāll dive into everything you need to know about using Temu promo code acq615756 as an existing customer. What Is the Temu Promo Code acq615756 for Existing Customers? Promo code acq615756 is one of Temuās top offers for 2024, designed to reward loyal customers who have previously made purchases. Unlike many promotions that only target first-time buyers, this code provides a discount on purchases made by existing customers. It's an ideal way to enjoy continued savings on Temuās vast collection of products. How Much Can Existing Customers Save with Promo Code acq615756? By applying promo code acq615756, existing customers can unlock significant discounts, often ranging from 30% to 50% off on select products. This generous offer allows regular shoppers to continue enjoying budget-friendly prices without needing to create new accounts or qualify as first-time buyers. How to Use Temu Promo Code acq615756 as an Existing Customer To use the acq615756 promo code, follow these simple steps: Log in to your existing Temu account. Browse through the products you want to buy and add them to your cart. At checkout, locate the āPromo Codeā box and enter acq615756. Hit apply, and the discount will be instantly applied to your order. Whether youāre purchasing electronics, fashion, home goods, or beauty products, this code ensures you're saving more on every order. Eligibility Requirements for Using Promo Code acq615756 Existing customers must meet certain criteria to be eligible for using this promo code. These requirements include: Having made at least one previous purchase on Temu. The promo code may have minimum order requirements, depending on the promotion terms for 2024. The code may only be valid for certain categories or products, so check the terms before finalizing your purchase. 5. Best Practices for Maximizing Savings as an Existing Customer Hereās how you can make the most of Temu promo code acq615756: Combine with other offers: Temu often allows promo codes to be used alongside other ongoing promotions, such as seasonal sales or flash discounts. Subscribe to Temuās newsletter: Keep an eye on Temuās email updates for announcements about limited-time offers and additional discounts for existing customers. Shop during major sale events: Applying the promo code during Black Friday, Cyber Monday, or Holiday Sales can maximize your savings on top of already discounted prices. 6. Are There Any Restrictions on Temu Promo Code acq615756? While promo code acq615756 offers substantial savings, it may come with a few restrictions: Expiration date: Check the validity of the code as some offers are time-sensitive. One-time use: The promo code may be redeemable once per customer, so plan your purchases accordingly. Limited categories: In some cases, the discount may not apply to specific product categories such as electronics or luxury items. 7. Frequently Asked Questions (FAQs) About Temu Promo Code acq615756 for Existing Customers Q1: Can I combine Temu promo code acq615756 with other discounts? Yes, you can often combine this promo code with other ongoing sales and offers. However, always check the terms and conditions to confirm if stacking is allowed. Q2: Is Temu promo code acq615756 available for existing customers only? Yes, this code is specifically tailored for existing Temu customers. If you're a first-time buyer, you may need to look for other codes. Q3: Does Temu promo code acq615756 have a minimum purchase requirement? In some cases, this promo code may require a minimum order amount, typically around $50 or more. Be sure to review the specific promotion details when applying the code. Q4: How long is the promo code acq615756 valid? The validity of Temu promo code acq615756 may vary. Itās advisable to use it as soon as possible to avoid missing out on the discount. Q5: What if the promo code doesnāt work at checkout? If the code doesnāt apply, double-check that you're logged into your existing customer account and that youāve met the eligibility criteria such as product selection or minimum order requirements. Temuās 2024 Promo Strategy for Existing Customers Temu recognizes the importance of retaining loyal customers, and offering exclusive promo codes like acq615756 is part of their broader 2024 strategy. Existing customers who regularly shop on the platform are rewarded with ongoing deals, ensuring they receive value for their repeat business. This customer-centric approach helps Temu maintain its competitive edge in the e-commerce space. Why Existing Customers Should Take Advantage of Promo Code acq615756 If youāve previously shopped on Temu, now is the perfect time to take advantage of the acq615756 promo code. Not only does it offer you substantial savings, but it also rewards you for your loyalty. With this code, thereās no need to wait for major sales; you can enjoy deep discounts on your favorite products all year long. Conclusion Temu promo code acq615756 for existing customers in 2024 is an unbeatable way to save on repeat purchases. Whether you're upgrading your tech gadgets, revamping your wardrobe, or sprucing up your home, this code helps you stretch your budget further. Log in to your Temu account today, apply acq615756, and enjoy exclusive discounts tailored just for you. Don't miss out on this opportunityāstart saving with Temu now!
Last updated: 2024-10-26
Post by egau on Hard shutdown: no code on device after power on
CODESYS Forge
talk
(Post)
Hi, We have a machine running Codesys on a Windows IPC (CODESYS Control Win v3 - x64). When we hard shutdown the machine, the code on the PLC sometimes becomes "corrupted" after a power on (When trying to login to the PLC, we get the message "The application 'Application' does not exist on device."). I've noticed these errors in the logs, but I'm not sure what to make of them. We are not using any RETAIN variables in our code, although I'm not sure about referenced librairies. (we are using the persistence manager). I'm pretty sure that not doing a graceful shutdown is the root cause of this. This being said, what is the proper way of doing a graceful shutdown? Is putting the Codesys application in "stop" sufficient? I know how to implement this, so if it works then it would be a quick fix. However, I think we need to add a UPS, which would detect power loss and inform the PLC that it needs to initiate its shutdown, and then the PLC would shutdown gracefully. Any help with this will be greatly appreciated :)
Last updated: 2024-10-03
Post by jose-coro on Trouble installing codesys 64 3.5.19.0
CODESYS Forge
talk
(Post)
I tried to intalling codesys 64 3.5.19.0, during the installation process I get the following messages: "One or more problems have appeared with the current version profile. please consult with the supplier to solve the problem. -The plugin '{ee08241a-dd43-445a-b0a1-de9f717d92e0}(exactly 3.5.19.0)' is required for the current version profile but is not installed. The plug-in '{c7880c90-68c0-4cf8-a726-f0ee72b11f86}(exactly 3.5.19.0)' is required for the current version profile but is not installed. The add-on '{973a3934-1ec6-4770-83a4-59677803015a}(exactly 3.5.19.0)' is required for the current version profile but is not installed. It is recommended to terminate the application." Then the following message appears: "This package could not be installed: CODESYS Compatibility Package 3.5.17.20ā. After that the instalation continue and the folling message appears: "It is possible that packages from this path could not be installed: C:\Users...\Appdata\Local\Temp{EFE2F~1}\Packages"
Last updated: 2024-04-23
Post by jose-coro on Trouble installing codesys 64 3.5.19.0
CODESYS Forge
talk
(Post)
I tried to intalling codesys 64 3.5.19.0, during the installation process I get the following messages: "One or more problems have appeared with the current version profile. please consult with the supplier to solve the problem. -The plugin '{ee08241a-dd43-445a-b0a1-de9f717d92e0}(exactly 3.5.19.0)' is required for the current version profile but is not installed. The plug-in '{c7880c90-68c0-4cf8-a726-f0ee72b11f86}(exactly 3.5.19.0)' is required for the current version profile but is not installed. The add-on '{973a3934-1ec6-4770-83a4-59677803015a}(exactly 3.5.19.0)' is required for the current version profile but is not installed. It is recommended to terminate the application." Then the following message appears: "This package could not be installed: CODESYS Compatibility Package 3.5.17.20ā. After that the instalation continue and the folling message appears: "It is possible that packages from this path could not be installed: C:\Users...\Appdata\Local\Temp{EFE2F~1}\Packages"
Last updated: 2024-04-23
Post by tama00 on GPIOs not running with Raspberry Pi 4 (and SPI connection)
CODESYS Forge
talk
(Post)
Hello everyone, I have a working SPI connection (with transferExt) between a Raspberry master with Codesys and an ESP32 slave. I would also like to use a few GPIO pins. Is there a problem with using SPI AND GPIOs? Environment: Raspberry Pi 4+ with Raspian from Oct 23 Codesys V3.4 SP19 Patch 5 with Runtime Version 4.10.0.0 Device: GPIOs B+/Pi2 My problem: The status is displayed as āGPIOs : not runningā. And also during mapping the message āThe bus is not running. The values shown are perhaps not actualā. However, the variable changes that I make in my program are displayed under āCurrent Valueā. In the Logic Analyzer, the pin toggles during transmission with small intervals of +-4us (seems to be a cyclical disorder, but I don't know where exactly it could be coming from). This applies to pins that I actually use (output) but also to the other GPIOs (not used). With GPIO 4, the line remains permanently high. Attached is a screenshot from the Logic Analyzer. Channel 1,3,5 were GPIO pin 26, 22, 17 Would be very grateful for help. Best regards
Last updated: 2024-05-06
Post by caprez95 on Trace Restart Visuelement
CODESYS Forge
talk
(Post)
Hallo zusammen. Ich habe schon länger mit dem Problem zu kämpfen, dass ich einen Trend (Visuelement) nicht resetten (neustarten) kann. Ich habe es jetzt mit dem Beispiel hinbekommen, die Trace-Aufzeichnung über die CmpTraceMgr Bibliothek zu steuern. Aber wie bekomme ich diese Trace-Aufzeichnung in ein Visuelement? Der Code sieht wie folgt aus: // Configure trace IF xInit THEN // Create a trace packet PacketConfig.pszName := ADR('IECTraceConfiguration.Trace1'); // Name of trace PacketConfig.pszApplicationName := ADR('IECTraceConfiguration'); // Name of the application PacketConfig.pszIecTaskName := ADR('Task'); // Name of the task PacketConfig.pszComment := ADR('Demo packet'); PacketConfig.ulEveryNCycles := 1; PacketConfig.ulBufferEntries := 1000; PacketConfig.ulFlags := TRACE_PACKET_FLAGS.TRACE_PACKET_FLAGS_TIMESTAMP_MS AND TRACE_PACKET_FLAGS.TRACE_PACKET_FLAGS_AUTOSTART; IF (NOT fbTraceManager.CreatePacket(PacketConfig := PacketConfig, hPacket=>hPacket1)) THEN xError := TRUE; END_IF // Create a trace record RecordConfig.pszVariable := ADR('iSignal'); // This is the name of variable to record RecordConfig.tcClass := INT_TO_UDINT(TypeClass.TYPE_INT); // Type of the recording variable RecordConfig.ulSize := SIZEOF(iSignal); // Size of the recording variable pApp := AppFindApplicationByName('IECTraceConfiguration', 0); AppGetAreaOffsetByAddress(pApp, ADR(iSignal), ADR(RecordConfig.tvaAddress.taAddress.Area.usArea), ADR(RecordConfig.tvaAddress.taAddress.Area.ulOffset)); // Get and set area offsets RecordConfig.tvaAddress.ulAddressFlags := TRACE_VAR_ADDRESS_FLAGS_IEC OR TRACE_VAR_ADDRESS_FLAGS_AREA_OFFSET; RecordConfig.ulGraphColor := 16#FF00FF00; // green RecordConfig.ulGraphType := 1; // Line with points IF (NOT fbTraceManager.AddRecord(RecordConfig := RecordConfig, hPacket := hPacket1, hRecord => hRecord1)) THEN xError := TRUE; END_IF xInit := FALSE; END_IF // Starts the recording IF xStart THEN IF (NOT fbTraceManager.StartPacket(hPacket := hPacket1)) THEN xError := TRUE; END_IF xStart := FALSE; END_IF // Stop the recording IF xStop THEN IF (NOT fbTraceManager.StopPacket(hPacket := hPacket1)) THEN xError := TRUE; END_IF xStop := FALSE; END_IF // Reset the recording IF xReset THEN IF (NOT fbTraceManager.ResetPacket(hPacket := hPacket1)) THEN xError := TRUE; END_IF xReset := FALSE; END_IF
Last updated: 2024-06-04
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.