Автоматическая адресация переменных производится последовательно, начиная с нулевого адреса (как для битовых переменных, так и для переменных, передаваемых регистрами).
Таким образом, если в модуле используются переменные одного типа, то при запросе устройством – Мастером регистра с адресом «0», модуль считывает первые два байта, для регистра с адресом «1» – вторые два байта и так далее.
Если переменные имеют длину более двух байт, то при запросе регистра с адресом «0», модуль считывает первые два байта первой переменной, для регистра с адресом «1» – вторые два байта первой переменной и так далее.
Но если в модуле используются переменные разных типов (например, одновременно восьмибитный, двухбайтный и четырёхбайтный), то при распределении адресов ПО CoDeSys производит «выравнивание» адресов переменных – упорядо
чение адресов переменных в памяти модуля. Такое упорядочение заключается в организации памяти таким образом, что переменные размером 8 бит, 2 байта и 4 байта располагаются только по определенным адресам: четырёхбайтным переменным
присваиваются адреса, кратные 4; двухбайтным – кратные 2; однобайтным (или восьмибитным) –кратные 1. То есть, независимо от порядка задания переменных, выравнивание назначает переменным адреса, кратные их длине.
Таким образом, первая восьмибитная переменная будет расположена в 0… 7 битах памяти модуля, вторая – в 8… 15 и т.д. Если же вторая переменная двухбайтная, она будет располагаться в 16… 31 битах, т.е., по адресу, кратному 2, и т.д. Четырехбайтная переменная займет следующее свободное место, кратное 4.
Такой порядок размещения переменных в памяти модуля может образовать адресные пространства, не занятые переменными. Эти пространства не отображаются в области ввода/вывода, но они обязательно должны учитываться при организации опроса переменных; учитывать эту особенность следует еще на стадии задания переменных.