Возьмите массив данных в [ ]
Начиная с SP7 хелп на русском отсутствует. Ищите англоязычный в папке установки CODESYS (...\Codesys\Online Help).
Вот русскоязычный хелп из SP6:
https://yadi.sk/d/OtxdkJqT3G73jf
Последний раз редактировалось Евгений Кислов; 17.03.2017 в 19:56.
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Приложил ссылку к сообщению выше.
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Помойму КДС не может инициализировать массив структур внутри другой структуры.
Всё было нормально, когда в моей структуре Prog_struc не было массива, а были просто вложенные структуры (на картинках они закоментарены).
Prog_ctruc.jpg
Etap_struc: Etap_struc.jpg
Но мне надо обращаться к данным по индексу, и я вместо перечня структур вставил массив этих структур
И теперь не проходит инициализация
GVL.jpg
Ошибки какие-то ахинейные: на Prg1 пишет ';' expected instead of 'Prg2', на stages[1] пишет 'Assign' expected instead '['
Или я что-то не так сделал?
Вообще, чтобы понять принцип инициализации сложных составных переменных, лучше один раз объявить их через ассистент ввода - вбиваете имя несуществующей переменной в теле программы, нажимаете enter и он автоматически появляется.
К слову, зачастую удобнее делать инициализацию прямо в коде - в стиле
В коде проще обращаться к элементам массивов, структур и т.д. + при необходимости можно будет провести инициализацию в процессе работы программы.Код:IF xInit THEN // инициализация END_IF
Если всё же рассматривать ваш случай (инициализация при объявлении) - то вот упрощенный пример:
01.png 02.png 03.png
04.png
Последний раз редактировалось Евгений Кислов; 19.03.2017 в 14:12.
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Пример помог. Но надо озвучить конкретную причину:
Я пытался инициализировать массив по аналогии с инициализацией структуры - указывал конкретные элементы и присваиваемые им значения.
А оказывается, массиву нужно только перечислять присваиваемые значения, и они попадают в ячейки массива в порядке перечисления.
Считаю это недоработкой языка ST. Если массив большой, а мне надо в объявлениях инициировать только последние ячейки, придётся перечислять значения всех ненужных ячеек.
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
2(()) - такую конструкцию я не знал. Она значит - до второго (в данном случае последнего) элемента всё пусто?