Ситуация не понятная.
Работаю с тегами внутреннего CoDeSys.
В документации написано:
If [Index register] is enabled and [Index] is set to [Index 0 (16-bit)], the system will read / write
“Application.PLC_PRG.TestInt[0 + value in Index Register 0]”.
If the data in [LW-9200] is “5”, the actual address is “Application.PLC_PRG.TestInt[5]”.
Когда я использую переменную Application.GVL.Cmr[0].Countdown[0+INDEX] в симуляции всё работает корректно. При изменении индекса я получаю данные из переменных Application.GVL.Cmr[0].Countdown[0], Application.GVL.Cmr[0].Countdown[1] и.т.д.
Но есть в этой же структуре Application.GVL.Cmr[] и другие переменные. Например HeatH, то есть полный адрес имеет вид Application.GVL.Cmr[0].HeatH
Когда я использую переменную с индексом вида Application.GVL.Cmr[0+INDEX].HeatH, то получается какая-то ерунда. Как будто переменные: Application.GVL.Cmr[0].HeatH, Application.GVL.Cmr[1].HeatH и.т.д. ни как не связаны с переменными Application.GVL.Cmr[0+0].HeatH, Application.GVL.Cmr[0+1].HeatH и.т.д.
Данные введенные в переменные с индексом не отображаются в переменных без индекса и наоборот.
Хотя если верить Weintek, то данная конструкция должна работать. Это видно в их видео
https://www.youtube.com/watch?v=CO7HA2kFcag.
Вполне возможно, что это проблема симулятора, так как в настоящий момент нет возможности поработать с реальным железом