Communication between applications on same device/controller/runtime (Win RTE 3.5.20.20)

2024-09-27
2024-10-01
  • bjarne-pagaard - 2024-09-27

    Hi,
    I would like to divide a project into multiple applications - as a minimum: one handling visualization and Alarm Manager, one handling I/O and plant control logic. But how to exchange variables between the applications?

    What have you done to get such a solution?

    In versions 3.5.19 and earlier, you can have Child applications, where the children can access a GVL in the Parent application. Children apps is no longer possible in 3.5.20 - but you can have 'sibling' apps - Several apps directly under PLC Logic, that is. But how do they best communicate?
    The Communication Manager / Data Sources Manager is sort of possible via OPC UA, but it seems like overkill and with some limitations - for example no ARRAY OF STRUCT possible this way.
    If you have separate devices in your project, you can exchange data via 'CODESYS ApplicationV3', but not other applications in the same device (see attachment Datasources.png). You can do it via 'Select the project type'->'Other Project' and select the same project file, but this leads to crashing the Development system when working with the variables afterwards.

    It would be great to hear your thoughts / experiences on this topic
    - Bjarne

     
  • bjarne-pagaard - 2024-10-01

    Thanks for this - I have now been looking in to just having an extra (non-RTE) runtime on the same machine, as you suggest. I will probably proceed this way. Even though it still seems very odd to me, that variable exchange to a different runtime is easier than between applications on the same controller.

    There will be some fun with the licensing, it seems. Does anyone know if it is possible to specify which license container/specific license the runtime is going to use at runtime. Let's say I have two available licenses with different resources available, for example one license allows multicore and multiple EtherCAT channels, but not many visu tags (for the RTE). Another with less resources but a lot of visu tags (for the Visu controller). Let's say the program in one of the controllers could be fully licensed by either of the two available licenses, but picks the 'largest' first. A bit later, the larger application starts, but is left with the smaller license..

    How can I make sure that the 2 runtimes select the right license at startup?

     
  • TimvH

    TimvH - 2024-10-01

    The RTE will take the RTE license. The HMI will take the HMI license. For the Application Based Licenses, the Runtime will take the smallest which is required. So if you have an application running EtherCAT and no visualization, only the Control with support for EtherCAT is used. If you have another runtime which requires the visualization, it will take the smallest Control license which is required and available + the smallest visualization license which is required.

     

Log in to post a comment.