Post by macros8 on Alarm Management - latched variable represented as Text list
CODESYS Forge
talk
(Post)
Hi, I haven´t noticed you put the comment here. I thing it´s a bit different. What I want is to have detail errors of technology in data type e.g. INT. This variable I would latch to the corresponding error msg but I would like to get it convert to text from the text list and not keep it in INT form. Example. Main error Valve Error: SubErrors 1 - Both sensors 2 - Not retracted in time 3 - Not pulled out in time In HMI Main error + latch SubErrors => "Valve Error: Both sensors" The benefit is that text lists are part of translation and can be easily manipulated. I know I can create whole string msg in PLC but then, it lose advantage of Alarm management. Thanks. M.
Last updated: 2023-11-07
Post by ewi04 on Recipe Manager - RecipeManCommands, load & write wrong values, Bug?
CODESYS Forge
talk
(Post)
I'm getting closer to the error. The combination of STRUCT and ARRAY probably causes the strange behavior. As soon as the ARRAY is followed by a variable, the problem arises. Examples: X: ARRAY[1..2] OF INT; // okay Y: ARRAY[1..2] OF STRUCT; // problem Z: STRUCT; Z.ArrayOfInt[1]; // okay Z.ArrayOfStruct[1].Variable // problem // *update - array of array also causes the error A: ARRAY[1..2] OF ARRAY[1..4] OF BOOL; // problem I can't be the only one who has this problem. Or? Maybe there is a solution. Anyone? Or is it a bug after all?
Last updated: 2023-11-17
Post by dkugler on Toggling Visualizations using HMI Physical Buttons
CODESYS Forge
talk
(Post)
the magic option is named "Use CurrentVisu variable" activate this option in the Visualization Manager an have a look: https://help.codesys.com/webapp/_visu_obj_manager;product=core_visualization;version=3.5.14.0 if your button is pressed, "feed" the string varable VisuElems.CurrentVisu := 'visu1'; with the correct name of the depending visu. alternative: place a frame element at a empty main visu, konfigure all visus to be shown by this frame. With setting the switching variable of the frame to the index value of the depending visu, it will switch to it. Advantage: the visu names are not hardcoded as string in the ladder lodgic. Good luck! Hint: If you have multiple VisuClients(Target, WebVisu,...) all will show the same visu. Independent switching is much more difficult, but there is a example from codesys.
Last updated: 2024-02-13
Post by comingback4u on Memory Address Overlap
CODESYS Forge
talk
(Post)
Hello, We use a controller that comes with a bunch of predefined faults. These faults are considered active and historic. They are a 32 byte array but only take up 26 bytes of data. Because of this the historic faults start at address 26 instead of 31. Active faults variable take up address location 0 to 31. Historic faults variable take up address location 26 to 57. Because of this overlap I get an error that these overlap and it wont allow me to download to my controller. This isn't an issue in 3.5.5.4 but becomes an issue in newer version. Is there a way to turn this off? If I change the address location, the historic faults then become broken without doing some manipulation in the code. The software will build just fine. Thank you for your time.
Last updated: 2024-03-07
Post by mani-i4point0 on Issue with WebVisu on Raspberry PI
CODESYS Forge
talk
(Post)
Hi, I am running Codesys Runtime by purchasing 'Codesys control for raspberry pi MC SL', I am trying to use the Variables from my GVL's. Few of the variables used as a Pushbutton form the Visualization. These 'BOOL' Variable getting unlatched automatically even though there is no write function in the Overall project. All of them are 'Read' functions, at the same time few other BOOL variable behaviors are seems to be fine. I have tried, clean all and download, serval time restarted the hardware. Happy to share any any information. Your input to resolve this issue would be highly appriciated. Version Details: codesyscontrol 4.8.0.0, armhf codesyscontrol based on SDK 3.5.19.0
Last updated: 2024-03-20
Post by fless on Warning C0564 when compiling CNC project with variables program
CODESYS Forge
talk
(Post)
Hello, we are porting a CNC project from codesys 3.5.16 to codesys 3.5.19. The project has lots of CNC programs with variables. now we get hundreds of messages like this. [WARNING] CNC Test SP19: TestCNC SPS: PLC Logic: Application: C0564: A reference to uninitialized variable varCNC is used for initialization of TestCNC_D. Accessing the uninitialized variable may result in unexpected behavior. The objects program_name_D are implicit generated by codesys. I see no way to generated them after the variables. Is there a way to correct the initialization order? We know how to suppress this warning. But we need a clean solution as the warning already saved us in a other nonCNC project. Attached a small demo of the problem.
Last updated: 2024-03-21
Post by paulpotat on Exclude traces when searching with ctrl+F
CODESYS Forge
talk
(Post)
Hello, I was wondering if there is a way in codesys to exclude the traces from the search when using the "ctrl+F" window ? That would be nice to improve the search functionnality when looking for a specific variable. Sometimes when I iterate through all occurences with the "find next" button, it opens the trace configuration window. I would expect to be able to close it and go to the next occurence with the "find next" button, but after closing the trace configuration window the search says it has reached the end of the scope (even if in reality there are other occurences of the variable elsewhere). I tried to enable / disable the "search up" checkbox but it's not changing anything. I hope somebody have insight on this, BR
Last updated: 2024-08-06
Post by timvh on FB string and naming
CODESYS Forge
talk
(Post)
I see, you want to initialize the FB. To be able to initialise it like you described, you need to add the FB_Init method to your FB. (right click on the FB, select add object --> method). Then press the arrow down, to select the FB_Init (overwrite default implementation). In the VAR_INPUT section of this method, add the variable --> Tag : STRING; Then in the code section of this method add: THIS^.Tag := Tag; // copy initial value to local variable in FB Search Google if you want to know more about FB_Init. PS, reflection + instance path, is also an option if you want to get the full name of the instance (path) of the Function Block. See: https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_pragma_attribute_instance_path.html
Last updated: 2024-09-30
Post by struccc on HTML5 Controls - string(>80) values
CODESYS Forge
talk
(Post)
Dear all, does anyone have experience with HTML5 controls recently? CODESYS 3.5.20.30 / Visualization 4.6.0.0 I'd like to create a simple lightweight text editor, with proper multiline handling, cut & paste, scrolling, etc. And it seems to work fine, just have problems with strings longer than 80 bytes.... Declaring a variable sText1 : STRING(8000) and referencing it in the HTML5 Controls corresponding value property works perfectly one way: the code receive the data as a string (See log1)... (Note TypeID 1000...) Also sending back the data (seems to work (See log2) except it doesn't change the value of the bound variable. Probably the issue is with using SendSimpleValue method... Naturally, I could do a workaround, but maybe there is a more standard way to implement this... Please let me know if you have any suggestions.
Last updated: 2024-10-23
Post by snhatton on Alarm Management - latched variable represented as Text list
CODESYS Forge
talk
(Post)
Hi There, For my understanding: are you trying to display the contents of a text list in an alarm message based on the id? For example, you could maintain a text list of common alarm messages, and then display based on which message is true?
Last updated: 2023-09-18
Post by manuknecht on Opening a Dialog on a specific Client from ST
CODESYS Forge
talk
(Post)
I managed to find a solution that seems to work reliably. As the VU.Globals.CurrentClient-filter accesses the CURRENTCLIENTID or at least a similar, internal variable it can only be used if called from a certain client (e.g. from a button in a visualization). My solution works by implementing a new client filter that compares the client ID of all clients to the ID of the last client that was used. The variable containing the data of the last client is defined as: G_LastClient : VU.IVisualizationClient; // Copy of last client that detected click This last client is then updated every time a button is pressed using the Execute ST-Code input configuration of the button: G_LastClient := VU.PublicVariables.Clients.Current; Next, I created a function block that implements the client filter interface as so: FUNCTION_BLOCK FB_LastClientFilter IMPLEMENTS VU.IVisualizationClientFilter VAR_INPUT END_VAR VAR_OUTPUT END_VAR VAR END_VAR Then i added a method to the FB called IsAccepted which is used to filter out the client. When creating the method, it should automatically be filled with the according variable declaration, as it is defined in the interface: (* For every client can be desided, if it is accepted. ``TRUE``: Client is accepted*) METHOD IsAccepted : BOOL VAR_INPUT (* The client, to check*) itfClient : VU.IVisualizationClient; END_VAR Now the client can be compared to the last used client as such: // check if clientID corresponds to clientID of last recorderd client IF itfCLient.ClientId = G_LastClient.ClientId THEN IsAccepted := TRUE; ELSE IsAccepted := FALSE; END_IF To make use of this custom client filter, initialize a variable with the client filter: LastClient : FB_LastClientFilter; // Client filter to find last used client Then use this client filter when opening or closing a dialog from ST: fbOpenMyDialog(itfClientFilter:=LastClient,xExecute:=TRUE,sDialogName:='VIS_MyDialog_DLG');
Last updated: 2023-09-27
Post by manuknecht on Specify Input Configuration "OnDialogClosed" Action to only react to certain Dialogs
CODESYS Forge
talk
(Post)
Thanks for your responses. The close listener sounds like an interesting approach, will have to see what I can do with it. I actually solved it as suggested by sturmghost by setting an enum variable to a certain state as soon as I open a dialog. This way I always know which dialog was opened last.
Last updated: 2023-10-02
Post by leon78 on Codesys 3.5 SP17 Patch 2 CheckBounds (POUs for Implicit Checks)
CODESYS Forge
talk
(Post)
Hello! I use CheckBounds (POUs for Implicit Checks). But I have a problem. I use an array as an VAR_IN_OUT of Function Block. If I try to monitor the array of variable length ([* ]), its does't work. The CheckBounds POU isn't called. If I use the array of fixed lenght ([lower..upper]), the CheckBounds POU is called. Why?
Last updated: 2023-11-14
Post by leon78 on Codesys 3.5 SP17 Patch 2 CheckBounds (POUs for Implicit Checks)
CODESYS Forge
talk
(Post)
Hello! I use CheckBounds (POUs for Implicit Checks). But I have a problem. I use an array as an VAR_IN_OUT of Function Block. If I try to monitor the array of variable length ([* ]), its does't work. The CheckBounds POU isn't called. If I use the array of fixed lenght ([lower..upper]), the CheckBounds POU is called. Why?
Last updated: 2023-11-14
Post by ewi04 on Recipe Manager - RecipeManCommands, load & write wrong values, Bug?
CODESYS Forge
talk
(Post)
The individual structures were declared in a separate global variable list on a trial basis. But even this did not change the behavior. A total of 1667 variables are processed in a recipe. A reduction (e.g. saving only the first three drive parameter sets) also brought no change.
Last updated: 2023-11-15
Post by scarter on Bit / Bool data types in function parameters
CODESYS Forge
talk
(Post)
Any reason BIT and BOOL data types are not interchangeable? Trying to make a function which takes a BOOL IN/OUT parameter (Not allowed to use BIT) In the main logic if I make a DINT variable, and want to use each bit on different functions CODESYS will not allow it.
Last updated: 2024-01-17
Post by gurkan on OPCUA array max length?
CODESYS Forge
talk
(Post)
We are using codesys 3.5.16.30 and we have a array with strings of length 5000. We are having issues subscribing to this variable from an OPCUA client. Is there any limit in the OPCUA Server in codesys for how long an array can be on the opcua server?
Last updated: 2024-02-16
Post by evanclegg on Digital Clock
CODESYS Forge
talk
(Post)
To display the current time, you’ll need to retrieve it from the system clock. In CODESYS, you can use the built-in function SysTime to get the current system time. Here’s an example of how you can use it: VAR dtCurrentTime: DATE_AND_TIME; sTime: STRING(8); END_VAR dtCurrentTime := SysTime(); sTime := TIME_TO_STRING(dtCurrentTime.t); The sTime variable now contains the current time in the format “HH:MM:SSuno online".
Last updated: 2024-02-28
Post by jinlee on V3.5 SP19 patch 2. Out of retain memory
CODESYS Forge
talk
(Post)
Hi guys, I am quite new Codesys. Be patient to me. I am having a problem now. Please refer to the attached photo. Is there a way to increase the memory ? If no, what is the way to solve this problem ? My retain variable list is in one place. Please refer to the attached photo. Thank you very much.
Last updated: 2024-03-20
Post by struccc on Release SP20 - Changes in behaviour?
CODESYS Forge
talk
(Post)
Wow.... I missed this one in the manual - so there is a special syntax to invalidate a reference... Great :) Seems to work. (it's just mentionned in the examples line)... I've always assigned 0 to the variable, with := 0 - like setting a pointer to 0. In theory, that should work as well. Thanks!
Last updated: 2024-03-25
Post by k2saki on Automatic TOOL Length Measurement like Typical CNC Machine.
CODESYS Forge
talk
(Post)
I'd like to measure tool length using SW. How do I set variable from the accurate drive position when switch turn ON/OFF? Hopefully, I'd like to measure Z-Pos with M-Function in G-Code automatically, And I'd like to set it to G43 as tool length correction.
Last updated: 2024-05-09
Post by rajesh008 on i can't declear the address in GVL - codesys SP19 Patch5
CODESYS Forge
talk
(Post)
The “_AB AT %IW0:word; ” if i called the value then im getting this error. like below "the declartion of the variable with an address assignment cannot be used in a PRG or GVL with the attribute 'subsequent'" This is happening when the GVL is selected in Redundancy Configuration. if i un-select the address declaration is working fine
Last updated: 2024-05-13
Post by siscu on Raspberry Pi: List of available example applications
CODESYS Forge
talk
(Post)
Could this be turned into a library? I'd love for a way to have the main program call a function block method using the program's I2C_master device. I assume I should be passing the master as a variable for the function block, but I don't see how that could be achieved
Last updated: 2024-05-15
Post by talhaali on Active alarm access in ST
CODESYS Forge
talk
(Post)
Hi, I am trying to access active alarms in code(As alarm count variable updates only when we go to to alarm table frame in visualization). I wrote following code but it is not working: VAR iCountActiveAlarms : INT; parritfActiveAlarms : POINTER TO ARRAY[0..0] OF IAlarm; itfAlarmManagerClientAll : IAlarmManagerClient; END_VAR AlarmManager.g_AlarmHandler.GetActiveAlarms( itfAlarmManagerClient :=itfAlarmManagerClientAll, iCountActiveAlarms => iCountActiveAlarms, parritfActiveAlarms => parritfActiveAlarms); The Value is always 0. Please help.
Last updated: 2024-06-06
Post by talhaali on Can't read Alarm Class from Alarm Storage
CODESYS Forge
talk
(Post)
Hi, I am trying to access active alarms in code(As alarm count variable updates only when we go to to alarm table frame in visualization). I wrote following code but it is not working: VAR iCountActiveAlarms : INT; parritfActiveAlarms : POINTER TO ARRAY[0..0] OF IAlarm; itfAlarmManagerClientAll : IAlarmManagerClient; END_VAR AlarmManager.g_AlarmHandler.GetActiveAlarms( itfAlarmManagerClient :=itfAlarmManagerClientAll, iCountActiveAlarms => iCountActiveAlarms, parritfActiveAlarms => parritfActiveAlarms); The Value is always 0. Please help.
Last updated: 2024-06-06
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
.