Activity for alexgooi

  • alexgooi alexgooi posted a comment on discussion Engineering πŸ‡¬πŸ‡§

    Dear Forum, We are currently making the switch from OPC-DA (Codesys server) to OPC-UA (Running on a Codesys controller). We are using Codesys version 3.5 SP 20. Our Scada system is expecting Boolean's to be represented as a 0/1 (True Boolean) but the OPC-UA server is representing a boolean as False/True This indeed matches the OPC-UA standard, but is there a way to configure the OPC-UA server's boolean representation? Thank you in advance

  • alexgooi alexgooi posted a comment on discussion Engineering πŸ‡¬πŸ‡§

    Hi Paro, I have tried this and it seemed to have solved the problem, thank you very much!

  • alexgooi alexgooi modified a comment on discussion Engineering πŸ‡¬πŸ‡§

    Dear Forum, I currently have a challenge. I have a library with some communication classes. These communication classes need to be linked to an interface like this: Devices_and_controllers.Comm_Frame.Modbus_GVL_Link.KNX_TCP[Interface_Index] := THIS^; This is executed via a FB_Init() method. When I try to do this in a program this works fine. But when I declare the FB_Init() in the library the FB_Init() method is being called but the link is not made (interface still has the value 0000000000). The...

  • alexgooi alexgooi posted a comment on discussion Engineering πŸ‡¬πŸ‡§

    Dear Forum, I currently have a challenge. I have a library with some communication classes. These communication classes need to be linked to an interface like this: Devices_and_controllers.Comm_Frame.Modbus_GVL_Link.KNX_TCP[Interface_Index] := THIS^; This is executed via a FB_Init() method. When I try to do this in a program this works fine. But when I declare the FB_Init() in the library the FB_Init() method is being called but the link is not made (interface still has the value 0000000000). The...

  • alexgooi alexgooi modified a comment on discussion Engineering πŸ‡¬πŸ‡§

    The way I usally tackle this is by syncing only words (then you are able to use the FB above). If you then want to write a Boolean simply type it like this. Value[1].0 := Bool1; Value[1].1 := Bool2; Value[1].2 := Bool3; Uints have the same number of bits than a INT/WORD so these ones will work as well (they are only represented diffrently). A Real will work but you will loose some infomration in the conversion. If you want to keep the information you can convert 2 words to a float with a function...

  • alexgooi alexgooi modified a comment on discussion Engineering πŸ‡¬πŸ‡§

    The way I usally tackle this is by syncing only words (then you are able to use the FB above). If you then want to write a Boolean simply type it like this. Value[i].0 := Bool1; Value[i].1 := Bool2; Value[i].2 := Bool3; Uints have the same number of bits than a INT/WORD so these ones will work as well (they are only represented diffrently). A Real will work but you will loose some infomration in the conversion. If you want to keep the information you can convert 2 words to a float with a function...

  • alexgooi alexgooi posted a comment on discussion Engineering πŸ‡¬πŸ‡§

    The way I usally tackle this is by syncing only words (then you are able to use the FB above). If you then want to write a Boolean simply type it like this. Value[i].0 := Bool1 Value[i].1 := Bool2 Value[i].2 := Bool3 Uints have the same number of bits than a INT/WORD so these ones will work as well (they are only represented diffrently). A Real will work but you will loose some infomration in the conversion. If you want to keep the information you can convert 2 words to a float with a function (for...

  • alexgooi alexgooi modified a comment on discussion Engineering πŸ‡¬πŸ‡§

    Hi Duvan, You could make this in 1 single object (FB), Indeed don't use a function for this beacuse you need some memory to keep the old value. For i := 0 TO 200 BY 1 DO //Check if the value has been changed IF Old_Value[i] <> Value[i] THEN //Set the trigger to TRUE Trigger[i] := TRUE; Old_Value[i] := Value[i]; END_IF END_FOR If you define the Value array as an In_Out and the Trigger as an In_Out you arn't claiming any aditional memory to your system. You ofcourse then need to add some code arround...

  • alexgooi alexgooi posted a comment on discussion Engineering πŸ‡¬πŸ‡§

    Hi Duvan, You could make this in 1 single object (FB), Indeed don't use a function for this beacuse you need some memory to keep the old value. For i := 0 TO 200 BY 1 DO //Check if the value has been changed IF Old_Value[i] <> Value[i] THEN //Set the trigger to TRUE Trigger[i] := TRUE; Old_Value[i] := Value[i]; END_IF END_FOR If you define the Value array as an In_Out and the Trigger as an In_Out you arn't claiming any aditional memory to your system. You ofcourse then need to add some code arround...

  • alexgooi alexgooi modified a comment on discussion Engineering πŸ‡¬πŸ‡§

    Dear forum, I currently have a big question mark above my head, and maybe this forum can shine some light on the situation. I recently updated to Codesys 3.15 SP19 Patch 6. And now I’m trying to setup the OPC-UA server, besides that I’m trying to connect to the controller with the Codesys V3 (Ethernet) protocol. OPC-UA I have installed the correct licenses on my controller (Runtime and communication). I’m able to connect to the controller with an OPC-UA client, and I’m able to browse the tags, so...

  • alexgooi alexgooi posted a comment on discussion Engineering πŸ‡¬πŸ‡§

    Dear forum, I currently have a big question mark above my head, and maybe this forum can shine some light on the situation. I recently updated to Codesys 3.15 SP19 Patch 6. And now I’m trying to setup the OPC-UA server, besides that I’m trying to connect to the controller with the Codesys V3 (Ethernet) protocol. OPC-UA I have installed the correct licenses on my controller (Runtime and communication. I’m able to connect to the controller with an OPC-UA client, and I’m able to browse the tags, so...

  • alexgooi alexgooi modified a comment on discussion Engineering πŸ‡¬πŸ‡§

    Dear Forum, I recently updated to the newest Codesys IDE (3.5 SP19 patch 5) The program wouldn't download cause of the amount of OPC-UA server tags (see picture) I'm not planning on using the OPC-UA server and therefore I unchecked the "Support OPC-UA features" checkbox in the symbol configuration. But this didn’t solve the issue of the OPC-UA server exceeding its license. How can I disable the OPC-UA server while still maintaining the symbol configuration. Thank you in advance Alex

  • alexgooi alexgooi modified a comment on discussion Engineering πŸ‡¬πŸ‡§

    Dear Forum, I recently updated to the newest Codesys IDE (3.5 SP19 patch 5) The program wouldn't download cause of the amount of OPC-UA server tags (see picture) I'm not planning on using the OPC-UA server and therefore I unchecked the "Support OPC-UA features" checkbox in the symbol configuration. But this didn’t solve the issue of the OPC-UA server exceeding its license. How can I disable the OPC-UA server while still maintaining the symbol configuration. Thank you in advance Alex

  • alexgooi alexgooi modified a comment on discussion Engineering πŸ‡¬πŸ‡§

    Dear Forum, I recently updated to the newest Codesys IDE (3.5 SP19 patch 5) The program wouldn't download cause of the amount of OPC-UA server tags (see picture) I'm not planning on using the OPC-UA server and therefore I unchecked the "Support OPC-UA features" checkbox in the symbol configuration. But this didn’t solve the issue of the OPC-UA server exceeding its license. How can I disable the OPC-UA server while still maintaining the symbol configuration. Thank you in advance Alex

  • alexgooi alexgooi modified a comment on discussion Engineering πŸ‡¬πŸ‡§

    Dear Forum, I recently updated to the newest Codesys IDE (3.5 SP19 patch 5) The program wouldn't download cause of the amount of OPC-UA server tags (see picture) I'm not planning on using the OPC-UA server and therefore I unchecked the "Support OPC-UA features" checkbox in the symbol configuration. But this didn’t solve the issue of the OPC-UA server exceeding its license. How can I disable the OPC-UA server while still maintaining the symbol configuration. Thank you in advance Alex

  • alexgooi alexgooi modified a comment on discussion Engineering πŸ‡¬πŸ‡§

    Dear Forum, I recently updated to the newest Codesys IDE (3.5 SP19 patch 5) The program wouldn't download cause of the amount of OPC-UA server tags (see picture) I'm not planning on using the OPC-UA server and therefore I unchecked the "Support OPC-UA features" checkbox in the symbol configuration. But this didn’t solve the issue of the OPC-UA server exceeding its license. How can I disable the OPC-UA server while still maintaining the symbol configuration. Thank you in advance Alex

  • alexgooi alexgooi posted a comment on discussion Engineering πŸ‡¬πŸ‡§

    Dear Forum, I recently updated to the newest Codesys IDE (3.5 SP19 patch 5) The program wouldn't download cause of the amount of OPC-UA server tags (see picture) I'm not planning on using the OPC-UA server and therefore I unchecked the "Support OPC-UA features" checkbox in the symbol configuration. But this didn’t solve the issue of the OPC-UA server exceeding its license. How can I disable the OPC-UA server while still maintaining the symbol configuration. Thank you in advance Alex

  • alexgooi alexgooi posted a comment on discussion Engineering πŸ‡¬πŸ‡§

    Dear Forum, I would like to initialize an array input on a method. When I do this, I get the following error: "The type of ARRAY [1..2] OF BOOL cannot have a default value in this context." I attached a picture for more clarity. Is this simply not possible or is there a different way of tackling this problem? Thank you in advance

  • alexgooi alexgooi posted a comment on discussion Engineering πŸ‡¬πŸ‡§

    Dear Forum, We are currently switching to a native Codesys controller, and I'm currently trying to determine the correct license. I have a question regarding the Modbus instances. With the Standard S license this is set to 4 (See picture). In our projects we are using a lot of communications to Modbus servers using a Codesys Controller, for this communication I'm using the ModbusFB library (supplied by 3S) (see picture). In my project I would like to use more than 4 instances of the ClientTCP FB....

  • alexgooi alexgooi modified a comment on discussion Engineering πŸ‡¬πŸ‡§

    Hi Jack, I think you have to look at a FB in a different way. A Function block (Class) can contain its own data. In other words don't define loose data in your GVL, but define a instance of a FB (Object) in your GVL: Example: Function_Block Basic_Class VAR_INPUT Open_Command: BOOL; END_VAR VAR_OUTPUT Opened: BOOL; END_VAR if Open_Command then Opened := TRUE; ELSE Opened := FALSE; END_IF Global Variables Objects: ARRAY[1..100] OF Basic_Class; //Here you ar defining you objects END_VAR In your code...

  • alexgooi alexgooi modified a comment on discussion Engineering πŸ‡¬πŸ‡§

    Hi Jack, I think you have to look at a FB in a different way. A Function block (Class) can contain its own data. In other words don't define loose data in your GVL, but define a instance of a FB (Object) in your GVL: Example: Function_Block Basic_Class VAR_INPUT Open_Command: BOOL;//Data that was previously in the GVL END_VAR VAR_OUTPUT Opened: BOOL;//Data that was previously in the GVL END_VAR if Open_Command then Opened := TRUE; ELSE Opened := FALSE; END_IF Global Variables Objects: ARRAY[1..100]...

  • alexgooi alexgooi modified a comment on discussion Engineering πŸ‡¬πŸ‡§

    Hi Jack, I think you have to look at a FB in a different way. A Function block (Class) can contain its own data. In other words don't define loose data in your GVL, but define a instance of a FB (Object) in your GVL: Example: Function_Block Basic_Class VAR_INPUT Open_Command: BOOL;//Data that was previously in the GVL END_VAR VAR_OUTPUT Opened: BOOL;//Data that was previously in the GVL END_VAR if Open_Command then Opened := TRUE; ELSE Opened := FALSE; END_IF Global Variables Objects: ARRAY[1..100]...

  • alexgooi alexgooi modified a comment on discussion Engineering πŸ‡¬πŸ‡§

    Hi Jack, I think you have to look at a FB in a different way. A Function block (Class) can contain its own data. In other words don't define loose data in your GVL, but define a instance of a FB (Object) in your GVL: Example: Function_Block Basic_Class VAR_INPUT Open_Command: BOOL;//Data that was previously in the GVL END_VAR VAR_OUTPUT Opened: BOOL;//Data that was previously in the GVL END_VAR if Open_Command then Opened := TRUE; ELSE Opened := FALSE; END_IF Global Variables Objects: ARRAY[1..100]...

  • alexgooi alexgooi modified a comment on discussion Engineering πŸ‡¬πŸ‡§

    Hi Jack, I think you have to look at a FB in a different way. A Function block (Class) can contain its own data. In other words don't define loose data in your GVL, but define a instance of a FB (Object) in your GVL: Example: Function_Block Basic_Class VAR_INPUT Open_Command: BOOL;//Data that was previously in the GVL END_VAR VAR_OUTPUT Opened : BOOL;//Data that was previously in the GVL END_VAR if Open_Command then Opened := TRUE ELSE Opened := FALSE END_IF Global Variables Objects: ARRAY[1..100]...

  • alexgooi alexgooi modified a comment on discussion Engineering πŸ‡¬πŸ‡§

    Hi Jack, I think you have to look at a FB in a different way. A Function block (Class) can contain its own data. In other words don't define loose data in your GVL, but define a instance of a FB (Object) in your GVL: Example: Function_Block Basic_Class VAR_INPUT Open_Command: BOOL;//Data that was previously in the GVL END_VAR VAR_OUTPUT Opened : BOOL;//Data that was previously in the GVL END_VAR if Open_Command then Opened := TRUE ELSE Opened := FALSE END_IF Global Variables Objects: ARRAY[1..100]...

  • alexgooi alexgooi modified a comment on discussion Engineering πŸ‡¬πŸ‡§

    Hi Jack, I think you have to look at a FB in a different way. A Function block (Class) can contain its own data. In other words don't define loose data in your GVL, but define a instance of a FB (Object) in your GVL: Example: Function Block Basic_Class VAR_INPUT Open_Command: BOOL;//Data that was previously in the GVL END_VAR VAR_OUTPUT Opened : BOOL;//Data that was previously in the GVL END_VAR if Open_Command then Opened := TRUE ELSE Opened := FALSE END_IF Global Variables Objects: ARRAY[1..100]...

  • alexgooi alexgooi modified a comment on discussion Engineering πŸ‡¬πŸ‡§

    Hi Jack, I think you have to look at a FB in a different way. A Function block (Class) can contain its own data. In other words don't define loose data in your GVL, but define a instance of a FB (Object) in your GVL: Example: Function Block Basic_Class VAR_INPUT Open_Command: BOOL;//Data that was previously defined in the GVL END_VAR VAR_OUTPUT Opened : BOOL;//Data that was previously defined in the GVL END_VAR if Open_Command then Opened := TRUE ELSE Opened := FALSE END_IF Global Variables Objects:...

  • alexgooi alexgooi posted a comment on discussion Engineering πŸ‡¬πŸ‡§

    Hi Jack, I think you have to look at a FB in a different way. A Function block (Class) can contain its own data. In other words don't define loose data in your GVL, but define a instance of a FB (Object) in your GVL: Example: Function Block Basic_Class var input Open_Command: BOOL;//Data that was previously defined in the GVL END_VAR Var output Opened : BOOL;//Data that was previously defined in the GVL END_VAR if Open_Command then Opened := TRUE ELSE Opened := FALSE END_IF Global Variables Objects:...

  • alexgooi alexgooi modified a comment on discussion Engineering πŸ‡¬πŸ‡§

    Hi DavidBo, In general Codesys is used to control equipment and an exception is the worst thing that can happen in your installation. If you cannot prevent the exception from triggering, you could implement a Try catch statement, with this solution your controller keeps on running and you are able to handle the exception. __TRY //This statement will trigger an exception Result := 4/0; __CATCH(exc) //Handle the exception HandleException(exc, strExceptionText => strExceptionText); // From the Codesys...

  • alexgooi alexgooi posted a comment on discussion Engineering πŸ‡¬πŸ‡§

    Hi DavidBo, In general Codesys is used to control equipment and an exception is the worst thing that can happen in your installation. If you cannot prevent the exception from triggering, you could implement a Try catch statement, with this solution your controller keeps on running and you are able to handle the exception. __TRY //This statement will trigger an exception Result := 4/0; __CATCH(exc) //Handle the exception HandleException(exc, strExceptionText => strExceptionText); // From the Codesys...

  • alexgooi alexgooi posted a comment on discussion Engineering πŸ‡¬πŸ‡§

    Dear Forum, I'm currently switching to Codesys V3.5 SP19. When I want to do an online change, I get the option to update the boot project, in other (codesys based) packages this is checked on by default. In Codesys V3.5 SP19 (and maybe older versions) this is unchecked by default. We are doing a lot of remote updates with systems that almost never power cycle. In other words when this box is forgotten the system will run fine until a blackout. Is it possible to get it checked on by default? This...

  • alexgooi alexgooi modified a comment on discussion Runtime πŸ‡¬πŸ‡§

    My colleague has found a tool online, Now it is possible to go to 4 GB instead of 2, which is plenty for now: https://www.techpowerup.com/forums/threads/large-address-aware.112556/ Use at own risk

  • alexgooi alexgooi modified a comment on discussion Runtime πŸ‡¬πŸ‡§

  • alexgooi alexgooi posted a comment on discussion Runtime πŸ‡¬πŸ‡§

    My colleague has found a tool online, Now it is possible to go to 4 GB instead of 2, which is plenty for now: https://www.techpowerup.com/forums/threads/large-address-aware.112556/ Use at own risk

  • alexgooi alexgooi posted a comment on discussion Runtime πŸ‡¬πŸ‡§

    My colleague has found a tool online, Now it is possible to go to 4 GB instead of 2, which is plenty for now: https://www.techpowerup.com/forums/threads/large-address-aware.112556/

  • alexgooi alexgooi modified a comment on discussion Engineering πŸ‡¬πŸ‡§

    Hi aniket-b, If you save the library as a compiled library you are not able to see the source code. When the end user tries to view inside the object, CODESYS will give a notification that the source code is missing, see attachment. In short if you don't send the source code, it will not show.

  • alexgooi alexgooi posted a comment on discussion Engineering πŸ‡¬πŸ‡§

    Hi aniket-b, If you save the library as a compiled library you are not able to see the source code. When the end user tries to view insede the object, CODESYS will give a notification that the source code is missing, see attachment. In short if you don't send the source code, it will not show.

  • alexgooi alexgooi posted a comment on discussion Runtime πŸ‡¬πŸ‡§

    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...

  • alexgooi alexgooi modified a comment on discussion Engineering πŸ‡¬πŸ‡§

    Dear sturmghost, What you can do is split the program up into 2 sections core (dynamic) and config (Static). In the core you can create the classes/objects and in the config you can couple the data from the objects to the I/O like so: PumpMotor.Pump_Manager(); %QX0.0 := PumpMotor.Start; PumpMotor.Fault := %IX0.0; What I have found the most workable is declare every public variable as an VAR_INPUT and every private variable as an VAR (In this way you can also write to the output from another source...

  • alexgooi alexgooi posted a comment on discussion Engineering πŸ‡¬πŸ‡§

    Dear sturmghost, What you can do is split the program up into 2 sections core (dynamic) and config (Static). In the core you can create the classes/objects and in the config you can couple the data from the objects to the I/O like so: PumpMotor.Pump_Manager(); %QX0.0 := PumpMotor.Start; PumpMotor.Fault := %IX0.0; What I have found the most workable is declare every public variable as an VAR_INPUT and every privatye variable as an VAR (In this way you can also write to the output from another source...

  • alexgooi alexgooi posted a comment on discussion Engineering πŸ‡¬πŸ‡§

    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...

  • alexgooi alexgooi modified a comment on discussion Engineering πŸ‡¬πŸ‡§

    Hello AIAsAr, Is the HMI build in CODESYS (with the webvisu from CODESYS) ,or is it an HMI which also features a CODESYS runtime? If it is the first case you probabbly need to make a server in CODESYS (modbus server for example) which handles the data between the webvisu and the controller. From Twincat you can connect to this server and Sync data from there. If it is the second case you probabbly need to load in a Twincat driver (maybe a CODESYS V2 driver will do the trick, but I have never tested...

  • alexgooi alexgooi posted a comment on discussion Engineering πŸ‡¬πŸ‡§

    Hello AIAsAr, Is the HMI build in CODESYS (with the webvisu from CODESYS) ,Or is it an HMI which also features a CODESYS runtime? If it is the first case you probabbly need to make a server in CODESYS (modbus server for example) which handles the data between the webvisu and the controller. From Twincat you can connect to this server and Sync data from there. If it is the second case you probabbly need to load in a Twincat driver (maybe a CODESYS V2 driver will do the trick, but I have never tested...

  • alexgooi alexgooi modified a comment on discussion Engineering πŸ‡¬πŸ‡§

    Dear forum, I'm currently running into a problem where I’m not able to do an online change in the controller. The IDE states that the code position is an getter(property) from an interface. I have found the following post online. https://forge.codesys.com/forge/talk/Runtime/thread/3c63ae0a97/ In this post the solution is to set a different priority for each task. I have tried this but this doesn't seem to solve the problem. Also setting a longer cycle time doesn't solve the problem. How can I solve...

  • alexgooi alexgooi posted a comment on discussion Engineering πŸ‡¬πŸ‡§

    Dear forum, I'm currently running into a problem where I’m not able to do an online change in the controller. The IDE states that the code position is an getter(property) from an interface. I have found the following post online. https://forge.codesys.com/forge/talk/Runtime/thread/3c63ae0a97/ In this post the solution is to set a different priority for each task. I have tried this but this doesn't seem to solve the problem. Also setting a longer cycle time doesn't solve the problem. How can I solve...

  • alexgooi alexgooi posted a comment on discussion Engineering πŸ‡¬πŸ‡§

    It is working now with a workaround! I used a sync tool to make a mirror of (a part) the local repo (Managed libraries), including the cache file. This mirror is shared via Dropbox.

  • alexgooi alexgooi posted a comment on discussion Engineering πŸ‡¬πŸ‡§

    Dear Forum, I have a question regarding a library project. In a library project you can install the library into the library repository locally stored on the machine, with this button (see attachment) I would like to share the library with my colleagues via Dropbox. Is it possible to let Codesys install the library on a repository in Dropbox instead of locally on my machine? I couldn't find such a setting. I also tried to simply copy the library folder and put it in a Dropbox repository, but I wasn't...

1