"modularized/distributed" AxesGroup feature config

Hi everyone,

in ACP10/ARNC0 it is possible to include parts of a configuration from other files via the <XML_INCLUDE …/> instruction.

Question: Does something similar exist for mappMotion configuration files?

More specifically: Assume we have a set of devices, each of which can have its own M-Functions and Process variables through which it links to CNC programs. Can these be configured in “per-device configuration units” somehow?

Trying to achieve this with multiple .axesgroupfeature-files and referencing e.g. more than one M-Functions features from one axes group fails with -1067245561: A feature of type ‘{FeatureType}’ can only be assigned once to configuration.

Regards
Lukas

Hi Lukas,

Your observation is correct – the axes group configuration doesn’t support multiple instances of the same feature-configuration type.

Nevertheless, what could help you (or maybe not, depending on your use case) is to use PV variables declared in the .interpreter file. This configuration file is not automatically inserted into the mappMotion configuration folder – you need to add it manually from the object catalog.

Note: This is a global configuration file, so if you have multiple axes groups, it applies to all interpreter instances within those groups.

The configuration enables you, among other things, to load additional *.iec files – multiple of them – so you can achieve the configuration granularity you’re looking for.

You can create short *.var files, each declaring functionality for your devices, and map them to PLC variables (using the '{AT PLC}' syntax). From there, you’re almost set – you can use them in your motion programs (both G-code and motionST). You can also use the ACCESS keyword to define an alias, making the references much shorter.

If you want something syntactically and functionally similar to M-functions, you need two more steps – declare the variables as path-synchronous and create preprocessor macros that replace the defined M-function calls with your variable assignments.

These preprocessor macros can be created in the AIL configuration files included from the .interpreter file – again, you can use a different configuration file for each of your devices.

deviceB.var.txt (119 Bytes)

deviceB.ail.txt (180 Bytes)

deviceA.var.txt (95 Bytes)

deviceA.ail.txt (187 Bytes)

Thanks @Vaclav_Veleba especially for pointing out the “IEC declarations” section in the interpreter config in combination with the aliasing and synchronisation options of Variables (IEC ST). This indeed looks like a viable option for my usecase.

I think the reason why I overlooked this so far is that the interpreter config documentation is rather brief regarding IEC declarations and in particular does not link to Variables (IEC ST).

PS: in the meantime I learned that XML_INCLUDE apparently still works as before in ARNC0, see here. That is, one can still have a CNC data object “mcipvar” with content like

<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
    <VARIABLES>
        <PV Alias="$MYVAR" Synch="path_synch" Type="LREAL" >myprg:myvar</PV>
    </VARIABLES>
</CONFIG>

And from there one can (probably, haven’t tested) XML_INCLUDE other such files.