Post by arcadium on Library ENUM text representation in visualization
CODESYS Forge
talk
(Post)
Hello, Maybe someone could help with this. When I add ENUM to a text field I get the number instead of the text. For my own ENUM variable I have declared and enabled text list value is displayed as text, but I need enum text displayed from softMotion and other internal FB's. In the picture I have one of desired ENUM variable setup, but in the visu I have number, but in the watch window it's text. There is probably some checkbox to tick, but was looking for an hour, can't find a solution. Would apreciate some help
Last updated: 2024-12-24
Post by arcadium on Library ENUM text representation in visualization
CODESYS Forge
talk
(Post)
Hello, Maybe someone could help with this. When I add ENUM to a text field I get the number instead of the text. For my own ENUM variable I have declared and enabled text list value is displayed as text, but I need enum text displayed from softMotion and other internal FB's. In the picture I have one of desired ENUM variable setup, but in the visu I have number, but in the watch window it's text. There is probably some checkbox to tick, but was looking for an hour, can't find a solution. Would apreciate some help
Last updated: 2024-12-24
Post by hboertz on CamBuilder and first boundary position not zero
CODESYS Forge
talk
(Post)
Hi @niallel, it is currently not possible to create periodic cams using SMCB.BoundImplicit(). If you want to create a periodic cam which does not start/end with all slaves values equal to zero, then you must specify the boundary conditions explicitly using SMCB.Bound(). When you finished your cam, you can check via CamBuilder.CheckContinuity(), if the cam fulfills the continuity requirements for a periodic cam (see input isPeriodic). But you are right, it should be possible to create periodic cams using implicit boundary conditions. I have added the following Jira issue, so that this feature might be included in a future SoftMotion version: SM-5537: CamBuilder: It should be possible to create periodic cams using implicit boundaries I hope this answers your question. Best regards, Hendrik
Last updated: 2025-01-08
Post by trusty-squire on Read "Homed" status from EtherCAT drive
CODESYS Forge
talk
(Post)
@imdatatas, thanks for the info, I increased DSP402.uiHomingMinCycles to 10 and have a good feeling that will solve the issue of "false" homings. It's an intermittent issue so I'll report back once it's confirmed. @bruno-roth, also good info. According to my documentation, bit 14 is used to indicate the homed status. I did a test and the bit always stays true after it's been homed once (eg. even if I initiate a new homing procedure then hit the the e-stop mid homing), so I need to take that into consideration, but I can work with that. Thanks!
Last updated: 2025-01-09
Post by imdatatas on String length issue in GetRecipeNames method
CODESYS Forge
talk
(Post)
Hi, If the string length in the GetRecipeNames method is lower than the default value, there will be a problem with the resulting Recipe file names. For example; When the method in the link is called, let's say the defined string length is 19. In this case, the string content is corrupted as in the image. strArr: ARRAY[0..9] OF STRING(19); https://content.helpme-codesys.com/de/libs/Recipe%20Management/Current/pou-RecipeManCommands/GetRecipeNames.html The same problem does not occur when the string definition is made in the default size. strArr: ARRAY[0..9] OF STRING; FYI Regards, Imdat
Last updated: 2025-02-19
Post by imdatatas on String length issue in GetRecipeNames method
CODESYS Forge
talk
(Post)
Hi, If the string length in the GetRecipeNames method is lower than the default value, there will be a problem with the resulting Recipe file names. For example; When the method in the link is called, let's say the defined string length is 19. In this case, the string content is corrupted as in the image. strArr: ARRAY[0..9] OF STRING(19); https://content.helpme-codesys.com/de/libs/Recipe%20Management/Current/pou-RecipeManCommands/GetRecipeNames.html The same problem does not occur when the string definition is made in the default size. strArr: ARRAY[0..9] OF STRING; FYI Regards, Imdat
Last updated: 2025-02-19
Post by george32 on TCP Server
CODESYS Forge
talk
(Post)
Dear people, I would like to create a TCP server in my PLC program. The TCP server needs to communicate with an external device. I have been searching the internet and found that the libraries Syssocket or CAA NetBaseSrv are two possible solutions to create a TCP server. From what I have read, CAA NetBaseSrv is more user-friendly to implement than the Syssocket variant. However, I am still struggling to actually implement this library. Foremost is my little knowledge about creating a TCP server and how to read/understand each function block, especially the outputs of some blocks and the types, e.g. server has an output CAA.Handle, but I cannot find the explanation of CAA.Handle. I tried to find a good document that can help me understand how to implement a TCP server, but I could not find it. Thank you in advance, George
Last updated: 2025-02-20
Post by mkintegration on Reading Absolute Encoder Position From Yasakawa Drive
CODESYS Forge
talk
(Post)
I am looking to read in the absolute position of a yaskawa servo drive Sigma 7 that is using absolute encoder. It looks like yaskawa outputs this across there CN1 I/O connecter and during operation just outputs encoder pulses. But at boot up transmits the Multiturn data position and the Position within one rotation (pulse train) on two different wires. Once the drives are enabled it just uses incremental pulses. Does any one have experience with what IEC blocks to use to read this information in. I attached the Yaskawa Manual section that talks about the format.
Last updated: 2025-02-26
Post by mkintegration on Reading Absolute Encoder Position From Yasakawa Drive
CODESYS Forge
talk
(Post)
I am looking to read in the absolute position of a yaskawa servo drive Sigma 7 that is using absolute encoder. It looks like yaskawa outputs this across there CN1 I/O connecter and during operation just outputs encoder pulses. But at boot up transmits the Multiturn data position and the Position within one rotation (pulse train) on two different wires. Once the drives are enabled it just uses incremental pulses. Does any one have experience with what IEC blocks to use to read this information in. I attached the Yaskawa Manual section that talks about the format.
Last updated: 2025-02-26
Post by bingo on PLC Shell commands via ST Code
CODESYS Forge
talk
(Post)
Suppose you need to switch PLC IP dynamically between 192.168.1.10\192.168.2.10, First, set PLC IP to 192.16.1.10. Create a PGVL with a flag βxUseSecondryβ xUseSecondry : bool ; create a function that use socket to update IP: FUNCTION fSwitchIP : bool VAR_INPUT useMainIP:bool; END_VAR --------------------------------CODE------ if useMainIP then SysSockSetIPAddress(β0β, β192.168.1.10β); PGVL.xUseSecondry := 0; else SysSockSetIPAddress(β0β, β192.168.2.10β); PGVL.xUseSecondry := 1; end_if Now, if during execution, you need to switch IP, call the function βfSwitchIP()β, Set input to 1 for main IP, 0 for secondary IP. In order to set secondary IP at startup, you can do the following: in your PLC_PRG add a flag: xInit : bool := 1 ; and the code: if xInit then if PGVL.xUseSecondry then fSwitchIP(0); end_if xInit := 0 ; end_if *Alternative way is to use system events.
Last updated: 2025-03-03
Post by pernockham on Inheritence of struct,
CODESYS Forge
talk
(Post)
Apparently my construction will not work as any of the sub-types are not be able to accept any (further) value-initiation. Ie: string_item : log_data_base := (string_value := 'test', val_type := STRING_); is not eq to (the string_value will not be assigned): string_item_2 : log_data_string := (string_value := 'test'); Because effectively for the compiler this is eq. to a "double" assignment where the compiler sees only the first assignment (my guess). string_item_2 : log_data_base := (val_type := STRING_) := (string_value := 'test'); Im not sure this should be treated as a bug, but it would surely be nice to be able to use this construction (compiler is 3.5.20.40). Anyone see any other alternative for solution (other than 4 complete STRUCTS with all fields individually defined)?
Last updated: 2025-03-07
Post by atone on CAA File Handling: "Read only" error
CODESYS Forge
talk
(Post)
In case of error while opening the file to read you assume that the file doesn't exist and try to create one. But it could be that the SD card is not ready yet or simply not there. I would try to check first if the SD card is there and accessible. Otherwise with FILE.Create you could end up creating a new directory that is not mapped to the SD card. This would explain the errors even after a reboot, though it doesn't explain the READ_ONLY_CAA error I guess? I would use FILE.DirOpen and FILE.DirList to check if the SD card is there and ready.
Last updated: 2025-03-20
Post by spiessli on Objects in OPC UA Information Model
CODESYS Forge
talk
(Post)
Hi, I have an OPC UA information model with objects defined in it. I can import the model and use the data types defined in it and create instances of these types. These instances are accessible at Root > Objects > DeviceSet > CODE[...] > Resources > Application > GlobalVars > OPC_UA_Symbols for created instances and at [...] > Programs > PLC_PRG for mapped instances. The object defined in the information model is accessible in UA Expert by the name I have defined in the information model (Manipulator) at Root > Objects > Manipulator. How can I assign values to the Variables defined in the object "Manipulator"? Cheers, spiessli
Last updated: 2025-03-27
Post by ulvis on CFC Pages Cut&Paste is not working at its best
CODESYS Forge
talk
(Post)
In the CFC page oriendted editor, if I copy some elements consisting of an input connector, some connected logic and an output connector and then paste this on a another page then the pasted elements get inserted with an offset to the right so that the rightmost connector falls outside of the page, in the grey hatched area. So far so good. Then I mark all the elements and try to drag them into the correct placement, collectively. THIS IS NOT POSSIBLE! I only get the "forbidden" icon tooltip. One has to drag & drop the INDIVIDUAL elements to move the elements around. What am I doing wrong?
Last updated: 2025-05-15
Post by ulvis on CFC Pages Cut&Paste is not working at its best
CODESYS Forge
talk
(Post)
In the CFC page oriendted editor, if I copy some elements consisting of an input connector, some connected logic and an output connector and then paste this on a another page then the pasted elements get inserted with an offset to the right so that the rightmost connector falls outside of the page, in the grey hatched area. So far so good. Then I mark all the elements and try to drag them into the correct placement, collectively. THIS IS NOT POSSIBLE! I only get the "forbidden" icon tooltip. One has to drag & drop the INDIVIDUAL elements to move the elements around. What am I doing wrong?
Last updated: 2025-05-15
Post by ulvis on CFC Pages Cut&Paste is not working at its best
CODESYS Forge
talk
(Post)
In the CFC page oriendted editor, if I copy some elements consisting of an input connector, some connected logic and an output connector and then paste this on a another page then the pasted elements get inserted with an offset to the right so that the rightmost connector falls outside of the page, in the grey hatched area. So far so good. Then I mark all the elements and try to drag them into the correct placement, collectively. THIS IS NOT POSSIBLE! I only get the "forbidden" icon tooltip. One has to drag & drop the INDIVIDUAL elements to move the elements around. What am I doing wrong?
Last updated: 2025-05-15
Post by ulvis on CFC Cut & Paste not working at its best.
CODESYS Forge
talk
(Post)
In the CFC page oriendted editor, if I copy some elements consisting of an input connector, some connected logic and an output connector and then paste this on a another page then the pasted elements get inserted with an offset to the right so that the rightmost connector falls outside of the page, in the grey hatched area. So far so good. Then I mark all the elements and try to drag them into the correct placement, collectively. THIS IS NOT POSSIBLE! I only get the "forbidden" icon tooltip. One has to drag & drop the INDIVIDUAL elements to move the elements around. What am I doing wrong?
Last updated: 2025-05-15
Post by kareem-pt on Velocity is too low even though correct value is reported
CODESYS Forge
talk
(Post)
Hello, I'm playing around with a single axis. I've setup scaling and set the drive to move 360 degrees in the commissioning tab. The axis does move 360 degrees, but it moves much slower than the 360 degrees per second that I set for the velocity. It seems to be about 3 times slower (taking about 3 seconds instead of 1). This is despite the set and actual velocity both being displayed as 360. The acceleration, deceleration and jerk are all set to very high values. I'm just running this on my PC, using demo mode (no license purchased yet). I've attached a video showing the problem. Does anyone know what the problem could be? Thanks
Last updated: 2025-06-06
Post by viksym on How to get the motor scaling value from code
CODESYS Forge
talk
(Post)
Is there a way to see what value is set as the "Work travel distance per motor rotation" that is set in the Scaling menu of the axis ? I am working on my own homing function block for sensorless (hardstop) homing and I want to make it be universal between different axes with different motor's scaling for distance per rev so I need to know this value from the axis itself. I know I could do it by just creating an input variable for the function block but I'm leaving that option as a last resort.
Last updated: 2025-06-12
Post by viksym on How to get the motor scaling value from code
CODESYS Forge
talk
(Post)
If anybody finds this in the future, I managed to do it like this: scalingValue := EncoderPulseCountPerRev / ABS(AxisName.fScaleFactor); No need to use MC_ReadParameter as I am able to read this value directly from the axis object. Using an absolute value of the fScaleFactor is there in case the axis is set as inverted, in which case it would be a negative value. I was not able to figure out how to get EncoderPulseCountPerRev programatically, but since all my servos use an encoder with pulse count per revolution of 16#800000, the final equation looks like this: scalingValue := 16#800000 / ABS(AxisName.fScaleFactor);
Last updated: 2025-08-19
Post by pernockham on AC Persistence - values are not read from file during start?
CODESYS Forge
talk
(Post)
I swear I tested this like 20 times yesterday without success. Repeated it today and it works. Maybe the system needed a "real" power reboot? To note. To make a manual edit of a variable I tried some different approaches this is what worked for me. "system/online edited" gvl_var.example_variable REAL:F16#2FFB334H-4 767.7 "manually edited" (with runtime stopped followed by a "cold start" to read from file) gvl_var.example_variable REAL:790.1 (the system will use the manual value but will not set an equivalent "hex" value until next online edit/write cycle)
Last updated: 2025-09-03
Post by davidbo on All the things needed for anonymous login to OPC UA
CODESYS Forge
talk
(Post)
I thought I knew what I am doing, but something is missing what? From Device-Communication Settings select from drop down menu "Device" Select entry "Change Runtime Security Policy" Check the "Allow anonymous login" Select "Symbol Configuration" in your application In settings check "Support for OPC UA features" Check some of the values you want in your set Press the build button in the "Symbol Configuration" Press the button "Configure Symbol Rights" Make sure that Anonymous_OPCUAServer has access right to your "default set" From Device-Communication Settings select "Access Rights" in RemoteConnections-OPCUAServer Anonymous_OPCUAServer should be given modify and view rights I suppose. I can connect with UaExpert but I cannot see my Application or browse my values. What is missing?
Last updated: 2025-09-10
Post by reinier-geers on Web client
CODESYS Forge
talk
(Post)
Hi, ive got the webclient example. So now i want to use it. Ive got an example. but thats some JSON type. As far i know is JSONe som kind of structure. But thats new for me. I think its posible with get. Can someone help me? This is the link witch explains what to do https://reversed.notion.site/Marktprijzen-API-89ce600a88ac4abe8c2ad89d3167a83e i tried this : sURL : STRING(1024) := 'https://graphql.frankenergie.nl/get/ {"query":"query MarketPrices {\n marketPrices(date:\"2022-01-01\") {\n electricityPrices {\n from\n till\n marketPrice\n marketPriceTax\n sourcingMarkupPrice\n energyTaxPrice\n perUnit\n }\n gasPrices {\n from\n till\n marketPrice\n marketPriceTax\n sourcingMarkupPrice\n energyTaxPrice\n perUnit\n }\n }\n}\n"}'; // URL But thats a bad request
Last updated: 2025-10-08
Post by niloufar on Execution Order of Function Blocks
CODESYS Forge
talk
(Post)
Hi, Our program incorporates various function blocks and programs written in different languages such as St and SFC. They implement numerous actions and methods using different languages from their function blocks. My question is whether the execution order of function blocks is associated with the programming languages used. I understand that cycle time can be configured in the task configuration, but I'm curious if there is a specific sequence order of execution for function blocks written in different languages. For example, all function blocks in (ST) are executed first, followed by the execution of (SFC). Specifically, when the function is written in (ST) and the action is implemented in (SFC). I modified all function blocks in the main PLC program and configured a task configuration for the main program.
Last updated: 2023-12-13
Post by fajean on Issues with "Add all instance path"
CODESYS Forge
talk
(Post)
In the past, we have routinely used the "add all instance paths" function to automatically add variables to VAR_CONFIG lists. My recollection is that compiling a project did not require VAR_CONFIG to be fully populated, and, once successfully compiled, instance paths could be added. Errors related to missing declarations, if I recall correctly, were thrown when downloading to the PLC, they did not prevent a successful compile. At some point, it stopped working. Missing declarations in a VAR_CONFIG now cause a compile error, so the application is never "current", the only reason I can see being the missing VAR_CONFIG declarations themselves (no other error). We observe the same behavior across all our projects. This is really aggravating, and I must be missing something simple. We use 3.5 SP17p3, 64 bits. Can anyone help?
Last updated: 2023-12-29
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.