Ja, schick mal dein Beispiel.
This is still a huge problem. Does someone know how to update the frame references (not manually for every frame-element...)?
This is still a huge problem. Does someone know how to update the frame references?
Im wondering how Codesys is doing the mouse event capturing with their visualization button element? If you add such a button without configuring any input configuration event (like OnMouseDown) or button state variable and then click on the button, the button changes to the visual pressed state and back if you release the button (so they must react to an OnMouseDown event). But how? If I try to mimic this behavior with my custom button visualization element (like a basic rectangle) I need to use...
Im wondering how Codesys is doing the mouse event capturing with their visualization button element? If you add such a button without configuring any input configuration event (like OnMouseDown) or button state variable and then click on the button, the button changes to the visual pressed state and back if you release the button (so they must react to an OnMouseDown event). But how? If I try to mimic this behavior with my custom button visualization element (like a basic rectangle) I need to use...
Not sure what you mean but you can define a visu initialization program and call it once at the visu initialization step. Look in the Visualization Manager there is a possibility to define such a program.
Did you found a solution?
I found a way to do it: You can use, for example, the text variable property of any visualization element and call a function in it. Example: Write a test POU as a function (FUN), like MyTestFun which need a boolean Variable as an input value. Now write into the text variable property: MyTestFun(bBooleanValue) Thats it. The function is called at each visu_task cycle.
I found out that the Codesys simulation mode is not good to measure performance. As soon as I upload the code onto the hardware PLC I can see that my visu-task needs around 60 ms to complete. I'm wondering if there is a possibility to find out which visualization/visualization element takes a lot of computing time? Then I would look for ways to decrease the long computing time.
I found out that the Codesys simulation mode is not good to measure performance. As soon as I upload the code onto the hardware PLC I can see that my visu-task needs around 60 ms to complete. I'm wondering if there is a possibility to find out which visualization/visualization element takes a lot of computing time?
Im looking for a way to implement ST-code into the visualization element without creating a helper POU or method in my device/application tree. Like visualization properties are evaluated at each VISU_TASK cycle I want to be able to create own ST code which interacts with the visualization interface variables. To be more specific I want to have a property which executes user defined ST-code at each VISU_TASK cycle exactly like its already possible for Input Configuration on various mouse and dialog...
You could work around this problem by implementing some sort of "state machine". Each dialog sets a boolean variable when they are closed so you know which dialog was closed. Then you can react to this accordingly.
You could work around this problem by implementing some sort of "state machine". Each dialog sets a boolean variable so you know which dialog was closed. Then you can react to this accordingly.
I'm looking for a smart and short way to implement initialization of visualization variables depending on the visualization input. For an easy example consider a rectangle which rests at XPos := 0 when the input state is false and at XPos := 50 when the input state is true. My visualization variables look like this: VAR_IN_OUT State : BOOL; END_VAR VAR XPos : INT; END_VAR I put this rectangle via a visualization frame element into another visualization and link a frame reference variable with the...
I'm looking for a smart and short way to implement initialization of visualization variables depending on the visualization input. For an easy example consider a rectangle which rests at XPos := 0 when the input state is false and at XPos := 50 when the input stat is true. My visualization variables look like this: VAR_IN_OUT State : BOOL; END_VAR VAR XPos : INT; END_VAR I put this rectangle via a visualization frame element into another visualization and link a frame reference variable with the...
With 5) you mean using the I/O mapping tab and mapping the full path name to a hardware channel/address? Im doing this right now but using the AT command for mapping the full Input or Output module, not just a single channel. So I have an IO Struct, which contains for example Value : Bool Unit : String(80); And another struct for the module, with: Channel : Array[0..13] Of IO_DUT Input At %IW0 : Word; Im instancing the module struct as a Var_in_out in a program. Then I convert the word into single...
With 5) you mean using the I/O mapping tab and mapping the full path name to a hardware channel/address? Im doing this right now but using the AT command for mapping the full Input or Output module, not just a single channel. So I habe an IO Struct, which contains for example Value : Bool Unit : String(80); And another struct for the module, with: Channel : Array[0..13] Of IO_DUT Input At %IW0 : Word; Im instancing the module struct as a Var_in_out in a program. With that I didn't touched the I/O...
@h-hermsen Thank you for your detailed answer. I'm fully aware about the full path mapping capabilities but as I read your text I thought you mean a different technique. So 1) is clear to me. 2) Can you show me a short example of this IO struct DUT type? 3) An example would be great. Unfortunately our IDE incorporates Codesys 3.5.16.x, so thats a topic for the next update but is nice to know anyway.
I miss the part where you send out the infromations to the physical I/O where and how this is done?
Well I don't want to hardcode them. Thats the whole point of my question...
Well, I know how to instantiate a FB. This wasn't my question. I'm questioning a way of mapping my hardware I/O to project variables without violating the "heart" of OOP (hardcode the addressee into the FB).
Im trying to find my way to map hardware I/O with object oriented programming (OOP) in mind. I found several approaches and discussions about this topic but all what I found lacks a clear example - or at least an example I understand. :-) Discussions 1: https://forge.codesys.com/forge/talk/Engineering/thread/49f235f440/ 2: https://stackoverflow.com/questions/67434017/best-variable-structure-for-initialization-of-several-motors-in-codesys Codesys OOP talks on YouTube (exzellent talks and information,...